3D wire data structure More...
Data Fields | |
A3DBool | m_bIsRGBA |
A3DBool | m_bIsSegmentColor |
A3DUns8 * | m_pucRGBAVertices |
A3DUns32 * | m_puiSizesWires |
A3DUns32 | m_uiRGBAVerticesSize |
A3DUns32 | m_uiSizesWiresSize |
Detailed Description
3D wire data structure
- Version
- 2.0
- Note
- The A3DTess3DWire entity includes data stored in the A3DTessBaseData structure.
The A3DTessBaseData::m_pdCoords member represents point coordinates, which are interpreted in groups of three (X, Y, Z) to represent 3D vectors. A3DTess3DWireData enables you to organize these coordinates as wires. The A3DTess3DWireData structure uses the A3DTessBaseData::m_pdCoords array to retrieve the point coordinates. The m_puiSizesWires member contains indexes referencing the array of points in A3DTessBaseData::m_pdCoords. The index for each point is a multiple of 3 and refers to the first coordinate in the 3D point. As an example, for a single 4-point wire the m_puiSizesWires array would contain the following elements, with the first element representing the number of points in the wire and subsequent elements representing point indexes in A3DTessBaseData::m_pdCoords : {number of indexes, indexes of the wire edge} = {4, 0, 3, 6, 9}. The m_uiSizesWiresSize member represents the exact number of elements in the m_puiSizesWires array. Our single 4-point wire contains 5 elements {4, 0, 3, 6, 9}, so m_uiSizesWiresSize would be set to 5. If m_uiSizesWiresSize is set to zero, the tessellation is given as a single wire edge with the array of point indexes contained in A3DTessBaseData::m_pdCoords. If m_uiSizesWiresSize contains multiple wires, then the array referenced by m_puiSizesWires describes the edges as follows:

If m_uiSizesWiresSize is non-zero, m_puiSizesWires can include the flags described in Flags for Specifying Wire Characteristics as follows: [number of indexes | flag, indexes 1, indexes 2, ...]
m_bIsRGBA indicates the color format used is RGBA. A value of true indicates the use of RGBA, while a value of false indicates the use of RGB.
m_bIsSegmentColor : A value of true indicates the colors are for the entire segment.
m_pucRGBAVertices specifies the color channels for each vertex / segment.
m_uiRGBAVerticesSize specifies the size of the m_pucRGBAVertices. When the colors are for points (m_bIsSegmentColor = false), the number of colors needed must be equal to the number of points.
When the colors are for segments (m_bIsSegmentColor = true), the number of colors needed must be equal to the number of segments. So if a wire has 3 points, it will need 2 colors. If this 3-point wire is closed or continuous with a previous wire, it will need 3 colors.
The number of colors needed can be calculated:
The member m_uiRGBAVerticesSize is 3 times the number of colors needed for RGB, 4 times the number of colors needed for RGBA.
Example: Consider the following example of two wires: one defined by 3 points, and another wire defined by 4 points.

- m_uiSizesWiresSize = 9 = (1+3+1+4). There are two wires, one with 3 points and another wire of 4 points, each with a count element directly preceding the indexes, so 9 elements will be needed in the m_puiSizesWires array.
- m_puiSizesWires = [3, index of a, index of b, index of c, 4, index of w, index of x, index of y, index of z]
- If the last point of the first wire is linked to the first point of the second wire, the stored values are as follows:
- m_puiSizesWires = [3, index of a, index of b, index of c, 4 | kA3DTess3DWireDataIsContinuous, index of w, index of x, index of y, index of z]
-
If the second wire is closed, the stored values are as follows:
m_puiSizesWires = [3, index of a, index of b, index of c, 4 | kA3DTess3DWireDataIsClosing, index of w, index of x, index of y, index of z] -
If m_bIsSegmentColor = false, colors are given for points.
- m_bIsRGBA = false, 3 channels are needed for 7 points. m_uiRGBAVerticesSize = 7 * 3 = 21
- m_bIsRGBA = true, 4 channels are needed for 7 points. m_uiRGBAVerticesSize = 7 * 4 = 28
-
If m_bIsSegmentColor = true, colors are given for the entire segment.
- If no wires are closed or continuous, and there are only 5 segments, then for RGB m_uiRGBAVerticesSize = 5 * 3 = 15. For RGBA, m_uiRGBAVerticesSize = 5 * 4 = 20
- If a wire is closed or continuous, there are 6 segments, so for RGB m_uiRGBAVerticesSize = 6 * 3 = 18. For RGBA m_uiRGBAVerticesSize = 6 * 4 = 24
- Warning
- Implicit points coming from Flags for Specifying Wire Characteristics must also bear a color.
- A3DTessBaseData::m_uiCoordSize represents size of array A3DTessBaseData::m_pdCoords and not a number of 3D points.
Field Documentation
◆ m_uiSizesWiresSize
A3DUns32 A3DTess3DWireData::m_uiSizesWiresSize |
The size of m_puiSizesWires.
◆ m_puiSizesWires
A3DUns32* A3DTess3DWireData::m_puiSizesWires |
See explanations in Detailed Description.
◆ m_bIsRGBA
A3DBool A3DTess3DWireData::m_bIsRGBA |
See explanations in Detailed Description.
◆ m_bIsSegmentColor
A3DBool A3DTess3DWireData::m_bIsSegmentColor |
See explanations in Detailed Description.
◆ m_uiRGBAVerticesSize
A3DUns32 A3DTess3DWireData::m_uiRGBAVerticesSize |
The size of m_pucRGBAVertices.
◆ m_pucRGBAVertices
A3DUns8* A3DTess3DWireData::m_pucRGBAVertices |
See explanations above.