Extensible 3D (X3D)
Part 1: Architecture and base components

Annex B

(normative)

Interchange profile

# B.1 General

This annex defines the X3D components that comprise the Interchange profile. This includes not only the nodes that shall be supported but also which fields in the supported nodes may be ignored.

The name of this profile is "Interchange". This profile is targeted towards:

- Exchange of geometry and animations between authoring systems,
- Possible implementation in a low-footprint engine requiring no interaction (EXAMPLE an applet or small X3D browser plug-in),
- Addressing the limitations of software renders not capable of dealing with all details of the full X3D lighting model, and
- Allowing a broader range of implementations by eliminating some complexity of a complete X3D implementation.

# B.2 Topics

Table B.1 provides links to the major topics in this annex.

Table B.1 — Topics

B.1 General B.2 Topics in this annex B.3 Component support B.4 Conformance criteria B.5 Node set B.6 Other limitations Table B.1 — Topics Table B.2 — Components and levels Table B.3 — Nodes for conforming to the Interchange profile Table B.4 — Other limitations

# B.3 Component support

Table B.2 lists the components and their levels which shall be supported in the Interchange profile. Tables B.2 and B.3 describe limitations on required support for nodes and fields contained within these components.

Table B.2 — Components and levels

Component | Level | Reference
--- | --- | ---
Core | 1 | 7.5 Support levels
Time | 1 | 8.5 Support levels
Networking | 1 | 9.5 Support levels
Grouping | 1 | 10.5 Support levels
Rendering | 3 | 11.5 Support levels
Shape | 1 | 12.5 Support levels
Geometry3D | 2 | 13.4 Support levels
Lighting | 1 | 17.5 Support levels
Texturing | 2 | 18.5 Support levels
Interpolation | 2 | 19.5 Support levels
Navigation | 1 | 23.4 Support levels
Environmental effects | 1 | 24.5 Support levels

# B.4 Conformance criteria

Conformance to this profile shall include conformance criteria defined by the specifications for those components and levels listed in Table B.2.

In Tables B.3 and B.4, the first column defines the item for which conformance is being defined. In some cases, general limits are defined but are later overridden in specific cases by more restrictive limits. The second column defines the requirements for a X3D file conforming to the Interchange profile; if a X3D file contains any items that exceed these limits, it may not be possible for a X3D browser conforming to the Interchange profile to successfully parse that X3D file. The third column defines the minimum complexity for a X3D scene that a X3D browser conforming to the Interchange profile shall be able to present to the user. Fields flagged as "not supported" may be supported by X3D browsers which conform to the Interchange profile. The word "ignore" in the minimum X3D browser support column refers only to the display of the item; in particular, set_ events to ignored inputOutput fields shall still generate corresponding _changed events.

# B.5 Node set

Table B.3 lists the nodes which shall be supported in the Interchange profile and specifies any fields in these nodes for which this profile requires less than full support.

Table B.3 — Nodes for conforming to the Interchange profile

Item | X3D File Limit | Minimum X3D browser Support
--- | --- | ---
Appearance | No restrictions. | textureTransform optionally supported. lineProperties not supported. fillProperties not supported.
Background | No restrictions. | groundAngle and groundColor optionally supported. backURL, frontURL, leftURL, rightURL, topURL optionally supported. skyAngle optionally supported. One skyColor.
Box | No restrictions. | Full support.
Color | 15,000 colours. | 15,000 colours.
ColorInterpolator | Restrictions as for all interpolators. | Full support except as for all interpolators.
ColorRGBA | 15,000 colours. | 15,000 colours. Alpha component optionally supported.
Cone | No restrictions. | Full support.
Coordinate | 65,535 points | 65,535 points.
CoordinateInterpolator | 15,000 coordinates per keyValue. Restrictions as for all interpolators. | 15,000 coordinates per keyValue. Support as for all interpolators.
Cylinder | No restrictions. | Full support.
DirectionalLight | No restrictions. | Not scoped by parent Group or Transform.
Group | Restrictions as for all groups. | addChildren optionally supported. removeChildren optionally supported. Otherwise as for all groups.
ImageTexture | JPEG ([JPEG]) and PNG ([I15948]) format. | JPEG ([JPEG]) and PNG ([I15948]) format.
IndexedFaceSet | 10 vertices per face. 5000 faces. Less than 65,535 indices. | ccw optionally supported. set_colorIndex optionally supported. set_normalIndex optionally supported. normal optionally supported. Only convex indexed face sets supported. Hence, convex optionally supported. For creaseAngle, only 0 and π radians supported (or the equivalent if a different angle base unit has been specified). 10 vertices per face. 5000 faces. 65,535 indices in any index field. Face list shall be well-defined as follows: Each face is terminated with -1, including the last face in the array. Each face contains at least three non-coincident vertices. A given coordIndex is not repeated in a face. The vertices of a face shall define a planar polygon. The vertices of a face shall not define a self-intersecting polygon.
IndexedLineSet | 15,000 total vertices. 15,000 indices in any index field. | 15,000 total vertices. 15,000 indices in any index field.
IndexedTriangleFanSet | 5,000 total faces. 15,000 indices in any index field. | 5,000 total faces. 15,000 indices in any index field.
IndexedTriangleSet | 5,000 total faces. 15,000 indices in any index field. | 5,000 total faces. 15,000 indices in any index field.
IndexedTriangleStripSet | 5,000 total faces. 15,000 indices in any index field. | 5,000 total faces. 15,000 indices in any index field.
LineSet | 15,000 total vertices. | 15,000 total vertices.
Material | No restrictions. | ambientIntensity optionally supported. shininess optionally supported. specularColor optionally supported. A Material with emissiveColor not equal to (0,0,0), diffuseColor equal to (0,0,0) is an unlit material. One-bit transparency; transparency values ≥ 0.5 transparent.
MetadataBoolean | No restrictions. | Full support.
MetadataDouble | No restrictions. | Full support.
MetadataFloat | No restrictions. | Full support.
MetadataInteger | No restrictions. | Full support.
MetadataSet | No restrictions. | Full support.
MetadataString | No restrictions. | Full support.
MultiTexture | No restrictions. | At least one texture displayed per node with any number specified. Full support.
MultiTextureCoordinate | 15,000 coordinates. | 15,000 coordinates.
MultiTextureTransform | No restrictions. | At least one texture displayed per node with any number specified. Full support.
NavigationInfo | No restrictions. | avatarSize optionally supported. speed optionally supported. type optionally supported. visibilityLimit optionally supported.
Normal | 15,000 normals | 15,000 normals.
NormalInterpolator | 15,000 normals | 15,000 normals.
OrientationInterpolator | Restrictions as for all interpolators. | Full support except as for all interpolators.
PixelTexture | 512 width. 512 height. | 512 width. 512 height. Display fully transparent and fully opaque pixels.
PointSet | 5,000 points. | 5000 points.
PositionInterpolator | Restrictions as for all interpolators. | Full support except as for all interpolators.
ScalarInterpolator | Restrictions as for all interpolators. | Full support except as for all interpolators.
Shape | No restrictions. | Full support.
Sphere | No restrictions. | Full support.
TextureCoordinate | 65,535 coordinates. | 65,535 coordinates.
TextureCoordinateGenerator | No restrictions. | Full support.
TextureTransform | No restrictions. | Full support.
TimeSensor | No restrictions. | pause, optionally supported. isPaused, optionally supported. resumeTime, optionally supported.
Transform | Restrictions as for all groups. | addChildren optionally supported. removeChildren optionally supported. Otherwise, full support except as for all groups.
TriangleFanSet | 5,000 triangles per fan. 15,000 total triangles. | 5,000 triangles per fan. 15,000 total triangles.
TriangleSet | 15,000 triangles | 15,000 triangles.
TriangleStripSet | 5,000 triangles per strip. 15,000 total triangles | 5,000 triangles per strip. 15,000 total triangles.
Viewpoint | No restrictions. | fieldOfView optionally supported. description optionally supported.
WorldInfo | No restrictions. | info, title Ignored.

# B.6 Other limitations

Table B.4 specifies other aspects of X3D functionality which are supported by this profile. Note that general items refer only to those specific nodes listed in Table B.3.

Table B.4 — Other limitations

Item | X3D File Limit | Minimum X3D browser Support
--- | --- | ---
All groups | 500 children. | 500 children. Ignore bboxCenter and bboxSize.
All interpolators | 1000 key-value pairs. | 1000 key-value pairs.
All lights | 8 simultaneous lights. | 8 simultaneous lights.
Names for DEF/field | 50 utf8 octets. | 50 utf8 octets.
All url fields | 10 URLs. | 10 URLs. URN's ignored. Support `http', `file', and `ftp' protocols. Support relative URLs where relevant.
SFBool | No restrictions. | Full support.
SFColor | No restrictions. | Full support.
SFColorRGBA | No restrictions. | Full support.
SFDouble | Mp restrictions. | Full support. Range ±1e±12. Precision 1e-7.
SFFloat | No restrictions. | Full support.
SFImage | 512 width. 512 height. | 512 width. 512 height.
SFInt32 | No restrictions. | Full support.
SFNode | No restrictions. | Full support.
SFRotation | No restrictions. | Full support.
SFString | 30,000 utf8 octets. | 30,000 utf8 octets.
SFTime | No restrictions. | Full support.
SFVec2d | 15,000 values. | 15,000 values.
SFVec2f | 15,000 values. | 15,000 values.
SFVec3d | 15,000 values. | 15,000 values.
SFVec3f | 15,000 values. | 15,000 values.
MFColor | 15,000 values. | 15,000 values.
MFColorRGBA | 15,000 values. | 15,000 values.
MFDouble | 1000 values. | 1000 values.
MFFloat | 1,000 values. | 1,000 values.
MFImage | No restrictions. | Full support.
MFInt32 | 20,000 values. | 20,000 values.
MFNode | 500 values. | 500 values.
MFRotation | 1,000 values. | 1,000 values.
MFString | 30,000 utf8 octets per string, 10 strings. | 30,000 utf8 octets per string, 10 strings.
MFTime | 1,000 values. | 1,000 values.
MFVec2d | 15,000 values. | 15,000 values.
MFVec2f | 15,000 values. | 15,000 values.
MFVec3d | 15,000 values. | 15,000 values.
MFVec3f | 15,000 values. | 15,000 values.