A3DTess3DWireData
-
struct
A3DTess3DWireData 3D wire data structure
2.0
The
A3DTess3DWireentity includes data stored in theA3DTessBaseDatastructure.The
A3DTessBaseData::m_pdCoordsmember represents point coordinates, which are interpreted in groups of three (X, Y, Z) to represent 3D vectors.A3DTess3DWireDataenables you to organize these coordinates as wires. TheA3DTess3DWireDatastructure uses theA3DTessBaseData::m_pdCoordsarray to retrieve the point coordinates. Them_puiSizesWiresmember contains indexes referencing the array of points inA3DTessBaseData::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 them_puiSizesWiresarray would contain the following elements, with the first element representing the number of points in the wire and subsequent elements representing point indexes inA3DTessBaseData::m_pdCoords: {number of indexes, indexes of the wire edge} = {4, 0, 3, 6, 9}. Them_uiSizesWiresSizemember represents the exact number of elements in them_puiSizesWiresarray. Our single 4-point wire contains 5 elements {4, 0, 3, 6, 9}, som_uiSizesWiresSizewould be set to 5. Ifm_uiSizesWiresSizeis set to zero, the tessellation is given as a single wire edge with the array of point indexes contained inA3DTessBaseData::m_pdCoords. Ifm_uiSizesWiresSizecontains multiple wires, then the array referenced bym_puiSizesWiresdescribes the edges as follows:- Wire Indexes
- Wire Indexes Wire Indexes Wire Indexes Wire Indexes
If
m_uiSizesWiresSizeis non-zero,m_puiSizesWirescan include the flags described in Flags for Specifying Wire Characteristics as follows: [number of indexes | flag, indexes 1, indexes 2, …]m_bIsRGBAindicates 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_pucRGBAVerticesspecifies the color channels for each vertex / segment.m_uiRGBAVerticesSizespecifies the size of them_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:
A3Duns32iNumberColorNeeded=0; if(sTess3DWireData.m_bIsSegmentColor&&!bIsWireClosed&&!bIsWireContinuous) { iNumberOfColorsNeeded=sData->m_uiSize-1; } else { iNumberOfColorsNeeded=sData->m_uiSize; }
sTess3DWireData.m_uiRGBAVerticesSize=(sTess3DWireData.m_bIsRGBA?4:3)*iNumberOfColorsNeeded; The member :c:member:`m_uiRGBAVerticesSize <A3DTess3DWireData.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.
- Wire Segments
- Wire Segments Wire Segments Wire Segments Wire Segments
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 them_puiSizesWiresarray.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]
m_bIsRGBA= false, 3 channels are needed for 7 points.m_uiRGBAVerticesSize= 7 * 3 = 21m_bIsRGBA= true, 4 channels are needed for 7 points.m_uiRGBAVerticesSize= 7 * 4 = 28If
m_bIsSegmentColor= false, colors are given for points.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 = 20If a wire is closed or continuous, there are 6 segments, so for RGB
m_uiRGBAVerticesSize= 6 * 3 = 18. For RGBAm_uiRGBAVerticesSize= 6 * 4 = 24If
m_bIsSegmentColor= true, colors are given for the entire segment.Implicit points coming from Flags for Specifying Wire Characteristics must also bear a color.
A3DTessBaseData::m_uiCoordSizerepresents size of arrayA3DTessBaseData::m_pdCoordsand not a number of 3D points.
<style>.WireList {padding-bottom:7px;}</style>
Variables
-
A3DUns32
A3DTess3DWireData.m_uiSizesWiresSize -
The size of
m_puiSizesWires.
-
A3DUns32 *
A3DTess3DWireData.m_puiSizesWires -
See explanations in Detailed Description.
-
A3DBool
A3DTess3DWireData.m_bIsRGBA -
See explanations in Detailed Description.
-
A3DBool
A3DTess3DWireData.m_bIsSegmentColor -
See explanations in Detailed Description.
-
A3DUns32
A3DTess3DWireData.m_uiRGBAVerticesSize -
The size of
m_pucRGBAVertices.
-
A3DUns8 *
A3DTess3DWireData.m_pucRGBAVertices -
See explanations above.