Extensible 3D (X3D)
Part 2: Scene access interface (SAI)
7 Conformance and minimum support requirements
This clause defines the minimum required support for language bindings conforming to this part of ISO/IEC 19775.
Table 7.1 lists the topics for this clause.
This clause addresses conformance of X3D browsers that provide a scene authoring interface (SAI).
The primary objectives of the specifications in this clause are:
Conformance is defined for language bindings to this specification and therefore X3D Browsers and applications that use the facilities provided by the Scene Authoring Interface language-specific bindings as specified in ISO/IEC 19777.
Due to the abstract nature of this specification, it is not possible to specify the conformance tests of individual language bindings of the specification. Separate Conformance sections shall be provided within each language binding that provide the necessary information to implement language-specific binding conformance tests.
A concept of base profile conformance is defined to ensure interoperability of X3D applications and X3D browsers. Base profile conformance is based on a set of limits and minimal requirements. Base profile conformance is intended to provide a functional level of reasonable utility for X3D language bindings while limiting the complexity and resource requirements of X3D browsers. Base profile conformance may not be adequate for all uses of the SAI.
A X3D browser is only conformant to this part of ISO/IEC 19775 if it also conformant to the current profile as specified in ISO/IEC 19775-1. In addition, the following conditions shall be met:
A language binding to this part of ISO/IEC 19775 is conforming if:
All profiles supporting the authoring component shall support the Level 1 functionality as defined in this section. There are two levels of conformance, that of the language binding and the browser implementation.
A language binding shall at a minimum implement the services required for the profile to be supported. It may also define its own optional set of minimum requirements that are no less than the requirements of this section. A browser implementation shall, in addition to the base support for the subject profile, also support the minimum capabilities defined for the subject profile. In general, the browser requirements are specified as general requirements that deal with specific language issues.
Where a browser implements two or more language bindings with different levels of minimum requirements, the browser shall support the minimum requirements for each language separately. Therefore, if one language has higher requirements, the lower requirements of the other shall not be used.
Although external interactions use a superset of the services defined for internal interactions, language bindings to the abstract specification are not required to implement both. They may choose one or the other or both. (It is strongly recommended that a binding support both.)
A conformant browser implementation is not required to provide both internal and external implementations of a given language binding. It shall be possible for a browser to support internal interactions only with language A and external interactions only with language B. In addition, the browser may choose to support only internal interactions or only external interactions. There is no requirement to support both internal and external interactions.
Table 7.2 through Table 7.6 define the minimum requirements for a base profile. The first column specifies the item for which conformance is being defined. These refer to the services as defined by this specification. The second column specifies the requirements for a language binding specification of that item. The third column specifies the requirements of a browser implementation of that service. SAI implementations shall throw an SAIError (such as SAI_NOT_SUPPORTED) if a capability is not supported.
For all these requirements, it shall be assumed that the language binding shall provide complete implementation of all the parameters required for the individual services. Language bindings of data types may be implemented as primitive types in the target language rather than as separate data types. Table 7.2 through Table 7.6 indicate where this is permitted.
A browser conformant to this level shall support bindings to the X3DNode and X3DMetadataObject abstract representations along with all field types.
Table 7.2 — Specifications for SAI data type implementations
Item | Binding support | Minimum browser support |
---|---|---|
SAIAction | Full support as required by the individual service request | As defined by the language |
SAIBoolean | Full Support | Full Support |
SAIBrowserApp | Full Support if createBrowser supported. Not required if only getBrowser supported. |
Optional (based on getBrowser/createBrowser requirements) |
SAIBrowserName | Primitive Type | Full Support |
SAIBrowserRef | Full Support | Full Support |
SAIBrowserVersion | Primitive type | Full Support |
SAIComponentDeclaration | Primitive type describing at least name and level | Full Support |
SAIComponent | Primitive type | Full Support |
SAIEncoding | Specifies the type of encoding. | Full Support |
SAIExecutionContext | Provides access to a subscene. | Full Support |
SAIFieldAccess | Separate values for the four access types data types for the four types defined by ISO/IEC 19775-1. | Full Support |
SAIFieldDeclaration | Provide information on access type, data type and name | Full Support |
SAIField | Full Support | Full Support |
SAIFieldName | Primitive type | Full Support |
SAIFieldType | Separate data types for all types defined in 5 Field type reference of ISO/IEC 19775-1. | Full Support |
SAIFieldValue | Primitive type as appropriate to the given field. Where field is an SF/MFNode shall be SAINodeID |
Number of values for setting and getting as defined in the applicable profile as defined in ISO/IEC 19775-1. |
SAIFrameRate | Primitive Type | Full Support |
SAILayerID | Primitive Type | Full Support if the Layering component is supported. |
SAILoadState | Primitive Type | Full Support |
SAIMatrix | Primitive Type | Full Support |
SAINavSpeed | Primitive Type | Full Support |
SAINode | Full Support | Full Support |
SAINodeType | Primitive type | SAIString representation of the node name |
SAIParameterList | As required by langauge and service definition. | Dependent on language and browser implementation |
SAIProfileDeclaration | Description of at least name and components used in the profile | Full Support |
SAIPropertyList | Primitive type | 5 key-value pairs. Values dependent on language bindings |
SAIProtoDeclaration | Full Support | n/a |
SAIRequester | Full Support | Full Support |
SAIRoute | Full Support | Full Support |
SAIScene | Full Support | Full Support |
SAIScript | Full Support | Full Support |
SAIScriptImplementation | Full Support | Full Support |
SAIStream | Full Support | Full Support |
SAIString | Full Support | Full Support |
SAIUnitDeclaration | Full Support | One entry for each type of unit category. |
SAIURL | Both URL and URN support | As specified in the applicable profile defined in ISO/IEC 19775-1 for all url fields |
SAIError | Separate types for each error condition that may occur as defined in 5.3 Error Types. | Generate error conditions as appropriate |
Table 7.3 — Specifications for SAI browser implementations
Item | Binding support | Minimum internal support | Minimum external support |
---|---|---|---|
Establishing a connection | |||
getBrowser, createBrowser | At least one of getBrowser or createBrowser services shall be provided. | N/A | At least one method of connection with a browser shall be provided.
Unsupported connection methods shall throw an error.
Ignore SAIParameterList |
Browser services | |||
getName | Shall provide | Return NULL if not supported | Return NULL if not supported |
getVersion | Shall provide | Return NULL if not supported. | Return NULL if not supported |
getCurrentSpeed | Shall provide | Return 0.0 if not supported | Return 0.0 if not supported |
getCurrentFrameRate | Shall provide | Return 0.0 if not supported | Return 0.0 if not supported |
getSupportedProfiles | Shall provide | Full Support | Full Support |
getProfile | Shall provide | Full Support | Full Support |
getSupportedComponents | Shall provide | Full Support | Full Support |
getExecutionContext | Shall provide | Full Support | Full Support |
createScene | Shall provide | Support creating scenes for the same profiles and components as used by data encodings. | |
replaceWorld | Full support | Full support | Full support |
importDocument | Shall provide | Return NULL if not supported | Return NULL if not supported |
loadURL | Shall provide | Full support. Ignore SAIPropertyList parameter values. | Full support. Ignore SAIPropertyList parameter values. |
setDescription | Shall provide | No restriction | No restriction |
createX3DFromString | Shall provide | Support File Limits as specified in the applicable profile defined in ISO/IEC 19775-1. | |
createX3DFromStream | Provision dependent of language capabilities for creating raw I/O streams | Support File Limits as specified in the applicable profile as defined in ISO/IEC 19775-1. | |
createX3DFromURL | Shall provide | Support File Limits as specified in the applicable profile as defined in ISO/IEC 19775-1. | |
updateControl | SAIActions of start buffering and end buffering | N/A | Full support |
registerBrowserInterest | SAIActions of add and remove interest. | Events for initialization, shutdown, invalid URLs and connection lost. | |
getRenderingProperties | Shall provide | No restrictions | No restrictions |
getBrowserProperties | Shall provide | No restrictions | No restrictions |
setBrowserOptions | Shall provide | No restrictions | No restrictions |
changeViewpoint | Shall provide | No restrictions | No restrictions |
print/println | Shall provide | No restrictions | No restrictions |
dispose | Shall provide | No restrictions | No restrictions |
Table 7.4 — Specifications for SAI general services
Item | Binding Support | Minimum Browser Support |
---|---|---|
Execution context services | ||
getSpecificationVersion | Full Support | Full Support |
getEncoding | Shall provide | Full Support |
getProfile | SAIProfileDeclaration | Full support. |
getComponents | SAIComponentDeclarations | Full Support |
getUnits | SAIUnitDeclarations | Full Support |
getWorldURL | Shall provide | Full Support |
getNode | Full Support | Full Support |
createNode | Full Support | Full Support |
createProto | Full Support | Full Support |
namedNodeHandling | SAIActions of add and delete nodes and imports | Full support. |
getProtoDeclaration | Shall provide | Full Support |
protoDeclarationHandling | SAIActions of add and delete PROTO | Full Support |
getExternProtoDeclaration | Full Support | Full Support |
externprotoDeclarationHandling | SAIActions of add and delete EXTERNPROTO | Full support. |
getRootNodes | Shall provide | Full Support |
getRoutes | Shall provide | Full Support |
dynamicRouteHandling | SAIActions of add and delete route | Full support. |
dispose | Shall provide | No restrictions |
Scene services | ||
getMetaData | Shall provide | Full Support |
setMetaData | Shall provide | Full Support |
namedNodeHandling | SAIActions of add and delete exports | Full support |
rootNodeHandling | SAIActions of add and delete nodes | Full support |
Node services |
||
getTypeName | Shall provide | Full support |
getType | Shall provide | no restrictions |
getField | Full Support | All fields shall be accesible dependent on access rules for internal and external interactions and node lifecycle. |
getFieldDefinitions | Full Support | Full Support |
dispose | Shall provide | No restrictions |
Field services | ||
dispose | Full support | Full support |
getAccessType | Shall provide | Full support |
getType | see SAIFieldType | Full support |
getName | Full Support | Field name without set_ or _changed modifiers |
getValue | get1Value not required | Full Support |
setValue | set1Value not required | Full Support. Where fields are MF fields, minimum number of values to be supported as specified in the applicable profile defined in ISO/IEC 19775-1. |
registerFieldInterest | SAIActions of add and remove interest
outputOnly and the output side of inputOutput fields shall be supported |
As per supported langauge binding(s). |
Route services | ||
dispose | Full support | Full support |
getSourceNode | Full support | Full Support |
getSourceField | Full support | Full Support |
getDestinationNode | Full support | Full Support |
getDestinationField | Full support | Full Support |
Prototype services |
||
isExternProto | Full support | Full Support |
createInstance | Full support | Full Support |
getFieldDefintions | Full support | Full Support |
checkLoadState | Full support | Full Support |
requestImmediateLoad | Full support | Full Support |
Configuration services |
||
getComponentName | Full support | Full Support |
getComponentLevel | Full support | Full Support |
getProfileName | Full support | Full Support |
getProfileComponents | Full support | Full Support |
getProviderName | Full support | Full Support |
getUnitCategory | Full support | Full Support |
getUnitConversion | Full support | Full Support |
getUnitName | Full support | Full Support |
Table 7.5 — Specifications for SAI script content interaction
Item | Binding support | Minimum browser support |
---|---|---|
setBrowser | Full support | Full Support |
setFields | Full support | Full Support |
initialize | Full support | Full Support |
prepareEvents | Full support | Full Support |
eventsProcessed | Full support | Full Support |
shutdown | Full support | Full Support |
Table 7.6 — Specifications for SAI utility services
Item | Binding support | Minimum browser support |
---|---|---|
Matrix | At least 3x3 and 4x4 sizes | Full Support |
A browser conformant to Level 2 shall support everything in Level 1 and shall support all abstract node types derived from X3DNode for the components implemented in the browser. The browser shall also support all additional objects that may be introduced by the implementation.
A browser conformant to Level 3 shall support all of the requirements of Level 2 and also support binding specific interfaces for each concrete node representation.