Difference between revisions of "OpenIGTLink/ProtocolV2/Type/PolyData"
From NAMIC Wiki
Line 84: | Line 84: | ||
| align="left" | uint16 | | align="left" | uint16 | ||
| align="left" | Type of dataset attribute 0 (including number of components for scalar type) | | align="left" | Type of dataset attribute 0 (including number of components for scalar type) | ||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| align="left" | SIZE_ATTRIBUTE1 | | align="left" | SIZE_ATTRIBUTE1 | ||
Line 96: | Line 92: | ||
| align="left" | uint16 | | align="left" | uint16 | ||
| align="left" | Type of dataset attribute 1 (including number of components for scalar type) | | align="left" | Type of dataset attribute 1 (including number of components for scalar type) | ||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| align="left" | SIZE_ATTRIBUTE1 | | align="left" | SIZE_ATTRIBUTE1 | ||
Line 112: | Line 104: | ||
| align="left" | uint16 | | align="left" | uint16 | ||
| align="left" | Type of dataset attribute 1 (including number of components for scalar type) | | align="left" | Type of dataset attribute 1 (including number of components for scalar type) | ||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| align="left" | SIZE_ATTRIBUTE(NATTRIBUTES-1) | | align="left" | SIZE_ATTRIBUTE(NATTRIBUTES-1) | ||
Line 124: | Line 112: | ||
| align="left" | char * NAMESIZE_ATTRIBUTE0 | | align="left" | char * NAMESIZE_ATTRIBUTE0 | ||
| align="left" | Name of attribute 0 | | align="left" | Name of attribute 0 | ||
+ | |- | ||
+ | | align="left" | (null) | ||
+ | | align="left" | char | ||
+ | | align="left" | (null) | ||
|- | |- | ||
| align="left" | NAME_ATTRIBUTE1 | | align="left" | NAME_ATTRIBUTE1 | ||
| align="left" | char * NAMESIZE_ATTRIBUTE1 | | align="left" | char * NAMESIZE_ATTRIBUTE1 | ||
| align="left" | Name of attribute 1 | | align="left" | Name of attribute 1 | ||
+ | |- | ||
+ | | align="left" | (null) | ||
+ | | align="left" | char | ||
+ | | align="left" | (null) | ||
|- | |- | ||
| align="left" | ... | | align="left" | ... | ||
Line 136: | Line 132: | ||
| align="left" | char * NAMESIZE_ATTRIBUTE(NATTRIBUTES-1) | | align="left" | char * NAMESIZE_ATTRIBUTE(NATTRIBUTES-1) | ||
| align="left" | Name of attribute (NATTRIBUTES-1) | | align="left" | Name of attribute (NATTRIBUTES-1) | ||
+ | |- | ||
+ | | align="left" | (null) | ||
+ | | align="left" | char | ||
+ | | align="left" | (null) | ||
|- | |- | ||
| align="left" | (Padding) | | align="left" | (Padding) | ||
| align="left" | char or 0 | | align="left" | char or 0 | ||
− | | align="left" | Padding (inserted if NAMESIZE_ATTRIBUTE0+NAMESIZE_ATTRIBUTE1+...NAMESIZE_ATTRIBUTE(NATTRIBUTES-1) % 2 == 1) | + | | align="left" | Padding (inserted if (NAMESIZE_ATTRIBUTE0+1+NAMESIZE_ATTRIBUTE1+1+...NAMESIZE_ATTRIBUTE(NATTRIBUTES-1)+1) % 2 == 1) |
|- | |- | ||
| align="left" | ATTRIBUTE0 | | align="left" | ATTRIBUTE0 |
Revision as of 04:08, 5 August 2011
Home < OpenIGTLink < ProtocolV2 < Type < PolyDataContents
Summary
POLYDATA is used to transfer 3D polygonal data. The message format is designed based on the POLY DATA format defined in VTK file format and equivalent to VTK's vtkPolyData class. The message also supports dataset attribute field in VTK, including scalars, calar_scalars, vectors, vectors, normals, texture coordinates and tensor, but not lookup table.
Message Types
POLYDATA
Data | Type | Description |
NPOINTS | uint32 | Number of points |
PTYPE | uint8 | Data type (see image) |
(Reserved) | uint8 | -- |
NVERTICES | uint32 | Number of vertices |
SIZE_VERTICES | uint32 | Total size of vertices data |
NLINES | uint32 | Number of lines |
SIZE_LINES | uint32 | Total size of line data |
NPOLYGONS | uint32 | Number of polygons |
SIZE_POLYGONS | uint32 | Total size of polygon data |
NTRIANGLE_STRIPS | uint32 | Number of triangle strips |
SIZE_TRIANGLE_STRIPS | uint32 | Total size of triangle strips data |
NATTRIBUTES | uint32 | Number of dataset attributes |
POINTS | PTYPE * NPOINTS * 3 | Coordinates of points (P0x, P0y, P0z, P1x, P1y, P1z, ... P(n-1)x, P(n-1)y, P(n-1)z |
VERTICES | uint32 * ((NPOINTS_0+1) + (NPOINTS_1+1) + (NPOINTS_(N-1)+1)) | array of vertices ((NPOINTS_0, index_0_0, index_0_1, ....), (NPOINTS_1, index_1_0, index_1_1, ....), ..., (NPOINTS_(N-1), index_(N-1)_0, index_(N-1)_1, ....)) |
LINES | uint32 * ((NPOINTS_0+1) + (NPOINTS_1+1) + (NPOINTS_(N-1)+1)) | array of vertices ((NPOINTS_0, index_0_0, index_0_1, ....), (NPOINTS_1, index_1_0, index_1_1, ....), ..., (NPOINTS_(N-1), index_(N-1)_0, index_(N-1)_1, ....)) |
POLYGONS | uint32 * ((NPOINTS_0+1) + (NPOINTS_1+1) + (NPOINTS_(N-1)+1)) | array of vertices ((NPOINTS_0, index_0_0, index_0_1, ....), (NPOINTS_1, index_1_0, index_1_1, ....), ..., (NPOINTS_(N-1), index_(N-1)_0, index_(N-1)_1, ....)) |
TRIANGLE_STRIPS | uint32 * ((NPOINTS_0+1) + (NPOINTS_1+1) + (NPOINTS_(N-1)+1)) | array of vertices ((NPOINTS_0, index_0_0, index_0_1, ....), (NPOINTS_1, index_1_0, index_1_1, ....), ..., (NPOINTS_(N-1), index_(N-1)_0, index_(N-1)_1, ....)) |
TYPE_ATTRIBUTE0 | uint16 | Type of dataset attribute 0 (including number of components for scalar type) |
SIZE_ATTRIBUTE1 | uint32 | Number of data for attribute 0 |
TYPE_ATTRIBUTE1 | uint16 | Type of dataset attribute 1 (including number of components for scalar type) |
SIZE_ATTRIBUTE1 | uint32 | Number of data for attribute1 |
... | ... | ... |
TYPE_ATTRIBUTE(NATTRIBUTES-1) | uint16 | Type of dataset attribute 1 (including number of components for scalar type) |
SIZE_ATTRIBUTE(NATTRIBUTES-1) | uint32 | Number of data for attribute2 |
NAME_ATTRIBUTE0 | char * NAMESIZE_ATTRIBUTE0 | Name of attribute 0 |
(null) | char | (null) |
NAME_ATTRIBUTE1 | char * NAMESIZE_ATTRIBUTE1 | Name of attribute 1 |
(null) | char | (null) |
... | ... | ... |
NAME_ATTRIBUTE(NATTRIBUTES-1) | char * NAMESIZE_ATTRIBUTE(NATTRIBUTES-1) | Name of attribute (NATTRIBUTES-1) |
(null) | char | (null) |
(Padding) | char or 0 | Padding (inserted if (NAMESIZE_ATTRIBUTE0+1+NAMESIZE_ATTRIBUTE1+1+...NAMESIZE_ATTRIBUTE(NATTRIBUTES-1)+1) % 2 == 1) |
ATTRIBUTE0 | SIZE_ATTRIBUTE0 * (number of components) * (data size) | Actual attribute data |
ATTRIBUTE1 | SIZE_ATTRIBUTE0 * (number of components) * (data size) | Actual attribute data |
... | ... | ... |
ATTRIBUTE(NATTRIBUTES-1) | SIZE_ATTRIBUTE(NATTRIBUTES-1) * (number of components) * (data size) | Actual attribute data |
2/17 change the order of the field to make implementation easier
- Values for TYPE_ATTRIBUTE (16-bit)
- 0-7 bit: Attribute Type:
- 0: Scalars
- 1: Vectors
- 2: Normals
- 3: Tensors
- 8-15 bit: Number of components -- ingnored if attribute type is not "Scalars".
- 0-7 bit: Attribute Type:
GET_POLYDATA
Data | Type | Description |
STT_POLYDATA
Data | Type | Description |
Data | Type | Description |
RESOL | uint64 | Minimum interval between message (ns). Same format as TimeStamp |
STP_POLYDATA
Data | Type | Description |
RTS_POLYDATA
Data | Type | Description |
Status | 8 bit unsigned | 0: Success 1: Error |
Implementations
The NDARRAY message type is implemented in the following source code.
Contributors
Junichi Tokuda