# A3DTess3DWireData

struct `A3DTess3DWireData`

  3D wire data structure

  > 2.0

  > 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:

  Wire IndexesWire IndexesWire IndexesWire IndexesWire Indexes

  If `m_uiSizesWiresSize`is non-zero, `m_puiSizesWires`can include the flags described in Flags for Specifying Wire Characteristicsas 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:

      A3Duns32iNumberColorNeeded=0;

      if(sTess3DWireData.m_bIsSegmentColor&&!bIsWireClosed&&!bIsWireContinuous)
      {
      iNumberOfColorsNeeded=sData->m_uiSize-1;
      }
      else
      {
      iNumberOfColorsNeeded=sData->m_uiSize;
      }

  The member `m_uiRGBAVerticesSize`is 3 times the number of colors needed for RGB, 4 times the number of colors needed for RGBA.

      sTess3DWireData.m_uiRGBAVerticesSize=(sTess3DWireData.m_bIsRGBA?4:3)*iNumberOfColorsNeeded;

  Example: Consider the following example of two wires: one defined by 3 points, and another wire defined by 4 points.

  Wire SegmentsWire SegmentsWire SegmentsWire SegmentsWire Segments

  > <style>.WireList {padding-bottom:7px;}</style>

  - `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]

  - `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`= 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 = 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

  - If `m_bIsSegmentColor`= true, colors are given for the entire segment.

    > Implicit points coming from Flags for Specifying Wire Characteristicsmust also bear a color.

    > `A3DTessBaseData::m_uiCoordSize`represents size of array `A3DTessBaseData::m_pdCoords`and not a number of 3D points.

  ## Index

  Variables

  - `m_uiSizesWiresSize`
  - `m_puiSizesWires`
  - `m_bIsRGBA`
  - `m_bIsSegmentColor`
  - `m_uiRGBAVerticesSize`
  - `m_pucRGBAVertices`

Variables

A3DUns32 `A3DTess3DWireData.``m_uiSizesWiresSize`
  `A3DUns32`

  The size of `m_puiSizesWires`.

A3DUns32 *`A3DTess3DWireData.``m_puiSizesWires`
  `A3DUns32`*

  See explanations in Detailed Description.

A3DBool `A3DTess3DWireData.``m_bIsRGBA`
  `A3DBool`

  See explanations in Detailed Description.

A3DBool `A3DTess3DWireData.``m_bIsSegmentColor`
  `A3DBool`

  See explanations in Detailed Description.

A3DUns32 `A3DTess3DWireData.``m_uiRGBAVerticesSize`
  `A3DUns32`

  The size of `m_pucRGBAVertices`.

A3DUns8 *`A3DTess3DWireData.``m_pucRGBAVertices`
  `A3DUns8`*

  See explanations above.

Conversation saved
HOOPSY BETA

### Hello! I'm HOOPSY

Your multilingual generative AI assistant for documentation. Ask me anything about HOOPS Exchange in your own language, or choose a sample question below to start a conversation:

What is HOOPS Exchange?
What are the latest release notes for HOOPS Exchange?
How do I start evaluating HOOPS Exchange?
How do I write my first sample application?
How can I get assistance?

HOOPSY may store conversations according to OpenAI's policy. Responses may not always be accurate.

HOOPSY is thinking...