A commandline application which creates modified duplicates of a mesh.
The Modifiers will translate, scale and rotate the copies in a given space.
Modifiers can be cascaded.
Basic knowledge of 3d formats and OpenGL would help.
- reads a single mesh in wavefront OBJ format.
- generates N copies of the original mesh and
- applies a modifier chain to each copy.
- writes the generated output to an OBJ file.
Having a single tree mesh, we could place the duplicates
following a terrain surface. The y position would be defined by the terrain
mesh, the xz position would be random.
We also would rotate and scale the trees resulting in a more natural look.
Modifiers are a node in a directed graph and have 0..N modifier inputs
and 1..M outputs.
The output of a modifier depends on its type:
A rotation modifier has a radian output.
A scale modifier has a 3d point output.
A translation modifier has a 3d point output.
Example of a modifier chain:
A modifier SINE generates a sine wave to displace the y position of a mesh.
In order to make the sine wave a bit more irregular,
a random modifier RAND feeds into the SINE modifier. RAND is dependent
on the distance from the center, resulting in more randomness at the outer area.
The application uses the standard STL concept of separated container and algorithms. 3d points are stored in simple float structures.
A commandline test app which reads a single OBJ file and does some basic
hardcoded operations, outputs the result to a new OBJ file.
The OBJ file will be validated in an external 3d application (Blender).
Source must be uploaded to a private github repository.
Platform and language
The code must be written in cross platform C++ using STL.