Primitives Reference: Difference between revisions
Holly-Wood (talk | contribs) (Added missing boxes) |
Holly-Wood (talk | contribs) (Added right-angled triangular prisms) |
||
Line 208: | Line 208: | ||
|- | |- | ||
| [[File:box4-12.png|200px|thumb|alt=Box4-12]] | | [[File:box4-12.png|200px|thumb|alt=Box4-12]] | ||
||This primitive represents a cuboid missing the top {-y} and front {-z} faces and all the edges. Its origin is the centre of the (missing) top face and by default has a size of 2LDu in each of the {x} and {z} dimensions and 1LDu in the {y} dimension. | ||This primitive represents a cuboid missing the top {-y} and front {-z} faces and excludes all the edges. Its origin is the centre of the (missing) top face and by default has a size of 2LDu in each of the {x} and {z} dimensions and 1LDu in the {y} dimension. | ||
|- | |- | ||
Line 344: | Line 344: | ||
| [[File:tri3.png|200px|thumb|alt=Tri3]] | | [[File:tri3.png|200px|thumb|alt=Tri3]] | ||
|| This primitive represents a triangular prism missing the top {-y} and bottom {+y} faces but including all edges. The left {-x} and front {-z} faces are perpendicular. Its origin is the right-angle corner of the (missing) top face and by default has a size of 1LDu in each of the {x} and {z} dimensions and 1LDu in the {y} dimension. | || This primitive represents a triangular prism missing the top {-y} and bottom {+y} faces but including all edges. The left {-x} and front {-z} faces are perpendicular. Its origin is the right-angle corner of the (missing) top face and by default has a size of 1LDu in each of the {x} and {z} dimensions and 1LDu in the {y} dimension. | ||
|- | |||
| '''tri3-1.dat''' || '''Right-angled triangular prism with 3 faces''' | |||
|- | |||
| [[File:tri3-1.png|200px|thumb|alt=Tri3-1]] | |||
|| This primitive represents a triangular prism missing the top {-y} and bottom {+y} faces and excludes the top edge of the hypotenuse. Its origin is the right-angle corner of the (missing) top face and by default has a size of 1LDu in each of the {x} and {z} dimensions and 1LDu in the {y} dimension. | |||
|- | |||
| '''tri3-3.dat''' || '''Right-angled triangular prism missing 3 faces''' | |||
|- | |||
| [[File:tri3-3.png|200px|thumb|alt=Tri3-3]] | |||
|| This primitive represents a triangular prism missing the top {-y} and bottom {+y} faces and excludes all top edges. Its origin is the right-angle corner of the (missing) top face and by default has a size of 1LDu in each of the {x} and {z} dimensions and 1LDu in the {y} dimension. | |||
|- | |- | ||
Line 349: | Line 361: | ||
|- | |- | ||
| [[File:tri3a1.png|200px|thumb|alt=Tri3a1]] | | [[File:tri3a1.png|200px|thumb|alt=Tri3a1]] | ||
|| | || This primitive represents a triangular prism missing the top {-y} face, the face at the hypotenuse as well as the top edge at the hypotenuse. Its origin is the right-angle corner of the (missing) top face and by default has a size of 1LDu in each of the {x} and {z} dimensions and 1LDu in the {y} dimension. | ||
|- | |||
| '''tri3a3.dat''' || '''Right-angled triangular prism with 3 adjacent faces missing 3 edge''' | |||
|- | |||
| [[File:tri3a3.png|200px|thumb|alt=Tri3a3]] | |||
|| This primitive represents a triangular prism missing the top {-y} face, the face at the hypotenuse and excludes all top edges. Its origin is the right-angle corner of the (missing) top face and by default has a size of 1LDu in each of the {x} and {z} dimensions and 1LDu in the {y} dimension. | |||
|- | |- | ||
Line 355: | Line 373: | ||
|- | |- | ||
| [[File:tri3a4.png|200px|thumb|alt=Tri3a4]] | | [[File:tri3a4.png|200px|thumb|alt=Tri3a4]] | ||
|| | || This primitive represents a triangular prism missing the top {-y} face, the face at the hypotenuse and excludes all edges at the hypotenuse. Its origin is the right-angle corner of the (missing) top face and by default has a size of 1LDu in each of the {x} and {z} dimensions and 1LDu in the {y} dimension. | ||
|- | |- | ||
Line 368: | Line 386: | ||
| [[File:tri3u3.png|200px|thumb|alt=Tri3u3]] | | [[File:tri3u3.png|200px|thumb|alt=Tri3u3]] | ||
|| This primitive represents a triangular prism missing the left {-x} and front {-z} faces, the edge where they would join and one edge of each of the triangles. Its origin is the right-angle corner of the top face and by default has a size of 1LDu in each of the {x} and {z} dimensions and 1LDu in the {y} dimension. | || This primitive represents a triangular prism missing the left {-x} and front {-z} faces, the edge where they would join and one edge of each of the triangles. Its origin is the right-angle corner of the top face and by default has a size of 1LDu in each of the {x} and {z} dimensions and 1LDu in the {y} dimension. | ||
|- | |||
| '''tri4.dat''' || '''Right-angled triangular prism with 2 square faces and 2 triangular faces''' | |||
|- | |||
| [[File:tri4.png|200px|thumb|alt=Tri4]] | |||
|| This primitive represents a triangular prism missing the face at the hypotenuse. Its origin is the right-angle corner of the top face and by default has a size of 1LDu in each of the {x} and {z} dimensions and 1LDu in the {y} dimension. | |||
|} | |} | ||
Revision as of 10:20, 1 December 2023
LDraw Primitives Reference
This page is a source of reference for the LDraw primitives in the \LDraw\p directory. Primitives are defined as highly re-usable components of LEGO parts modelled for LDraw. They serve several purposes :
* To speed up parts authoring by providing a library of components which can be incorporated into several parts * To allow rendering software to make substitutions of curved components
Within this reference material the available primitives are categorised into:
Each section contains an overview of the characteristics common to all primitives within that category. Primitives are grouped into classes within each category - one class of primitive serving a similar purpose at different sizes or resolutions. For each class of primitive, a brief description of the purpose of the primitive is provided, with notes on its co-ordinate origin, default size and rules for scaling. A list of the available primitives is shown.
An understanding of the orientation of the co-ordinate axes is essential for authoring a part for LDraw. For reference within this page the axes and their direction is shown in this diagram.
Rectilinear primitives
These rectilinear elements may be scaled in the {x}, {y} and {z} dimensions to make elements of any size. For example
1 16 0 0 0 40 0 0 0 1 0 0 0 20 rect.dat
would generate a 80LDu x 40LDu rectangle in the {x,z} plane.
Although the default orientation of the rect.dat primitive is in the {x,z} plane the LDraw language allows for this to be transformed
1 16 0 0 0 0 1 0 40 0 0 0 0 20 rect.dat
would generate a 80LDu x 40LDu rectangle in the {y,z} plane.
1 16 0 0 0 40 0 0 0 0 20 0 1 0 rect.dat
would generate a 80LDu x 40LDu rectangle in the {x,y} plane.
Curved primitives
LDraw represents curved surfaces as polygons. For circular components two series of primitives are provided.
All the circular primitives are orientated in the {x,z} plane with their origin at the centre of the circle and a default radius of 1 LDu. Primitives are provided for complete circles and for commonly used fractions of a complete circle. Where the naming convention includes a prefix of the form n-f this indicates the fraction (n/f) of the circle drawn by the primitive. Where this fraction is less than an entire circle, the primitive starts at {+x,0} and progresses in a conterclockwise direction when viewed from above {-y}.
To avoid rounding errors, it is preferable to use existing fractional circular primitives, or create a new primitive, rather than rotate an existing primitive by anything other than 90 or 180 degrees. For example, use 3-16XXXX.dat rather than combining 1-8XXXX.dat with 1-16XXXX.dat rotated by 22.5 degreees.
To avoid matrix arithmetic problems in some renderers, the third dimension ({y} in the default orientation) of two-dimensional primitives must be given a non-zero scaling factor. LDraw circles are normally formed of 16-sided polygons (hexdecagons) - the regular resolution. For larger elements, where scaling-up of hexadecagons would give too angular an appearance, a series of high resolution primitives based on a 48-sided polygon are available. These may also be used for parts not well suited to a 16-fold symmetry.
These circular elements may be scaled by the same factor in both the {x} and {z} dimensions to make circular elements of greater or less than 1LDu radius. For example
1 16 0 0 0 3 0 0 0 1 0 0 0 3 4-4edge.dat
would generate a circle in the {x,z} plane with a radius of 3LDu.
They may also be scaled asymmetrically in the x and z dimension to make ellipses.
Although the default orientation is in the {x,z} plane the LDraw language allows for these to be transformed
1 16 0 0 0 0 1 0 3 0 0 0 0 3 4-4edge.dat would generate a circle in the {y,z} plane
1 16 0 0 0 3 0 0 0 0 3 0 1 0 4-4edge.dat would generate a circle in the {x,y} plane