x_ite 8.10.1 → 8.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/Makefile +3 -0
  2. package/build/bin/version.pl +28 -20
  3. package/build/docs/glTF-samples.pl +151 -0
  4. package/build/docs/nodes.pl +1 -1
  5. package/build/src/nodes.pl +41 -0
  6. package/dist/assets/components/Annotation.js +13 -13
  7. package/dist/assets/components/Annotation.min.js +1 -1
  8. package/dist/assets/components/CADGeometry.js +13 -13
  9. package/dist/assets/components/CADGeometry.min.js +1 -1
  10. package/dist/assets/components/CubeMapTexturing.js +30 -26
  11. package/dist/assets/components/CubeMapTexturing.min.js +1 -1
  12. package/dist/assets/components/DIS.js +14 -14
  13. package/dist/assets/components/DIS.min.js +1 -1
  14. package/dist/assets/components/EventUtilities.js +9 -9
  15. package/dist/assets/components/EventUtilities.min.js +1 -1
  16. package/dist/assets/components/Geometry2D.js +19 -19
  17. package/dist/assets/components/Geometry2D.min.js +1 -1
  18. package/dist/assets/components/Geospatial.js +33 -33
  19. package/dist/assets/components/Geospatial.min.js +1 -1
  20. package/dist/assets/components/HAnim.js +394 -30
  21. package/dist/assets/components/HAnim.min.js +1 -1
  22. package/dist/assets/components/KeyDeviceSensor.js +8 -8
  23. package/dist/assets/components/KeyDeviceSensor.min.js +1 -1
  24. package/dist/assets/components/Layout.js +26 -26
  25. package/dist/assets/components/Layout.min.js +1 -1
  26. package/dist/assets/components/NURBS.js +24 -24
  27. package/dist/assets/components/NURBS.min.js +1 -1
  28. package/dist/assets/components/ParticleSystems.js +73 -74
  29. package/dist/assets/components/ParticleSystems.min.js +1 -1
  30. package/dist/assets/components/Picking.js +18 -18
  31. package/dist/assets/components/Picking.min.js +1 -1
  32. package/dist/assets/components/RigidBodyPhysics.js +18 -18
  33. package/dist/assets/components/RigidBodyPhysics.min.js +1 -1
  34. package/dist/assets/components/Scripting.js +37 -37
  35. package/dist/assets/components/Scripting.min.js +1 -1
  36. package/dist/assets/components/Text.js +55 -63
  37. package/dist/assets/components/Text.min.js +1 -1
  38. package/dist/assets/components/TextureProjector.js +14 -14
  39. package/dist/assets/components/TextureProjector.min.js +1 -1
  40. package/dist/assets/components/Texturing3D.js +35 -31
  41. package/dist/assets/components/Texturing3D.min.js +1 -1
  42. package/dist/assets/components/VolumeRendering.js +20 -20
  43. package/dist/assets/components/VolumeRendering.min.js +1 -1
  44. package/dist/assets/components/X_ITE.js +9 -9
  45. package/dist/assets/components/X_ITE.min.js +1 -1
  46. package/dist/x_ite.css +1 -1
  47. package/dist/x_ite.js +1456 -844
  48. package/dist/x_ite.min.js +1 -1
  49. package/dist/x_ite.zip +0 -0
  50. package/docs/_config.yml +2 -2
  51. package/docs/_posts/components/Core/MetadataBoolean.md +6 -4
  52. package/docs/_posts/components/Core/MetadataDouble.md +6 -4
  53. package/docs/_posts/components/Core/MetadataFloat.md +6 -4
  54. package/docs/_posts/components/Core/MetadataInteger.md +6 -4
  55. package/docs/_posts/components/Core/MetadataSet.md +6 -4
  56. package/docs/_posts/components/Core/MetadataString.md +6 -4
  57. package/docs/_posts/components/DIS/DISEntityTypeMapping.md +1 -1
  58. package/docs/_posts/components/HAnim/HAnimMotion.md +48 -48
  59. package/docs/_posts/components/RigidBodyPhysics/Contact.md +1 -1
  60. package/docs/_posts/getting-started.md +45 -35
  61. package/docs/_posts/reference/browser-services.md +6 -0
  62. package/docs/_tabs/playground.html +215 -15
  63. package/docs/assets/css/style.scss +35 -2
  64. package/docs/assets/js/example.js +95 -3
  65. package/docs/laboratory/gltf-sample-viewer.html +603 -235
  66. package/package.json +2 -2
  67. package/src/assets/shaders/Types.glsl.js +4 -0
  68. package/src/assets/shaders/webgl1/include/Hatch.glsl.js +2 -3
  69. package/src/assets/shaders/webgl2/Compose.fs.js +29 -0
  70. package/src/assets/shaders/webgl2/Compose.vs.js +14 -0
  71. package/src/assets/shaders/webgl2/include/Fragment.glsl.js +24 -2
  72. package/src/assets/shaders/webgl2/include/Hatch.glsl.js +2 -3
  73. package/src/assets/shaders/webgl2/include/Stipple.glsl.js +5 -3
  74. package/src/bookmarks.js +92 -5
  75. package/src/examples.js +1 -0
  76. package/src/standard/Math/Numbers/Quaternion.js +191 -13
  77. package/src/standard/Math/Numbers/Rotation4.js +23 -0
  78. package/src/standard/Time/{MicroTime.js → Time.js} +21 -28
  79. package/src/x_ite/Base/X3DChildObject.js +5 -4
  80. package/src/x_ite/Browser/Core/BrowserOptions.js +71 -60
  81. package/src/x_ite/Browser/Core/Context.js +2 -2
  82. package/src/x_ite/Browser/Core/X3DCoreContext.js +6 -0
  83. package/src/x_ite/Browser/DOMIntegration.js +0 -17
  84. package/src/x_ite/Browser/Navigation/ExamineViewer.js +5 -4
  85. package/src/x_ite/Browser/Navigation/X3DFlyViewer.js +7 -4
  86. package/src/x_ite/Browser/Rendering/X3DRenderingContext.js +20 -15
  87. package/src/x_ite/Browser/Shaders/Shaders.js +19 -15
  88. package/src/x_ite/Browser/Text/X3DTextContext.js +16 -16
  89. package/src/x_ite/Browser/Time/X3DTimeContext.js +3 -2
  90. package/src/x_ite/Browser/VERSION.js +1 -1
  91. package/src/x_ite/Browser/VolumeRendering/VolumeMaterial.js +2 -2
  92. package/src/x_ite/Browser/X3DBrowser.js +1 -2
  93. package/src/x_ite/Browser/X3DBrowserContext.js +0 -5
  94. package/src/x_ite/Components/Core/MetadataBoolean.js +8 -1
  95. package/src/x_ite/Components/Core/MetadataDouble.js +8 -1
  96. package/src/x_ite/Components/Core/MetadataFloat.js +8 -1
  97. package/src/x_ite/Components/Core/MetadataInteger.js +8 -1
  98. package/src/x_ite/Components/Core/MetadataSet.js +8 -1
  99. package/src/x_ite/Components/Core/MetadataString.js +8 -1
  100. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +9 -6
  101. package/src/x_ite/Components/CubeMapTexturing/ImageCubeMapTexture.js +2 -1
  102. package/src/x_ite/Components/DIS/DISEntityTypeMapping.js +1 -1
  103. package/src/x_ite/Components/EnvironmentalEffects/X3DBackgroundNode.js +5 -1
  104. package/src/x_ite/Components/Grouping/X3DGroupingNode.js +2 -0
  105. package/src/x_ite/Components/HAnim/HAnimHumanoid.js +34 -2
  106. package/src/x_ite/Components/HAnim/HAnimMotion.js +331 -15
  107. package/src/x_ite/Components/Lighting/DirectionalLight.js +1 -3
  108. package/src/x_ite/Components/Lighting/PointLight.js +1 -3
  109. package/src/x_ite/Components/Lighting/SpotLight.js +1 -3
  110. package/src/x_ite/Components/Networking/X3DUrlObject.js +5 -4
  111. package/src/x_ite/Components/ParticleSystems/ParticleSystem.js +47 -51
  112. package/src/x_ite/Components/Rendering/X3DGeometryNode.js +4 -2
  113. package/src/x_ite/Components/RigidBodyPhysics/Contact.js +1 -1
  114. package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +1 -1
  115. package/src/x_ite/Components/Shape/FillProperties.js +4 -0
  116. package/src/x_ite/Components/Shape/LineProperties.js +4 -0
  117. package/src/x_ite/Components/Shape/PointProperties.js +4 -0
  118. package/src/x_ite/Components/Shape/X3DMaterialNode.js +44 -20
  119. package/src/x_ite/Components/Sound/AudioClip.js +2 -1
  120. package/src/x_ite/Components/Text/X3DFontStyleNode.js +13 -23
  121. package/src/x_ite/Components/Texturing/ImageTexture.js +2 -1
  122. package/src/x_ite/Components/Texturing/MovieTexture.js +2 -1
  123. package/src/x_ite/Components/Texturing3D/ImageTextureAtlas.js +2 -1
  124. package/src/x_ite/Components/Time/TimeSensor.js +25 -24
  125. package/src/x_ite/Components/Time/X3DTimeDependentNode.js +5 -4
  126. package/src/x_ite/Execution/BindableList.js +3 -3
  127. package/src/x_ite/Execution/X3DScene.js +2 -0
  128. package/src/x_ite/Parser/XMLParser.js +12 -2
  129. package/src/x_ite/Rendering/MultiSampleFrameBuffer.js +264 -26
  130. package/src/x_ite/Rendering/PointingBuffer.js +5 -7
  131. package/src/x_ite/Rendering/TextureBuffer.js +6 -14
  132. package/src/x_ite/Rendering/X3DRenderObject.js +28 -28
  133. package/src/x_ite/X3D.js +0 -1
  134. package/src/x_ite/X3DCanvasElement.js +2 -0
  135. package/src/x_ite.html +23 -24
  136. package/x_ite.min.html +23 -24
  137. /package/build/{bin → docs}/tags.pl +0 -0
package/dist/x_ite.zip CHANGED
Binary file
package/docs/_config.yml CHANGED
@@ -20,8 +20,8 @@ timezone:
20
20
  # ↓ --------------------------
21
21
 
22
22
  title: X_ITE X3D Browser # the main title
23
- version: 8.10.1 # x_ite latest version
24
- size: 289 # size in kb
23
+ version: 8.11.1 # x_ite latest version
24
+ size: 291 # size in kb
25
25
  x3d_latest_version: 4.0 # x3d latest version
26
26
 
27
27
  tagline: Step Into The Future # it will display as the sub-title
@@ -15,7 +15,7 @@ tags: [MetadataBoolean, Core]
15
15
 
16
16
  MetadataBoolean contains a typed list of values providing metadata information about its parent node. Further information about this specific Metadata* node may be provided by a single child Metadata* node with `containerField='metadata'.`
17
17
 
18
- The MetadataBoolean node belongs to the **Core** component and its default container field is *metadata.* It is available from X3D version 3.3 or higher.
18
+ The MetadataBoolean node belongs to the **Core** component and its default container field is *value.* It is available from X3D version 3.3 or higher.
19
19
 
20
20
  ## Hierarchy
21
21
 
@@ -65,15 +65,17 @@ The *value* attribute is a strictly typed data array providing relevant metadata
65
65
 
66
66
  ### Hints
67
67
 
68
- - Use `containerField='value'` if the parent node is MetadataSet.
69
- - [Each of the Metadata nodes are allowed as top-level root nodes in a scene, be sure to explicitly define `containerField='metadata'.`](https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/concepts.html#Rootnodes){:target="_blank"}
68
+ - Typically use `containerField='value'` if the parent node is MetadataSet.
69
+ - Explicitly defining containerField for Metadata nodes is always allowed and also unambiguous across each version of X3D.
70
+ - [Each of the Metadata nodes are allowed as top-level root nodes in a scene, if doing that be sure to explicitly define `containerField='metadata'.`](https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/concepts.html#Rootnodes){:target="_blank"}
70
71
  - If present, an IS statement is the first child within any other node.
71
72
  - An IS statement precedes any sibling Metadata* node, which in turn precedes any other sibling nodes.
72
73
  - Comments are not readable when a model file is loaded for viewing, but WorldInfo and Metadata* nodes are persistent and inspectable at run time.
73
74
  - [X3D for Web Authors, Chapter 15, Metadata Information](https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter15-Metadata/Chapter15-MetadataInformation.html){:target="_blank"}
74
75
 
75
- ### Warning
76
+ ### Warnings
76
77
 
78
+ - Default `containerField='metadata'` in X3D 3 changed to default `containerField='value'` in X3D 4.0, allowing construction of much terser MetadataSet vocabulary structures.
77
79
  - Metadata nodes can only contain other Metadata nodes.
78
80
 
79
81
  ## See Also
@@ -15,7 +15,7 @@ tags: [MetadataDouble, Core]
15
15
 
16
16
  MetadataDouble contains a typed list of values providing metadata information about its parent node. Further information about this specific Metadata* node may be provided by a single child Metadata* node with `containerField='metadata'.`
17
17
 
18
- The MetadataDouble node belongs to the **Core** component and its default container field is *metadata.* It is available from X3D version 3.0 or higher.
18
+ The MetadataDouble node belongs to the **Core** component and its default container field is *value.* It is available from X3D version 3.0 or higher.
19
19
 
20
20
  ## Hierarchy
21
21
 
@@ -65,16 +65,18 @@ The *value* attribute is a strictly typed data array providing relevant metadata
65
65
 
66
66
  ### Hints
67
67
 
68
- - Use `containerField='value'` if the parent node is MetadataSet.
69
- - [Each of the Metadata nodes are allowed as top-level root nodes in a scene, be sure to explicitly define `containerField='metadata'.`](https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/concepts.html#Rootnodes){:target="_blank"}
68
+ - Typically use `containerField='value'` if the parent node is MetadataSet.
69
+ - Explicitly defining containerField for Metadata nodes is always allowed and also unambiguous across each version of X3D.
70
+ - [Each of the Metadata nodes are allowed as top-level root nodes in a scene, if doing that be sure to explicitly define `containerField='metadata'.`](https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/concepts.html#Rootnodes){:target="_blank"}
70
71
  - If present, an IS statement is the first child within any other node.
71
72
  - An IS statement precedes any sibling Metadata* node, which in turn precedes any other sibling nodes.
72
73
  - The choice of MetadataDouble versus MetadataFloat usually depends on the relevant tool utilizing the value, or else the relevant metadata reference defining the value.
73
74
  - Comments are not readable when a model file is loaded for viewing, but WorldInfo and Metadata* nodes are persistent and inspectable at run time.
74
75
  - [X3D for Web Authors, Chapter 15, Metadata Information](https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter15-Metadata/Chapter15-MetadataInformation.html){:target="_blank"}
75
76
 
76
- ### Warning
77
+ ### Warnings
77
78
 
79
+ - Default `containerField='metadata'` in X3D 3 changed to default `containerField='value'` in X3D 4.0, allowing construction of much terser MetadataSet vocabulary structures.
78
80
  - Metadata nodes can only contain other Metadata nodes.
79
81
 
80
82
  ## See Also
@@ -15,7 +15,7 @@ tags: [MetadataFloat, Core]
15
15
 
16
16
  MetadataFloat contains a typed list of values providing metadata information about its parent node. Further information about this specific Metadata* node may be provided by a single child Metadata* node with `containerField='metadata'.`
17
17
 
18
- The MetadataFloat node belongs to the **Core** component and its default container field is *metadata.* It is available from X3D version 3.0 or higher.
18
+ The MetadataFloat node belongs to the **Core** component and its default container field is *value.* It is available from X3D version 3.0 or higher.
19
19
 
20
20
  ## Hierarchy
21
21
 
@@ -65,16 +65,18 @@ The *value* attribute is a strictly typed data array providing relevant metadata
65
65
 
66
66
  ### Hints
67
67
 
68
- - Use `containerField='value'` if the parent node is MetadataSet.
69
- - [Each of the Metadata nodes are allowed as top-level root nodes in a scene, be sure to explicitly define `containerField='metadata'.`](https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/concepts.html#Rootnodes){:target="_blank"}
68
+ - Typically use `containerField='value'` if the parent node is MetadataSet.
69
+ - Explicitly defining containerField for Metadata nodes is always allowed and also unambiguous across each version of X3D.
70
+ - [Each of the Metadata nodes are allowed as top-level root nodes in a scene, if doing that be sure to explicitly define `containerField='metadata'.`](https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/concepts.html#Rootnodes){:target="_blank"}
70
71
  - If present, an IS statement is the first child within any other node.
71
72
  - An IS statement precedes any sibling Metadata* node, which in turn precedes any other sibling nodes.
72
73
  - The choice of MetadataDouble versus MetadataFloat usually depends on the relevant tool utilizing the value, or else the relevant metadata reference defining the value.
73
74
  - Comments are not readable when a model file is loaded for viewing, but WorldInfo and Metadata* nodes are persistent and inspectable at run time.
74
75
  - [X3D for Web Authors, Chapter 15, Metadata Information](https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter15-Metadata/Chapter15-MetadataInformation.html){:target="_blank"}
75
76
 
76
- ### Warning
77
+ ### Warnings
77
78
 
79
+ - Default `containerField='metadata'` in X3D 3 changed to default `containerField='value'` in X3D 4.0, allowing construction of much terser MetadataSet vocabulary structures.
78
80
  - Metadata nodes can only contain other Metadata nodes.
79
81
 
80
82
  ## See Also
@@ -15,7 +15,7 @@ tags: [MetadataInteger, Core]
15
15
 
16
16
  MetadataInteger contains a typed list of values providing metadata information about its parent node. Further information about this specific Metadata* node may be provided by a single child Metadata* node with `containerField='metadata'.`
17
17
 
18
- The MetadataInteger node belongs to the **Core** component and its default container field is *metadata.* It is available from X3D version 3.0 or higher.
18
+ The MetadataInteger node belongs to the **Core** component and its default container field is *value.* It is available from X3D version 3.0 or higher.
19
19
 
20
20
  ## Hierarchy
21
21
 
@@ -65,15 +65,17 @@ The *value* attribute is a strictly typed data array providing relevant metadata
65
65
 
66
66
  ### Hints
67
67
 
68
- - Use `containerField='value'` if the parent node is MetadataSet.
69
- - [Each of the Metadata nodes are allowed as top-level root nodes in a scene, be sure to explicitly define `containerField='metadata'.`](https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/concepts.html#Rootnodes){:target="_blank"}
68
+ - Typically use `containerField='value'` if the parent node is MetadataSet.
69
+ - Explicitly defining containerField for Metadata nodes is always allowed and also unambiguous across each version of X3D.
70
+ - [Each of the Metadata nodes are allowed as top-level root nodes in a scene, if doing that be sure to explicitly define `containerField='metadata'.`](https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/concepts.html#Rootnodes){:target="_blank"}
70
71
  - If present, an IS statement is the first child within any other node.
71
72
  - An IS statement precedes any sibling Metadata* node, which in turn precedes any other sibling nodes.
72
73
  - Comments are not readable when a model file is loaded for viewing, but WorldInfo and Metadata* nodes are persistent and inspectable at run time.
73
74
  - [X3D for Web Authors, Chapter 15, Metadata Information](https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter15-Metadata/Chapter15-MetadataInformation.html){:target="_blank"}
74
75
 
75
- ### Warning
76
+ ### Warnings
76
77
 
78
+ - Default `containerField='metadata'` in X3D 3 changed to default `containerField='value'` in X3D 4.0, allowing construction of much terser MetadataSet vocabulary structures.
77
79
  - Metadata nodes can only contain other Metadata nodes.
78
80
 
79
81
  ## See Also
@@ -15,7 +15,7 @@ tags: [MetadataSet, Core]
15
15
 
16
16
  MetadataSet contains a list of Metadata* nodes that each have `containerField='value'` and together provide information about the parent node of the MetadataSet. Further information about this specific MetadataSet node may be provided by a single child Metadata* node with `containerField='metadata'.`
17
17
 
18
- The MetadataSet node belongs to the **Core** component and its default container field is *metadata.* It is available from X3D version 3.0 or higher.
18
+ The MetadataSet node belongs to the **Core** component and its default container field is *value.* It is available from X3D version 3.0 or higher.
19
19
 
20
20
  ## Hierarchy
21
21
 
@@ -61,16 +61,18 @@ The *value* field provides a list of X3DMetadataObject nodes whose meaning is de
61
61
 
62
62
  ### Hints
63
63
 
64
- - Use `containerField='value'` if the parent node is MetadataSet.
65
- - [Each of the Metadata nodes are allowed as top-level root nodes in a scene, be sure to explicitly define `containerField='metadata'.`](https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/concepts.html#Rootnodes){:target="_blank"}
64
+ - Typically use `containerField='value'` if the parent node is MetadataSet.
65
+ - Explicitly defining containerField for Metadata nodes is always allowed and also unambiguous across each version of X3D.
66
+ - [Each of the Metadata nodes are allowed as top-level root nodes in a scene, if doing that be sure to explicitly define `containerField='metadata'.`](https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/concepts.html#Rootnodes){:target="_blank"}
66
67
  - If present, an IS statement is the first child within any other node.
67
68
  - An IS statement precedes any sibling Metadata* node, which in turn precedes any other sibling nodes.
68
69
  - MetadataSet can contain other MetadataSet nodes.
69
70
  - Comments are not readable when a model file is loaded for viewing, but WorldInfo and Metadata* nodes are persistent and inspectable at run time.
70
71
  - [X3D for Web Authors, Chapter 15, Metadata Information](https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter15-Metadata/Chapter15-MetadataInformation.html){:target="_blank"}
71
72
 
72
- ### Warning
73
+ ### Warnings
73
74
 
75
+ - Default `containerField='metadata'` in X3D 3 changed to default `containerField='value'` in X3D 4.0, allowing construction of much terser MetadataSet vocabulary structures.
74
76
  - Metadata nodes can only contain other Metadata nodes.
75
77
 
76
78
  ## See Also
@@ -15,7 +15,7 @@ tags: [MetadataString, Core]
15
15
 
16
16
  MetadataString contains a typed list of values providing metadata information about its parent node. Further information about this specific Metadata* node may be provided by a single child Metadata* node with `containerField='metadata'.`
17
17
 
18
- The MetadataString node belongs to the **Core** component and its default container field is *metadata.* It is available from X3D version 3.0 or higher.
18
+ The MetadataString node belongs to the **Core** component and its default container field is *value.* It is available from X3D version 3.0 or higher.
19
19
 
20
20
  ## Hierarchy
21
21
 
@@ -65,15 +65,17 @@ The *value* attribute is a strictly typed data array providing relevant metadata
65
65
 
66
66
  ### Hints
67
67
 
68
- - Use `containerField='value'` if the parent node is MetadataSet.
69
- - [Each of the Metadata nodes are allowed as top-level root nodes in a scene, be sure to explicitly define `containerField='metadata'.`](https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/concepts.html#Rootnodes){:target="_blank"}
68
+ - Typically use `containerField='value'` if the parent node is MetadataSet.
69
+ - Explicitly defining containerField for Metadata nodes is always allowed and also unambiguous across each version of X3D.
70
+ - [Each of the Metadata nodes are allowed as top-level root nodes in a scene, if doing that be sure to explicitly define `containerField='metadata'.`](https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/concepts.html#Rootnodes){:target="_blank"}
70
71
  - If present, an IS statement is the first child within any other node.
71
72
  - An IS statement precedes any sibling Metadata* node, which in turn precedes any other sibling nodes.
72
73
  - Comments are not readable when a model file is loaded for viewing, but WorldInfo and Metadata* nodes are persistent and inspectable at run time.
73
74
  - [X3D for Web Authors, Chapter 15, Metadata Information](https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter15-Metadata/Chapter15-MetadataInformation.html){:target="_blank"}
74
75
 
75
- ### Warning
76
+ ### Warnings
76
77
 
78
+ - Default `containerField='metadata'` in X3D 3 changed to default `containerField='value'` in X3D 4.0, allowing construction of much terser MetadataSet vocabulary structures.
77
79
  - Metadata nodes can only contain other Metadata nodes.
78
80
 
79
81
  ## See Also
@@ -15,7 +15,7 @@ tags: [DISEntityTypeMapping, DIS]
15
15
 
16
16
  DISEntityTypeMapping provides a best-match mapping from DIS ESPDU entity type information to a specific X3D model, thus providing a visual and behavioral representation that best matches the entity type. Fields are processed in order: kind, domain, country, category, subcategory, specific, extra.
17
17
 
18
- The DISEntityTypeMapping node belongs to the **DIS** component and its default container field is *mapping.* It is available from X3D version 3.0 or higher.
18
+ The DISEntityTypeMapping node belongs to the **DIS** component and its default container field is *children.* It is available from X3D version 3.0 or higher.
19
19
 
20
20
  ## Hierarchy
21
21
 
@@ -15,7 +15,7 @@ tags: [HAnimMotion, HAnim]
15
15
 
16
16
  An HAnimMotion node supports discrete frame-by-frame playback for HAnim motion data animation. Design characteristics include integration with HAnim figure data and HAnimJoint nodes, animation control, and playback of raw motion data.
17
17
 
18
- The HAnimMotion node belongs to the **HAnim** component and its default container field is *children.* It is available from X3D version 4.0 or higher.
18
+ The HAnimMotion node belongs to the **HAnim** component and its default container field is *motions.* It is available from X3D version 4.0 or higher.
19
19
 
20
20
  ## Hierarchy
21
21
 
@@ -47,57 +47,67 @@ Author-provided prose that describes intended purpose of this node.
47
47
 
48
48
  Enables/disables node operation.
49
49
 
50
- ### SFBool [in] **next**
50
+ ### SFInt32 [in, out] **loa** -1 <small>[-1,4]</small>
51
51
 
52
- Send *next* output value in keyValue array, and reset internal fraction field to match corresponding value in key array.
52
+ Level Of Articulation 0..4 indicates complexity and detail of joints for given humanoid skeletal hierarchy.
53
53
 
54
- #### Hint
54
+ #### Hints
55
55
 
56
- - This input event will "wrap around" boundary of frame array, i.e. continue from endFrame next to startFrame if necessary.
56
+ - *loa* value of -1 indicates that no LOA conformance is provided.
57
+ - [Humanoid Animation (HAnim) Specification, Part 1 Architecture, 4.8.4 Levels of articulation](https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/concepts.html#LevelsOfArticulation){:target="_blank"}
57
58
 
58
- #### Warning
59
+ ### SFString [in, out] **joints** ""
59
60
 
60
- - It is an error to define this transient inputOnly field in an X3D file, instead only use it a destination for ROUTE events.
61
+ *joints* field lists names of *joints* that raw motion data is to be applied to. The number and order of the names in the *joints* field shall match the number and order of the channels field information, and the number and order of the sets of values in the values field for each frame of the animation.
61
62
 
62
- ### SFBool [in] **previous**
63
+ #### Hints
63
64
 
64
- Send *previous* output value in keyValue array, and reset internal fraction field to match corresponding value in key array.
65
+ - Values are space or comma separated.
66
+ - The joint name IGNORED shall be used for channel of motion data that is not used for any joint.
65
67
 
66
- #### Hint
68
+ ### MFBool [in, out] **channelsEnabled** [ ]
67
69
 
68
- - This input event will "wrap around" boundary of frame array, i.e. continue from startFrame next to endFrame if necessary.
70
+ Boolean values for each channel indicating whether enabled.
69
71
 
70
- #### Warning
72
+ ### SFString [in, out] **channels** ""
71
73
 
72
- - It is an error to define this transient inputOnly field in an X3D file, instead only use it a destination for ROUTE events.
74
+ List of number of *channels* for transformation, followed by transformation type of each channel of data. Each value is space or comma separated.
73
75
 
74
- ### SFInt32 [in, out] **startFrame** 0 <small>[0,∞)</small>
76
+ #### Hint
75
77
 
76
- *startFrame* indicates initial index of animated frame. Note that *startFrame* can precede, equal or follow endFrame.
78
+ - *channels* are enabled by default, unless otherwise indicated by channelsEnabled field.
77
79
 
78
- #### Hint
80
+ ### MFFloat [in, out] **values** [ ] <small>(-∞,∞)</small>
79
81
 
80
- - *startFrame* starts at 0 and is no greater than (frameCount - 1).
82
+ *values* field contains all transformation *values*, ordered first by frame, then by joint, and then by transformation Sets of floats in the *values* array matching the order listed in joints and channels fields.
81
83
 
82
- ### SFInt32 [in, out] **endFrame** 0 <small>[0,∞)</small>
84
+ ### SFBool [in, out] **loop** FALSE
83
85
 
84
- *endFrame* indicates final index of animated frame. Note that *endFrame* can precede, equal or follow *endFrame*. The default *endFrame* value is reset to (frameCount - 1) whenever frameCount is changed.
86
+ Repeat indefinitely when *loop*=true, repeat only once when *loop*=false.
87
+
88
+ ### SFBool [in] **next**
89
+
90
+ Send *next* output value in keyValue array, and reset internal fraction field to match corresponding value in key array.
85
91
 
86
92
  #### Hint
87
93
 
88
- - *endFrame* starts at 0 and is no greater than (frameCount - 1).
94
+ - This input event will "wrap around" boundary of frame array, i.e. continue from endFrame next to startFrame if necessary.
89
95
 
90
- ### SFTime [in, out] **frameDuration** 0.1 <small>(0,∞)</small>
96
+ #### Warning
91
97
 
92
- *frameDuration* specifies the duration of each frame in seconds.
98
+ - It is an error to define this transient inputOnly field in an X3D file, instead only use it a destination for ROUTE events.
93
99
 
94
- ### SFInt32 [in, out] **frameIncrement** 1 <small>(-∞,∞)</small>
100
+ ### SFBool [in] **previous**
95
101
 
96
- *frameIncrement* field controls whether playback direction is forwards or backwards, and also whether frames are skipped (for example, subsampled replay). For a single animation step, the next frameIndex value equals (frameIndex + *frameIncrement*) modulo frameCount.
102
+ Send *previous* output value in keyValue array, and reset internal fraction field to match corresponding value in key array.
97
103
 
98
104
  #### Hint
99
105
 
100
- - Note that setting *frameIncrement* to 0 prevents automatic advancement of frameIndex and pauses animation of HAnimMotion node.
106
+ - This input event will "wrap around" boundary of frame array, i.e. continue from startFrame next to endFrame if necessary.
107
+
108
+ #### Warning
109
+
110
+ - It is an error to define this transient inputOnly field in an X3D file, instead only use it a destination for ROUTE events.
101
111
 
102
112
  ### SFInt32 [in, out] **frameIndex** 0 <small>[0,∞)</small>
103
113
 
@@ -107,43 +117,33 @@ Send *previous* output value in keyValue array, and reset internal fraction fiel
107
117
 
108
118
  - *frameIndex* starts at 0 and is no greater than (frameCount - 1). Values less than 0 are reset as 0. Values greater or equal to frameCount are stored as (frameCount - 1). Thus the value of *frameIndex* shall be greater than or equal to zero, and less than frameCount.
109
119
 
110
- ### SFBool [in, out] **loop** FALSE
111
-
112
- Repeat indefinitely when *loop*=true, repeat only once when *loop*=false.
113
-
114
- ### MFBool [in, out] **channelsEnabled** [ ]
120
+ ### SFTime [in, out] **frameDuration** 0.1 <small>(0,∞)</small>
115
121
 
116
- Boolean values for each channel indicating whether enabled.
122
+ *frameDuration* specifies the duration of each frame in seconds.
117
123
 
118
- ### SFString [in, out] **channels** ""
124
+ ### SFInt32 [in, out] **frameIncrement** 1 <small>(-∞,∞)</small>
119
125
 
120
- List of number of *channels* for transformation, followed by transformation type of each channel of data. Each value is space or comma separated.
126
+ *frameIncrement* field controls whether playback direction is forwards or backwards, and also whether frames are skipped (for example, subsampled replay). For a single animation step, the next frameIndex value equals (frameIndex + *frameIncrement*) modulo frameCount.
121
127
 
122
128
  #### Hint
123
129
 
124
- - *channels* are enabled by default, unless otherwise indicated by channelsEnabled field.
125
-
126
- ### SFString [in, out] **joints** ""
127
-
128
- *joints* field lists names of *joints* that raw motion data is to be applied to. The number and order of the names in the *joints* field shall match the number and order of the channels field information, and the number and order of the sets of values in the values field for each frame of the animation.
130
+ - Note that setting *frameIncrement* to 0 prevents automatic advancement of frameIndex and pauses animation of HAnimMotion node.
129
131
 
130
- #### Hints
132
+ ### SFInt32 [in, out] **startFrame** 0 <small>[0,∞)</small>
131
133
 
132
- - Values are space or comma separated.
133
- - The joint name IGNORED shall be used for channel of motion data that is not used for any joint.
134
+ *startFrame* indicates initial index of animated frame. Note that *startFrame* can precede, equal or follow endFrame.
134
135
 
135
- ### SFInt32 [in, out] **loa** -1 <small>[-1,4]</small>
136
+ #### Hint
136
137
 
137
- Level Of Articulation 0..4 indicates complexity and detail of joints for given humanoid skeletal hierarchy.
138
+ - *startFrame* starts at 0 and is no greater than (frameCount - 1).
138
139
 
139
- #### Hints
140
+ ### SFInt32 [in, out] **endFrame** 0 <small>[0,∞)</small>
140
141
 
141
- - *loa* value of -1 indicates that no LOA conformance is provided.
142
- - [Humanoid Animation (HAnim) Specification, Part 1 Architecture, 4.8.4 Levels of articulation](https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/concepts.html#LevelsOfArticulation){:target="_blank"}
142
+ *endFrame* indicates final index of animated frame. Note that *endFrame* can precede, equal or follow *endFrame*. The default *endFrame* value is reset to (frameCount - 1) whenever frameCount is changed.
143
143
 
144
- ### MFFloat [in, out] **values** [ ] <small>(-∞,∞)</small>
144
+ #### Hint
145
145
 
146
- *values* field contains all transformation *values*, ordered first by frame, then by joint, and then by transformation Sets of floats in the *values* array matching the order listed in joints and channels fields.
146
+ - *endFrame* starts at 0 and is no greater than (frameCount - 1).
147
147
 
148
148
  ### SFTime [out] **cycleTime**
149
149
 
@@ -15,7 +15,7 @@ tags: [Contact, RigidBodyPhysics]
15
15
 
16
16
  Contact nodes are produced as output events when two collidable objects or spaces make contact.
17
17
 
18
- The Contact node belongs to the **RigidBodyPhysics** component and its default container field is *children.* It is available from X3D version 3.2 or higher.
18
+ The Contact node belongs to the **RigidBodyPhysics** component and its default container field is *contacts.* It is available from X3D version 3.2 or higher.
19
19
 
20
20
  ## Hierarchy
21
21