x_ite 5.0.3 → 6.1.0

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 (385) hide show
  1. package/.vscode/settings.json +12 -5
  2. package/.vscode/tasks.json +25 -1
  3. package/Makefile +36 -28
  4. package/README.md +6 -11
  5. package/build/bin/dist.pl +0 -6
  6. package/build/bin/examples-and-tests.pl +75 -0
  7. package/build/bin/tests-menu.pl +57 -0
  8. package/build/bin/version.pl +7 -4
  9. package/build/parts/default.start.frag.js +3 -2
  10. package/dist/assets/components/annotation.js +3 -2
  11. package/dist/assets/components/annotation.min.js +1 -1
  12. package/dist/assets/components/cad-geometry.js +3 -2
  13. package/dist/assets/components/cad-geometry.min.js +1 -1
  14. package/dist/assets/components/cube-map-texturing.js +8 -20
  15. package/dist/assets/components/cube-map-texturing.min.js +1 -1
  16. package/dist/assets/components/dis.js +3 -2
  17. package/dist/assets/components/dis.min.js +1 -1
  18. package/dist/assets/components/event-utilities.js +4 -3
  19. package/dist/assets/components/event-utilities.min.js +1 -1
  20. package/dist/assets/components/geometry2d.js +38 -52
  21. package/dist/assets/components/geometry2d.min.js +1 -1
  22. package/dist/assets/components/geospatial.js +34 -1686
  23. package/dist/assets/components/geospatial.min.js +1 -1
  24. package/dist/assets/components/h-anim.js +71 -77
  25. package/dist/assets/components/h-anim.min.js +1 -1
  26. package/dist/assets/components/key-device-sensor.js +4 -3
  27. package/dist/assets/components/key-device-sensor.min.js +1 -1
  28. package/dist/assets/components/layout.js +101 -173
  29. package/dist/assets/components/layout.min.js +1 -1
  30. package/dist/assets/components/nurbs.js +3 -2
  31. package/dist/assets/components/nurbs.min.js +1 -1
  32. package/dist/assets/components/particle-systems.js +1926 -1669
  33. package/dist/assets/components/particle-systems.min.js +1 -1
  34. package/dist/assets/components/picking.js +34 -41
  35. package/dist/assets/components/picking.min.js +1 -1
  36. package/dist/assets/components/projective-texture-mapping.js +73 -86
  37. package/dist/assets/components/projective-texture-mapping.min.js +1 -1
  38. package/dist/assets/components/rigid-body-physics.js +37 -57
  39. package/dist/assets/components/rigid-body-physics.min.js +1 -1
  40. package/dist/assets/components/scripting.js +3 -2
  41. package/dist/assets/components/scripting.min.js +1 -1
  42. package/dist/assets/components/texturing-3d.js +27 -33
  43. package/dist/assets/components/texturing-3d.min.js +3 -3
  44. package/dist/assets/components/volume-rendering.js +12 -11
  45. package/dist/assets/components/volume-rendering.min.js +1 -1
  46. package/dist/assets/components/x_ite.js +3 -2
  47. package/dist/assets/components/x_ite.min.js +1 -1
  48. package/dist/assets/images/Shading.png +0 -0
  49. package/dist/assets/linetype/1.png +0 -0
  50. package/dist/assets/linetype/10.png +0 -0
  51. package/dist/assets/linetype/11.png +0 -0
  52. package/dist/assets/linetype/12.png +0 -0
  53. package/dist/assets/linetype/13.png +0 -0
  54. package/dist/assets/linetype/14.png +0 -0
  55. package/dist/assets/linetype/15.png +0 -0
  56. package/dist/assets/linetype/16.png +0 -0
  57. package/dist/assets/linetype/2.png +0 -0
  58. package/dist/assets/linetype/3.png +0 -0
  59. package/dist/assets/linetype/4.png +0 -0
  60. package/dist/assets/linetype/5.png +0 -0
  61. package/dist/assets/linetype/6.png +0 -0
  62. package/dist/assets/linetype/7.png +0 -0
  63. package/dist/assets/linetype/8.png +0 -0
  64. package/dist/assets/linetype/9.png +0 -0
  65. package/dist/assets/shaders/webgl1/Gouraud.vs +1 -1
  66. package/dist/assets/shaders/webgl1/Line.fs +0 -21
  67. package/dist/assets/shaders/webgl1/Line.vs +0 -10
  68. package/dist/assets/shaders/webgl1/PBR.fs +1 -1
  69. package/dist/assets/shaders/webgl1/PBR.vs +1 -1
  70. package/dist/assets/shaders/webgl1/Phong.fs +1 -1
  71. package/dist/assets/shaders/webgl1/Point.vs +1 -1
  72. package/dist/assets/shaders/webgl2/Depth.vs +29 -1
  73. package/dist/assets/shaders/webgl2/Gouraud.vs +32 -4
  74. package/dist/assets/shaders/webgl2/Line.fs +24 -12
  75. package/dist/assets/shaders/webgl2/Line.vs +36 -11
  76. package/dist/assets/shaders/webgl2/LineTransform.fs +4 -0
  77. package/dist/assets/shaders/webgl2/LineTransform.vs +57 -0
  78. package/dist/assets/shaders/webgl2/PBR.fs +1 -1
  79. package/dist/assets/shaders/webgl2/PBR.vs +35 -7
  80. package/dist/assets/shaders/webgl2/Phong.fs +1 -1
  81. package/dist/assets/shaders/webgl2/Phong.vs +31 -3
  82. package/dist/assets/shaders/webgl2/Point.vs +30 -2
  83. package/dist/assets/shaders/webgl2/Unlit.vs +31 -3
  84. package/dist/example.html +6 -6
  85. package/dist/x_ite.css +199 -224
  86. package/dist/x_ite.js +16335 -15917
  87. package/dist/x_ite.min.js +17 -17
  88. package/dist/x_ite.zip +0 -0
  89. package/docs/404.md +6 -0
  90. package/docs/Accessing-the-External-Browser.md +21 -15
  91. package/docs/Browser-Support.md +6 -0
  92. package/docs/Custom-Shaders.md +18 -25
  93. package/docs/Features.md +11 -5
  94. package/docs/Gemfile +44 -0
  95. package/docs/Gemfile.lock +122 -0
  96. package/docs/Glossary.md +6 -0
  97. package/docs/How-To-Configure-Your-Web-Server.md +6 -0
  98. package/docs/Supported-Nodes.md +9 -1
  99. package/docs/What's-New.md +93 -39
  100. package/docs/XHTML-DOM-Integration.md +6 -0
  101. package/docs/_config.yml +2 -2
  102. package/docs/assets/css/main.scss +26 -0
  103. package/docs/index.md +42 -50
  104. package/docs/reference/Browser-Services.md +9 -3
  105. package/docs/reference/Constants-Services.md +6 -0
  106. package/docs/reference/ECMAScript-Object-and-Function-Definitions.md +12 -6
  107. package/docs/reference/Field-Services-and-Objects.md +105 -1
  108. package/docs/reference/Prototype-Services.md +11 -0
  109. package/docs/reference/Route-Services.md +9 -0
  110. package/docs/reference/Scene-Services.md +17 -2
  111. package/docs/reference/Script-Node-Authoring-Interface.md +7 -1
  112. package/docs/tutorials/Adding-backgrounds.md +6 -0
  113. package/docs/tutorials/Adding-fog.md +6 -0
  114. package/docs/tutorials/Adding-sound.md +6 -0
  115. package/docs/tutorials/Animating-transforms.md +6 -0
  116. package/docs/tutorials/Basic-Nodes.md +6 -0
  117. package/docs/tutorials/Building-a-X3D-world.md +6 -0
  118. package/docs/tutorials/Building-elevation-grids.md +6 -0
  119. package/docs/tutorials/Building-extruded-shapes.md +6 -0
  120. package/docs/tutorials/Building-primitive-shapes.md +6 -0
  121. package/docs/tutorials/Building-shapes-out-of-points,-lines,-and-faces.md +6 -0
  122. package/docs/tutorials/Controlling-appearance-with-materials.md +6 -0
  123. package/docs/tutorials/Controlling-color-on-coordinate-based-geometry.md +6 -0
  124. package/docs/tutorials/Controlling-detail.md +6 -0
  125. package/docs/tutorials/Controlling-how-textures-are-mapped.md +6 -0
  126. package/docs/tutorials/Controlling-navigation.md +6 -0
  127. package/docs/tutorials/Controlling-shading-on-coordinate-based-geometry.md +6 -0
  128. package/docs/tutorials/Controlling-the-viewpoint.md +6 -0
  129. package/docs/tutorials/Creating-new-node-types.md +6 -0
  130. package/docs/tutorials/Grouping-nodes.md +6 -0
  131. package/docs/tutorials/Hello,-World!.md +6 -0
  132. package/docs/tutorials/Improving-Performance.md +6 -0
  133. package/docs/tutorials/Increasing-Rendering-Speed.md +6 -0
  134. package/docs/tutorials/Introducing-X3D.md +6 -0
  135. package/docs/tutorials/Introducing-animation.md +6 -0
  136. package/docs/tutorials/Introducing-script-use.md +6 -0
  137. package/docs/tutorials/Lighting-your-world.md +6 -0
  138. package/docs/tutorials/Mapping-textures.md +6 -0
  139. package/docs/tutorials/Naming-nodes.md +6 -0
  140. package/docs/tutorials/Providing-information-about-your-world.md +6 -0
  141. package/docs/tutorials/Sensing-the-viewer.md +6 -0
  142. package/docs/tutorials/Sensing-viewer-actions.md +6 -0
  143. package/docs/tutorials/Transforming-Shapes.md +6 -0
  144. package/docs/tutorials/Writing-program-scripts-with-ECMAScript.md +6 -0
  145. package/docs/tutorials/index.md +42 -36
  146. package/package.json +6 -7
  147. package/src/assets/components/geometry2d.js +1 -1
  148. package/src/assets/components/key-device-sensor.js +1 -1
  149. package/src/assets/components/layout.js +1 -1
  150. package/src/assets/components/particle-systems.js +1 -1
  151. package/src/assets/components/volume-rendering.js +1 -1
  152. package/src/assets/images/Shading.png +0 -0
  153. package/src/assets/linetype/1.png +0 -0
  154. package/src/assets/linetype/10.png +0 -0
  155. package/src/assets/linetype/11.png +0 -0
  156. package/src/assets/linetype/12.png +0 -0
  157. package/src/assets/linetype/13.png +0 -0
  158. package/src/assets/linetype/14.png +0 -0
  159. package/src/assets/linetype/15.png +0 -0
  160. package/src/assets/linetype/16.png +0 -0
  161. package/src/assets/linetype/2.png +0 -0
  162. package/src/assets/linetype/3.png +0 -0
  163. package/src/assets/linetype/4.png +0 -0
  164. package/src/assets/linetype/5.png +0 -0
  165. package/src/assets/linetype/6.png +0 -0
  166. package/src/assets/linetype/7.png +0 -0
  167. package/src/assets/linetype/8.png +0 -0
  168. package/src/assets/linetype/9.png +0 -0
  169. package/src/assets/shaders/Types.glsl +1 -9
  170. package/src/assets/shaders/webgl1/Gouraud.fs +1 -1
  171. package/src/assets/shaders/webgl1/Gouraud.vs +2 -3
  172. package/src/assets/shaders/webgl1/Line.fs +3 -28
  173. package/src/assets/shaders/webgl1/Line.vs +6 -20
  174. package/src/assets/shaders/webgl1/PBR.fs +6 -6
  175. package/src/assets/shaders/webgl1/PBR.vs +1 -1
  176. package/src/assets/shaders/webgl1/Phong.fs +10 -10
  177. package/src/assets/shaders/webgl1/Point.vs +2 -2
  178. package/src/assets/shaders/webgl1/Unlit.fs +4 -4
  179. package/src/assets/shaders/webgl1/include/Normal.glsl +1 -1
  180. package/src/assets/shaders/webgl1/include/Texture.glsl +3 -8
  181. package/src/assets/shaders/webgl2/Depth.vs +4 -1
  182. package/src/assets/shaders/webgl2/Gouraud.fs +1 -1
  183. package/src/assets/shaders/webgl2/Gouraud.vs +8 -6
  184. package/src/assets/shaders/webgl2/Line.fs +11 -17
  185. package/src/assets/shaders/webgl2/Line.vs +17 -21
  186. package/src/assets/shaders/webgl2/LineTransform.fs +6 -0
  187. package/src/assets/shaders/webgl2/LineTransform.vs +77 -0
  188. package/src/assets/shaders/webgl2/PBR.fs +6 -6
  189. package/src/assets/shaders/webgl2/PBR.vs +10 -7
  190. package/src/assets/shaders/webgl2/Phong.fs +11 -11
  191. package/src/assets/shaders/webgl2/Phong.vs +6 -3
  192. package/src/assets/shaders/webgl2/Point.vs +5 -4
  193. package/src/assets/shaders/webgl2/Unlit.fs +5 -5
  194. package/src/assets/shaders/webgl2/Unlit.vs +6 -3
  195. package/src/assets/shaders/webgl2/include/Line2.glsl +20 -0
  196. package/src/assets/shaders/webgl2/include/Normal.glsl +1 -1
  197. package/src/assets/shaders/webgl2/include/Particle.glsl +36 -0
  198. package/src/assets/shaders/webgl2/include/Texture.glsl +3 -3
  199. package/src/example.html +6 -6
  200. package/src/examples.js +5 -4
  201. package/src/standard/Math/Algorithm.js +12 -28
  202. package/src/standard/Math/Geometry/Line2.js +163 -0
  203. package/src/standard/Math/Geometry/Line3.js +3 -5
  204. package/src/standard/Math/Geometry/Plane3.js +0 -2
  205. package/src/standard/Math/Geometry/Triangle3.js +1 -1
  206. package/src/standard/Math/Geometry/ViewVolume.js +121 -103
  207. package/src/standard/Math/Numbers/Color3.js +6 -0
  208. package/src/standard/Math/Numbers/Color4.js +7 -0
  209. package/src/standard/Math/Numbers/Complex.js +48 -34
  210. package/src/standard/Math/Numbers/Matrix2.js +62 -2
  211. package/src/standard/Math/Numbers/Matrix3.js +129 -110
  212. package/src/standard/Math/Numbers/Matrix4.js +138 -119
  213. package/src/standard/Math/Numbers/Quaternion.js +12 -5
  214. package/src/standard/Math/Numbers/Rotation4.js +8 -1
  215. package/src/standard/Math/Numbers/Vector2.js +42 -9
  216. package/src/standard/Math/Numbers/Vector3.js +50 -14
  217. package/src/standard/Math/Numbers/Vector4.js +48 -11
  218. package/src/standard/Math/Utility/BVH.js +45 -17
  219. package/src/tests.js +68 -66
  220. package/src/x_ite/Base/X3DBaseNode.js +22 -11
  221. package/src/x_ite/Base/X3DField.js +1 -1
  222. package/src/x_ite/Browser/Core/BrowserOptions.js +24 -143
  223. package/src/x_ite/Browser/Core/BrowserTimings.js +6 -4
  224. package/src/x_ite/Browser/Core/Context.js +185 -0
  225. package/src/x_ite/Browser/Core/ContextMenu.js +398 -211
  226. package/src/x_ite/Browser/Core/Notification.js +1 -0
  227. package/src/x_ite/Browser/Core/X3DCoreContext.js +35 -146
  228. package/src/x_ite/Browser/Followers/X3DArrayFollowerTemplate.js +1 -1
  229. package/src/x_ite/Browser/Geometry2D/Disk2DOptions.js +1 -0
  230. package/src/x_ite/Browser/Geometry2D/X3DGeometry2DContext.js +2 -2
  231. package/src/x_ite/Browser/Geometry3D/X3DGeometry3DContext.js +41 -2
  232. package/src/x_ite/Browser/Geospatial/Geocentric.js +2 -2
  233. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolatorTemplate.js +1 -1
  234. package/src/x_ite/Browser/Layout/ScreenText.js +18 -65
  235. package/src/x_ite/Browser/Layout/X3DLayoutContext.js +59 -16
  236. package/src/x_ite/Browser/Navigation/ExamineViewer.js +13 -20
  237. package/src/x_ite/Browser/Navigation/LookAtViewer.js +1 -4
  238. package/src/x_ite/Browser/Navigation/PlaneViewer.js +0 -3
  239. package/src/x_ite/Browser/Navigation/X3DFlyViewer.js +15 -8
  240. package/src/x_ite/Browser/Navigation/X3DViewer.js +12 -20
  241. package/src/x_ite/Browser/Networking/X3DNetworkingContext.js +11 -7
  242. package/src/x_ite/Browser/ParticleSystems/BVH.glsl +183 -0
  243. package/src/x_ite/Browser/ParticleSystems/Box3.glsl +47 -0
  244. package/src/x_ite/Browser/ParticleSystems/GeometryTypes.js +66 -0
  245. package/src/x_ite/Browser/ParticleSystems/Line3.glsl +55 -0
  246. package/src/x_ite/Browser/ParticleSystems/Plane3.glsl +160 -0
  247. package/src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js +27 -3
  248. package/src/x_ite/Browser/PointingDeviceSensor/X3DPointingDeviceSensorContext.js +41 -37
  249. package/src/x_ite/Browser/Rendering/X3DRenderingContext.js +21 -13
  250. package/src/x_ite/Browser/Shaders/Shader.js +33 -12
  251. package/src/x_ite/Browser/Shaders/ShaderSource.js +6 -0
  252. package/src/x_ite/Browser/Shaders/ShaderTest.js +16 -10
  253. package/src/x_ite/Browser/Shape/X3DShapeContext.js +50 -9
  254. package/src/x_ite/Browser/Text/X3DTextContext.js +4 -13
  255. package/src/x_ite/Browser/Text/X3DTextGeometry.js +2 -1
  256. package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +71 -34
  257. package/src/x_ite/Browser/Texturing3D/DICOMParser.js +2 -2
  258. package/src/x_ite/Browser/Time/X3DTimeContext.js +4 -2
  259. package/src/x_ite/Browser/VERSION.js +1 -1
  260. package/src/x_ite/Browser/X3DBrowser.js +7 -6
  261. package/src/x_ite/Browser/X3DBrowserContext.js +43 -10
  262. package/src/x_ite/Components/Core/X3DNode.js +4 -0
  263. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +0 -2
  264. package/src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js +3 -4
  265. package/src/x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture.js +1 -12
  266. package/src/x_ite/Components/CubeMapTexturing/ImageCubeMapTexture.js +1 -2
  267. package/src/x_ite/Components/EnvironmentalEffects/TextureBackground.js +1 -1
  268. package/src/x_ite/Components/EnvironmentalEffects/X3DBackgroundNode.js +76 -77
  269. package/src/x_ite/Components/EnvironmentalEffects/X3DFogObject.js +2 -9
  270. package/src/x_ite/Components/EnvironmentalSensor/ProximitySensor.js +51 -65
  271. package/src/x_ite/Components/EventUtilities/X3DSequencerNode.js +1 -1
  272. package/src/x_ite/Components/Followers/ColorDamper.js +1 -1
  273. package/src/x_ite/Components/Followers/X3DChaserNode.js +18 -32
  274. package/src/x_ite/Components/Followers/X3DDamperNode.js +1 -6
  275. package/src/x_ite/Components/Followers/X3DFollowerNode.js +1 -1
  276. package/src/x_ite/Components/Geometry2D/Disk2D.js +30 -46
  277. package/src/x_ite/Components/Geometry2D/TriangleSet2D.js +1 -1
  278. package/src/x_ite/Components/Geometry3D/ElevationGrid.js +12 -4
  279. package/src/x_ite/Components/Geometry3D/IndexedFaceSet.js +4 -4
  280. package/src/x_ite/Components/Geospatial/GeoCoordinate.js +10 -27
  281. package/src/x_ite/Components/Geospatial/GeoLOD.js +1 -1
  282. package/src/x_ite/Components/Geospatial/GeoPositionInterpolator.js +5 -10
  283. package/src/x_ite/Components/Geospatial/GeoTouchSensor.js +9 -16
  284. package/src/x_ite/Components/Geospatial/GeoTransform.js +6 -18
  285. package/src/x_ite/Components/Geospatial/GeoViewpoint.js +26 -30
  286. package/src/x_ite/Components/Geospatial/X3DGeospatialObject.js +20 -27
  287. package/src/x_ite/Components/Grouping/X3DGroupingNode.js +8 -8
  288. package/src/x_ite/Components/Grouping/X3DTransformNode.js +0 -4
  289. package/src/x_ite/Components/HAnim/HAnimHumanoid.js +68 -75
  290. package/src/x_ite/Components/Interpolation/OrientationInterpolator.js +4 -11
  291. package/src/x_ite/Components/Interpolation/X3DInterpolatorNode.js +1 -1
  292. package/src/x_ite/Components/Layout/LayoutGroup.js +4 -9
  293. package/src/x_ite/Components/Layout/ScreenFontStyle.js +1 -1
  294. package/src/x_ite/Components/Layout/ScreenGroup.js +16 -80
  295. package/src/x_ite/Components/Lighting/DirectionalLight.js +28 -36
  296. package/src/x_ite/Components/Lighting/PointLight.js +32 -47
  297. package/src/x_ite/Components/Lighting/SpotLight.js +33 -48
  298. package/src/x_ite/Components/Navigation/Billboard.js +49 -56
  299. package/src/x_ite/Components/Navigation/LOD.js +2 -2
  300. package/src/x_ite/Components/Navigation/OrthoViewpoint.js +29 -30
  301. package/src/x_ite/Components/Navigation/Viewpoint.js +16 -20
  302. package/src/x_ite/Components/Navigation/X3DViewpointNode.js +82 -111
  303. package/src/x_ite/Components/Networking/Anchor.js +18 -7
  304. package/src/x_ite/Components/ParticleSystems/BoundedPhysicsModel.js +6 -6
  305. package/src/x_ite/Components/ParticleSystems/ConeEmitter.js +44 -36
  306. package/src/x_ite/Components/ParticleSystems/ExplosionEmitter.js +26 -17
  307. package/src/x_ite/Components/ParticleSystems/ForcePhysicsModel.js +20 -7
  308. package/src/x_ite/Components/ParticleSystems/ParticleSystem.js +463 -882
  309. package/src/x_ite/Components/ParticleSystems/PointEmitter.js +39 -35
  310. package/src/x_ite/Components/ParticleSystems/PolylineEmitter.js +112 -128
  311. package/src/x_ite/Components/ParticleSystems/SurfaceEmitter.js +105 -112
  312. package/src/x_ite/Components/ParticleSystems/VolumeEmitter.js +138 -176
  313. package/src/x_ite/Components/ParticleSystems/WindPhysicsModel.js +16 -11
  314. package/src/x_ite/Components/ParticleSystems/X3DParticleEmitterNode.js +807 -217
  315. package/src/x_ite/Components/Picking/LinePickSensor.js +31 -39
  316. package/src/x_ite/Components/PointingDeviceSensor/CylinderSensor.js +91 -108
  317. package/src/x_ite/Components/PointingDeviceSensor/PlaneSensor.js +56 -59
  318. package/src/x_ite/Components/PointingDeviceSensor/SphereSensor.js +54 -71
  319. package/src/x_ite/Components/PointingDeviceSensor/TouchSensor.js +8 -15
  320. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorParallel.js +43 -50
  321. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorPerspective.js +32 -39
  322. package/src/x_ite/Components/Rendering/ClipPlane.js +3 -11
  323. package/src/x_ite/Components/Rendering/Color.js +12 -24
  324. package/src/x_ite/Components/Rendering/ColorRGBA.js +13 -25
  325. package/src/x_ite/Components/Rendering/IndexedLineSet.js +26 -4
  326. package/src/x_ite/Components/Rendering/LineSet.js +35 -13
  327. package/src/x_ite/Components/Rendering/PointSet.js +35 -13
  328. package/src/x_ite/Components/Rendering/X3DComposedGeometryNode.js +13 -5
  329. package/src/x_ite/Components/Rendering/X3DGeometryNode.js +331 -387
  330. package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +350 -140
  331. package/src/x_ite/Components/Rendering/X3DPointGeometryNode.js +116 -126
  332. package/src/x_ite/Components/RigidBodyPhysics/DoubleAxisHingeJoint.js +24 -38
  333. package/src/x_ite/Components/RigidBodyPhysics/SingleAxisHingeJoint.js +10 -17
  334. package/src/x_ite/Components/Shaders/ComposedShader.js +35 -75
  335. package/src/x_ite/Components/Shaders/FloatVertexAttribute.js +8 -11
  336. package/src/x_ite/Components/Shaders/Matrix3VertexAttribute.js +10 -14
  337. package/src/x_ite/Components/Shaders/Matrix4VertexAttribute.js +10 -14
  338. package/src/x_ite/Components/Shaders/ShaderPart.js +1 -10
  339. package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +220 -210
  340. package/src/x_ite/Components/Shaders/X3DShaderNode.js +28 -10
  341. package/src/x_ite/Components/Shaders/X3DVertexAttributeNode.js +15 -1
  342. package/src/x_ite/Components/Shape/Appearance.js +37 -4
  343. package/src/x_ite/Components/Shape/FillProperties.js +12 -1
  344. package/src/x_ite/Components/Shape/LineProperties.js +33 -1
  345. package/src/x_ite/Components/Shape/PointProperties.js +24 -3
  346. package/src/x_ite/Components/Shape/Shape.js +30 -39
  347. package/src/x_ite/Components/Shape/TwoSidedMaterial.js +3 -1
  348. package/src/x_ite/Components/Sound/Sound.js +31 -41
  349. package/src/x_ite/Components/Text/Text.js +6 -20
  350. package/src/x_ite/Components/Texturing/ImageTexture.js +1 -1
  351. package/src/x_ite/Components/Texturing/MovieTexture.js +1 -1
  352. package/src/x_ite/Components/Texturing/PixelTexture.js +2 -2
  353. package/src/x_ite/Components/Texturing/TextureCoordinate.js +5 -5
  354. package/src/x_ite/Components/Texturing/TextureProperties.js +4 -4
  355. package/src/x_ite/Components/Texturing/X3DSingleTextureNode.js +5 -4
  356. package/src/x_ite/Components/Texturing/X3DTexture2DNode.js +24 -33
  357. package/src/x_ite/Components/Texturing3D/TextureCoordinate3D.js +5 -5
  358. package/src/x_ite/Components/Texturing3D/TextureCoordinate4D.js +5 -5
  359. package/src/x_ite/Components/Texturing3D/X3DTexture3DNode.js +12 -19
  360. package/src/x_ite/Components/VolumeRendering/X3DVolumeDataNode.js +8 -8
  361. package/src/x_ite/Components.js +2 -2
  362. package/src/x_ite/Fallback.js +9 -3
  363. package/src/x_ite/Fields/SFColor.js +4 -0
  364. package/src/x_ite/Fields/SFColorRGBA.js +4 -0
  365. package/src/x_ite/Fields/SFImage.js +2 -11
  366. package/src/x_ite/Fields/SFMatrixPrototypeTemplate.js +4 -0
  367. package/src/x_ite/Fields/SFRotation.js +4 -0
  368. package/src/x_ite/Fields/SFString.js +4 -0
  369. package/src/x_ite/Fields/SFVecPrototypeTemplate.js +22 -2
  370. package/src/x_ite/Parser/XMLParser.js +1 -1
  371. package/src/x_ite/Rendering/TextureBuffer.js +43 -36
  372. package/src/x_ite/Rendering/VertexArray.js +103 -0
  373. package/src/x_ite/Rendering/X3DRenderObject.js +127 -148
  374. package/src/x_ite/X3D.js +32 -26
  375. package/src/x_ite.config.js +0 -5
  376. package/src/x_ite.css +216 -175
  377. package/src/x_ite.html +15 -10
  378. package/src/x_ite.js +49 -1
  379. package/x_ite.min.html +15 -10
  380. package/dist/assets/hatching/0.png +0 -0
  381. package/dist/assets/linetype/0.png +0 -0
  382. package/src/assets/hatching/0.png +0 -0
  383. package/src/assets/linetype/0.png +0 -0
  384. package/src/spinner.css +0 -67
  385. package/src/x_ite/Browser/Shape/LineStipples.xcf +0 -0
@@ -128,14 +128,7 @@ function (Fields,
128
128
  this .lightNode = lightNode;
129
129
  this .groupNode = groupNode;
130
130
 
131
- try
132
- {
133
- this .matrixArray .set (modelViewMatrix .submatrix .inverse ());
134
- }
135
- catch (error)
136
- {
137
- this .matrixArray .set (Matrix3 .Identity);
138
- }
131
+ this .matrixArray .set (modelViewMatrix .submatrix .inverse ());
139
132
 
140
133
  this .modelViewMatrix .pushMatrix (modelViewMatrix);
141
134
 
@@ -151,56 +144,48 @@ function (Fields,
151
144
  },
152
145
  renderShadowMap: function (renderObject)
153
146
  {
154
- try
155
- {
156
- if (! this .shadowBuffer)
157
- return;
147
+ if (! this .shadowBuffer)
148
+ return;
158
149
 
159
- const
160
- lightNode = this .lightNode,
161
- cameraSpaceMatrix = renderObject .getCameraSpaceMatrix () .get (),
162
- modelMatrix = this .modelMatrix .assign (this .modelViewMatrix .get ()) .multRight (cameraSpaceMatrix),
163
- invLightSpaceMatrix = this .invLightSpaceMatrix .assign (lightNode .getGlobal () ? modelMatrix : Matrix4 .Identity);
150
+ const
151
+ lightNode = this .lightNode,
152
+ cameraSpaceMatrix = renderObject .getCameraSpaceMatrix () .get (),
153
+ modelMatrix = this .modelMatrix .assign (this .modelViewMatrix .get ()) .multRight (cameraSpaceMatrix),
154
+ invLightSpaceMatrix = this .invLightSpaceMatrix .assign (lightNode .getGlobal () ? modelMatrix : Matrix4 .Identity);
164
155
 
165
- invLightSpaceMatrix .translate (lightNode .getLocation ());
166
- invLightSpaceMatrix .rotate (this .rotation .setFromToVec (Vector3 .zAxis, this .direction .assign (lightNode .getDirection ()) .negate ()));
167
- invLightSpaceMatrix .inverse ();
156
+ invLightSpaceMatrix .translate (lightNode .getLocation ());
157
+ invLightSpaceMatrix .rotate (this .rotation .setFromToVec (Vector3 .zAxis, this .direction .assign (lightNode .getDirection ()) .negate ()));
158
+ invLightSpaceMatrix .inverse ();
168
159
 
169
- const
170
- groupBBox = this .groupNode .getSubBBox (this .bbox, true), // Group bbox.
171
- lightBBox = groupBBox .multRight (invLightSpaceMatrix), // Group bbox from the perspective of the light.
172
- lightBBoxExtents = lightBBox .getExtents (this .lightBBoxMin, this .lightBBoxMax), // Result not used, but arguments.
173
- shadowMapSize = lightNode .getShadowMapSize (),
174
- farValue = Math .min (lightNode .getRadius (), -this .lightBBoxMin .z),
175
- viewport = this .viewport .set (0, 0, shadowMapSize, shadowMapSize),
176
- projectionMatrix = Camera .perspective (lightNode .getCutOffAngle () * 2, 0.125, Math .max (10000, farValue), shadowMapSize, shadowMapSize, this .projectionMatrix); // Use higher far value for better precision.
160
+ const
161
+ groupBBox = this .groupNode .getSubBBox (this .bbox, true), // Group bbox.
162
+ lightBBox = groupBBox .multRight (invLightSpaceMatrix), // Group bbox from the perspective of the light.
163
+ lightBBoxExtents = lightBBox .getExtents (this .lightBBoxMin, this .lightBBoxMax), // Result not used, but arguments.
164
+ shadowMapSize = lightNode .getShadowMapSize (),
165
+ farValue = Math .min (lightNode .getRadius (), -this .lightBBoxMin .z),
166
+ viewport = this .viewport .set (0, 0, shadowMapSize, shadowMapSize),
167
+ projectionMatrix = Camera .perspective (lightNode .getCutOffAngle () * 2, 0.125, Math .max (10000, farValue), shadowMapSize, shadowMapSize, this .projectionMatrix); // Use higher far value for better precision.
177
168
 
178
- this .renderShadow = farValue > 0;
169
+ this .renderShadow = farValue > 0;
179
170
 
180
- this .shadowBuffer .bind ();
171
+ this .shadowBuffer .bind ();
181
172
 
182
- renderObject .getViewVolumes () .push (this .viewVolume .set (projectionMatrix, viewport, viewport));
183
- renderObject .getProjectionMatrix () .pushMatrix (projectionMatrix);
184
- renderObject .getModelViewMatrix () .pushMatrix (invLightSpaceMatrix);
173
+ renderObject .getViewVolumes () .push (this .viewVolume .set (projectionMatrix, viewport, viewport));
174
+ renderObject .getProjectionMatrix () .pushMatrix (projectionMatrix);
175
+ renderObject .getModelViewMatrix () .pushMatrix (invLightSpaceMatrix);
185
176
 
186
- renderObject .render (TraverseType .SHADOW, X3DGroupingNode .prototype .traverse, this .groupNode);
177
+ renderObject .render (TraverseType .SHADOW, X3DGroupingNode .prototype .traverse, this .groupNode);
187
178
 
188
- renderObject .getModelViewMatrix () .pop ();
189
- renderObject .getProjectionMatrix () .pop ();
190
- renderObject .getViewVolumes () .pop ();
179
+ renderObject .getModelViewMatrix () .pop ();
180
+ renderObject .getProjectionMatrix () .pop ();
181
+ renderObject .getViewVolumes () .pop ();
191
182
 
192
- this .shadowBuffer .unbind ();
183
+ this .shadowBuffer .unbind ();
193
184
 
194
- if (! lightNode .getGlobal ())
195
- invLightSpaceMatrix .multLeft (modelMatrix .inverse ());
185
+ if (! lightNode .getGlobal ())
186
+ invLightSpaceMatrix .multLeft (modelMatrix .inverse ());
196
187
 
197
- this .invLightSpaceProjectionMatrix .assign (invLightSpaceMatrix) .multRight (projectionMatrix) .multRight (lightNode .getBiasMatrix ());
198
- }
199
- catch (error)
200
- {
201
- // Catch error from matrix inverse.
202
- console .error (error);
203
- }
188
+ this .invLightSpaceProjectionMatrix .assign (invLightSpaceMatrix) .multRight (projectionMatrix) .multRight (lightNode .getBiasMatrix ());
204
189
  },
205
190
  setGlobalVariables: function (renderObject)
206
191
  {
@@ -260,7 +245,7 @@ function (Fields,
260
245
  {
261
246
  gl .activeTexture (gl .TEXTURE0 + this .textureUnit);
262
247
 
263
- if (gl .getVersion () >= 2 || browser .getExtension ("WEBGL_depth_texture"))
248
+ if (gl .getVersion () >= 2 || gl .getExtension ("WEBGL_depth_texture"))
264
249
  gl .bindTexture (gl .TEXTURE_2D, this .shadowBuffer .getDepthTexture ());
265
250
  else
266
251
  gl .bindTexture (gl .TEXTURE_2D, this .shadowBuffer .getColorTexture ());
@@ -70,17 +70,6 @@ function (Fields,
70
70
  {
71
71
  "use strict";
72
72
 
73
- const
74
- inverseModelViewMatrix = new Matrix4 (),
75
- yAxis = new Vector3 (0, 1, 0),
76
- zAxis = new Vector3 (0, 0, 1),
77
- viewerYAxis = new Vector3 (0, 0, 0),
78
- x = new Vector3 (0, 0, 0),
79
- y = new Vector3 (0, 0, 0),
80
- N1 = new Vector3 (0, 0, 0),
81
- N2 = new Vector3 (0, 0, 0),
82
- rotation = new Rotation4 (0, 0, 1, 0);
83
-
84
73
  function Billboard (executionContext)
85
74
  {
86
75
  X3DGroupingNode .call (this, executionContext);
@@ -124,70 +113,74 @@ function (Fields,
124
113
  {
125
114
  return this .matrix;
126
115
  },
127
- rotate: function (modelViewMatrix)
116
+ rotate: (function ()
128
117
  {
129
- // throws domain error
118
+ const
119
+ inverseModelViewMatrix = new Matrix4 (),
120
+ viewerYAxis = new Vector3 (0, 0, 0),
121
+ y = new Vector3 (0, 0, 0),
122
+ N1 = new Vector3 (0, 0, 0),
123
+ N2 = new Vector3 (0, 0, 0),
124
+ rotation = new Rotation4 (0, 0, 1, 0);
125
+
126
+ return function (modelViewMatrix)
127
+ {
128
+ // throws domain error
130
129
 
131
- inverseModelViewMatrix .assign (modelViewMatrix) .inverse ();
130
+ inverseModelViewMatrix .assign (modelViewMatrix) .inverse ();
132
131
 
133
- const billboardToViewer = inverseModelViewMatrix .origin .normalize (); // Normalized to get work with Geo
132
+ const billboardToViewer = inverseModelViewMatrix .origin .normalize (); // Normalized to get work with Geo
134
133
 
135
- if (this ._axisOfRotation .getValue () .equals (Vector3 .Zero))
136
- {
137
- inverseModelViewMatrix .multDirMatrix (viewerYAxis .assign (yAxis)) .normalize (); // Normalized to get work with Geo
134
+ if (this ._axisOfRotation .getValue () .equals (Vector3 .Zero))
135
+ {
136
+ inverseModelViewMatrix .multDirMatrix (viewerYAxis .assign (Vector3 .yAxis)) .normalize (); // Normalized to get work with Geo
138
137
 
139
- x .assign (viewerYAxis) .cross (billboardToViewer);
140
- y .assign (billboardToViewer) .cross (x);
141
- const z = billboardToViewer;
138
+ const x = viewerYAxis .cross (billboardToViewer);
139
+ y .assign (billboardToViewer) .cross (x);
140
+ const z = billboardToViewer;
142
141
 
143
- // Compose rotation
142
+ // Compose rotation
144
143
 
145
- x .normalize ();
146
- y .normalize ();
144
+ x .normalize ();
145
+ y .normalize ();
147
146
 
148
- this .matrix .set (x [0], x [1], x [2], 0,
149
- y [0], y [1], y [2], 0,
150
- z [0], z [1], z [2], 0,
151
- 0, 0, 0, 1);
152
- }
153
- else
154
- {
155
- N1 .assign (this ._axisOfRotation .getValue ()) .cross (billboardToViewer); // Normal vector of plane as in specification
156
- N2 .assign (this ._axisOfRotation .getValue ()) .cross (zAxis); // Normal vector of plane between axisOfRotation and zAxis
147
+ this .matrix .set (x .x, x .y, x .z, 0,
148
+ y .x, y .y, y .z, 0,
149
+ z .x, z .y, z .z, 0,
150
+ 0, 0, 0, 1);
151
+ }
152
+ else
153
+ {
154
+ N1 .assign (this ._axisOfRotation .getValue ()) .cross (billboardToViewer); // Normal vector of plane as in specification
155
+ N2 .assign (this ._axisOfRotation .getValue ()) .cross (Vector3 .zAxis); // Normal vector of plane between axisOfRotation and zAxis
157
156
 
158
- this .matrix .setRotation (rotation .setFromToVec (N2, N1)); // Rotate zAxis in plane
159
- }
157
+ this .matrix .setRotation (rotation .setFromToVec (N2, N1)); // Rotate zAxis in plane
158
+ }
160
159
 
161
- return this .matrix;
162
- },
160
+ return this .matrix;
161
+ };
162
+ })(),
163
163
  traverse: function (type, renderObject)
164
164
  {
165
165
  const modelViewMatrix = renderObject .getModelViewMatrix ();
166
166
 
167
167
  modelViewMatrix .push ();
168
168
 
169
- try
169
+ switch (type)
170
170
  {
171
- switch (type)
172
- {
173
- case TraverseType .CAMERA:
174
- case TraverseType .PICKING:
175
- case TraverseType .SHADOW:
176
- // No clone support for shadow, generated cube map texture, and bbox
177
- modelViewMatrix .multLeft (this .matrix);
178
- break;
179
- default:
180
- modelViewMatrix .multLeft (this .rotate (modelViewMatrix .get ()));
181
- break;
182
- }
183
-
184
- X3DGroupingNode .prototype .traverse .call (this, type, renderObject);
185
- }
186
- catch (error)
187
- {
188
- console .error (error);
171
+ case TraverseType .CAMERA:
172
+ case TraverseType .PICKING:
173
+ case TraverseType .SHADOW:
174
+ // No clone support for shadow, generated cube map texture, and bbox
175
+ modelViewMatrix .multLeft (this .matrix);
176
+ break;
177
+ default:
178
+ modelViewMatrix .multLeft (this .rotate (modelViewMatrix .get ()));
179
+ break;
189
180
  }
190
181
 
182
+ X3DGroupingNode .prototype .traverse .call (this, type, renderObject);
183
+
191
184
  modelViewMatrix .pop ();
192
185
  },
193
186
  });
@@ -266,9 +266,9 @@ function (Fields,
266
266
  }
267
267
  }
268
268
 
269
- const distance = modelViewMatrix .translate (this ._center .getValue ()) .origin .abs ();
269
+ const distance = modelViewMatrix .translate (this ._center .getValue ()) .origin .magnitude ();
270
270
 
271
- return Algorithm .upperBound (this ._range, 0, this ._range .length, distance, Algorithm .less);
271
+ return Algorithm .upperBound (this ._range, 0, this ._range .length, distance);
272
272
  };
273
273
  })(),
274
274
  traverse: (function ()
@@ -157,7 +157,7 @@ function (Fields,
157
157
  },
158
158
  set_fieldOfView__: function ()
159
159
  {
160
- var
160
+ const
161
161
  length = this ._fieldOfView .length,
162
162
  fieldOfViewScale = this ._fieldOfViewScale .getValue ();
163
163
 
@@ -245,38 +245,35 @@ function (Fields,
245
245
  {
246
246
  return 1e5;
247
247
  },
248
- getScreenScale: (function ()
248
+ getScreenScale: function (point, viewport, screenScale)
249
249
  {
250
- var screenScale = new Vector3 (0, 0, 0);
250
+ const
251
+ width = viewport [2],
252
+ height = viewport [3],
253
+ sizeX = this .sizeX,
254
+ sizeY = this .sizeY,
255
+ aspect = width / height;
251
256
 
252
- return function (point, viewport)
257
+ if (aspect > sizeX / sizeY)
253
258
  {
254
- var
255
- width = viewport [2],
256
- height = viewport [3],
257
- sizeX = this .sizeX,
258
- sizeY = this .sizeY,
259
- aspect = width / height;
260
-
261
- if (aspect > sizeX / sizeY)
262
- {
263
- var s = sizeY / height;
259
+ const s = sizeY / height;
264
260
 
265
- return screenScale .set (s, s, s);
266
- }
267
-
268
- var s = sizeX / width;
261
+ return screenScale .set (s, s, s);
262
+ }
263
+ else
264
+ {
265
+ const s = sizeX / width;
269
266
 
270
267
  return screenScale .set (s, s, s);
271
- };
272
- })(),
268
+ }
269
+ },
273
270
  getViewportSize: (function ()
274
271
  {
275
- var viewportSize = new Vector2 (0, 0);
272
+ const viewportSize = new Vector2 (0, 0);
276
273
 
277
274
  return function (viewport, nearValue)
278
275
  {
279
- var
276
+ const
280
277
  width = viewport [2],
281
278
  height = viewport [3],
282
279
  sizeX = this .sizeX,
@@ -291,11 +288,11 @@ function (Fields,
291
288
  })(),
292
289
  getLookAtDistance: function (bbox)
293
290
  {
294
- return bbox .size .abs () / 2 + 10;
291
+ return bbox .size .magnitude () / 2 + 10;
295
292
  },
296
293
  getProjectionMatrixWithLimits: function (nearValue, farValue, viewport)
297
294
  {
298
- var
295
+ const
299
296
  width = viewport [2],
300
297
  height = viewport [3],
301
298
  aspect = width / height,
@@ -304,18 +301,20 @@ function (Fields,
304
301
 
305
302
  if (aspect > sizeX / sizeY)
306
303
  {
307
- var
304
+ const
308
305
  center = (this .minimumX + this .maximumX) / 2,
309
306
  size1_2 = (sizeY * aspect) / 2;
310
307
 
311
308
  return Camera .ortho (center - size1_2, center + size1_2, this .minimumY, this .maximumY, nearValue, farValue, this .projectionMatrix);
312
309
  }
310
+ else
311
+ {
312
+ const
313
+ center = (this .minimumY + this .maximumY) / 2,
314
+ size1_2 = (sizeX / aspect) / 2;
313
315
 
314
- var
315
- center = (this .minimumY + this .maximumY) / 2,
316
- size1_2 = (sizeX / aspect) / 2;
317
-
318
- return Camera .ortho (this .minimumX, this .maximumX, center - size1_2, center + size1_2, nearValue, farValue, this .projectionMatrix);
316
+ return Camera .ortho (this .minimumX, this .maximumX, center - size1_2, center + size1_2, nearValue, farValue, this .projectionMatrix);
317
+ }
319
318
  },
320
319
  });
321
320
 
@@ -143,40 +143,36 @@ function (Fields,
143
143
  },
144
144
  getFieldOfView: function ()
145
145
  {
146
- var fov = this ._fieldOfView .getValue () * this ._fieldOfViewScale .getValue ();
146
+ const fov = this ._fieldOfView .getValue () * this ._fieldOfViewScale .getValue ();
147
147
 
148
148
  return fov > 0 && fov < Math .PI ? fov : Math .PI / 4;
149
149
  },
150
- getScreenScale: (function ()
150
+ getScreenScale: function (point, viewport, screenScale)
151
151
  {
152
- var screenScale = new Vector3 (0, 0, 0);
152
+ // Returns the screen scale in meter/pixel for on pixel.
153
153
 
154
- return function (point, viewport)
155
- {
156
- // Returns the screen scale in meter/pixel for on pixel.
154
+ const
155
+ width = viewport [2],
156
+ height = viewport [3];
157
157
 
158
- var
159
- width = viewport [2],
160
- height = viewport [3],
161
- size = Math .abs (point .z) * Math .tan (this .getFieldOfView () / 2) * 2;
158
+ let size = Math .abs (point .z) * Math .tan (this .getFieldOfView () / 2) * 2;
162
159
 
163
- if (width > height)
164
- size /= height;
165
- else
166
- size /= width;
160
+ if (width > height)
161
+ size /= height;
162
+ else
163
+ size /= width;
167
164
 
168
- return screenScale .set (size, size, size);
169
- };
170
- })(),
165
+ return screenScale .set (size, size, size);
166
+ },
171
167
  getViewportSize: (function ()
172
168
  {
173
- var viewportSize = new Vector2 (0, 0);
169
+ const viewportSize = new Vector2 (0, 0);
174
170
 
175
171
  return function (viewport, nearValue)
176
172
  {
177
173
  // Returns viewport size in meters.
178
174
 
179
- var
175
+ const
180
176
  width = viewport [2],
181
177
  height = viewport [3],
182
178
  size = nearValue * Math .tan (this .getFieldOfView () / 2) * 2,
@@ -190,7 +186,7 @@ function (Fields,
190
186
  })(),
191
187
  getLookAtDistance: function (bbox)
192
188
  {
193
- return (bbox .size .abs () / 2) / Math .tan (this .getFieldOfView () / 2);
189
+ return (bbox .size .magnitude () / 2) / Math .tan (this .getFieldOfView () / 2);
194
190
  },
195
191
  getProjectionMatrixWithLimits: function (nearValue, farValue, viewport)
196
192
  {