A triangles tag is used to specify triangle geometry. At this time only indexed triangle sets can be specified, through other types may be added in the future. This tag allows you to create any geometry surface as XSeen nodes and use any of the existing XSeen position or material attributes, including PBR to make it visible. The triangles tag requires the child tag points to specify the vertices of the object.
The new geometry tag required additional data types and attribute functions. The new data types are only available through the API or development of XSeen functionality. The attribute functions are available at the declarative level. The attribute functions convert a user-representation allowing more flexibility to express properties. The full list of functions are:
- h(x,y,z,r) handles axis-angle representations of rotation
- e(x,y,z) handles Euler rotation angles in X, Y, and Z.
- #hhhhhh specifies a 24-bit hex value for color as rrggbb where each letter is 4 bits
- f3(r,g,b) specifies fractional (range of [0,1]) color for red, green, and blue
In additional any numeric data type can be specified as an array. If an attribute value is an array, then you can use any collection of characters in the list below as separators:
- <white-space>
- comma
- left bracket
- right bracket
- left parentheses
- right parentheses
The following lists are all parsed to the same internal representation
- 1 2 3 4 5 6 7 8 9 10 11 12
- (1 2 3), (4 5 6), (7 8 9), (10 11 12)
- 1,2,3,4,5,6,7,8,9,10,11,12
- [1, 2, 3, 4], [5, 6, 7, 8], (9, 10), (11, 12)
This is documented in the data type and attribute values, triangles tag, and solid properties.
The test example is from Vince Marchetti (http://kshell.com/) and converted from X3D by removing extra parts and converting to XSeen using a in-development converter.