x_ite 4.2.17 → 4.7.7

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 (903) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
  2. package/.vscode/launch.json +15 -0
  3. package/.vscode/settings.json +12 -0
  4. package/.vscode/tasks.json +25 -0
  5. package/Makefile +27 -10
  6. package/README.md +13 -145
  7. package/build/bin/dist.pl +65 -8
  8. package/build/bin/version-number.pl +25 -0
  9. package/build/bin/version.pl +54 -14
  10. package/build/components/annotation.build.js +15 -0
  11. package/build/components/cad-geometry.build.js +15 -0
  12. package/build/components/cube-map-texturing.build.js +15 -0
  13. package/build/components/dis.build.js +15 -0
  14. package/build/components/event-utilities.build.js +15 -0
  15. package/build/components/geometry2d.build.js +15 -0
  16. package/build/components/geospatial.build.js +15 -0
  17. package/build/components/h-anim.build.js +15 -0
  18. package/build/components/key-device-sensor.build.js +15 -0
  19. package/build/components/layout.build.js +15 -0
  20. package/build/components/nurbs.build.js +15 -0
  21. package/build/components/particle-systems.build.js +15 -0
  22. package/build/components/picking.build.js +15 -0
  23. package/build/components/projective-texture-mapping.build.js +15 -0
  24. package/build/components/rigid-body-physics.build.js +15 -0
  25. package/build/components/scripting.build.js +15 -0
  26. package/build/components/texturing-3d.build.js +15 -0
  27. package/build/components/volume-rendering.build.js +15 -0
  28. package/build/components/x_ite.build.js +15 -0
  29. package/build/parts/default.end.frag.js +3 -0
  30. package/build/parts/default.start.frag.js +15 -0
  31. package/build/parts/x_ite.end.frag.js +25 -0
  32. package/build/parts/x_ite.start.frag.js +16 -0
  33. package/build/x_ite.build.js +5 -2
  34. package/dist/{components/texturing-3d.js → assets/components/annotation.js} +341 -263
  35. package/dist/assets/components/annotation.min.js +1 -0
  36. package/dist/{components → assets/components}/cad-geometry.js +180 -76
  37. package/dist/assets/components/cad-geometry.min.js +1 -0
  38. package/dist/assets/components/cube-map-texturing.js +1222 -0
  39. package/dist/assets/components/cube-map-texturing.min.js +1 -0
  40. package/dist/assets/components/dis.js +918 -0
  41. package/dist/assets/components/dis.min.js +1 -0
  42. package/dist/assets/components/event-utilities.js +1124 -0
  43. package/dist/assets/components/event-utilities.min.js +1 -0
  44. package/dist/assets/components/geometry2d.js +2200 -0
  45. package/dist/assets/components/geometry2d.min.js +1 -0
  46. package/dist/{components → assets/components}/geospatial.js +364 -269
  47. package/dist/assets/components/geospatial.min.js +2 -0
  48. package/dist/{components → assets/components}/h-anim.js +224 -62
  49. package/dist/assets/components/h-anim.min.js +1 -0
  50. package/dist/assets/components/key-device-sensor.js +860 -0
  51. package/dist/assets/components/key-device-sensor.min.js +1 -0
  52. package/dist/assets/components/layout.js +2018 -0
  53. package/dist/assets/components/layout.min.js +1 -0
  54. package/dist/{components → assets/components}/nurbs.js +632 -348
  55. package/dist/assets/components/nurbs.min.js +2 -0
  56. package/dist/{components → assets/components}/particle-systems.js +514 -476
  57. package/dist/assets/components/particle-systems.min.js +2 -0
  58. package/dist/assets/components/picking.js +2491 -0
  59. package/dist/assets/components/picking.min.js +1 -0
  60. package/dist/assets/components/projective-texture-mapping.js +823 -0
  61. package/dist/assets/components/projective-texture-mapping.min.js +1 -0
  62. package/dist/assets/components/rigid-body-physics.js +4579 -0
  63. package/dist/assets/components/rigid-body-physics.min.js +59 -0
  64. package/dist/assets/components/scripting.js +816 -0
  65. package/dist/assets/components/scripting.min.js +1 -0
  66. package/dist/assets/components/texturing-3d.js +10064 -0
  67. package/dist/assets/components/texturing-3d.min.js +48 -0
  68. package/dist/assets/components/volume-rendering.js +3976 -0
  69. package/dist/assets/components/volume-rendering.min.js +3 -0
  70. package/dist/assets/components/x_ite.js +295 -0
  71. package/dist/assets/components/x_ite.min.js +1 -0
  72. package/{fonts → dist/assets/fonts}/DroidSerif-Bold.ttf +0 -0
  73. package/{fonts → dist/assets/fonts}/DroidSerif-BoldItalic.ttf +0 -0
  74. package/{fonts → dist/assets/fonts}/DroidSerif-Italic.ttf +0 -0
  75. package/{fonts → dist/assets/fonts}/DroidSerif-Regular.ttf +0 -0
  76. package/{fonts → dist/assets/fonts}/Ubuntu-B.ttf +0 -0
  77. package/{fonts → dist/assets/fonts}/Ubuntu-BI.ttf +0 -0
  78. package/{fonts → dist/assets/fonts}/Ubuntu-R.ttf +0 -0
  79. package/{fonts → dist/assets/fonts}/Ubuntu-RI.ttf +0 -0
  80. package/{fonts → dist/assets/fonts}/UbuntuMono-B.ttf +0 -0
  81. package/{fonts → dist/assets/fonts}/UbuntuMono-BI.ttf +0 -0
  82. package/{fonts → dist/assets/fonts}/UbuntuMono-R.ttf +0 -0
  83. package/{fonts → dist/assets/fonts}/UbuntuMono-RI.ttf +0 -0
  84. package/dist/assets/hatching/0.png +0 -0
  85. package/dist/assets/hatching/1.png +0 -0
  86. package/dist/assets/hatching/10.png +0 -0
  87. package/dist/assets/hatching/11.png +0 -0
  88. package/dist/assets/hatching/12.png +0 -0
  89. package/dist/assets/hatching/13.png +0 -0
  90. package/dist/assets/hatching/14.png +0 -0
  91. package/dist/assets/hatching/15.png +0 -0
  92. package/dist/assets/hatching/16.png +0 -0
  93. package/dist/assets/hatching/17.png +0 -0
  94. package/dist/assets/hatching/18.png +0 -0
  95. package/dist/assets/hatching/19.png +0 -0
  96. package/dist/assets/hatching/2.png +0 -0
  97. package/dist/assets/hatching/3.png +0 -0
  98. package/dist/assets/hatching/4.png +0 -0
  99. package/dist/assets/hatching/5.png +0 -0
  100. package/dist/assets/hatching/6.png +0 -0
  101. package/dist/assets/hatching/7.png +0 -0
  102. package/dist/assets/hatching/8.png +0 -0
  103. package/dist/assets/hatching/9.png +0 -0
  104. package/dist/{images → assets/images}/ExamineViewer.png +0 -0
  105. package/dist/{images → assets/images}/FlyViewer.png +0 -0
  106. package/dist/{images → assets/images}/NoneViewer.png +0 -0
  107. package/dist/{images → assets/images}/PlaneViewer.png +0 -0
  108. package/dist/{images → assets/images}/PrimitiveQuality.png +0 -0
  109. package/dist/{images → assets/images}/TextureQuality.png +0 -0
  110. package/dist/{images → assets/images}/Time.png +0 -0
  111. package/dist/{images → assets/images}/Viewpoint.png +0 -0
  112. package/dist/{images → assets/images}/WalkViewer.png +0 -0
  113. package/dist/assets/images/go-next.png +0 -0
  114. package/dist/{images → assets/images}/gtk-fullscreen.png +0 -0
  115. package/dist/{images → assets/images}/gtk-leave-fullscreen.png +0 -0
  116. package/dist/{images → assets/images}/gtk-zoom-fit.png +0 -0
  117. package/dist/{images → assets/images}/gtk-zoom-in.png +0 -0
  118. package/dist/{images → assets/images}/help-about.png +0 -0
  119. package/dist/{images → assets/images}/icon.bw.png +0 -0
  120. package/dist/{images → assets/images}/icon.png +0 -0
  121. package/dist/assets/images/logo.128.png +0 -0
  122. package/dist/{images → assets/images}/logo.bw.png +0 -0
  123. package/dist/{images → assets/images}/logo.png +0 -0
  124. package/dist/assets/linetype/0.png +0 -0
  125. package/dist/assets/linetype/1.png +0 -0
  126. package/dist/assets/linetype/10.png +0 -0
  127. package/dist/assets/linetype/11.png +0 -0
  128. package/dist/assets/linetype/12.png +0 -0
  129. package/dist/assets/linetype/13.png +0 -0
  130. package/dist/assets/linetype/14.png +0 -0
  131. package/dist/assets/linetype/15.png +0 -0
  132. package/dist/assets/linetype/16.png +0 -0
  133. package/dist/assets/linetype/2.png +0 -0
  134. package/dist/assets/linetype/3.png +0 -0
  135. package/dist/assets/linetype/4.png +0 -0
  136. package/dist/assets/linetype/5.png +0 -0
  137. package/dist/assets/linetype/6.png +0 -0
  138. package/dist/assets/linetype/7.png +0 -0
  139. package/dist/assets/linetype/8.png +0 -0
  140. package/dist/assets/linetype/9.png +0 -0
  141. package/dist/assets/shaders/webgl1/Background.fs +23 -0
  142. package/dist/assets/shaders/webgl1/Background.vs +16 -0
  143. package/dist/assets/shaders/webgl1/Depth.fs +60 -0
  144. package/dist/assets/shaders/webgl1/Depth.vs +13 -0
  145. package/dist/assets/shaders/webgl1/Fallback.fs +28 -0
  146. package/dist/assets/shaders/webgl1/Fallback.vs +24 -0
  147. package/dist/assets/shaders/webgl1/FallbackUnlit.fs +15 -0
  148. package/dist/assets/shaders/webgl1/FallbackUnlit.vs +18 -0
  149. package/dist/assets/shaders/webgl1/Gouraud.fs +529 -0
  150. package/dist/assets/shaders/webgl1/Gouraud.vs +107 -0
  151. package/dist/assets/shaders/webgl1/Phong.fs +837 -0
  152. package/dist/assets/shaders/webgl1/Phong.vs +52 -0
  153. package/dist/assets/shaders/webgl1/PointSet.fs +541 -0
  154. package/dist/assets/shaders/webgl1/PointSet.vs +48 -0
  155. package/dist/assets/shaders/webgl1/Unlit.fs +538 -0
  156. package/dist/assets/shaders/webgl1/Unlit.vs +52 -0
  157. package/dist/assets/shaders/webgl1/Wireframe.fs +93 -0
  158. package/dist/assets/shaders/webgl1/Wireframe.vs +47 -0
  159. package/dist/assets/shaders/webgl2/Background.fs +25 -0
  160. package/dist/assets/shaders/webgl2/Background.vs +17 -0
  161. package/dist/assets/shaders/webgl2/Depth.fs +62 -0
  162. package/dist/assets/shaders/webgl2/Depth.vs +14 -0
  163. package/dist/assets/shaders/webgl2/Gouraud.fs +684 -0
  164. package/dist/assets/shaders/webgl2/Gouraud.vs +108 -0
  165. package/dist/assets/shaders/webgl2/Phong.fs +1013 -0
  166. package/dist/assets/shaders/webgl2/Phong.vs +53 -0
  167. package/dist/assets/shaders/webgl2/PointSet.fs +696 -0
  168. package/dist/assets/shaders/webgl2/PointSet.vs +49 -0
  169. package/dist/assets/shaders/webgl2/Unlit.fs +693 -0
  170. package/dist/assets/shaders/webgl2/Unlit.vs +53 -0
  171. package/dist/assets/shaders/webgl2/Wireframe.fs +102 -0
  172. package/dist/assets/shaders/webgl2/Wireframe.vs +48 -0
  173. package/dist/example.html +8 -7
  174. package/dist/x_ite.css +167 -49
  175. package/dist/x_ite.js +66263 -60020
  176. package/dist/x_ite.min.js +41 -41
  177. package/dist/x_ite.zip +0 -0
  178. package/docs/404.md +5 -0
  179. package/docs/Accessing-the-External-Browser.md +319 -0
  180. package/docs/Browser-Support.md +47 -0
  181. package/docs/Custom-Shaders.md +896 -0
  182. package/docs/Features.md +49 -0
  183. package/docs/Glossary.md +339 -0
  184. package/docs/How-To-Configure-Your-Web-Server.md +56 -0
  185. package/docs/Supported-Nodes.md +370 -0
  186. package/docs/What's-New.md +1295 -0
  187. package/docs/XHTML-DOM-Integration.md +82 -0
  188. package/docs/_config.yml +140 -0
  189. package/docs/_data/navigation.yml +137 -0
  190. package/docs/assets/css/main.scss +100 -0
  191. package/docs/assets/images/logo.png +0 -0
  192. package/docs/google3696ee938394d7b6.html +1 -0
  193. package/docs/index.md +1033 -0
  194. package/docs/reference/Browser-Services.md +361 -0
  195. package/docs/reference/Constants-Services.md +376 -0
  196. package/docs/reference/ECMAScript-Object-and-Function-Definitions.md +128 -0
  197. package/docs/reference/Field-Services-and-Objects.md +1006 -0
  198. package/docs/reference/Prototype-Services.md +121 -0
  199. package/docs/reference/Route-Services.md +49 -0
  200. package/docs/reference/Scene-Services.md +360 -0
  201. package/docs/reference/Script-Node-Authoring-Interface.md +342 -0
  202. package/docs/tutorials/Adding-backgrounds.md +268 -0
  203. package/docs/tutorials/Adding-fog.md +67 -0
  204. package/docs/tutorials/Adding-sound.md +326 -0
  205. package/docs/tutorials/Animating-transforms.md +385 -0
  206. package/docs/tutorials/Basic-Nodes.md +317 -0
  207. package/docs/tutorials/Building-a-X3D-world.md +152 -0
  208. package/docs/tutorials/Building-elevation-grids.md +170 -0
  209. package/docs/tutorials/Building-extruded-shapes.md +145 -0
  210. package/docs/tutorials/Building-primitive-shapes.md +204 -0
  211. package/docs/tutorials/Building-shapes-out-of-points,-lines,-and-faces.md +311 -0
  212. package/docs/tutorials/Controlling-appearance-with-materials.md +186 -0
  213. package/docs/tutorials/Controlling-color-on-coordinate-based-geometry.md +208 -0
  214. package/docs/tutorials/Controlling-detail.md +130 -0
  215. package/docs/tutorials/Controlling-how-textures-are-mapped.md +277 -0
  216. package/docs/tutorials/Controlling-navigation.md +70 -0
  217. package/docs/tutorials/Controlling-shading-on-coordinate-based-geometry.md +180 -0
  218. package/docs/tutorials/Controlling-the-viewpoint.md +49 -0
  219. package/docs/tutorials/Creating-new-node-types.md +313 -0
  220. package/docs/tutorials/Grouping-nodes.md +237 -0
  221. package/docs/tutorials/Hello,-World!.md +204 -0
  222. package/docs/tutorials/Improving-Performance.md +227 -0
  223. package/docs/tutorials/Increasing-Rendering-Speed.md +110 -0
  224. package/docs/tutorials/Introducing-X3D.md +94 -0
  225. package/docs/tutorials/Introducing-animation.md +211 -0
  226. package/docs/tutorials/Introducing-script-use.md +127 -0
  227. package/docs/tutorials/Lighting-your-world.md +139 -0
  228. package/docs/tutorials/Mapping-textures.md +212 -0
  229. package/docs/tutorials/Naming-nodes.md +161 -0
  230. package/docs/tutorials/Providing-information-about-your-world.md +30 -0
  231. package/docs/tutorials/Sensing-the-viewer.md +205 -0
  232. package/docs/tutorials/Sensing-viewer-actions.md +214 -0
  233. package/docs/tutorials/Transforming-Shapes.md +270 -0
  234. package/docs/tutorials/Writing-program-scripts-with-ECMAScript.md +631 -0
  235. package/docs/tutorials/index.md +78 -0
  236. package/meta/logo/logo.png +0 -0
  237. package/meta/logo/logo.svg +216 -217
  238. package/meta/web3d.html +3 -3
  239. package/package.json +43 -28
  240. package/src/assets/components/annotation.js +87 -0
  241. package/src/{components → assets/components}/cad-geometry.js +0 -0
  242. package/src/{x_ite/Components/CubeMapTexturing.js → assets/components/cube-map-texturing.js} +15 -21
  243. package/src/assets/components/dis.js +84 -0
  244. package/src/{x_ite/Components/EventUtilities.js → assets/components/event-utilities.js} +20 -26
  245. package/src/{x_ite/Components/Geometry2D.js → assets/components/geometry2d.js} +22 -25
  246. package/src/{components → assets/components}/geospatial.js +0 -0
  247. package/src/{components → assets/components}/h-anim.js +9 -7
  248. package/src/{x_ite/Components/KeyDeviceSensor.js → assets/components/key-device-sensor.js} +17 -20
  249. package/src/{x_ite/Components/Layout.js → assets/components/layout.js} +20 -23
  250. package/src/{components → assets/components}/nurbs.js +0 -0
  251. package/src/{components → assets/components}/particle-systems.js +1 -1
  252. package/src/assets/components/picking.js +87 -0
  253. package/src/assets/components/projective-texture-mapping.js +75 -0
  254. package/src/{components → assets/components}/rigid-body-physics.js +7 -2
  255. package/src/{x_ite/Components/Scripting.js → assets/components/scripting.js} +13 -19
  256. package/src/{components → assets/components}/texturing-3d.js +12 -13
  257. package/src/assets/components/volume-rendering.js +118 -0
  258. package/src/{x_ite/Components/X_ITE.js → assets/components/x_ite.js} +12 -30
  259. package/src/assets/fonts/DroidSerif-Bold.ttf +0 -0
  260. package/src/assets/fonts/DroidSerif-BoldItalic.ttf +0 -0
  261. package/src/assets/fonts/DroidSerif-Italic.ttf +0 -0
  262. package/src/assets/fonts/DroidSerif-Regular.ttf +0 -0
  263. package/src/assets/fonts/Ubuntu-B.ttf +0 -0
  264. package/src/assets/fonts/Ubuntu-BI.ttf +0 -0
  265. package/src/assets/fonts/Ubuntu-R.ttf +0 -0
  266. package/src/assets/fonts/Ubuntu-RI.ttf +0 -0
  267. package/src/assets/fonts/UbuntuMono-B.ttf +0 -0
  268. package/src/assets/fonts/UbuntuMono-BI.ttf +0 -0
  269. package/src/assets/fonts/UbuntuMono-R.ttf +0 -0
  270. package/src/assets/fonts/UbuntuMono-RI.ttf +0 -0
  271. package/src/assets/hatching/0.png +0 -0
  272. package/src/assets/hatching/1.png +0 -0
  273. package/src/assets/hatching/10.png +0 -0
  274. package/src/assets/hatching/11.png +0 -0
  275. package/src/assets/hatching/12.png +0 -0
  276. package/src/assets/hatching/13.png +0 -0
  277. package/src/assets/hatching/14.png +0 -0
  278. package/src/assets/hatching/15.png +0 -0
  279. package/src/assets/hatching/16.png +0 -0
  280. package/src/assets/hatching/17.png +0 -0
  281. package/src/assets/hatching/18.png +0 -0
  282. package/src/assets/hatching/19.png +0 -0
  283. package/src/assets/hatching/2.png +0 -0
  284. package/src/assets/hatching/3.png +0 -0
  285. package/src/assets/hatching/4.png +0 -0
  286. package/src/assets/hatching/5.png +0 -0
  287. package/src/assets/hatching/6.png +0 -0
  288. package/src/assets/hatching/7.png +0 -0
  289. package/src/assets/hatching/8.png +0 -0
  290. package/src/assets/hatching/9.png +0 -0
  291. package/src/{images → assets/images}/ExamineViewer.png +0 -0
  292. package/src/{images → assets/images}/FlyViewer.png +0 -0
  293. package/src/{images → assets/images}/NoneViewer.png +0 -0
  294. package/src/{images → assets/images}/PlaneViewer.png +0 -0
  295. package/src/{images → assets/images}/PrimitiveQuality.png +0 -0
  296. package/src/{images → assets/images}/TextureQuality.png +0 -0
  297. package/src/{images → assets/images}/Time.png +0 -0
  298. package/src/{images → assets/images}/Viewpoint.png +0 -0
  299. package/src/{images → assets/images}/WalkViewer.png +0 -0
  300. package/src/assets/images/go-next.png +0 -0
  301. package/src/{images → assets/images}/gtk-fullscreen.png +0 -0
  302. package/src/{images → assets/images}/gtk-leave-fullscreen.png +0 -0
  303. package/src/{images → assets/images}/gtk-zoom-fit.png +0 -0
  304. package/src/{images → assets/images}/gtk-zoom-in.png +0 -0
  305. package/src/{images → assets/images}/help-about.png +0 -0
  306. package/src/{images → assets/images}/icon.bw.png +0 -0
  307. package/src/{images → assets/images}/icon.png +0 -0
  308. package/src/assets/images/logo.128.png +0 -0
  309. package/src/{images → assets/images}/logo.bw.png +0 -0
  310. package/src/{images → assets/images}/logo.png +0 -0
  311. package/src/assets/linetype/0.png +0 -0
  312. package/src/assets/linetype/1.png +0 -0
  313. package/src/assets/linetype/10.png +0 -0
  314. package/src/assets/linetype/11.png +0 -0
  315. package/src/assets/linetype/12.png +0 -0
  316. package/src/assets/linetype/13.png +0 -0
  317. package/src/assets/linetype/14.png +0 -0
  318. package/src/assets/linetype/15.png +0 -0
  319. package/src/assets/linetype/16.png +0 -0
  320. package/src/assets/linetype/2.png +0 -0
  321. package/src/assets/linetype/3.png +0 -0
  322. package/src/assets/linetype/4.png +0 -0
  323. package/src/assets/linetype/5.png +0 -0
  324. package/src/assets/linetype/6.png +0 -0
  325. package/src/assets/linetype/7.png +0 -0
  326. package/src/assets/linetype/8.png +0 -0
  327. package/src/assets/linetype/9.png +0 -0
  328. package/src/assets/shaders/Types.glsl +102 -0
  329. package/src/assets/shaders/webgl1/Background.fs +16 -0
  330. package/src/assets/shaders/webgl1/Background.vs +22 -0
  331. package/src/assets/shaders/webgl1/Depth.fs +16 -0
  332. package/src/assets/shaders/webgl1/Depth.vs +20 -0
  333. package/src/assets/shaders/webgl1/Fallback.fs +38 -0
  334. package/src/assets/shaders/webgl1/Fallback.vs +30 -0
  335. package/src/assets/shaders/webgl1/FallbackUnlit.fs +21 -0
  336. package/src/assets/shaders/webgl1/FallbackUnlit.vs +24 -0
  337. package/src/assets/shaders/webgl1/Gouraud.fs +66 -0
  338. package/src/assets/shaders/webgl1/Gouraud.vs +147 -0
  339. package/src/assets/shaders/webgl1/Phong.fs +172 -0
  340. package/src/assets/shaders/webgl1/Phong.vs +67 -0
  341. package/src/assets/shaders/webgl1/PointSet.fs +100 -0
  342. package/src/assets/shaders/webgl1/PointSet.vs +70 -0
  343. package/src/assets/shaders/webgl1/Unlit.fs +86 -0
  344. package/src/assets/shaders/webgl1/Unlit.vs +67 -0
  345. package/src/assets/shaders/webgl1/Wireframe.fs +74 -0
  346. package/src/assets/shaders/webgl1/Wireframe.vs +63 -0
  347. package/src/assets/shaders/webgl1/include/ClipPlanes.glsl +16 -0
  348. package/src/assets/shaders/webgl1/include/Fog.glsl +38 -0
  349. package/src/assets/shaders/webgl1/include/Hatch.glsl +18 -0
  350. package/src/{x_ite/Browser/Shaders/Include/Pack.h → assets/shaders/webgl1/include/Pack.glsl} +0 -1
  351. package/src/assets/shaders/webgl1/include/Perlin.glsl +40 -0
  352. package/src/{x_ite/Browser/Shaders/Include/Shadow.h → assets/shaders/webgl1/include/Shadow.glsl} +33 -33
  353. package/src/assets/shaders/webgl1/include/Texture.glsl +488 -0
  354. package/src/assets/shaders/webgl2/Background.fs +19 -0
  355. package/src/assets/shaders/webgl2/Background.vs +23 -0
  356. package/src/assets/shaders/webgl2/Depth.fs +19 -0
  357. package/src/assets/shaders/webgl2/Depth.vs +21 -0
  358. package/src/assets/shaders/webgl2/Gouraud.fs +64 -0
  359. package/src/assets/shaders/webgl2/Gouraud.vs +148 -0
  360. package/src/assets/shaders/webgl2/Phong.fs +170 -0
  361. package/src/assets/shaders/webgl2/Phong.vs +68 -0
  362. package/src/assets/shaders/webgl2/PointSet.fs +99 -0
  363. package/src/assets/shaders/webgl2/PointSet.vs +71 -0
  364. package/src/assets/shaders/webgl2/Unlit.fs +85 -0
  365. package/src/assets/shaders/webgl2/Unlit.vs +68 -0
  366. package/src/assets/shaders/webgl2/Wireframe.fs +73 -0
  367. package/src/assets/shaders/webgl2/Wireframe.vs +64 -0
  368. package/src/assets/shaders/webgl2/include/ClipPlanes.glsl +16 -0
  369. package/src/assets/shaders/webgl2/include/Fog.glsl +46 -0
  370. package/src/assets/shaders/webgl2/include/Hatch.glsl +18 -0
  371. package/src/assets/shaders/webgl2/include/Pack.glsl +51 -0
  372. package/src/assets/shaders/webgl2/include/Perlin.glsl +40 -0
  373. package/src/assets/shaders/webgl2/include/Shadow.glsl +324 -0
  374. package/src/assets/shaders/webgl2/include/Texture.glsl +623 -0
  375. package/src/bookmarks.js +33 -12
  376. package/src/dummy.js +1 -0
  377. package/src/example.html +8 -7
  378. package/src/examples.js +21 -3
  379. package/src/lib/ammojs/AmmoJS.js +58 -0
  380. package/src/lib/ammojs/Makefile +4 -0
  381. package/src/lib/ammojs/ammo.idl +72 -1
  382. package/src/lib/ammojs/ammo.js +25 -21
  383. package/src/lib/jpeg/jpeg.js +1019 -0
  384. package/src/lib/nurbs/extras/sample.js +137 -80
  385. package/src/locale/de.po +18 -73
  386. package/src/locale/fr.po +18 -74
  387. package/src/spinner.css +18 -6
  388. package/src/standard/Geospatial/Geodetic.js +43 -43
  389. package/src/standard/Geospatial/ReferenceEllipsoids.js +1 -1
  390. package/src/standard/Geospatial/UniversalTransverseMercator.js +42 -42
  391. package/src/standard/Math/Algorithm.js +22 -39
  392. package/src/standard/Math/Algorithms/Bezier.js +147 -0
  393. package/src/standard/Math/Algorithms/MergeSort.js +2 -2
  394. package/src/standard/Math/Algorithms/PartialSort.js +6 -6
  395. package/src/standard/Math/Algorithms/QuickSort.js +8 -6
  396. package/src/standard/Math/Algorithms/SAT.js +4 -8
  397. package/src/standard/Math/Algorithms/eigendecomposition.js +37 -33
  398. package/src/standard/Math/Geometry/Box2.js +84 -56
  399. package/src/standard/Math/Geometry/Box3.js +400 -358
  400. package/src/standard/Math/Geometry/Camera.js +19 -16
  401. package/src/standard/Math/Geometry/Cylinder3.js +13 -13
  402. package/src/standard/Math/Geometry/Line3.js +34 -34
  403. package/src/standard/Math/Geometry/Plane3.js +15 -15
  404. package/src/standard/Math/Geometry/Sphere3.js +122 -105
  405. package/src/standard/Math/Geometry/Spheroid3.js +1 -1
  406. package/src/standard/Math/Geometry/Triangle2.js +5 -5
  407. package/src/standard/Math/Geometry/Triangle3.js +12 -14
  408. package/src/standard/Math/Geometry/ViewVolume.js +303 -106
  409. package/src/standard/Math/Numbers/Color3.js +26 -23
  410. package/src/standard/Math/Numbers/Color4.js +9 -9
  411. package/src/standard/Math/Numbers/Complex.js +13 -17
  412. package/src/standard/Math/Numbers/Matrix2.js +20 -13
  413. package/src/standard/Math/Numbers/Matrix3.js +129 -205
  414. package/src/standard/Math/Numbers/Matrix4.js +136 -257
  415. package/src/standard/Math/Numbers/Quaternion.js +49 -138
  416. package/src/standard/Math/Numbers/Rotation4.js +42 -55
  417. package/src/standard/Math/Numbers/Vector2.js +32 -115
  418. package/src/standard/Math/Numbers/Vector3.js +46 -151
  419. package/src/standard/Math/Numbers/Vector4.js +44 -163
  420. package/src/standard/Math/Utility/BVH.js +21 -20
  421. package/src/standard/Math/Utility/MatrixStack.js +4 -4
  422. package/src/standard/Networking/BinaryTransport.js +8 -8
  423. package/src/standard/Time/MicroTime.js +81 -0
  424. package/src/standard/Utility/DataStorage.js +11 -14
  425. package/src/standard/Utility/MapUtilities.js +69 -0
  426. package/src/standard/Utility/ObjectCache.js +2 -3
  427. package/src/standard/Utility/Shuffle.js +5 -6
  428. package/src/tests.js +84 -5
  429. package/src/x_ite/Base/Events.js +9 -10
  430. package/src/x_ite/Base/X3DChildObject.js +20 -16
  431. package/src/x_ite/Base/X3DEventObject.js +3 -7
  432. package/src/x_ite/Base/X3DObject.js +44 -27
  433. package/src/x_ite/Basic/FieldDefinitionArray.js +11 -4
  434. package/src/x_ite/Basic/X3DBaseNode.js +427 -246
  435. package/src/x_ite/Basic/X3DField.js +48 -69
  436. package/src/x_ite/Basic/X3DFieldDefinition.js +0 -4
  437. package/src/x_ite/Basic/X3DObjectArrayField.js +102 -108
  438. package/src/x_ite/Basic/X3DTypedArrayField.js +194 -163
  439. package/src/x_ite/Bits/TraverseType.js +2 -5
  440. package/src/x_ite/Bits/X3DConstants.js +11 -2
  441. package/src/x_ite/Browser/Core/BrowserOptions.js +89 -68
  442. package/src/x_ite/Browser/Core/BrowserTimings.js +21 -29
  443. package/src/x_ite/Browser/Core/ContextMenu.js +139 -60
  444. package/src/x_ite/Browser/Core/Notification.js +3 -3
  445. package/src/x_ite/Browser/Core/PrimitiveQuality.js +3 -7
  446. package/src/x_ite/Browser/Core/Shading.js +3 -7
  447. package/src/x_ite/Browser/Core/TextureQuality.js +3 -7
  448. package/src/x_ite/Browser/Core/X3DCoreContext.js +398 -58
  449. package/src/x_ite/Browser/Core/X3DCoreContext.js.~1~ +714 -0
  450. package/src/x_ite/Browser/EnvironmentalEffects/X3DEnvironmentalEffectsContext.js +17 -28
  451. package/src/x_ite/Browser/Followers/X3DArrayChaserTemplate.js +5 -14
  452. package/src/x_ite/Browser/Followers/X3DArrayFollowerTemplate.js +81 -28
  453. package/src/x_ite/Browser/Geometry2D/Disk2DOptions.js +53 -44
  454. package/src/x_ite/Browser/Geometry2D/X3DGeometry2DContext.js +51 -12
  455. package/src/x_ite/Browser/Geometry3D/X3DGeometry3DContext.js +8 -9
  456. package/src/x_ite/Browser/Grouping/X3DGroupingContext.js +98 -0
  457. package/src/x_ite/Browser/KeyDeviceSensor/X3DKeyDeviceSensorContext.js +14 -206
  458. package/src/x_ite/Browser/Layout/ScreenText.js +226 -254
  459. package/src/x_ite/Browser/Layout/X3DLayoutContext.js +13 -11
  460. package/src/x_ite/Browser/Lighting/X3DLightingContext.js +15 -9
  461. package/src/x_ite/Browser/NURBS/NURBS.js +84 -72
  462. package/src/x_ite/Browser/Navigation/ExamineViewer.js +125 -83
  463. package/src/x_ite/Browser/Navigation/FlyViewer.js +14 -9
  464. package/src/x_ite/Browser/Navigation/LookAtViewer.js +60 -40
  465. package/src/x_ite/Browser/Navigation/NoneViewer.js +12 -1
  466. package/src/x_ite/Browser/Navigation/PlaneViewer.js +39 -20
  467. package/src/x_ite/Browser/Navigation/WalkViewer.js +21 -6
  468. package/src/x_ite/Browser/Navigation/X3DFlyViewer.js +110 -85
  469. package/src/x_ite/Browser/Navigation/X3DNavigationContext.js +11 -6
  470. package/src/x_ite/Browser/Navigation/X3DViewer.js +73 -48
  471. package/src/x_ite/Browser/Networking/X3DNetworkingContext.js +18 -24
  472. package/src/x_ite/Browser/Networking/urls.js +31 -16
  473. package/src/x_ite/Browser/ParticleSystems/X3DParticleSystemsContext.js +5 -6
  474. package/src/x_ite/Browser/Picking/IntersectionType.js +63 -0
  475. package/src/x_ite/Browser/Picking/MatchCriterion.js +64 -0
  476. package/src/x_ite/Browser/Picking/SortOrder.js +65 -0
  477. package/src/x_ite/Browser/Picking/VolumePicker.js +197 -0
  478. package/src/x_ite/Browser/Picking/X3DPickingContext.js +130 -0
  479. package/src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js +26 -20
  480. package/src/x_ite/Browser/PointingDeviceSensor/X3DPointingDeviceSensorContext.js +17 -10
  481. package/src/x_ite/Browser/Rendering/X3DRenderingContext.js +38 -27
  482. package/src/x_ite/Browser/RigidBodyPhysics/AppliedParametersType.js +70 -0
  483. package/src/x_ite/Browser/Shaders/Shader.js +112 -92
  484. package/src/x_ite/Browser/Shaders/ShaderSource.js +140 -0
  485. package/src/x_ite/Browser/Shaders/ShaderTest.js +92 -77
  486. package/src/x_ite/Browser/Shaders/X3DShadersContext.js +134 -74
  487. package/src/x_ite/Browser/Shape/AlphaMode.js +65 -0
  488. package/src/x_ite/Browser/Shape/LineStipples.xcf +0 -0
  489. package/src/x_ite/Browser/Shape/X3DShapeContext.js +108 -4
  490. package/src/x_ite/Browser/Text/PolygonText.js +153 -170
  491. package/src/x_ite/Browser/Text/TextAlignment.js +3 -7
  492. package/src/x_ite/Browser/Text/X3DTextContext.js +38 -30
  493. package/src/x_ite/Browser/Text/X3DTextGeometry.js +49 -74
  494. package/src/x_ite/Browser/Texturing/MultiTextureFunctionType.js +64 -0
  495. package/src/x_ite/Browser/Texturing/MultiTextureModeType.js +81 -0
  496. package/src/x_ite/Browser/Texturing/MultiTextureSourceType.js +65 -0
  497. package/src/x_ite/Browser/Texturing/TextureCoordinateGeneratorModeType.js +73 -0
  498. package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +147 -45
  499. package/src/x_ite/Browser/Texturing3D/DICOMParser.js +1126 -0
  500. package/src/x_ite/Browser/Texturing3D/NRRDParser.js +686 -0
  501. package/src/x_ite/Browser/Time/X3DTimeContext.js +20 -17
  502. package/src/x_ite/Browser/VERSION.js +1 -1
  503. package/src/x_ite/Browser/VolumeRendering/VolumeStyle.fs +120 -0
  504. package/src/x_ite/Browser/VolumeRendering/VolumeStyle.vs +28 -0
  505. package/src/x_ite/Browser/VolumeRendering/X3DVolumeRenderingContext.js +114 -0
  506. package/src/x_ite/Browser/X3DBrowser.js +282 -224
  507. package/src/x_ite/Browser/X3DBrowserContext.js +60 -27
  508. package/src/x_ite/Components/Annotation/AnnotationLayer.js +108 -0
  509. package/src/x_ite/Components/Annotation/AnnotationTarget.js +101 -0
  510. package/src/x_ite/Components/Annotation/GroupAnnotation.js +112 -0
  511. package/src/x_ite/Components/Annotation/IconAnnotation.js +110 -0
  512. package/src/x_ite/Components/Annotation/TextAnnotation.js +102 -0
  513. package/src/x_ite/Components/Annotation/URLAnnotation.js +101 -0
  514. package/src/x_ite/Components/Annotation/X3DAnnotationNode.js +76 -0
  515. package/src/x_ite/Components/CADGeometry/CADAssembly.js +4 -4
  516. package/src/x_ite/Components/CADGeometry/CADFace.js +135 -30
  517. package/src/x_ite/Components/CADGeometry/CADLayer.js +3 -18
  518. package/src/x_ite/Components/CADGeometry/CADPart.js +4 -8
  519. package/src/x_ite/Components/CADGeometry/IndexedQuadSet.js +18 -10
  520. package/src/x_ite/Components/Core/WorldInfo.js +16 -6
  521. package/src/x_ite/Components/Core/X3DBindableNode.js +4 -33
  522. package/src/x_ite/Components/Core/X3DChildNode.js +14 -1
  523. package/src/x_ite/Components/Core/X3DNode.js +0 -63
  524. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +128 -168
  525. package/src/x_ite/Components/Core.js +6 -9
  526. package/src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js +38 -46
  527. package/src/x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture.js +31 -30
  528. package/src/x_ite/Components/CubeMapTexturing/ImageCubeMapTexture.js +42 -57
  529. package/src/x_ite/Components/CubeMapTexturing/X3DEnvironmentTextureNode.js +36 -48
  530. package/src/x_ite/Components/DIS/EspduTransform.js +12 -6
  531. package/src/x_ite/Components/DIS/ReceiverPdu.js +12 -6
  532. package/src/x_ite/Components/DIS/SignalPdu.js +12 -6
  533. package/src/x_ite/Components/DIS/TransmitterPdu.js +12 -6
  534. package/src/x_ite/Components/EnvironmentalEffects/Fog.js +5 -16
  535. package/src/x_ite/Components/EnvironmentalEffects/FogCoordinate.js +55 -3
  536. package/src/x_ite/Components/EnvironmentalEffects/LocalFog.js +3 -5
  537. package/src/x_ite/Components/EnvironmentalEffects/X3DBackgroundNode.js +116 -116
  538. package/src/x_ite/Components/EnvironmentalEffects/X3DFogObject.js +5 -6
  539. package/src/x_ite/Components/EnvironmentalEffects.js +6 -9
  540. package/src/x_ite/Components/EnvironmentalSensor/ProximitySensor.js +116 -117
  541. package/src/x_ite/Components/EnvironmentalSensor/TransformSensor.js +169 -49
  542. package/src/x_ite/Components/EnvironmentalSensor/VisibilitySensor.js +31 -27
  543. package/src/x_ite/Components/EnvironmentalSensor/X3DEnvironmentalSensorNode.js +12 -5
  544. package/src/x_ite/Components/EnvironmentalSensor.js +6 -9
  545. package/src/x_ite/Components/Followers/ColorChaser.js +1 -3
  546. package/src/x_ite/Components/Followers/ColorDamper.js +1 -3
  547. package/src/x_ite/Components/Followers/CoordinateChaser.js +1 -7
  548. package/src/x_ite/Components/Followers/CoordinateDamper.js +0 -6
  549. package/src/x_ite/Components/Followers/OrientationChaser.js +7 -3
  550. package/src/x_ite/Components/Followers/OrientationDamper.js +7 -3
  551. package/src/x_ite/Components/Followers/PositionChaser.js +1 -3
  552. package/src/x_ite/Components/Followers/PositionChaser2D.js +1 -3
  553. package/src/x_ite/Components/Followers/PositionDamper.js +1 -3
  554. package/src/x_ite/Components/Followers/PositionDamper2D.js +1 -3
  555. package/src/x_ite/Components/Followers/ScalarChaser.js +1 -3
  556. package/src/x_ite/Components/Followers/ScalarDamper.js +1 -3
  557. package/src/x_ite/Components/Followers/TexCoordChaser2D.js +1 -7
  558. package/src/x_ite/Components/Followers/TexCoordDamper2D.js +1 -7
  559. package/src/x_ite/Components/Followers/X3DChaserNode.js +20 -18
  560. package/src/x_ite/Components/Followers/X3DDamperNode.js +5 -7
  561. package/src/x_ite/Components/Followers/X3DFollowerNode.js +5 -7
  562. package/src/x_ite/Components/Followers.js +6 -9
  563. package/src/x_ite/Components/Geometry2D/Arc2D.js +10 -14
  564. package/src/x_ite/Components/Geometry2D/ArcClose2D.js +87 -86
  565. package/src/x_ite/Components/Geometry2D/Circle2D.js +1 -3
  566. package/src/x_ite/Components/Geometry2D/Disk2D.js +43 -58
  567. package/src/x_ite/Components/Geometry2D/Polyline2D.js +4 -8
  568. package/src/x_ite/Components/Geometry2D/Polypoint2D.js +3 -5
  569. package/src/x_ite/Components/Geometry2D/TriangleSet2D.js +20 -16
  570. package/src/x_ite/Components/Geometry3D/Cone.js +1 -3
  571. package/src/x_ite/Components/Geometry3D/Cylinder.js +3 -5
  572. package/src/x_ite/Components/Geometry3D/ElevationGrid.js +35 -17
  573. package/src/x_ite/Components/Geometry3D/Extrusion.js +125 -107
  574. package/src/x_ite/Components/Geometry3D/IndexedFaceSet.js +164 -142
  575. package/src/x_ite/Components/Geometry3D/Sphere.js +3 -5
  576. package/src/x_ite/Components/Geometry3D.js +6 -9
  577. package/src/x_ite/Components/Geospatial/GeoElevationGrid.js +7 -7
  578. package/src/x_ite/Components/Geospatial/GeoLOD.js +207 -124
  579. package/src/x_ite/Components/Geospatial/GeoLocation.js +6 -6
  580. package/src/x_ite/Components/Geospatial/GeoProximitySensor.js +5 -3
  581. package/src/x_ite/Components/Geospatial/GeoTransform.js +9 -9
  582. package/src/x_ite/Components/Geospatial/GeoViewpoint.js +27 -27
  583. package/src/x_ite/Components/Grouping/Group.js +3 -3
  584. package/src/x_ite/Components/Grouping/StaticGroup.js +49 -56
  585. package/src/x_ite/Components/Grouping/Switch.js +171 -21
  586. package/src/x_ite/Components/Grouping/Transform.js +3 -3
  587. package/src/x_ite/Components/Grouping/X3DBoundedObject.js +68 -15
  588. package/src/x_ite/Components/Grouping/X3DGroupingNode.js +339 -180
  589. package/src/x_ite/Components/Grouping/X3DTransformMatrix3DNode.js +51 -25
  590. package/src/x_ite/Components/Grouping/X3DTransformNode.js +2 -4
  591. package/src/x_ite/Components/Grouping.js +6 -9
  592. package/src/x_ite/Components/{H-Anim → HAnim}/HAnimDisplacer.js +4 -4
  593. package/src/x_ite/Components/{H-Anim → HAnim}/HAnimHumanoid.js +24 -14
  594. package/src/x_ite/Components/{H-Anim → HAnim}/HAnimJoint.js +44 -20
  595. package/src/x_ite/Components/HAnim/HAnimMotion.js +113 -0
  596. package/src/x_ite/Components/{H-Anim → HAnim}/HAnimSegment.js +6 -4
  597. package/src/x_ite/Components/{H-Anim → HAnim}/HAnimSite.js +4 -4
  598. package/src/x_ite/Components/Interpolation/OrientationInterpolator.js +8 -7
  599. package/src/x_ite/Components/Interpolation/SquadOrientationInterpolator.js +4 -3
  600. package/src/x_ite/Components/Interpolation.js +6 -9
  601. package/src/x_ite/Components/KeyDeviceSensor/X3DKeyDeviceSensorNode.js +1 -3
  602. package/src/x_ite/Components/Layering/Layer.js +12 -2
  603. package/src/x_ite/Components/Layering/LayerSet.js +4 -6
  604. package/src/x_ite/Components/Layering/Viewport.js +8 -8
  605. package/src/x_ite/Components/Layering/X3DLayerNode.js +67 -62
  606. package/src/x_ite/Components/Layering.js +6 -9
  607. package/src/x_ite/Components/Layout/LayoutGroup.js +18 -15
  608. package/src/x_ite/Components/Layout/LayoutLayer.js +10 -5
  609. package/src/x_ite/Components/Layout/ScreenFontStyle.js +12 -14
  610. package/src/x_ite/Components/Layout/ScreenGroup.js +25 -31
  611. package/src/x_ite/Components/Lighting/DirectionalLight.js +27 -22
  612. package/src/x_ite/Components/Lighting/PointLight.js +26 -29
  613. package/src/x_ite/Components/Lighting/SpotLight.js +29 -24
  614. package/src/x_ite/Components/Lighting/X3DLightNode.js +85 -66
  615. package/src/x_ite/Components/Lighting.js +6 -9
  616. package/src/x_ite/Components/NURBS/Contour2D.js +45 -1
  617. package/src/x_ite/Components/NURBS/ContourPolyline2D.js +53 -25
  618. package/src/x_ite/Components/NURBS/NurbsCurve.js +21 -24
  619. package/src/x_ite/Components/NURBS/NurbsCurve2D.js +44 -25
  620. package/src/x_ite/Components/NURBS/NurbsOrientationInterpolator.js +19 -21
  621. package/src/x_ite/Components/NURBS/NurbsPositionInterpolator.js +18 -20
  622. package/src/x_ite/Components/NURBS/NurbsSet.js +17 -6
  623. package/src/x_ite/Components/NURBS/NurbsSweptSurface.js +2 -2
  624. package/src/x_ite/Components/NURBS/NurbsSwungSurface.js +2 -2
  625. package/src/x_ite/Components/NURBS/NurbsTextureCoordinate.js +15 -16
  626. package/src/x_ite/Components/NURBS/NurbsTrimmedSurface.js +38 -1
  627. package/src/x_ite/Components/NURBS/X3DNurbsSurfaceGeometryNode.js +116 -43
  628. package/src/x_ite/Components/Navigation/Billboard.js +12 -11
  629. package/src/x_ite/Components/Navigation/Collision.js +10 -8
  630. package/src/x_ite/Components/Navigation/LOD.js +207 -59
  631. package/src/x_ite/Components/Navigation/NavigationInfo.js +29 -43
  632. package/src/x_ite/Components/Navigation/OrthoViewpoint.js +99 -18
  633. package/src/x_ite/Components/Navigation/Viewpoint.js +15 -15
  634. package/src/x_ite/Components/Navigation/ViewpointGroup.js +12 -5
  635. package/src/x_ite/Components/Navigation/X3DViewpointNode.js +137 -148
  636. package/src/x_ite/Components/Navigation.js +6 -9
  637. package/src/x_ite/Components/Networking/Anchor.js +22 -24
  638. package/src/x_ite/Components/Networking/Inline.js +63 -44
  639. package/src/x_ite/Components/Networking/X3DUrlObject.js +88 -8
  640. package/src/x_ite/Components/Networking.js +6 -9
  641. package/src/x_ite/Components/ParticleSystems/BoundedPhysicsModel.js +2 -2
  642. package/src/x_ite/Components/ParticleSystems/ParticleSystem.js +215 -199
  643. package/src/x_ite/Components/ParticleSystems/PolylineEmitter.js +44 -39
  644. package/src/x_ite/Components/ParticleSystems/SurfaceEmitter.js +48 -46
  645. package/src/x_ite/Components/ParticleSystems/VolumeEmitter.js +121 -117
  646. package/src/x_ite/Components/ParticleSystems/WindPhysicsModel.js +21 -18
  647. package/src/x_ite/Components/ParticleSystems/X3DParticleEmitterNode.js +20 -22
  648. package/src/x_ite/Components/Picking/LinePickSensor.js +251 -6
  649. package/src/x_ite/Components/Picking/PickableGroup.js +120 -7
  650. package/src/x_ite/Components/Picking/PointPickSensor.js +260 -8
  651. package/src/x_ite/Components/Picking/PrimitivePickSensor.js +174 -4
  652. package/src/x_ite/Components/Picking/VolumePickSensor.js +150 -4
  653. package/src/x_ite/Components/Picking/X3DPickSensorNode.js +377 -4
  654. package/src/x_ite/Components/Picking/X3DPickableObject.js +21 -1
  655. package/src/x_ite/Components/PointingDeviceSensor/CylinderSensor.js +26 -11
  656. package/src/x_ite/Components/PointingDeviceSensor.js +6 -9
  657. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorParallel.js +282 -0
  658. package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorPerspective.js +227 -0
  659. package/src/x_ite/Components/ProjectiveTextureMapping/X3DTextureProjectorNode.js +217 -0
  660. package/src/x_ite/Components/Rendering/ClipPlane.js +8 -10
  661. package/src/x_ite/Components/Rendering/Color.js +22 -13
  662. package/src/x_ite/Components/Rendering/ColorRGBA.js +28 -16
  663. package/src/x_ite/Components/Rendering/IndexedLineSet.js +52 -33
  664. package/src/x_ite/Components/Rendering/IndexedTriangleFanSet.js +17 -14
  665. package/src/x_ite/Components/Rendering/IndexedTriangleSet.js +9 -4
  666. package/src/x_ite/Components/Rendering/IndexedTriangleStripSet.js +17 -17
  667. package/src/x_ite/Components/Rendering/LineSet.js +44 -27
  668. package/src/x_ite/Components/Rendering/Normal.js +20 -4
  669. package/src/x_ite/Components/Rendering/PointSet.js +38 -16
  670. package/src/x_ite/Components/Rendering/TriangleFanSet.js +7 -9
  671. package/src/x_ite/Components/Rendering/TriangleStripSet.js +6 -8
  672. package/src/x_ite/Components/Rendering/X3DColorNode.js +16 -1
  673. package/src/x_ite/Components/Rendering/X3DComposedGeometryNode.js +80 -55
  674. package/src/x_ite/Components/Rendering/X3DCoordinateNode.js +11 -13
  675. package/src/x_ite/Components/Rendering/X3DGeometryNode.js +622 -477
  676. package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +159 -90
  677. package/src/x_ite/Components/Rendering.js +6 -9
  678. package/src/x_ite/Components/RigidBodyPhysics/BallJoint.js +8 -10
  679. package/src/x_ite/Components/RigidBodyPhysics/CollidableOffset.js +142 -26
  680. package/src/x_ite/Components/RigidBodyPhysics/CollidableShape.js +312 -128
  681. package/src/x_ite/Components/RigidBodyPhysics/CollisionCollection.js +91 -7
  682. package/src/x_ite/Components/RigidBodyPhysics/CollisionSensor.js +189 -4
  683. package/src/x_ite/Components/RigidBodyPhysics/CollisionSpace.js +82 -4
  684. package/src/x_ite/Components/RigidBodyPhysics/Contact.js +1 -1
  685. package/src/x_ite/Components/RigidBodyPhysics/DoubleAxisHingeJoint.js +49 -37
  686. package/src/x_ite/Components/RigidBodyPhysics/RigidBody.js +45 -39
  687. package/src/x_ite/Components/RigidBodyPhysics/RigidBodyCollection.js +41 -34
  688. package/src/x_ite/Components/RigidBodyPhysics/SingleAxisHingeJoint.js +25 -20
  689. package/src/x_ite/Components/RigidBodyPhysics/SliderJoint.js +8 -10
  690. package/src/x_ite/Components/RigidBodyPhysics/X3DNBodyCollidableNode.js +15 -16
  691. package/src/x_ite/Components/RigidBodyPhysics/X3DNBodyCollisionSpaceNode.js +2 -4
  692. package/src/x_ite/Components/Scripting/Script.js +147 -101
  693. package/src/x_ite/Components/Scripting/X3DScriptNode.js +2 -4
  694. package/src/x_ite/Components/Shaders/ComposedShader.js +17 -19
  695. package/src/x_ite/Components/Shaders/FloatVertexAttribute.js +9 -3
  696. package/src/x_ite/Components/Shaders/Matrix3VertexAttribute.js +10 -3
  697. package/src/x_ite/Components/Shaders/Matrix4VertexAttribute.js +10 -3
  698. package/src/x_ite/Components/Shaders/PackagedShader.js +18 -14
  699. package/src/x_ite/Components/Shaders/ShaderPart.js +30 -18
  700. package/src/x_ite/Components/Shaders/ShaderProgram.js +15 -11
  701. package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +681 -558
  702. package/src/x_ite/Components/Shaders/X3DShaderNode.js +48 -12
  703. package/src/x_ite/Components/Shaders.js +15 -18
  704. package/src/x_ite/Components/Shape/Appearance.js +153 -77
  705. package/src/x_ite/Components/Shape/FillProperties.js +63 -4
  706. package/src/x_ite/Components/Shape/LineProperties.js +27 -5
  707. package/src/x_ite/Components/Shape/Material.js +48 -62
  708. package/src/x_ite/Components/Shape/PointProperties.js +162 -0
  709. package/src/x_ite/Components/Shape/Shape.js +86 -39
  710. package/src/x_ite/Components/Shape/TwoSidedMaterial.js +53 -59
  711. package/src/x_ite/Components/Shape/UnlitMaterial.js +109 -0
  712. package/src/x_ite/Components/Shape/X3DAppearanceNode.js +9 -6
  713. package/src/x_ite/Components/Shape/X3DMaterialNode.js +16 -3
  714. package/src/x_ite/Components/Shape/X3DOneSidedMaterialNode.js +111 -0
  715. package/src/x_ite/Components/Shape/X3DShapeNode.js +41 -17
  716. package/src/x_ite/Components/Shape.js +22 -16
  717. package/src/x_ite/Components/Sound/AudioClip.js +36 -50
  718. package/src/x_ite/Components/Sound/Sound.js +36 -36
  719. package/src/x_ite/Components/Sound/X3DSoundSourceNode.js +18 -6
  720. package/src/x_ite/Components/Sound.js +6 -9
  721. package/src/x_ite/Components/Text/FontStyle.js +10 -12
  722. package/src/x_ite/Components/Text/Text.js +6 -6
  723. package/src/x_ite/Components/Text/X3DFontStyleNode.js +56 -87
  724. package/src/x_ite/Components/Text.js +6 -9
  725. package/src/x_ite/Components/Texturing/ImageTexture.js +48 -63
  726. package/src/x_ite/Components/Texturing/MovieTexture.js +42 -56
  727. package/src/x_ite/Components/Texturing/MultiTexture.js +236 -11
  728. package/src/x_ite/Components/Texturing/MultiTextureCoordinate.js +73 -6
  729. package/src/x_ite/Components/Texturing/MultiTextureTransform.js +45 -4
  730. package/src/x_ite/Components/Texturing/PixelTexture.js +45 -11
  731. package/src/x_ite/Components/Texturing/TextureCoordinate.js +32 -17
  732. package/src/x_ite/Components/Texturing/TextureCoordinateGenerator.js +68 -8
  733. package/src/x_ite/Components/Texturing/TextureProperties.js +96 -65
  734. package/src/x_ite/Components/Texturing/TextureTransform.js +55 -47
  735. package/src/x_ite/Components/Texturing/X3DSingleTextureCoordinateNode.js +91 -0
  736. package/src/x_ite/Components/Texturing/X3DSingleTextureNode.js +183 -0
  737. package/src/x_ite/Components/Texturing/X3DSingleTextureTransformNode.js +77 -0
  738. package/src/x_ite/Components/Texturing/X3DTexture2DNode.js +42 -95
  739. package/src/x_ite/Components/Texturing/X3DTexture2DNode.js.~1~ +209 -0
  740. package/src/x_ite/Components/Texturing/X3DTextureCoordinateNode.js +3 -17
  741. package/src/x_ite/Components/Texturing/X3DTextureNode.js +6 -67
  742. package/src/x_ite/Components/Texturing/X3DTextureTransformNode.js +4 -11
  743. package/src/x_ite/Components/Texturing.js +31 -25
  744. package/src/x_ite/Components/Texturing3D/ComposedTexture3D.js +88 -4
  745. package/src/x_ite/Components/Texturing3D/ImageTexture3D.js +105 -13
  746. package/src/x_ite/Components/Texturing3D/PixelTexture3D.js +124 -4
  747. package/src/x_ite/Components/Texturing3D/TextureCoordinate3D.js +35 -18
  748. package/src/x_ite/Components/Texturing3D/TextureCoordinate4D.js +35 -18
  749. package/src/x_ite/Components/Texturing3D/TextureTransform3D.js +41 -31
  750. package/src/x_ite/Components/Texturing3D/TextureTransformMatrix3D.js +18 -11
  751. package/src/x_ite/Components/Texturing3D/X3DTexture3DNode.js +110 -6
  752. package/src/x_ite/Components/Time/TimeSensor.js +23 -19
  753. package/src/x_ite/Components/Time/X3DTimeDependentNode.js +11 -7
  754. package/src/x_ite/Components/Time.js +6 -9
  755. package/src/x_ite/Components/VolumeRendering/BlendedVolumeStyle.js +309 -8
  756. package/src/x_ite/Components/VolumeRendering/BoundaryEnhancementVolumeStyle.js +58 -4
  757. package/src/x_ite/Components/VolumeRendering/CartoonVolumeStyle.js +217 -6
  758. package/src/x_ite/Components/VolumeRendering/ComposedVolumeStyle.js +132 -3
  759. package/src/x_ite/Components/VolumeRendering/EdgeEnhancementVolumeStyle.js +86 -5
  760. package/src/x_ite/Components/VolumeRendering/IsoSurfaceVolumeData.js +309 -11
  761. package/src/x_ite/Components/VolumeRendering/OpacityMapVolumeStyle.js +85 -3
  762. package/src/x_ite/Components/VolumeRendering/ProjectionVolumeStyle.js +134 -2
  763. package/src/x_ite/Components/VolumeRendering/SegmentedVolumeData.js +222 -9
  764. package/src/x_ite/Components/VolumeRendering/ShadedVolumeStyle.js +191 -8
  765. package/src/x_ite/Components/VolumeRendering/SilhouetteEnhancementVolumeStyle.js +85 -6
  766. package/src/x_ite/Components/VolumeRendering/ToneMappedVolumeStyle.js +95 -5
  767. package/src/x_ite/Components/VolumeRendering/VolumeData.js +153 -8
  768. package/src/x_ite/Components/VolumeRendering/X3DVolumeDataNode.js +155 -3
  769. package/src/x_ite/Components/VolumeRendering/X3DVolumeRenderStyleNode.js +62 -0
  770. package/src/x_ite/Components/X_ITE/BlendMode.js +51 -51
  771. package/src/x_ite/Components.js +11 -16
  772. package/src/x_ite/Configuration/ComponentInfo.js +12 -6
  773. package/src/x_ite/Configuration/ComponentInfoArray.js +4 -7
  774. package/src/x_ite/Configuration/ProfileInfo.js +10 -6
  775. package/src/x_ite/Configuration/SupportedComponents.js +66 -40
  776. package/src/x_ite/Configuration/SupportedNodes.js +22 -6
  777. package/src/x_ite/Configuration/SupportedProfiles.js +91 -89
  778. package/src/x_ite/Configuration/UnitInfo.js +12 -2
  779. package/src/x_ite/Configuration/X3DInfoArray.js +37 -18
  780. package/src/x_ite/Execution/BindableList.js +63 -38
  781. package/src/x_ite/Execution/BindableStack.js +63 -71
  782. package/src/x_ite/Execution/ExportedNode.js +25 -2
  783. package/src/x_ite/Execution/ImportedNode.js +122 -39
  784. package/src/x_ite/Execution/Scene.js +22 -14
  785. package/src/x_ite/Execution/World.js +22 -19
  786. package/src/x_ite/Execution/X3DExecutionContext.js +381 -221
  787. package/src/x_ite/Execution/X3DScene.js +213 -53
  788. package/src/x_ite/{Error.js → Fallback.js} +26 -29
  789. package/src/x_ite/Fields/ArrayFields.js +176 -57
  790. package/src/x_ite/Fields/SFBool.js +6 -5
  791. package/src/x_ite/Fields/SFColor.js +24 -21
  792. package/src/x_ite/Fields/SFColorRGBA.js +23 -23
  793. package/src/x_ite/Fields/SFDouble.js +6 -5
  794. package/src/x_ite/Fields/SFFloat.js +7 -6
  795. package/src/x_ite/Fields/SFImage.js +37 -36
  796. package/src/x_ite/Fields/SFInt32.js +5 -4
  797. package/src/x_ite/Fields/SFMatrix3.js +19 -15
  798. package/src/x_ite/Fields/SFMatrix4.js +19 -15
  799. package/src/x_ite/Fields/SFMatrixPrototypeTemplate.js +10 -2
  800. package/src/x_ite/Fields/SFNode.js +105 -53
  801. package/src/x_ite/Fields/SFNodeCache.js +93 -0
  802. package/src/x_ite/Fields/SFRotation.js +31 -27
  803. package/src/x_ite/Fields/SFString.js +9 -8
  804. package/src/x_ite/Fields/SFTime.js +6 -5
  805. package/src/x_ite/Fields/SFVec2.js +17 -13
  806. package/src/x_ite/Fields/SFVec3.js +21 -17
  807. package/src/x_ite/Fields/SFVec4.js +24 -20
  808. package/src/x_ite/Fields/SFVecPrototypeTemplate.js +8 -4
  809. package/src/x_ite/Fields.js +2 -6
  810. package/src/x_ite/InputOutput/FileLoader.js +174 -190
  811. package/src/x_ite/InputOutput/Generator.js +133 -104
  812. package/src/x_ite/Parser/HTMLSupport.js +3 -596
  813. package/src/x_ite/Parser/JSONParser.js +348 -245
  814. package/src/x_ite/Parser/Parser.js +314 -303
  815. package/src/x_ite/Parser/X3DParser.js +41 -20
  816. package/src/x_ite/Parser/XMLParser.js +178 -60
  817. package/src/x_ite/Prototype/ExternProtoDeclarationArray.js +17 -0
  818. package/src/x_ite/Prototype/ProtoDeclarationArray.js +17 -0
  819. package/src/x_ite/Prototype/X3DExternProtoDeclaration.js +104 -44
  820. package/src/x_ite/Prototype/X3DProtoDeclaration.js +111 -42
  821. package/src/x_ite/Prototype/X3DProtoDeclarationNode.js +16 -14
  822. package/src/x_ite/Rendering/DependentRenderer.js +7 -9
  823. package/src/x_ite/Rendering/TextureBuffer.js +24 -19
  824. package/src/x_ite/Rendering/X3DRenderObject.js +455 -428
  825. package/src/x_ite/Routing/RouteArray.js +34 -11
  826. package/src/x_ite/Routing/X3DRoute.js +60 -60
  827. package/src/x_ite/Routing/X3DRoutingContext.js +6 -6
  828. package/src/x_ite/X3D.js +30 -37
  829. package/src/x_ite.config.js +40 -5
  830. package/src/x_ite.css +165 -45
  831. package/src/x_ite.html +49 -29
  832. package/src/x_ite.js +86 -25
  833. package/x_ite.min.html +49 -22
  834. package/.bzrignore +0 -3
  835. package/AUTHORS.md +0 -6
  836. package/STYLE_GUIDE.md +0 -51
  837. package/X_ITE.sln +0 -54
  838. package/X_ITE.userprefs +0 -14
  839. package/build/build.mdproj +0 -47
  840. package/build/cad-geometry.build.js +0 -15
  841. package/build/geospatial.build.js +0 -15
  842. package/build/h-anim.build.js +0 -15
  843. package/build/nurbs.build.js +0 -15
  844. package/build/particle-systems.build.js +0 -15
  845. package/build/parts/cad-geometry.end.frag +0 -2
  846. package/build/parts/cad-geometry.start.frag +0 -6
  847. package/build/parts/geospatial.end.frag +0 -2
  848. package/build/parts/geospatial.start.frag +0 -6
  849. package/build/parts/h-anim.end.frag +0 -2
  850. package/build/parts/h-anim.start.frag +0 -6
  851. package/build/parts/nurbs.end.frag +0 -2
  852. package/build/parts/nurbs.start.frag +0 -6
  853. package/build/parts/particle-systems.end.frag +0 -2
  854. package/build/parts/particle-systems.start.frag +0 -6
  855. package/build/parts/rigid-body-physics.end.frag +0 -2
  856. package/build/parts/rigid-body-physics.start.frag +0 -6
  857. package/build/parts/texturing-3d.end.frag +0 -2
  858. package/build/parts/texturing-3d.start.frag +0 -6
  859. package/build/parts/x_ite.end.frag +0 -9
  860. package/build/parts/x_ite.start.frag +0 -6
  861. package/build/rigid-body-physics.build.js +0 -15
  862. package/build/texturing-3d.build.js +0 -15
  863. package/dist/components/README +0 -3
  864. package/dist/components/cad-geometry.min.js +0 -1
  865. package/dist/components/geospatial.min.js +0 -2
  866. package/dist/components/h-anim.min.js +0 -1
  867. package/dist/components/nurbs.min.js +0 -2
  868. package/dist/components/particle-systems.min.js +0 -2
  869. package/dist/components/rigid-body-physics.js +0 -3761
  870. package/dist/components/rigid-body-physics.min.js +0 -56
  871. package/dist/components/texturing-3d.min.js +0 -1
  872. package/dist/dist.mdproj +0 -61
  873. package/dist/images/logo.128.png +0 -0
  874. package/fonts/fonts.mdproj +0 -29
  875. package/meta/meta.mdproj +0 -35
  876. package/src/components/cad-geometry.config.js +0 -56
  877. package/src/components/geospatial.config.js +0 -56
  878. package/src/components/h-anim.config.js +0 -56
  879. package/src/components/nurbs.config.js +0 -61
  880. package/src/components/particle-systems.config.js +0 -56
  881. package/src/components/rigid-body-physics.config.js +0 -61
  882. package/src/components/texturing-3d.config.js +0 -56
  883. package/src/images/logo.128.png +0 -0
  884. package/src/locale/de.mo +0 -0
  885. package/src/locale/fr.mo +0 -0
  886. package/src/src.mdproj +0 -698
  887. package/src/standard/Networking/URI.js +0 -785
  888. package/src/test.x3d +0 -225
  889. package/src/x_ite/Browser/Shaders/Background.fs +0 -31
  890. package/src/x_ite/Browser/Shaders/Background.vs +0 -23
  891. package/src/x_ite/Browser/Shaders/Depth.fs +0 -32
  892. package/src/x_ite/Browser/Shaders/Depth.vs +0 -21
  893. package/src/x_ite/Browser/Shaders/Gouraud.fs +0 -135
  894. package/src/x_ite/Browser/Shaders/Gouraud.vs +0 -145
  895. package/src/x_ite/Browser/Shaders/Phong.fs +0 -269
  896. package/src/x_ite/Browser/Shaders/Phong.vs +0 -47
  897. package/src/x_ite/Browser/Shaders/PointSet.fs +0 -86
  898. package/src/x_ite/Browser/Shaders/Types.h +0 -55
  899. package/src/x_ite/Browser/Shaders/Wireframe.fs +0 -82
  900. package/src/x_ite/Browser/Shaders/Wireframe.vs +0 -61
  901. package/src/x_ite/Components/DIS.js +0 -91
  902. package/src/x_ite/Components/Picking.js +0 -94
  903. package/src/x_ite/Components/VolumeRendering.js +0 -121
@@ -1,9 +1,18 @@
1
- (function () {
1
+ (function (globalModule, globalRequire)
2
+ {
3
+
4
+ if (typeof __filename === "undefined")
5
+ {
6
+ globalModule = undefined;
7
+ globalRequire = undefined;
8
+ }
2
9
 
3
- var
4
- define = X3D .define,
5
- require = X3D .require;
10
+ // Undefine global variables.
11
+ var module = { }, exports, process;
6
12
 
13
+ const
14
+ define = X3D .define,
15
+ require = X3D .require;
7
16
  /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
8
17
  *******************************************************************************
9
18
  *
@@ -59,12 +68,14 @@ define ('x_ite/Components/NURBS/Contour2D',[
59
68
  "x_ite/Basic/FieldDefinitionArray",
60
69
  "x_ite/Components/Core/X3DNode",
61
70
  "x_ite/Bits/X3DConstants",
71
+ "x_ite/Bits/X3DCast",
62
72
  ],
63
73
  function (Fields,
64
74
  X3DFieldDefinition,
65
75
  FieldDefinitionArray,
66
76
  X3DNode,
67
- X3DConstants)
77
+ X3DConstants,
78
+ X3DCast)
68
79
  {
69
80
  "use strict";
70
81
 
@@ -73,6 +84,8 @@ function (Fields,
73
84
  X3DNode .call (this, executionContext);
74
85
 
75
86
  this .addType (X3DConstants .Contour2D);
87
+
88
+ this .childNodes = [ ];
76
89
  }
77
90
 
78
91
  Contour2D .prototype = Object .assign (Object .create (X3DNode .prototype),
@@ -96,6 +109,46 @@ function (Fields,
96
109
  {
97
110
  return "trimmingContour";
98
111
  },
112
+ initialize: function ()
113
+ {
114
+ X3DNode .prototype .initialize .call (this);
115
+
116
+ this .children_ .addInterest ("set_children__", this);
117
+
118
+ this .set_children__ ();
119
+ },
120
+ set_children__: function ()
121
+ {
122
+ var childNodes = this .childNodes;
123
+
124
+ childNodes .length = 0;
125
+
126
+ for (var i = 0, length = this .children_ .length; i < length; ++ i)
127
+ {
128
+ var childNode = X3DCast (X3DConstants .NurbsCurve2D, this .children_ [i]);
129
+
130
+ if (childNode)
131
+ {
132
+ childNodes .push (childNode);
133
+ continue;
134
+ }
135
+
136
+ var childNode = X3DCast (X3DConstants .ContourPolyline2D, this .children_ [i]);
137
+
138
+ if (childNode)
139
+ {
140
+ childNodes .push (childNode);
141
+ continue;
142
+ }
143
+ }
144
+ },
145
+ addTrimmingContour: function (trimmingContours)
146
+ {
147
+ var childNodes = this .childNodes;
148
+
149
+ for (var i = 0, length = childNodes .length; i < length; ++ i)
150
+ trimmingContours .push (childNodes [i] .tessellate (2));
151
+ }
99
152
  });
100
153
 
101
154
  return Contour2D;
@@ -233,12 +286,14 @@ define ('x_ite/Components/NURBS/ContourPolyline2D',[
233
286
  "x_ite/Basic/FieldDefinitionArray",
234
287
  "x_ite/Components/NURBS/X3DNurbsControlCurveNode",
235
288
  "x_ite/Bits/X3DConstants",
289
+ "standard/Math/Numbers/Vector3",
236
290
  ],
237
291
  function (Fields,
238
292
  X3DFieldDefinition,
239
293
  FieldDefinitionArray,
240
294
  X3DNurbsControlCurveNode,
241
- X3DConstants)
295
+ X3DConstants,
296
+ Vector3)
242
297
  {
243
298
  "use strict";
244
299
 
@@ -270,41 +325,67 @@ function (Fields,
270
325
  {
271
326
  return "children";
272
327
  },
273
- tessellate: function (spine)
328
+ tessellate: function (type)
274
329
  {
275
- var
276
- controlPointArray = this .controlPoint_ .getValue (),
277
- controlPoints = this .controlPoints;
278
-
279
- if (spine)
330
+ switch (type)
280
331
  {
281
- for (var i = 0, length = this .controlPoint_ .length; i < length; ++ i)
332
+ case 0:
282
333
  {
283
334
  var
284
- i2 = i * 2,
285
- i3 = i * 3;
335
+ controlPointArray = this .controlPoint_ .getValue (),
336
+ controlPoints = this .controlPoints;
286
337
 
287
- controlPoints [i3 + 0] = controlPointArray [i2 + 0];
288
- controlPoints [i3 + 1] = 0;
289
- controlPoints [i3 + 2] = controlPointArray [i2 + 1];
290
- }
338
+ for (var i = 0, length = this .controlPoint_ .length; i < length; ++ i)
339
+ {
340
+ var i2 = i * 2;
341
+
342
+ controlPoints [i2 + 0] = controlPointArray [i2 + 0];
343
+ controlPoints [i2 + 1] = controlPointArray [i2 + 1];
344
+ }
345
+
346
+ controlPoints .length = length * 2;
291
347
 
292
- controlPoints .length = length * 3;
293
- }
294
- else
295
- {
296
- for (var i = 0, length = this .controlPoint_ .length; i < length; ++ i)
348
+ return controlPoints;
349
+ }
350
+ case 1:
297
351
  {
298
- var i2 = i * 2;
352
+ var
353
+ controlPointArray = this .controlPoint_ .getValue (),
354
+ controlPoints = this .controlPoints;
355
+
356
+ for (var i = 0, length = this .controlPoint_ .length; i < length; ++ i)
357
+ {
358
+ var
359
+ i2 = i * 2,
360
+ i3 = i * 3;
361
+
362
+ controlPoints [i3 + 0] = controlPointArray [i2 + 0];
363
+ controlPoints [i3 + 1] = 0;
364
+ controlPoints [i3 + 2] = controlPointArray [i2 + 1];
365
+ }
366
+
367
+ controlPoints .length = length * 3;
299
368
 
300
- controlPoints [i2 + 0] = controlPointArray [i2 + 0];
301
- controlPoints [i2 + 1] = controlPointArray [i2 + 1];
369
+ return controlPoints;
302
370
  }
371
+ case 3:
372
+ {
373
+ var
374
+ controlPointArray = this .controlPoint_ .getValue (),
375
+ controlPoints = this .controlPoints;
303
376
 
304
- controlPoints .length = length * 2;
305
- }
377
+ for (var i = 0, length = this .controlPoint_ .length; i < length; ++ i)
378
+ {
379
+ var i2 = i * 2;
306
380
 
307
- return controlPoints;
381
+ controlPoints [i] = new Vector3 (controlPointArray [i2 + 0], controlPointArray [i2 + 1], 0);
382
+ }
383
+
384
+ controlPoints .length = length;
385
+
386
+ return controlPoints;
387
+ }
388
+ }
308
389
  },
309
390
  });
310
391
 
@@ -549,23 +630,23 @@ function (Vector2,
549
630
  return function (uOrder, uDimension, vDimension, uKnot, weight, controlPointNode)
550
631
  {
551
632
  var haveWeights = weight .length === controlPointNode .getSize ();
552
-
633
+
553
634
  for (var v = 0, length = vDimension; v < length; ++ v)
554
635
  {
555
636
  var
556
637
  first = v * uDimension,
557
638
  last = v * uDimension + uDimension - 1;
558
-
639
+
559
640
  // Check if first and last weights are unitary.
560
-
641
+
561
642
  if (haveWeights)
562
643
  {
563
644
  if (weight [first] !== weight [last])
564
645
  return false;
565
646
  }
566
-
647
+
567
648
  // Check if first and last point are coincident.
568
-
649
+
569
650
  if (! controlPointNode .get1Point (first, firstPoint) .equals (controlPointNode .get1Point (last, lastPoint)))
570
651
  return false;
571
652
  }
@@ -574,7 +655,7 @@ function (Vector2,
574
655
 
575
656
  if (! this .isPeriodic (uOrder, uDimension, uKnot))
576
657
  return false;
577
-
658
+
578
659
  return true;
579
660
  };
580
661
  })(),
@@ -587,32 +668,32 @@ function (Vector2,
587
668
  return function (vOrder, uDimension, vDimension, vKnot, weight, controlPointNode)
588
669
  {
589
670
  var haveWeights = weight .length === controlPointNode .getSize ();
590
-
671
+
591
672
  for (var u = 0, size = uDimension; u < size; ++ u)
592
673
  {
593
674
  var
594
675
  first = u,
595
676
  last = (vDimension - 1) * uDimension + u;
596
-
677
+
597
678
  // Check if first and last weights are unitary.
598
-
679
+
599
680
  if (haveWeights)
600
681
  {
601
682
  if (weight [first] !== weight [last])
602
683
  return false;
603
684
  }
604
-
685
+
605
686
  // Check if first and last point are coincident.
606
-
687
+
607
688
  if (! controlPointNode .get1Point (first, firstPoint) .equals (controlPointNode .get1Point (last, lastPoint)))
608
689
  return false;
609
690
  }
610
-
691
+
611
692
  // Check if knots are periodic.
612
-
693
+
613
694
  if (! this .isPeriodic (vOrder, vDimension, vKnot))
614
695
  return false;
615
-
696
+
616
697
  return true;
617
698
  };
618
699
  })(),
@@ -660,118 +741,103 @@ function (Vector2,
660
741
 
661
742
  // check the knot-vectors. If they are not according to standard
662
743
  // default uniform knot vectors will be generated.
663
-
744
+
664
745
  var generateUniform = true;
665
-
746
+
666
747
  if (knots .length === dimension + order)
667
748
  {
668
749
  generateUniform = false;
669
-
750
+
670
751
  var consecutiveKnots = 0;
671
-
752
+
672
753
  for (var i = 1, length = knots .length; i < length; ++ i)
673
754
  {
674
755
  if (knots [i] == knots [i - 1])
675
756
  ++ consecutiveKnots;
676
757
  else
677
758
  consecutiveKnots = 0;
678
-
759
+
679
760
  if (consecutiveKnots > order - 1)
680
761
  generateUniform = true;
681
-
762
+
682
763
  if (knots [i - 1] > knots [i])
683
764
  generateUniform = true;
684
765
  }
685
766
  }
686
-
767
+
687
768
  if (generateUniform)
688
769
  {
689
770
  for (var i = 0, length = dimension + order; i < length; ++ i)
690
771
  knots [i] = i / (length - 1);
691
772
  }
692
-
773
+
693
774
  if (closed)
694
775
  {
695
776
  for (var i = 1, length = order - 1; i < length; ++ i)
696
- knots .push (knots [knots .length - 1] + (knots [i] - knots [i - 1]));
777
+ knots .push (knots .at (-1) + (knots [i] - knots [i - 1]));
697
778
  }
698
779
 
699
780
  return knots;
700
781
  },
701
- getWeights: function (result, closed, order, dimension, weight)
782
+ getWeights: function (result, dimension, weight)
702
783
  {
703
784
  if (weight .length !== dimension)
704
785
  return undefined;
705
786
 
706
787
  var weights = result || [ ];
707
-
788
+
708
789
  for (var i = 0; i < dimension; ++ i)
709
790
  {
710
791
  weights [i] = weight [i];
711
792
  }
712
-
713
- weights .length = dimension;
714
793
 
715
- if (closed)
716
- {
717
- for (var i = 1, size = order - 1; i < size; ++ i)
718
- weights .push (weights [i]);
719
- }
794
+ weights .length = dimension;
720
795
 
721
796
  return weights;
722
797
  },
723
- getUVWeights: function (result, uClosed, vClosed, uOrder, vOrder, uDimension, vDimension, weight)
798
+ getUVWeights: function (result, uDimension, vDimension, weight)
724
799
  {
725
- if (weight .length !== uDimension * vDimension)
800
+ var dimension = uDimension * vDimension;
801
+
802
+ if (weight .length !== dimension)
726
803
  return undefined;
727
804
 
728
805
  var weights = result || [ ];
729
806
 
730
- for (var u = 0; u < uDimension; ++ u)
807
+ for (var u = 0, i = 0; u < uDimension; ++ u)
731
808
  {
732
- var w = weights [u];
733
-
734
- if (! w)
735
- w = weights [u] = [ ];
736
-
737
- for (var v = 0; v < vDimension; ++ v)
809
+ for (var v = 0; v < vDimension; ++ v, ++ i)
738
810
  {
739
- w [v] = weight [v * uDimension + u];
740
- }
741
-
742
- w .length = vDimension;
743
-
744
- if (vClosed)
745
- {
746
- for (var i = 1, length = vOrder - 1; i < length; ++ i)
747
- w .push (w [i]);
811
+ weights [i] = weight [i];
748
812
  }
749
813
  }
750
-
751
- weights .length = uDimension;
752
814
 
753
- if (uClosed)
754
- {
755
- for (var i = 1, length = uOrder - 1; i < length; ++ i)
756
- weights .push (weights [i]);
757
- }
758
-
815
+ weights .length = dimension;
816
+
759
817
  return weights;
760
818
  },
761
- getControlPoints2D: function (result, closed, order, controlPoint)
819
+ getControlPoints2D: function (result, closed, order, weights, controlPoint)
762
820
  {
763
821
  var
764
822
  controlPoints = result || [ ],
765
823
  controlPointArray = controlPoint .getValue (),
766
- dimension = controlPoint .length;
767
-
824
+ dimension = controlPoint .length,
825
+ haveWeights = Boolean (weights),
826
+ Vector = haveWeights ? Vector3 : Vector2;
827
+
828
+ if (controlPoints .haveWeights !== haveWeights)
829
+ {
830
+ controlPoints .haveWeights = haveWeights;
831
+ controlPoints .length = 0;
832
+ }
833
+
768
834
  for (var i = 0; i < dimension; ++ i)
769
835
  {
770
836
  var
771
837
  i2 = i * 2,
772
- p = controlPoints [i] || new Vector2 (0, 0);
838
+ p = controlPoints [i] || new Vector (0, 0, 0);
773
839
 
774
- controlPoints [i] = p .set (controlPointArray [i2 + 0], controlPointArray [i2 + 1])
840
+ controlPoints [i] = p .set (controlPointArray [i2 + 0], controlPointArray [i2 + 1], haveWeights ? weights [i] : 0);
775
841
  }
776
842
 
777
843
  controlPoints .length = dimension;
@@ -784,17 +850,28 @@ function (Vector2,
784
850
 
785
851
  return controlPoints;
786
852
  },
787
- getControlPoints: function (result, closed, order, controlPointNode)
853
+ getControlPoints: function (result, closed, order, weights, controlPointNode)
788
854
  {
789
855
  var
790
856
  controlPoints = result || [ ],
791
- dimension = controlPointNode .getSize ();
792
-
857
+ dimension = controlPointNode .getSize (),
858
+ haveWeights = Boolean (weights),
859
+ Vector = haveWeights ? Vector4 : Vector3;
860
+
861
+ if (controlPoints .haveWeights !== haveWeights)
862
+ {
863
+ controlPoints .haveWeights = haveWeights;
864
+ controlPoints .length = 0;
865
+ }
866
+
793
867
  for (var i = 0; i < dimension; ++ i)
794
868
  {
795
- controlPoints [i] = controlPointNode .get1Point (i, controlPoints [i] || new Vector3 (0, 0, 0));
869
+ var cp = controlPoints [i] = controlPointNode .get1Point (i, controlPoints [i] || new Vector (0, 0, 0, 0));
870
+
871
+ if (haveWeights)
872
+ cp .w = weights [i];
796
873
  }
797
-
874
+
798
875
  controlPoints .length = dimension;
799
876
 
800
877
  if (closed)
@@ -805,9 +882,18 @@ function (Vector2,
805
882
 
806
883
  return controlPoints;
807
884
  },
808
- getUVControlPoints: function (result, uClosed, vClosed, uOrder, vOrder, uDimension, vDimension, controlPointNode)
885
+ getUVControlPoints: function (result, uClosed, vClosed, uOrder, vOrder, uDimension, vDimension, weights, controlPointNode)
809
886
  {
810
- var controlPoints = result || [ ];
887
+ var
888
+ controlPoints = result || [ ],
889
+ haveWeights = Boolean (weights),
890
+ Vector = haveWeights ? Vector4 : Vector3;
891
+
892
+ if (controlPoints .haveWeights !== haveWeights)
893
+ {
894
+ controlPoints .haveWeights = haveWeights;
895
+ controlPoints .length = 0;
896
+ }
811
897
 
812
898
  for (var u = 0; u < uDimension; ++ u)
813
899
  {
@@ -818,7 +904,12 @@ function (Vector2,
818
904
 
819
905
  for (var v = 0; v < vDimension; ++ v)
820
906
  {
821
- cp [v] = controlPointNode .get1Point (v * uDimension + u, cp [v] || new Vector3 (0, 0, 0));
907
+ var index = v * uDimension + u;
908
+
909
+ cp [v] = controlPointNode .get1Point (index, cp [v] || new Vector (0, 0, 0, 0));
910
+
911
+ if (haveWeights)
912
+ cp [v] .w = weights [index];
822
913
  }
823
914
 
824
915
  cp .length = vDimension;
@@ -853,7 +944,9 @@ function (Vector2,
853
944
 
854
945
  for (var v = 0; v < vDimension; ++ v)
855
946
  {
856
- cp [v] = controlPointNode .get1Point (v * uDimension + u, cp [v] || new Vector4 (0, 0, 0, 0));
947
+ var index = v * uDimension + u;
948
+
949
+ cp [v] = controlPointNode .get1Point (index, cp [v] || new Vector4 (0, 0, 0, 0));
857
950
  }
858
951
 
859
952
  cp .length = vDimension;
@@ -2048,45 +2141,16 @@ function (ndloop,
2048
2141
  });
2049
2142
 
2050
2143
 
2051
- define ('nurbs/extras/sample',[],function ()
2144
+ define ('nurbs/extras/sample',[
2145
+ "standard/Math/Numbers/Vector3",
2146
+ "standard/Math/Geometry/Triangle3",
2147
+ ],
2148
+ function (Vector3,
2149
+ Triangle3)
2052
2150
  {
2053
2151
  'use strict';
2054
2152
 
2055
- function normalize (out, a)
2056
- {
2057
- var
2058
- x = a [0],
2059
- y = a [1],
2060
- z = a [2];
2061
-
2062
- var l = Math .sqrt (x * x + y * y + z * z);
2063
-
2064
- if (l > 0)
2065
- {
2066
- out [0] = a [0] / l;
2067
- out [1] = a [1] / l;
2068
- out [2] = a [2] / l;
2069
- }
2070
-
2071
- return out
2072
- }
2073
-
2074
- function cross (out, a, b)
2075
- {
2076
- var
2077
- ax = a [0], ay = a [1], az = a [2],
2078
- bx = b [0], by = b [1], bz = b [2];
2079
-
2080
- out [0] = ay * bz - az * by
2081
- out [1] = az * bx - ax * bz
2082
- out [2] = ax * by - ay * bx
2083
-
2084
- return out
2085
- }
2086
-
2087
- var
2088
- tmp1 = [ ],
2089
- tmp2 = [ ];
2153
+ var tmp1 = [ ];
2090
2154
 
2091
2155
  return function (mesh, surface, opts)
2092
2156
  {
@@ -2094,11 +2158,11 @@ define ('nurbs/extras/sample',[],function ()
2094
2158
  opts = opts || { };
2095
2159
 
2096
2160
  var
2097
- points = mesh .points = mesh .points || [ ],
2098
- normals = mesh .normals = mesh .normals || [ ],
2099
- faces = mesh .faces = mesh .faces || [ ];
2161
+ points = mesh .points = mesh .points || [ ],
2162
+ faces = mesh .faces = mesh .faces || [ ],
2163
+ haveWeights = opts .haveWeights;
2100
2164
 
2101
- var dimension = surface .dimension;
2165
+ var dimension = surface .dimension - haveWeights;
2102
2166
 
2103
2167
  if (Array .isArray (opts .resolution))
2104
2168
  {
@@ -2111,8 +2175,6 @@ define ('nurbs/extras/sample',[],function ()
2111
2175
  resolution = new Array (surface .splineDimension) .fill (res);
2112
2176
  }
2113
2177
 
2114
- var generateNormals = dimension === 3 && (opts .generateNormals !== undefined ? opts .generateNormals : true);
2115
-
2116
2178
  switch (surface .splineDimension)
2117
2179
  {
2118
2180
  case 1:
@@ -2122,7 +2184,6 @@ define ('nurbs/extras/sample',[],function ()
2122
2184
  uClosed = surface .boundary [0] === 'closed',
2123
2185
  nuBound = nu + ! uClosed,
2124
2186
  nbVertices = nuBound * dimension,
2125
- uDer = surface .evaluator ([1, 0]),
2126
2187
  domain = opts .domain || surface .domain,
2127
2188
  uDomain = domain [0],
2128
2189
  uDistance = uDomain [1] - uDomain [0];
@@ -2135,10 +2196,20 @@ define ('nurbs/extras/sample',[],function ()
2135
2196
 
2136
2197
  surface .evaluate (tmp1, u);
2137
2198
 
2138
- for (var d = 0; d < dimension; ++ d)
2139
- points [ptr + d] = tmp1 [d];
2199
+ if (haveWeights)
2200
+ {
2201
+ var w = tmp1 [dimension];
2202
+
2203
+ for (var d = 0; d < dimension; ++ d)
2204
+ points [ptr + d] = tmp1 [d] / w;
2205
+ }
2206
+ else
2207
+ {
2208
+ for (var d = 0; d < dimension; ++ d)
2209
+ points [ptr + d] = tmp1 [d];
2210
+ }
2140
2211
  }
2141
-
2212
+
2142
2213
  points .length = nbVertices;
2143
2214
  break;
2144
2215
  }
@@ -2151,20 +2222,19 @@ define ('nurbs/extras/sample',[],function ()
2151
2222
  vClosed = surface .boundary [1] === 'closed',
2152
2223
  nuBound = nu + ! uClosed,
2153
2224
  nvBound = nv + ! vClosed,
2154
- nbNormals = nuBound * nvBound * 3,
2155
2225
  nbVertices = nuBound * nvBound * dimension,
2156
- uDer = surface .evaluator ([1, 0]),
2157
- vDer = surface .evaluator ([0, 1]),
2158
2226
  domain = opts .domain || surface .domain,
2159
2227
  uDomain = domain [0],
2160
2228
  vDomain = domain [1],
2161
2229
  uDistance = uDomain [1] - uDomain [0],
2162
2230
  vDistance = vDomain [1] - vDomain [0];
2163
2231
 
2232
+ // Generate points.
2233
+
2164
2234
  for (var i = 0; i < nuBound; ++ i)
2165
2235
  {
2166
2236
  var u = uDomain [0] + uDistance * i / nu;
2167
-
2237
+
2168
2238
  for (var j = 0; j < nvBound; ++ j)
2169
2239
  {
2170
2240
  var
@@ -2172,57 +2242,137 @@ define ('nurbs/extras/sample',[],function ()
2172
2242
  ptr = (i + nuBound * j) * dimension;
2173
2243
 
2174
2244
  surface .evaluate (tmp1, u, v);
2175
-
2176
- for (var d = 0; d < dimension; ++ d)
2177
- points [ptr + d] = tmp1 [d];
2178
2245
 
2179
- if (generateNormals)
2246
+ if (haveWeights)
2180
2247
  {
2181
- normalize (tmp1, cross (tmp1,
2182
- uDer (tmp1, u, v),
2183
- vDer (tmp2, u, v)
2184
- ));
2185
-
2186
- normals [ptr] = tmp1 [0];
2187
- normals [ptr + 1] = tmp1 [1];
2188
- normals [ptr + 2] = tmp1 [2];
2248
+ var w = tmp1 [dimension];
2249
+
2250
+ for (var d = 0; d < dimension; ++ d)
2251
+ points [ptr + d] = tmp1 [d] / w;
2252
+ }
2253
+ else
2254
+ {
2255
+ for (var d = 0; d < dimension; ++ d)
2256
+ points [ptr + d] = tmp1 [d];
2189
2257
  }
2190
2258
  }
2191
2259
  }
2192
-
2193
- normals .length = nbNormals;
2194
- points .length = nbVertices;
2195
-
2260
+
2261
+ points .length = nbVertices;
2262
+
2263
+ // Generate faces.
2264
+
2265
+ var
2266
+ uClosed = opts .closed [0],
2267
+ vClosed = opts .closed [1];
2268
+
2196
2269
  var c = 0;
2197
-
2270
+
2198
2271
  for (var i = 0; i < nu; ++ i)
2199
2272
  {
2200
2273
  var
2201
2274
  i0 = i,
2202
2275
  i1 = i + 1;
2203
-
2276
+
2204
2277
  if (uClosed)
2205
2278
  i1 = i1 % nu;
2206
-
2279
+
2207
2280
  for (var j = 0; j < nv; ++ j)
2208
2281
  {
2209
2282
  var j0 = j;
2210
2283
  var j1 = j + 1;
2211
-
2284
+
2212
2285
  if (vClosed)
2213
2286
  j1 = j1 % nv;
2214
-
2215
- faces [c ++] = i0 + nuBound * j0;
2216
- faces [c ++] = i1 + nuBound * j0;
2217
- faces [c ++] = i1 + nuBound * j1;
2218
-
2219
- faces [c ++] = i0 + nuBound * j0;
2220
- faces [c ++] = i1 + nuBound * j1;
2221
- faces [c ++] = i0 + nuBound * j1;
2287
+
2288
+ // Triangle 1
2289
+
2290
+ faces [c ++] = i0 + nuBound * j0; // 1
2291
+ faces [c ++] = i1 + nuBound * j0; // 2
2292
+ faces [c ++] = i1 + nuBound * j1; // 3
2293
+
2294
+ // Triangle 2
2295
+
2296
+ faces [c ++] = i0 + nuBound * j0; // 1
2297
+ faces [c ++] = i1 + nuBound * j1; // 3
2298
+ faces [c ++] = i0 + nuBound * j1; // 4
2222
2299
  }
2223
2300
  }
2224
-
2301
+
2225
2302
  faces .length = c;
2303
+
2304
+ /*
2305
+ // Trimming Contours
2306
+
2307
+ if (opts .trimmingContours)
2308
+ {
2309
+ var holes = [ ];
2310
+
2311
+ var trimmingContours = opts .trimmingContours;
2312
+
2313
+ for (var t = 0, iLength = trimmingContours .length; t < iLength; ++ t)
2314
+ {
2315
+ var
2316
+ trimmingContour = trimmingContours [t],
2317
+ hole = [ ];
2318
+
2319
+ for (var p = 0, pLength = trimmingContour .length; p < pLength; ++ p)
2320
+ {
2321
+ var point = trimmingContour [p];
2322
+
2323
+ surface .evaluate (tmp1, point .x, point .y);
2324
+
2325
+ for (var d = 0; d < dimension; ++ d)
2326
+ points .push (tmp1 [d]);
2327
+
2328
+ var vertex = new Vector3 (tmp1 [0], tmp1 [1], tmp1 [2]);
2329
+
2330
+ vertex .index = c ++;
2331
+
2332
+ hole .push (vertex);
2333
+ }
2334
+
2335
+ holes .push (hole);
2336
+ }
2337
+
2338
+ var
2339
+ curves = [ ],
2340
+ triangles = [ ],
2341
+ trimmed = [ ];
2342
+
2343
+ for (var v = 0, fLength = faces .length; v < fLength; v += 3)
2344
+ {
2345
+ curves .length = 0;
2346
+ triangles .length = 0;
2347
+
2348
+ var
2349
+ index1 = faces [v] * 3,
2350
+ index2 = faces [v + 1] * 3,
2351
+ index3 = faces [v + 2] * 3;
2352
+
2353
+ var
2354
+ vertex1 = new Vector3 (points [index1], points [index1 + 1], points [index1 + 2]),
2355
+ vertex2 = new Vector3 (points [index2], points [index2 + 1], points [index2 + 2]),
2356
+ vertex3 = new Vector3 (points [index3], points [index3 + 1], points [index3 + 2]);
2357
+
2358
+ vertex1 .index = v;
2359
+ vertex2 .index = v + 1;
2360
+ vertex3 .index = v + 2;
2361
+
2362
+ curves .push ([ vertex1, vertex2, vertex3 ]);
2363
+ curves .push .apply (curves, holes);
2364
+ curves .push (triangles);
2365
+
2366
+ Triangle3 .triangulatePolygon .apply (Triangle3, curves);
2367
+
2368
+ for (var t = 0, tLength = triangles .length; t < tLength; ++ t)
2369
+ trimmed .push (triangles [t] .index);
2370
+ }
2371
+
2372
+ mesh .faces = trimmed;
2373
+ }
2374
+ */
2375
+
2226
2376
  break;
2227
2377
  }
2228
2378
  default:
@@ -2233,6 +2383,7 @@ define ('nurbs/extras/sample',[],function ()
2233
2383
  };
2234
2384
  });
2235
2385
 
2386
+
2236
2387
  define ('nurbs/nurbs',[
2237
2388
  'nurbs/src/utils/infer-type',
2238
2389
  'nurbs/src/utils/cache-key',
@@ -2640,8 +2791,8 @@ function (X3DCast,
2640
2791
  Fields,
2641
2792
  X3DFieldDefinition,
2642
2793
  FieldDefinitionArray,
2643
- X3DParametricGeometryNode,
2644
- X3DLineGeometryNode,
2794
+ X3DParametricGeometryNode,
2795
+ X3DLineGeometryNode,
2645
2796
  X3DConstants,
2646
2797
  NURBS,
2647
2798
  nurbs)
@@ -2720,47 +2871,47 @@ function (X3DCast,
2720
2871
 
2721
2872
  return NURBS .getClosed (order, knot, weight, controlPointNode);
2722
2873
  },
2723
- getWeights: function (result, closed, order, dimension, weight)
2874
+ getWeights: function (result, dimension, weight)
2724
2875
  {
2725
- return NURBS .getWeights (result, closed, order, dimension, weight);
2876
+ return NURBS .getWeights (result, dimension, weight);
2726
2877
  },
2727
- getControlPoints: function (result, closed, order, controlPointNode)
2878
+ getControlPoints: function (result, closed, order, weights, controlPointNode)
2728
2879
  {
2729
- return NURBS .getControlPoints (result, closed, order, controlPointNode);
2880
+ return NURBS .getControlPoints (result, closed, order, weights, controlPointNode);
2730
2881
  },
2731
2882
  tessellate: function ()
2732
2883
  {
2733
2884
  if (this .order_ .getValue () < 2)
2734
2885
  return [ ];
2735
-
2886
+
2736
2887
  if (! this .controlPointNode)
2737
2888
  return [ ];
2738
-
2889
+
2739
2890
  if (this .controlPointNode .getSize () < this .order_ .getValue ())
2740
2891
  return [ ];
2741
2892
 
2742
2893
  var
2743
2894
  vertexArray = this .getVertices (),
2744
2895
  array = [ ];
2745
-
2896
+
2746
2897
  if (vertexArray .length)
2747
2898
  {
2748
2899
  for (var i = 0, length = vertexArray .length; i < length; i += 8)
2749
2900
  array .push (vertexArray [i], vertexArray [i + 1], vertexArray [i + 2]);
2750
-
2901
+
2751
2902
  array .push (vertexArray [length - 4], vertexArray [length - 3], vertexArray [length - 2]);
2752
2903
  }
2753
-
2904
+
2754
2905
  return array;
2755
2906
  },
2756
2907
  build: function ()
2757
2908
  {
2758
2909
  if (this .order_ .getValue () < 2)
2759
2910
  return;
2760
-
2911
+
2761
2912
  if (! this .controlPointNode)
2762
2913
  return;
2763
-
2914
+
2764
2915
  if (this .controlPointNode .getSize () < this .order_ .getValue ())
2765
2916
  return;
2766
2917
 
@@ -2768,17 +2919,16 @@ function (X3DCast,
2768
2919
 
2769
2920
  var
2770
2921
  closed = this .getClosed (this .order_ .getValue (), this .knot_, this .weight_, this .controlPointNode),
2771
- controlPoints = this .getControlPoints (this .controlPoints, closed, this .order_ .getValue (), this .controlPointNode);
2772
-
2922
+ weights = this .getWeights (this .weights, this .controlPointNode .getSize (), this .weight_),
2923
+ controlPoints = this .getControlPoints (this .controlPoints, closed, this .order_ .getValue (), weights, this .controlPointNode);
2924
+
2773
2925
  // Knots
2774
-
2926
+
2775
2927
  var
2776
2928
  knots = this .getKnots (this .knots, closed, this .order_ .getValue (), this .controlPointNode .getSize (), this .knot_),
2777
- scale = knots [knots .length - 1] - knots [0];
2778
-
2779
- var weights = this .getWeights (this .weights, closed, this .order_ .getValue (), this .controlPointNode .getSize (), this .weight_);
2929
+ scale = knots .at (-1) - knots [0];
2780
2930
 
2781
- // Initialize NURBS tesselllator
2931
+ // Initialize NURBS tessellator
2782
2932
 
2783
2933
  var degree = this .order_ .getValue () - 1;
2784
2934
 
@@ -2786,19 +2936,19 @@ function (X3DCast,
2786
2936
  boundary: ["open"],
2787
2937
  degree: [degree],
2788
2938
  knots: [knots],
2789
- weights: weights,
2790
2939
  points: controlPoints,
2791
2940
  debug: false,
2792
2941
  });
2793
2942
 
2794
2943
  this .sampleOptions .resolution [0] = this .getTessellation (knots .length);
2944
+ this .sampleOptions .haveWeights = Boolean (weights);
2795
2945
 
2796
2946
  var
2797
2947
  mesh = nurbs .sample (this .mesh, surface, this .sampleOptions),
2798
2948
  points = mesh .points,
2799
2949
  vertexArray = this .getVertices ();
2800
2950
 
2801
- for (var i2= 3, length = points .length; i2 < length; i2 += 3)
2951
+ for (var i2 = 3, length = points .length; i2 < length; i2 += 3)
2802
2952
  {
2803
2953
  var i1 = i2 - 3;
2804
2954
 
@@ -2811,8 +2961,6 @@ function (X3DCast,
2811
2961
  return NurbsCurve;
2812
2962
  });
2813
2963
 
2814
-
2815
-
2816
2964
  /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
2817
2965
  *******************************************************************************
2818
2966
  *
@@ -2869,14 +3017,16 @@ define ('x_ite/Components/NURBS/NurbsCurve2D',[
2869
3017
  "x_ite/Components/NURBS/X3DNurbsControlCurveNode",
2870
3018
  "x_ite/Bits/X3DConstants",
2871
3019
  "x_ite/Browser/NURBS/NURBS",
3020
+ "standard/Math/Numbers/Vector3",
2872
3021
  "nurbs",
2873
3022
  ],
2874
3023
  function (Fields,
2875
3024
  X3DFieldDefinition,
2876
3025
  FieldDefinitionArray,
2877
- X3DNurbsControlCurveNode,
3026
+ X3DNurbsControlCurveNode,
2878
3027
  X3DConstants,
2879
3028
  NURBS,
3029
+ Vector3,
2880
3030
  nurbs)
2881
3031
  {
2882
3032
  "use strict";
@@ -2934,15 +3084,15 @@ function (Fields,
2934
3084
  {
2935
3085
  return NURBS .getKnots (result, closed, order, dimension, knot);
2936
3086
  },
2937
- getWeights: function (result, closed, order, dimension, weight)
3087
+ getWeights: function (result, dimension, weight)
2938
3088
  {
2939
- return NURBS .getWeights (result, closed, order, dimension, weight);
3089
+ return NURBS .getWeights (result, dimension, weight);
2940
3090
  },
2941
- getControlPoints: function (result, closed, order, controlPoint)
3091
+ getControlPoints: function (result, closed, order, weights, controlPoint)
2942
3092
  {
2943
- return NURBS .getControlPoints2D (result, closed, order, controlPoint);
3093
+ return NURBS .getControlPoints2D (result, closed, order, weights, controlPoint);
2944
3094
  },
2945
- tessellate: function (spine)
3095
+ tessellate: function (type)
2946
3096
  {
2947
3097
  var array = this .array;
2948
3098
 
@@ -2950,7 +3100,7 @@ function (Fields,
2950
3100
 
2951
3101
  if (this .order_ .getValue () < 2)
2952
3102
  return array;
2953
-
3103
+
2954
3104
  if (this .controlPoint_ .length < this .order_ .getValue ())
2955
3105
  return array;
2956
3106
 
@@ -2958,17 +3108,16 @@ function (Fields,
2958
3108
 
2959
3109
  var
2960
3110
  closed = this .getClosed (this .order_ .getValue (), this .knot_, this .weight_, this .controlPoint_),
2961
- controlPoints = this .getControlPoints (this .controlPoints, closed, this .order_ .getValue (), this .controlPoint_);
2962
-
3111
+ weights = this .getWeights (this .weights, this .controlPoint_ .length, this .weight_),
3112
+ controlPoints = this .getControlPoints (this .controlPoints, closed, this .order_ .getValue (), weights, this .controlPoint_);
3113
+
2963
3114
  // Knots
2964
-
3115
+
2965
3116
  var
2966
3117
  knots = this .getKnots (this .knots, closed, this .order_ .getValue (), this .controlPoint_ .length, this .knot_),
2967
- scale = knots [knots .length - 1] - knots [0];
3118
+ scale = knots .at (-1) - knots [0];
2968
3119
 
2969
- var weights = this .getWeights (this .weights, closed, this .order_ .getValue (), this .controlPoint_ .length, this .weight_);
2970
-
2971
- // Initialize NURBS tesselllator
3120
+ // Initialize NURBS tessellator
2972
3121
 
2973
3122
  var degree = this .order_ .getValue () - 1;
2974
3123
 
@@ -2976,26 +3125,46 @@ function (Fields,
2976
3125
  boundary: ["open"],
2977
3126
  degree: [degree],
2978
3127
  knots: [knots],
2979
- weights: weights,
2980
3128
  points: controlPoints,
2981
3129
  debug: false,
2982
3130
  });
2983
3131
 
2984
3132
  this .sampleOptions .resolution [0] = this .getTessellation (knots .length);
3133
+ this .sampleOptions .haveWeights = Boolean (weights);
2985
3134
 
2986
3135
  var
2987
3136
  mesh = nurbs .sample (this .mesh, surface, this .sampleOptions),
2988
3137
  points = mesh .points;
2989
3138
 
2990
- if (spine)
3139
+ switch (type)
2991
3140
  {
2992
- for (var i = 0, length = points .length; i < length; i += 2)
2993
- array .push (points [i], 0, points [i + 1]);
2994
- }
2995
- else
2996
- {
2997
- for (var i = 0, length = points .length; i < length; i += 2)
2998
- array .push (points [i], points [i + 1]);
3141
+ case 0:
3142
+ {
3143
+ for (var i = 0, length = points .length; i < length; i += 2)
3144
+ {
3145
+ array .push (points [i], points [i + 1]);
3146
+ }
3147
+
3148
+ break;
3149
+ }
3150
+ case 1:
3151
+ {
3152
+ for (var i = 0, length = points .length; i < length; i += 2)
3153
+ {
3154
+ array .push (points [i], 0, points [i + 1]);
3155
+ }
3156
+
3157
+ break;
3158
+ }
3159
+ case 2:
3160
+ {
3161
+ for (var i = 0, length = points .length; i < length; i += 2)
3162
+ {
3163
+ array .push (new Vector3 (points [i], points [i + 1], 0));
3164
+ }
3165
+
3166
+ break;
3167
+ }
2999
3168
  }
3000
3169
 
3001
3170
  return array;
@@ -3005,8 +3174,6 @@ function (Fields,
3005
3174
  return NurbsCurve2D;
3006
3175
  });
3007
3176
 
3008
-
3009
-
3010
3177
  /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
3011
3178
  *******************************************************************************
3012
3179
  *
@@ -3072,8 +3239,8 @@ define ('x_ite/Components/NURBS/NurbsOrientationInterpolator',[
3072
3239
  function (Fields,
3073
3240
  X3DFieldDefinition,
3074
3241
  FieldDefinitionArray,
3075
- X3DChildNode,
3076
- OrientationInterpolator,
3242
+ X3DChildNode,
3243
+ OrientationInterpolator,
3077
3244
  X3DConstants,
3078
3245
  X3DCast,
3079
3246
  NURBS,
@@ -3088,7 +3255,7 @@ function (Fields,
3088
3255
  X3DChildNode .call (this, executionContext);
3089
3256
 
3090
3257
  this .addType (X3DConstants .NurbsOrientationInterpolator);
3091
-
3258
+
3092
3259
  this .addChildObjects ("rebuild", new Fields .SFTime ());
3093
3260
 
3094
3261
  this .interpolator = new OrientationInterpolator (executionContext);
@@ -3133,7 +3300,7 @@ function (Fields,
3133
3300
  this .controlPoint_ .addInterest ("set_controlPoint__", this);
3134
3301
 
3135
3302
  this .rebuild_ .addInterest ("build", this);
3136
-
3303
+
3137
3304
  this .set_fraction_ .addFieldInterest (this .interpolator .set_fraction_);
3138
3305
  this .interpolator .value_changed_ .addFieldInterest (this .value_changed_);
3139
3306
 
@@ -3161,13 +3328,13 @@ function (Fields,
3161
3328
  {
3162
3329
  return NURBS .getKnots (result, closed, order, dimension, knot);
3163
3330
  },
3164
- getWeights: function (result, closed, order, dimension, weight)
3331
+ getWeights: function (result, dimension, weight)
3165
3332
  {
3166
- return NURBS .getWeights (result, closed, order, dimension, weight);
3333
+ return NURBS .getWeights (result, dimension, weight);
3167
3334
  },
3168
- getControlPoints: function (result, closed, order, controlPointNode)
3335
+ getControlPoints: function (result, closed, order, weights, controlPointNode)
3169
3336
  {
3170
- return NURBS .getControlPoints (result, closed, order, controlPointNode);
3337
+ return NURBS .getControlPoints (result, closed, order, weights, controlPointNode);
3171
3338
  },
3172
3339
  requestRebuild: function ()
3173
3340
  {
@@ -3177,10 +3344,10 @@ function (Fields,
3177
3344
  {
3178
3345
  if (this .order_ .getValue () < 2)
3179
3346
  return;
3180
-
3347
+
3181
3348
  if (! this .controlPointNode)
3182
3349
  return;
3183
-
3350
+
3184
3351
  if (this .controlPointNode .getSize () < this .order_ .getValue ())
3185
3352
  return;
3186
3353
 
@@ -3188,17 +3355,16 @@ function (Fields,
3188
3355
 
3189
3356
  var
3190
3357
  closed = this .getClosed (this .order_ .getValue (), this .knot_, this .weight_, this .controlPointNode),
3191
- controlPoints = this .getControlPoints (this .controlPoints, closed, this .order_ .getValue (), this .controlPointNode);
3192
-
3358
+ weights = this .getWeights (this .weights, this .controlPointNode .getSize (), this .weight_),
3359
+ controlPoints = this .getControlPoints (this .controlPoints, closed, this .order_ .getValue (), weights, this .controlPointNode);
3360
+
3193
3361
  // Knots
3194
-
3362
+
3195
3363
  var
3196
3364
  knots = this .getKnots (this .knots, closed, this .order_ .getValue (), this .controlPointNode .getSize (), this .knot_),
3197
- scale = knots [knots .length - 1] - knots [0];
3365
+ scale = knots .at (-1) - knots [0];
3198
3366
 
3199
- var weights = this .getWeights (this .weights, closed, this .order_ .getValue (), this .controlPointNode .getSize (), this .weight_);
3200
-
3201
- // Initialize NURBS tesselllator
3367
+ // Initialize NURBS tessellator
3202
3368
 
3203
3369
  var degree = this .order_ .getValue () - 1;
3204
3370
 
@@ -3206,11 +3372,12 @@ function (Fields,
3206
3372
  boundary: ["open"],
3207
3373
  degree: [degree],
3208
3374
  knots: [knots],
3209
- weights: weights,
3210
3375
  points: controlPoints,
3211
3376
  debug: false,
3212
3377
  });
3213
3378
 
3379
+ this .sampleOptions .haveWeights = Boolean (weights);
3380
+
3214
3381
  var
3215
3382
  mesh = nurbs .sample (this .mesh, surface, this .sampleOptions),
3216
3383
  points = mesh .points,
@@ -3223,7 +3390,7 @@ function (Fields,
3223
3390
  {
3224
3391
  var direction = new Vector3 (points [i + 3] - points [i + 0],
3225
3392
  points [i + 4] - points [i + 1],
3226
- points [i + 5] - points [i + 2])
3393
+ points [i + 5] - points [i + 2]);
3227
3394
 
3228
3395
  interpolator .key_ .push (knots [0] + i / (length - 3 + (3 * closed)) * scale);
3229
3396
  interpolator .keyValue_. push (new Rotation4 (Vector3 .zAxis, direction));
@@ -3240,8 +3407,6 @@ function (Fields,
3240
3407
  return NurbsOrientationInterpolator;
3241
3408
  });
3242
3409
 
3243
-
3244
-
3245
3410
  /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
3246
3411
  *******************************************************************************
3247
3412
  *
@@ -3296,12 +3461,18 @@ define ('x_ite/Components/NURBS/X3DNurbsSurfaceGeometryNode',[
3296
3461
  "x_ite/Bits/X3DConstants",
3297
3462
  "x_ite/Bits/X3DCast",
3298
3463
  "x_ite/Browser/NURBS/NURBS",
3464
+ "standard/Math/Algorithm",
3465
+ "standard/Math/Numbers/Vector3",
3466
+ "standard/Math/Geometry/Triangle3",
3299
3467
  "nurbs",
3300
3468
  ],
3301
- function (X3DParametricGeometryNode,
3469
+ function (X3DParametricGeometryNode,
3302
3470
  X3DConstants,
3303
3471
  X3DCast,
3304
3472
  NURBS,
3473
+ Algorithm,
3474
+ Vector3,
3475
+ Triangle3,
3305
3476
  nurbs)
3306
3477
  {
3307
3478
  "use strict";
@@ -3318,7 +3489,7 @@ function (X3DParametricGeometryNode,
3318
3489
  this .weights = [ ];
3319
3490
  this .controlPoints = [ ];
3320
3491
  this .mesh = { };
3321
- this .sampleOptions = { resolution: [ ] };
3492
+ this .sampleOptions = { resolution: [ ], closed: [ ] };
3322
3493
  this .textUKnots = [ ];
3323
3494
  this .textVKnots = [ ];
3324
3495
  this .textWeights = [ ];
@@ -3394,32 +3565,36 @@ function (X3DParametricGeometryNode,
3394
3565
 
3395
3566
  return false;
3396
3567
  },
3397
- getUVWeights: function (result, uClosed, vClosed, uOrder, vOrder, uDimension, vDimension, weight)
3568
+ getUVWeights: function (result, uDimension, vDimension, weight)
3398
3569
  {
3399
- return NURBS .getUVWeights (result, uClosed, vClosed, uOrder, vOrder, uDimension, vDimension, weight);
3570
+ return NURBS .getUVWeights (result, uDimension, vDimension, weight);
3400
3571
  },
3401
3572
  getTexControlPoints: function (result, uClosed, vClosed, uOrder, vOrder, uDimension, vDimension, texCoordNode)
3402
3573
  {
3403
3574
  return NURBS .getTexControlPoints (result, uClosed, vClosed, uOrder, vOrder, uDimension, vDimension, texCoordNode);
3404
3575
  },
3405
- getUVControlPoints: function (result, uClosed, vClosed, uOrder, vOrder, uDimension, vDimension, controlPointNode)
3576
+ getUVControlPoints: function (result, uClosed, vClosed, uOrder, vOrder, uDimension, vDimension, weights, controlPointNode)
3406
3577
  {
3407
- return NURBS .getUVControlPoints (result, uClosed, vClosed, uOrder, vOrder, uDimension, vDimension, controlPointNode);
3578
+ return NURBS .getUVControlPoints (result, uClosed, vClosed, uOrder, vOrder, uDimension, vDimension, weights, controlPointNode);
3579
+ },
3580
+ getTrimmingContours: function ()
3581
+ {
3582
+ return undefined;
3408
3583
  },
3409
3584
  build: function ()
3410
3585
  {
3411
3586
  if (this .uOrder_ .getValue () < 2)
3412
3587
  return;
3413
-
3588
+
3414
3589
  if (this .vOrder_ .getValue () < 2)
3415
3590
  return;
3416
-
3591
+
3417
3592
  if (this .uDimension_ .getValue () < this .uOrder_ .getValue ())
3418
3593
  return;
3419
-
3594
+
3420
3595
  if (this .vDimension_ .getValue () < this .vOrder_ .getValue ())
3421
3596
  return;
3422
-
3597
+
3423
3598
  if (! this .controlPointNode)
3424
3599
  return;
3425
3600
 
@@ -3433,19 +3608,18 @@ function (X3DParametricGeometryNode,
3433
3608
  var
3434
3609
  uClosed = this .getUClosed (this .uOrder_ .getValue (), this .uDimension_ .getValue (), this .vDimension_ .getValue (), this .uKnot_, this .weight_, this .controlPointNode),
3435
3610
  vClosed = this .getVClosed (this .vOrder_ .getValue (), this .uDimension_ .getValue (), this .vDimension_ .getValue (), this .vKnot_, this .weight_, this .controlPointNode),
3436
- controlPoints = this .getUVControlPoints (this .controlPoints, uClosed, vClosed, this .uOrder_ .getValue (), this .vOrder_ .getValue (), this .uDimension_ .getValue (), this .vDimension_ .getValue (), this .controlPointNode);
3611
+ weights = this .getUVWeights (this .weights, this .uDimension_ .getValue (), this .vDimension_ .getValue (), this .weight_),
3612
+ controlPoints = this .getUVControlPoints (this .controlPoints, uClosed, vClosed, this .uOrder_ .getValue (), this .vOrder_ .getValue (), this .uDimension_ .getValue (), this .vDimension_ .getValue (), weights, this .controlPointNode);
3437
3613
 
3438
3614
  // Knots
3439
-
3615
+
3440
3616
  var
3441
3617
  uKnots = this .getKnots (this .uKnots, uClosed, this .uOrder_ .getValue (), this .uDimension_ .getValue (), this .uKnot_),
3442
3618
  vKnots = this .getKnots (this .vKnots, vClosed, this .vOrder_ .getValue (), this .vDimension_ .getValue (), this .vKnot_),
3443
- uScale = uKnots [uKnots .length - 1] - uKnots [0],
3444
- vScale = vKnots [vKnots .length - 1] - vKnots [0];
3445
-
3446
- var weights = this .getUVWeights (this .weights, uClosed, vClosed, this .uOrder_ .getValue (), this .vOrder_ .getValue (), this .uDimension_ .getValue (), this .vDimension_ .getValue (), this .weight_);
3619
+ uScale = uKnots .at (-1) - uKnots [0],
3620
+ vScale = vKnots .at (-1) - vKnots [0];
3447
3621
 
3448
- // Initialize NURBS tesselllator
3622
+ // Initialize NURBS tessellator
3449
3623
 
3450
3624
  var
3451
3625
  uDegree = this .uOrder_ .getValue () - 1,
@@ -3455,35 +3629,35 @@ function (X3DParametricGeometryNode,
3455
3629
  boundary: ["open", "open"],
3456
3630
  degree: [uDegree, vDegree],
3457
3631
  knots: [uKnots, vKnots],
3458
- weights: weights,
3459
3632
  points: controlPoints,
3460
3633
  debug: false,
3461
3634
  });
3462
3635
 
3463
3636
  var sampleOptions = this .sampleOptions;
3464
3637
 
3465
- sampleOptions .resolution [0] = this .getUTessellation (uKnots .length);
3466
- sampleOptions .resolution [1] = this .getVTessellation (vKnots .length);
3467
- sampleOptions .generateNormals = true;
3468
- sampleOptions .domain = undefined;
3638
+ sampleOptions .resolution [0] = this .getUTessellation (uKnots .length);
3639
+ sampleOptions .resolution [1] = this .getVTessellation (vKnots .length);
3640
+ sampleOptions .closed [0] = uClosed;
3641
+ sampleOptions .closed [1] = vClosed;
3642
+ sampleOptions .domain = undefined;
3643
+ sampleOptions .haveWeights = Boolean (weights);
3644
+ sampleOptions .trimmingContours = this .getTrimmingContours ();
3469
3645
 
3470
3646
  var
3471
3647
  mesh = nurbs .sample (this .mesh, surface, sampleOptions),
3472
3648
  faces = mesh .faces,
3473
- normals = mesh .normals,
3474
3649
  points = mesh .points,
3475
- normalArray = this .getNormals (),
3476
3650
  vertexArray = this .getVertices ();
3477
3651
 
3478
3652
  for (var i = 0, length = faces .length; i < length; ++ i)
3479
3653
  {
3480
3654
  var index = faces [i] * 3;
3481
3655
 
3482
- normalArray .push (normals [index], normals [index + 1], normals [index + 2]);
3483
3656
  vertexArray .push (points [index], points [index + 1], points [index + 2], 1);
3484
3657
  }
3485
3658
 
3486
3659
  this .buildNurbsTexCoords (uClosed, vClosed, this .uOrder_ .getValue (), this .vOrder_ .getValue (), uKnots, vKnots, this .uDimension_ .getValue (), this .vDimension_ .getValue (), surface .domain);
3660
+ this .buildNormals (faces, points);
3487
3661
  this .setSolid (this .solid_ .getValue ());
3488
3662
  this .setCCW (true);
3489
3663
  },
@@ -3497,14 +3671,14 @@ function (X3DParametricGeometryNode,
3497
3671
  function getDefaultTexKnots (result, knots)
3498
3672
  {
3499
3673
  result [0] = result [1] = knots [0];
3500
- result [2] = result [3] = knots [knots .length - 1];
3674
+ result [2] = result [3] = knots .at (-1);
3501
3675
  return result;
3502
3676
  }
3503
3677
 
3504
3678
  return function (uClosed, vClosed, uOrder, vOrder, uKnots, vKnots, uDimension, vDimension, domain)
3505
- {
3679
+ {
3506
3680
  var sampleOptions = this .sampleOptions;
3507
-
3681
+
3508
3682
  if (this .texCoordNode && this .texCoordNode .getSize () === uDimension * vDimension)
3509
3683
  {
3510
3684
  var
@@ -3512,7 +3686,6 @@ function (X3DParametricGeometryNode,
3512
3686
  texVDegree = vOrder - 1,
3513
3687
  texUKnots = uKnots,
3514
3688
  texVKnots = vKnots,
3515
- texWeights = undefined,
3516
3689
  texControlPoints = this .getTexControlPoints (this .texControlPoints, uClosed, vClosed, uOrder, vOrder, uDimension, vDimension, this .texCoordNode);
3517
3690
  }
3518
3691
  else if (this .nurbsTexCoordNode && this .nurbsTexCoordNode .isValid ())
@@ -3523,8 +3696,8 @@ function (X3DParametricGeometryNode,
3523
3696
  texVDegree = node .vOrder_ .getValue () - 1,
3524
3697
  texUKnots = this .getKnots (this .texUKnots, false, node .uOrder_ .getValue (), node .uDimension_ .getValue (), node .uKnot_),
3525
3698
  texVKnots = this .getKnots (this .texVKnots, false, node .vOrder_ .getValue (), node .vDimension_ .getValue (), node .vKnot_),
3526
- texWeights = this .getUVWeights (this .texWeights, false, false, node .uOrder_ .getValue (), node .vOrder_ .getValue (), node .uDimension_ .getValue (), node .vDimension_ .getValue (), node .weight_);
3527
- texControlPoints = node .getControlPoints ();
3699
+ texWeights = this .getUVWeights (this .texWeights, node .uDimension_ .getValue (), node .vDimension_ .getValue (), node .weight_);
3700
+ texControlPoints = node .getControlPoints (texWeights);
3528
3701
  }
3529
3702
  else
3530
3703
  {
@@ -3533,45 +3706,110 @@ function (X3DParametricGeometryNode,
3533
3706
  texVDegree = 1,
3534
3707
  texUKnots = getDefaultTexKnots (defaultTexUKnots, uKnots),
3535
3708
  texVKnots = getDefaultTexKnots (defaultTexVKnots, vKnots),
3536
- texWeights = undefined,
3537
3709
  texControlPoints = defaultTexControlPoints;
3538
-
3710
+
3539
3711
  sampleOptions .domain = domain;
3540
3712
  }
3541
-
3713
+
3542
3714
  var texSurface = this .texSurface = (this .texSurface || nurbs) ({
3543
3715
  boundary: ["open", "open"],
3544
3716
  degree: [texUDegree, texVDegree],
3545
3717
  knots: [texUKnots, texVKnots],
3546
- weights: texWeights,
3547
3718
  points: texControlPoints,
3548
3719
  });
3549
-
3550
- sampleOptions .generateNormals = false;
3551
-
3720
+
3721
+ sampleOptions .closed [0] = false;
3722
+ sampleOptions .closed [1] = false;
3723
+ sampleOptions .haveWeights = false;
3724
+
3552
3725
  var
3553
3726
  texMesh = nurbs .sample (this .texMesh, texSurface, sampleOptions),
3554
3727
  faces = texMesh .faces,
3555
3728
  points = texMesh .points,
3556
3729
  texCoordArray = this .getTexCoords ();
3557
-
3730
+
3558
3731
  for (var i = 0, length = faces .length; i < length; ++ i)
3559
3732
  {
3560
3733
  var index = faces [i] * 4;
3561
-
3734
+
3562
3735
  texCoordArray .push (points [index], points [index + 1], points [index + 2], points [index + 3]);
3563
3736
  }
3564
-
3737
+
3565
3738
  this .getMultiTexCoords () .push (this .getTexCoords ());
3566
3739
  };
3567
3740
  })(),
3741
+ buildNormals: function (faces, points)
3742
+ {
3743
+ var
3744
+ normals = this .createNormals (faces, points),
3745
+ normalArray = this .getNormals ();
3746
+
3747
+ for (var i = 0, length = normals .length; i < length; ++ i)
3748
+ {
3749
+ var normal = normals [i];
3750
+
3751
+ normalArray .push (normal .x, normal .y, normal .z);
3752
+ }
3753
+ },
3754
+ createNormals: function (faces, points)
3755
+ {
3756
+ var normals = this .createFaceNormals (faces, points);
3757
+
3758
+ var normalIndex = [ ];
3759
+
3760
+ for (var i = 0, length = faces .length; i < length; ++ i)
3761
+ {
3762
+ var
3763
+ index = faces [i],
3764
+ pointIndex = normalIndex [index];
3765
+
3766
+ if (! pointIndex)
3767
+ pointIndex = normalIndex [index] = [ ];
3768
+
3769
+ pointIndex .push (i);
3770
+ }
3771
+
3772
+ return this .refineNormals (normalIndex, normals, Algorithm .radians (85));
3773
+ },
3774
+ createFaceNormals: (function ()
3775
+ {
3776
+ var
3777
+ v1 = new Vector3 (0, 0, 0),
3778
+ v2 = new Vector3 (0, 0, 0),
3779
+ v3 = new Vector3 (0, 0, 0);
3780
+
3781
+ return function (faces, points)
3782
+ {
3783
+ var normals = this .faceNormals || [ ];
3784
+
3785
+ for (var i = 0, length = faces .length; i < length; i += 3)
3786
+ {
3787
+ var
3788
+ index1 = faces [i] * 3,
3789
+ index2 = faces [i + 1] * 3,
3790
+ index3 = faces [i + 2] * 3;
3791
+
3792
+ v1 .set (points [index1], points [index1 + 1], points [index1 + 2]);
3793
+ v2 .set (points [index2], points [index2 + 1], points [index2 + 2]);
3794
+ v3 .set (points [index3], points [index3 + 1], points [index3 + 2]);
3795
+
3796
+ var normal = Triangle3 .normal (v1, v2 ,v3, normals [i] || new Vector3 (0, 0, 0));
3797
+
3798
+ normals [i] = normal;
3799
+ normals [i + 1] = normal;
3800
+ normals [i + 2] = normal;
3801
+ }
3802
+
3803
+ normals .length = length;
3804
+
3805
+ return normals;
3806
+ };
3807
+ })(),
3568
3808
  });
3569
3809
 
3570
3810
  return X3DNurbsSurfaceGeometryNode;
3571
3811
  });
3572
3812
 
3573
-
3574
-
3575
3813
  /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
3576
3814
  *******************************************************************************
3577
3815
  *
@@ -3745,8 +3983,8 @@ define ('x_ite/Components/NURBS/NurbsPositionInterpolator',[
3745
3983
  function (Fields,
3746
3984
  X3DFieldDefinition,
3747
3985
  FieldDefinitionArray,
3748
- X3DChildNode,
3749
- PositionInterpolator,
3986
+ X3DChildNode,
3987
+ PositionInterpolator,
3750
3988
  X3DConstants,
3751
3989
  X3DCast,
3752
3990
  NURBS,
@@ -3759,7 +3997,7 @@ function (Fields,
3759
3997
  X3DChildNode .call (this, executionContext);
3760
3998
 
3761
3999
  this .addType (X3DConstants .NurbsPositionInterpolator);
3762
-
4000
+
3763
4001
  this .addChildObjects ("rebuild", new Fields .SFTime ());
3764
4002
 
3765
4003
  this .interpolator = new PositionInterpolator (executionContext);
@@ -3804,7 +4042,7 @@ function (Fields,
3804
4042
  this .controlPoint_ .addInterest ("set_controlPoint__", this);
3805
4043
 
3806
4044
  this .rebuild_ .addInterest ("build", this);
3807
-
4045
+
3808
4046
  this .set_fraction_ .addFieldInterest (this .interpolator .set_fraction_);
3809
4047
  this .interpolator .value_changed_ .addFieldInterest (this .value_changed_);
3810
4048
 
@@ -3832,13 +4070,13 @@ function (Fields,
3832
4070
  {
3833
4071
  return NURBS .getKnots (result, closed, order, dimension, knot);
3834
4072
  },
3835
- getWeights: function (result, closed, order, dimension, weight)
4073
+ getWeights: function (result, dimension, weight)
3836
4074
  {
3837
- return NURBS .getWeights (result, closed, order, dimension, weight);
4075
+ return NURBS .getWeights (result, dimension, weight);
3838
4076
  },
3839
- getControlPoints: function (result, closed, order, controlPointNode)
4077
+ getControlPoints: function (result, closed, order, weights, controlPointNode)
3840
4078
  {
3841
- return NURBS .getControlPoints (result, closed, order, controlPointNode);
4079
+ return NURBS .getControlPoints (result, closed, order, weights, controlPointNode);
3842
4080
  },
3843
4081
  requestRebuild: function ()
3844
4082
  {
@@ -3848,10 +4086,10 @@ function (Fields,
3848
4086
  {
3849
4087
  if (this .order_ .getValue () < 2)
3850
4088
  return;
3851
-
4089
+
3852
4090
  if (! this .controlPointNode)
3853
4091
  return;
3854
-
4092
+
3855
4093
  if (this .controlPointNode .getSize () < this .order_ .getValue ())
3856
4094
  return;
3857
4095
 
@@ -3859,17 +4097,16 @@ function (Fields,
3859
4097
 
3860
4098
  var
3861
4099
  closed = this .getClosed (this .order_ .getValue (), this .knot_, this .weight_, this .controlPointNode),
3862
- controlPoints = this .getControlPoints (this .controlPoints, closed, this .order_ .getValue (), this .controlPointNode);
3863
-
4100
+ weights = this .getWeights (this .weights, this .controlPointNode .getSize (), this .weight_),
4101
+ controlPoints = this .getControlPoints (this .controlPoints, closed, this .order_ .getValue (), weights, this .controlPointNode);
4102
+
3864
4103
  // Knots
3865
-
4104
+
3866
4105
  var
3867
4106
  knots = this .getKnots (this .knots, closed, this .order_ .getValue (), this .controlPointNode .getSize (), this .knot_),
3868
- scale = knots [knots .length - 1] - knots [0];
4107
+ scale = knots .at (-1) - knots [0];
3869
4108
 
3870
- var weights = this .getWeights (this .weights, closed, this .order_ .getValue (), this .controlPointNode .getSize (), this .weight_);
3871
-
3872
- // Initialize NURBS tesselllator
4109
+ // Initialize NURBS tessellator
3873
4110
 
3874
4111
  var degree = this .order_ .getValue () - 1;
3875
4112
 
@@ -3877,11 +4114,12 @@ function (Fields,
3877
4114
  boundary: ["open"],
3878
4115
  degree: [degree],
3879
4116
  knots: [knots],
3880
- weights: weights,
3881
4117
  points: controlPoints,
3882
4118
  debug: false,
3883
4119
  });
3884
4120
 
4121
+ this .sampleOptions .haveWeights = Boolean (weights);
4122
+
3885
4123
  var
3886
4124
  mesh = nurbs .sample (this .mesh, surface, this .sampleOptions),
3887
4125
  points = mesh .points,
@@ -3901,8 +4139,6 @@ function (Fields,
3901
4139
  return NurbsPositionInterpolator;
3902
4140
  });
3903
4141
 
3904
-
3905
-
3906
4142
  /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
3907
4143
  *******************************************************************************
3908
4144
  *
@@ -3964,8 +4200,8 @@ define ('x_ite/Components/NURBS/NurbsSet',[
3964
4200
  function (Fields,
3965
4201
  X3DFieldDefinition,
3966
4202
  FieldDefinitionArray,
3967
- X3DChildNode,
3968
- X3DBoundedObject,
4203
+ X3DChildNode,
4204
+ X3DBoundedObject,
3969
4205
  X3DConstants,
3970
4206
  X3DCast)
3971
4207
  {
@@ -4000,6 +4236,8 @@ function (Fields,
4000
4236
  fieldDefinitions: new FieldDefinitionArray ([
4001
4237
  new X3DFieldDefinition (X3DConstants .inputOutput, "metadata", new Fields .SFNode ()),
4002
4238
  new X3DFieldDefinition (X3DConstants .inputOutput, "tessellationScale", new Fields .SFFloat (1)),
4239
+ new X3DFieldDefinition (X3DConstants .inputOutput, "visible", new Fields .SFBool (true)),
4240
+ new X3DFieldDefinition (X3DConstants .inputOutput, "bboxDisplay", new Fields .SFBool ()),
4003
4241
  new X3DFieldDefinition (X3DConstants .initializeOnly, "bboxSize", new Fields .SFVec3f (-1, -1, -1)),
4004
4242
  new X3DFieldDefinition (X3DConstants .initializeOnly, "bboxCenter", new Fields .SFVec3f ()),
4005
4243
  new X3DFieldDefinition (X3DConstants .inputOnly, "addGeometry", new Fields .MFNode ()),
@@ -4027,9 +4265,20 @@ function (Fields,
4027
4265
  this .addGeometry_ .addInterest ("set_addGeometry__", this);
4028
4266
  this .removeGeometry_ .addInterest ("set_removeGeometry__", this);
4029
4267
  this .geometry_ .addInterest ("set_geometry__", this);
4030
-
4268
+
4031
4269
  this .set_geometry__ ();
4032
4270
  },
4271
+ getBBox: function (bbox, shadow)
4272
+ {
4273
+ // Add bounding boxes
4274
+
4275
+ for (var i = 0, length = this .geometryNodes .length; i < length; ++ i)
4276
+ {
4277
+ bbox .add (this .geometryNodes [i] .getBBox ());
4278
+ }
4279
+
4280
+ return bbox;
4281
+ },
4033
4282
  set_tessellationScale__: function ()
4034
4283
  {
4035
4284
  var tessellationScale = Math .max (0, this .tessellationScale_ .getValue ());
@@ -4066,7 +4315,7 @@ function (Fields,
4066
4315
  for (var i = 0, length = this .geometry_ .length; i < length; ++ i)
4067
4316
  {
4068
4317
  var geometryNode = X3DCast (X3DConstants .X3DNurbsSurfaceGeometryNode, this .geometry_ [i]);
4069
-
4318
+
4070
4319
  if (geometryNode)
4071
4320
  this .geometryNodes .push (geometryNode);
4072
4321
  }
@@ -4078,8 +4327,6 @@ function (Fields,
4078
4327
  return NurbsSet;
4079
4328
  });
4080
4329
 
4081
-
4082
-
4083
4330
  /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
4084
4331
  *******************************************************************************
4085
4332
  *
@@ -4138,26 +4385,26 @@ define ('standard/Math/Geometry/Triangle2',[],function ()
4138
4385
  {
4139
4386
  // https://en.wikipedia.org/wiki/Barycentric_coordinate_system
4140
4387
 
4141
- var det = (b.y - c.y) * (a.x - c.x) + (c.x - b.x) * (a.y - c.y);
4388
+ const det = (b.y - c.y) * (a.x - c.x) + (c.x - b.x) * (a.y - c.y);
4142
4389
 
4143
4390
  if (det == 0)
4144
4391
  return false;
4145
4392
 
4146
- var u = ((b.y - c.y) * (point .x - c.x) + (c.x - b.x) * (point .y - c.y)) / det;
4393
+ const u = ((b.y - c.y) * (point .x - c.x) + (c.x - b.x) * (point .y - c.y)) / det;
4147
4394
 
4148
4395
  if (u < 0 || u > 1)
4149
4396
  return false;
4150
4397
 
4151
- var v = ((c.y - a.y) * (point .x - c.x) + (a.x - c.x) * (point .y - c.y)) / det;
4398
+ const v = ((c.y - a.y) * (point .x - c.x) + (a.x - c.x) * (point .y - c.y)) / det;
4152
4399
 
4153
4400
  if (v < 0 || v > 1)
4154
4401
  return false;
4155
4402
 
4156
- var t = 1 - u - v;
4403
+ const t = 1 - u - v;
4157
4404
 
4158
4405
  if (t < 0 || t > 1)
4159
4406
  return false;
4160
-
4407
+
4161
4408
  return true;
4162
4409
  },
4163
4410
  };
@@ -4509,8 +4756,8 @@ function (Fields,
4509
4756
 
4510
4757
  var extrusion = this .extrusion;
4511
4758
 
4512
- extrusion .crossSection_ = this .crossSectionCurveNode .tessellate ();
4513
- extrusion .spine_ = this .trajectoryCurveNode .tessellate ();
4759
+ extrusion .crossSection_ = this .crossSectionCurveNode .tessellate (0);
4760
+ extrusion .spine_ = this .trajectoryCurveNode .tessellate (0);
4514
4761
 
4515
4762
  extrusion .rebuild ();
4516
4763
 
@@ -4692,8 +4939,8 @@ function (Fields,
4692
4939
 
4693
4940
  var extrusion = this .extrusion;
4694
4941
 
4695
- extrusion .crossSection_ = this .profileCurveNode .tessellate ();
4696
- extrusion .spine_ = this .trajectoryCurveNode .tessellate (true);
4942
+ extrusion .crossSection_ = this .profileCurveNode .tessellate (0);
4943
+ extrusion .spine_ = this .trajectoryCurveNode .tessellate (1);
4697
4944
 
4698
4945
  extrusion .rebuild ();
4699
4946
 
@@ -4782,8 +5029,8 @@ define ('x_ite/Components/NURBS/NurbsTextureCoordinate',[
4782
5029
  function (Fields,
4783
5030
  X3DFieldDefinition,
4784
5031
  FieldDefinitionArray,
4785
- X3DNode,
4786
- X3DConstants,
5032
+ X3DNode,
5033
+ X3DConstants,
4787
5034
  Vector4)
4788
5035
  {
4789
5036
  "use strict";
@@ -4794,7 +5041,7 @@ function (Fields,
4794
5041
 
4795
5042
  this .addType (X3DConstants .NurbsTextureCoordinate);
4796
5043
 
4797
- this .constrolPoints = [ ];
5044
+ this .controlPoints = [ ];
4798
5045
  }
4799
5046
 
4800
5047
  NurbsTextureCoordinate .prototype = Object .assign (Object .create (X3DNode .prototype),
@@ -4827,42 +5074,43 @@ function (Fields,
4827
5074
  {
4828
5075
  X3DNode .prototype .initialize .call (this);
4829
5076
  },
4830
- getControlPoints: function ()
5077
+ getControlPoints: function (texWeights)
4831
5078
  {
4832
5079
  var
4833
5080
  controlPointArray = this .controlPoint_ .getValue (),
4834
- constrolPoints = this .constrolPoints;
5081
+ controlPoints = this .controlPoints;
4835
5082
 
4836
5083
  for (var u = 0, uDimension = this .uDimension_ .getValue (); u < uDimension; ++ u)
4837
5084
  {
4838
- var cp = constrolPoints [u];
5085
+ var cp = controlPoints [u];
4839
5086
 
4840
5087
  if (! cp)
4841
- cp = constrolPoints [u] = [ ];
5088
+ cp = controlPoints [u] = [ ];
4842
5089
 
4843
5090
  for (var v = 0, vDimension = this .vDimension_ .getValue (); v < vDimension; ++ v)
4844
5091
  {
4845
5092
  var
4846
- p = cp [v] || new Vector4 (),
4847
- i = (v * uDimension + u) * 2;
5093
+ index = v * uDimension + u,
5094
+ p = cp [v] || new Vector4 (),
5095
+ i = index * 2;
4848
5096
 
4849
- cp [v] = p .set (controlPointArray [i], controlPointArray [i + 1], 0, 1);
5097
+ cp [v] = p .set (controlPointArray [i], controlPointArray [i + 1], 0, texWeights ? texWeights [index] : 1);
4850
5098
  }
4851
5099
  }
4852
5100
 
4853
- return constrolPoints;
5101
+ return controlPoints;
4854
5102
  },
4855
5103
  isValid: function ()
4856
5104
  {
4857
5105
  if (this .uOrder_ .getValue () < 2)
4858
5106
  return false;
4859
-
5107
+
4860
5108
  if (this .vOrder_ .getValue () < 2)
4861
5109
  return false;
4862
-
5110
+
4863
5111
  if (this .uDimension_ .getValue () < this .uOrder_ .getValue ())
4864
5112
  return false;
4865
-
5113
+
4866
5114
  if (this .vDimension_ .getValue () < this .vOrder_ .getValue ())
4867
5115
  return false;
4868
5116
 
@@ -4876,8 +5124,6 @@ function (Fields,
4876
5124
  return NurbsTextureCoordinate;
4877
5125
  });
4878
5126
 
4879
-
4880
-
4881
5127
  /* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
4882
5128
  *******************************************************************************
4883
5129
  *
@@ -4933,12 +5179,14 @@ define ('x_ite/Components/NURBS/NurbsTrimmedSurface',[
4933
5179
  "x_ite/Basic/FieldDefinitionArray",
4934
5180
  "x_ite/Components/NURBS/X3DNurbsSurfaceGeometryNode",
4935
5181
  "x_ite/Bits/X3DConstants",
5182
+ "x_ite/Bits/X3DCast",
4936
5183
  ],
4937
5184
  function (Fields,
4938
5185
  X3DFieldDefinition,
4939
5186
  FieldDefinitionArray,
4940
5187
  X3DNurbsSurfaceGeometryNode,
4941
- X3DConstants)
5188
+ X3DConstants,
5189
+ X3DCast)
4942
5190
  {
4943
5191
  "use strict";
4944
5192
 
@@ -4947,6 +5195,8 @@ function (Fields,
4947
5195
  X3DNurbsSurfaceGeometryNode .call (this, executionContext);
4948
5196
 
4949
5197
  this .addType (X3DConstants .NurbsTrimmedSurface);
5198
+
5199
+ this .trimmingContourNodes = [ ];
4950
5200
  }
4951
5201
 
4952
5202
  NurbsTrimmedSurface .prototype = Object .assign (Object .create (X3DNurbsSurfaceGeometryNode .prototype),
@@ -4984,6 +5234,39 @@ function (Fields,
4984
5234
  {
4985
5235
  return "geometry";
4986
5236
  },
5237
+ initialize: function ()
5238
+ {
5239
+ X3DNurbsSurfaceGeometryNode .prototype .initialize .call (this);
5240
+
5241
+ this .trimmingContour_ .addInterest ("set_trimmingContour__", this);
5242
+
5243
+ this .set_trimmingContour__ ();
5244
+ },
5245
+ set_trimmingContour__: function ()
5246
+ {
5247
+ var trimmingContourNodes = this .trimmingContourNodes;
5248
+
5249
+ trimmingContourNodes .length = 0;
5250
+
5251
+ for (var i = 0, length = this .trimmingContour_ .length; i < length; ++ i)
5252
+ {
5253
+ var trimmingContourNode = X3DCast (X3DConstants .Contour2D, this .trimmingContour_ [i]);
5254
+
5255
+ if (trimmingContourNode)
5256
+ trimmingContourNodes .push (trimmingContourNode);
5257
+ }
5258
+ },
5259
+ getTrimmingContours: function ()
5260
+ {
5261
+ var
5262
+ trimmingContourNodes = this .trimmingContourNodes,
5263
+ trimmingContours = [ ];
5264
+
5265
+ for (var i = 0, length = trimmingContourNodes .length; i < length; ++ i)
5266
+ trimmingContourNodes [i] .addTrimmingContour (trimmingContours);
5267
+
5268
+ return trimmingContours;
5269
+ },
4987
5270
  });
4988
5271
 
4989
5272
  return NurbsTrimmedSurface;
@@ -5040,7 +5323,7 @@ function (Fields,
5040
5323
  ******************************************************************************/
5041
5324
 
5042
5325
 
5043
- define ([
5326
+ define (require .getComponentUrl ("nurbs"), [
5044
5327
  "x_ite/Components",
5045
5328
  "x_ite/Components/NURBS/Contour2D",
5046
5329
  "x_ite/Components/NURBS/ContourPolyline2D",
@@ -5111,4 +5394,5 @@ function (Components,
5111
5394
 
5112
5395
 
5113
5396
 
5114
- }());
5397
+ })
5398
+ (typeof module === "object" ? module : undefined, typeof require === "function" ? require : undefined);