What is Progen3D?
Progen3D is a procedural 3D generation tool that uses a grammar-based approach to define geometric structures. By leveraging a set of rules, users can create complex 3D objects with precise control over their parameters. This tutorial will introduce you to the basics of Progen3D and walk you through generating a cylinder using Progen3D’s grammar.
Understanding the Grammar
Progen3D’s grammar consists of transformation rules applied sequentially to generate 3D structures. Each rule defines operations such as scaling, rotation, and instantiation of primitive shapes.
Key Elements of Progen3D Grammar
- A (angleX angleY): Rotates the object by the given angles in degrees.
- S (scaleX scaleY scaleZ): Scales the object in the X, Y, and Z dimensions.
- T (transX transY transZ): Translates (moves) the object along the specified axes.
- D (dimX dimY dimZ): Defines a dimensional transformation.
- I (ObjectName param1 param2 param3): Instantiates a predefined 3D object.
- R name (min max): Defines a random variable in a given range.
- *R count (min max)**: Defines a loop iteration count within a given range
Generating a Cylinder in Progen3D

The Grammar
X -> R len ( 0.3 0.3 ) R radius ( 1.75 1.75 ) R* count ( 63 63 ) A ( 90 0 ) S ( 1 1 10 ) [ Y ]
Y 19 len count radius -> A ( 19 2 ) [ YB ]
YB -> T ( -radius 0 0 ) | [ YB1 ] [ YB2 ]
YB1 -> S ( radius len 1 ) D ( 1 0.03 1 ) I ( CubeX 2 0 1 )
YB2 -> A ( 180 0 ) S ( radius len 1 ) D ( 1 0.03 1 ) I ( CubeX 2 0 1 )
Explanation of the Grammar
- Rule X:
- Defines a cylinder-like structure with a specified
radius
andlength
. - Rotates the object by 90 degrees.
- Scales the structure along the Z-axis to elongate it.
- Calls rule
Y
to define the segments of the cylinder.
- Defines a cylinder-like structure with a specified
- Rule Y:
- Rotates each segment slightly to form a circular shape.
- Calls rule
YB
to generate the side elements.
- Rule YB:
- Translates objects along the
radius
to position them correctly. - Calls two rules (
YB1
andYB2
) to create mirrored shapes, forming the structure.
- Translates objects along the
- Rule YB1 and YB2:
- Scale the elements based on radius and length.
- Instantiates a cuboid (
CubeX
) to approximate a segment of the cylinder. - Applies a small distortion factor (
D
) for fine-tuning. YB2
mirrorsYB1
by rotating 180 degrees.
Running the Grammar
To generate the cylinder, input the grammar into Progen3D’s interpreter or software environment. The system will process the rules and output a structured 3D model based on the defined parameters.
Customizing the Cylinder
To modify the cylinder, adjust the values in the radius
, length
, and count
parameters. For example:
- Increasing
radius
makes the cylinder wider. - Increasing
count
increases the number of segments, making the shape smoother. - Adjusting
len
alters the individual segment sizes.
Conclusion
Progen3D offers a powerful, flexible way to generate procedural 3D objects through grammars. This tutorial provided a basic introduction and demonstrated how to generate a cylinder. Experiment with different parameters to create custom models and explore the full potential of Progen3D!