three-stdlib 2.15.0 → 2.15.2

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 (1222) hide show
  1. package/animation/AnimationClipCreator.js +32 -52
  2. package/animation/AnimationClipCreator.mjs +57 -0
  3. package/animation/CCDIKSolver.js +66 -161
  4. package/animation/CCDIKSolver.mjs +234 -0
  5. package/animation/MMDAnimationHelper.js +150 -341
  6. package/animation/MMDAnimationHelper.mjs +514 -0
  7. package/animation/MMDPhysics.js +154 -361
  8. package/animation/MMDPhysics.mjs +769 -0
  9. package/cameras/CinematicCamera.js +67 -77
  10. package/cameras/CinematicCamera.mjs +129 -0
  11. package/controls/ArcballControls.js +544 -1449
  12. package/controls/ArcballControls.mjs +1737 -0
  13. package/controls/DeviceOrientationControls.js +52 -97
  14. package/controls/DeviceOrientationControls.mjs +74 -0
  15. package/controls/DragControls.js +85 -187
  16. package/controls/DragControls.mjs +172 -0
  17. package/controls/FirstPersonControls.js +123 -193
  18. package/controls/FirstPersonControls.mjs +220 -0
  19. package/controls/FlyControls.js +82 -152
  20. package/controls/FlyControls.mjs +239 -0
  21. package/controls/OrbitControls.js +232 -481
  22. package/controls/OrbitControls.mjs +731 -0
  23. package/controls/PointerLockControls.js +63 -99
  24. package/controls/PointerLockControls.mjs +88 -0
  25. package/controls/TrackballControls.js +211 -383
  26. package/controls/TrackballControls.mjs +481 -0
  27. package/controls/TransformControls.js +575 -782
  28. package/controls/TransformControls.mjs +1068 -0
  29. package/controls/experimental/CameraControls.js +329 -609
  30. package/controls/experimental/CameraControls.mjs +673 -0
  31. package/csm/CSM.js +47 -108
  32. package/csm/CSM.mjs +244 -0
  33. package/csm/CSMFrustum.js +14 -29
  34. package/csm/CSMFrustum.mjs +75 -0
  35. package/csm/CSMHelper.js +20 -34
  36. package/csm/CSMHelper.mjs +114 -0
  37. package/csm/CSMShader.js +7 -11
  38. package/csm/CSMShader.mjs +251 -0
  39. package/curves/CurveExtras.js +73 -115
  40. package/curves/CurveExtras.mjs +224 -0
  41. package/curves/NURBSCurve.js +15 -43
  42. package/curves/NURBSCurve.mjs +35 -0
  43. package/curves/NURBSSurface.js +11 -27
  44. package/curves/NURBSSurface.mjs +28 -0
  45. package/curves/NURBSUtils.js +54 -203
  46. package/curves/NURBSUtils.mjs +226 -0
  47. package/deprecated/Geometry.js +191 -486
  48. package/deprecated/Geometry.mjs +966 -0
  49. package/effects/AnaglyphEffect.js +95 -60
  50. package/effects/AnaglyphEffect.mjs +120 -0
  51. package/effects/AsciiEffect.js +80 -110
  52. package/effects/AsciiEffect.mjs +173 -0
  53. package/effects/OutlineEffect.js +121 -204
  54. package/effects/OutlineEffect.mjs +295 -0
  55. package/effects/ParallaxBarrierEffect.js +39 -38
  56. package/effects/ParallaxBarrierEffect.mjs +64 -0
  57. package/effects/PeppersGhostEffect.js +19 -68
  58. package/effects/PeppersGhostEffect.mjs +85 -0
  59. package/effects/StereoEffect.js +12 -16
  60. package/effects/StereoEffect.mjs +32 -0
  61. package/environments/RoomEnvironment.js +52 -47
  62. package/environments/RoomEnvironment.mjs +78 -0
  63. package/exporters/ColladaExporter.js +115 -241
  64. package/exporters/ColladaExporter.mjs +299 -0
  65. package/exporters/DRACOExporter.js +67 -121
  66. package/exporters/DRACOExporter.mjs +132 -0
  67. package/exporters/GLTFExporter.js +463 -1014
  68. package/exporters/GLTFExporter.mjs +1381 -0
  69. package/exporters/MMDExporter.js +44 -102
  70. package/exporters/MMDExporter.mjs +102 -0
  71. package/exporters/OBJExporter.js +78 -140
  72. package/exporters/OBJExporter.mjs +166 -0
  73. package/exporters/PLYExporter.js +93 -154
  74. package/exporters/PLYExporter.mjs +278 -0
  75. package/exporters/STLExporter.js +30 -81
  76. package/exporters/STLExporter.mjs +129 -0
  77. package/exporters/USDZExporter.js +84 -144
  78. package/exporters/USDZExporter.mjs +328 -0
  79. package/geometries/BoxLineGeometry.js +7 -14
  80. package/geometries/BoxLineGeometry.mjs +45 -0
  81. package/geometries/ConvexGeometry.js +15 -24
  82. package/geometries/ConvexGeometry.mjs +29 -0
  83. package/geometries/DecalGeometry.js +108 -162
  84. package/geometries/DecalGeometry.mjs +184 -0
  85. package/geometries/LightningStrike.js +101 -294
  86. package/geometries/LightningStrike.mjs +547 -0
  87. package/geometries/ParametricGeometries.js +26 -76
  88. package/geometries/ParametricGeometries.mjs +129 -0
  89. package/geometries/ParametricGeometry.js +24 -48
  90. package/geometries/ParametricGeometry.mjs +63 -0
  91. package/geometries/RoundedBoxGeometry.js +33 -64
  92. package/geometries/RoundedBoxGeometry.mjs +91 -0
  93. package/geometries/TeapotGeometry.js +1434 -174
  94. package/geometries/TeapotGeometry.mjs +1557 -0
  95. package/geometries/TextGeometry.js +9 -17
  96. package/geometries/TextGeometry.mjs +23 -0
  97. package/helpers/LightProbeHelper.js +53 -21
  98. package/helpers/LightProbeHelper.mjs +72 -0
  99. package/helpers/PositionalAudioHelper.js +23 -30
  100. package/helpers/PositionalAudioHelper.mjs +68 -0
  101. package/helpers/RectAreaLightHelper.js +17 -33
  102. package/helpers/RectAreaLightHelper.mjs +44 -0
  103. package/helpers/VertexNormalsHelper.js +20 -41
  104. package/helpers/VertexNormalsHelper.mjs +54 -0
  105. package/helpers/VertexTangentsHelper.js +18 -36
  106. package/helpers/VertexTangentsHelper.mjs +45 -0
  107. package/index.d.ts +54 -0
  108. package/index.js +968 -333
  109. package/index.mjs +968 -0
  110. package/interactive/SelectionBox.js +31 -46
  111. package/interactive/SelectionBox.mjs +137 -0
  112. package/interactive/SelectionHelper.js +16 -21
  113. package/interactive/SelectionHelper.mjs +54 -0
  114. package/libs/MeshoptDecoder.js +147 -58
  115. package/libs/MeshoptDecoder.mjs +210 -0
  116. package/libs/MotionControllers.js +66 -208
  117. package/libs/MotionControllers.mjs +261 -0
  118. package/lights/LightProbeGenerator.js +40 -96
  119. package/lights/LightProbeGenerator.mjs +145 -0
  120. package/lights/RectAreaLightUniformsLib.js +32842 -9
  121. package/lights/RectAreaLightUniformsLib.mjs +32842 -0
  122. package/lines/Line2.js +9 -12
  123. package/lines/Line2.mjs +13 -0
  124. package/lines/LineGeometry.js +7 -19
  125. package/lines/LineGeometry.mjs +44 -0
  126. package/lines/LineMaterial.js +51 -89
  127. package/lines/LineMaterial.mjs +539 -0
  128. package/lines/LineSegments2.js +56 -165
  129. package/lines/LineSegments2.mjs +202 -0
  130. package/lines/LineSegmentsGeometry.js +29 -71
  131. package/lines/LineSegmentsGeometry.mjs +124 -0
  132. package/lines/Wireframe.js +15 -29
  133. package/lines/Wireframe.mjs +31 -0
  134. package/lines/WireframeGeometry2.js +8 -9
  135. package/lines/WireframeGeometry2.mjs +13 -0
  136. package/loaders/3DMLoader.js +234 -469
  137. package/loaders/3DMLoader.mjs +802 -0
  138. package/loaders/3MFLoader.js +340 -555
  139. package/loaders/3MFLoader.mjs +837 -0
  140. package/loaders/AMFLoader.js +114 -219
  141. package/loaders/AMFLoader.mjs +284 -0
  142. package/loaders/AssimpLoader.js +328 -725
  143. package/loaders/AssimpLoader.mjs +1396 -0
  144. package/loaders/BVHLoader.js +94 -200
  145. package/loaders/BVHLoader.mjs +207 -0
  146. package/loaders/BasisTextureLoader.js +229 -357
  147. package/loaders/BasisTextureLoader.mjs +474 -0
  148. package/loaders/ColladaLoader.js +932 -1522
  149. package/loaders/ColladaLoader.mjs +2403 -0
  150. package/loaders/DDSLoader.js +42 -108
  151. package/loaders/DDSLoader.mjs +148 -0
  152. package/loaders/DRACOLoader.js +103 -210
  153. package/loaders/DRACOLoader.mjs +340 -0
  154. package/loaders/EXRLoader.js +461 -809
  155. package/loaders/EXRLoader.mjs +1351 -0
  156. package/loaders/FBXLoader.js +842 -1397
  157. package/loaders/FBXLoader.mjs +2362 -0
  158. package/loaders/FontLoader.js +33 -66
  159. package/loaders/FontLoader.mjs +111 -0
  160. package/loaders/GCodeLoader.js +63 -111
  161. package/loaders/GCodeLoader.mjs +141 -0
  162. package/loaders/GLTFLoader.js +771 -1484
  163. package/loaders/GLTFLoader.mjs +2316 -0
  164. package/loaders/HDRCubeTextureLoader.js +45 -50
  165. package/loaders/HDRCubeTextureLoader.mjs +77 -0
  166. package/loaders/KMZLoader.js +42 -55
  167. package/loaders/KMZLoader.mjs +75 -0
  168. package/loaders/KTX2Loader.js +229 -362
  169. package/loaders/KTX2Loader.mjs +427 -0
  170. package/loaders/KTXLoader.js +37 -99
  171. package/loaders/KTXLoader.mjs +87 -0
  172. package/loaders/LDrawLoader.js +313 -746
  173. package/loaders/LDrawLoader.mjs +1409 -0
  174. package/loaders/LUT3dlLoader.js +50 -62
  175. package/loaders/LUT3dlLoader.mjs +100 -0
  176. package/loaders/LUTCubeLoader.js +45 -56
  177. package/loaders/LUTCubeLoader.mjs +104 -0
  178. package/loaders/LWOLoader.js +227 -339
  179. package/loaders/LWOLoader.mjs +625 -0
  180. package/loaders/LottieLoader.js +36 -38
  181. package/loaders/LottieLoader.mjs +47 -0
  182. package/loaders/MD2Loader.js +248 -91
  183. package/loaders/MD2Loader.mjs +359 -0
  184. package/loaders/MDDLoader.js +25 -45
  185. package/loaders/MDDLoader.mjs +58 -0
  186. package/loaders/MMDLoader.js +359 -795
  187. package/loaders/MMDLoader.mjs +998 -0
  188. package/loaders/MTLLoader.js +91 -201
  189. package/loaders/MTLLoader.mjs +280 -0
  190. package/loaders/NRRDLoader.js +182 -263
  191. package/loaders/NRRDLoader.mjs +401 -0
  192. package/loaders/NodeMaterialLoader.js +121 -14
  193. package/loaders/NodeMaterialLoader.mjs +146 -0
  194. package/loaders/OBJLoader.js +161 -283
  195. package/loaders/OBJLoader.mjs +487 -0
  196. package/loaders/PCDLoader.js +145 -164
  197. package/loaders/PCDLoader.mjs +248 -0
  198. package/loaders/PDBLoader.js +45 -63
  199. package/loaders/PDBLoader.mjs +246 -0
  200. package/loaders/PLYLoader.js +106 -203
  201. package/loaders/PLYLoader.mjs +317 -0
  202. package/loaders/PRWMLoader.js +73 -110
  203. package/loaders/PRWMLoader.mjs +160 -0
  204. package/loaders/PVRLoader.js +32 -93
  205. package/loaders/PVRLoader.mjs +131 -0
  206. package/loaders/RGBELoader.js +96 -233
  207. package/loaders/RGBELoader.mjs +244 -0
  208. package/loaders/RGBMLoader.js +344 -514
  209. package/loaders/RGBMLoader.mjs +998 -0
  210. package/loaders/STLLoader.js +59 -165
  211. package/loaders/STLLoader.mjs +190 -0
  212. package/loaders/SVGLoader.js +481 -851
  213. package/loaders/SVGLoader.mjs +1709 -0
  214. package/loaders/TDSLoader.js +137 -527
  215. package/loaders/TDSLoader.mjs +480 -0
  216. package/loaders/TGALoader.js +94 -205
  217. package/loaders/TGALoader.mjs +285 -0
  218. package/loaders/TTFLoader.js +58 -79
  219. package/loaders/TTFLoader.mjs +131 -0
  220. package/loaders/TiltLoader.js +129 -167
  221. package/loaders/TiltLoader.mjs +373 -0
  222. package/loaders/VOXLoader.js +320 -84
  223. package/loaders/VOXLoader.mjs +431 -0
  224. package/loaders/VRMLLoader.js +786 -1268
  225. package/loaders/VRMLLoader.mjs +2093 -0
  226. package/loaders/VRMLoader.js +23 -31
  227. package/loaders/VRMLoader.mjs +38 -0
  228. package/loaders/VTKLoader.js +219 -407
  229. package/loaders/VTKLoader.mjs +646 -0
  230. package/loaders/XLoader.js +1083 -1259
  231. package/loaders/XLoader.mjs +1258 -0
  232. package/loaders/XYZLoader.js +28 -34
  233. package/loaders/XYZLoader.mjs +60 -0
  234. package/loaders/lwo/IFFParser.js +238 -492
  235. package/loaders/lwo/IFFParser.mjs +697 -0
  236. package/loaders/lwo/LWO2Parser.js +176 -279
  237. package/loaders/lwo/LWO2Parser.mjs +327 -0
  238. package/loaders/lwo/LWO3Parser.js +160 -247
  239. package/loaders/lwo/LWO3Parser.mjs +298 -0
  240. package/math/Capsule.js +56 -43
  241. package/math/Capsule.mjs +100 -0
  242. package/math/ColorConverter.js +18 -32
  243. package/math/ColorConverter.mjs +51 -0
  244. package/math/ConvexHull.js +515 -739
  245. package/math/ConvexHull.mjs +574 -0
  246. package/math/ImprovedNoise.js +282 -32
  247. package/math/ImprovedNoise.mjs +302 -0
  248. package/math/Lut.js +51 -35
  249. package/math/Lut.mjs +135 -0
  250. package/math/MeshSurfaceSampler.js +25 -68
  251. package/math/MeshSurfaceSampler.mjs +107 -0
  252. package/math/OBB.js +91 -152
  253. package/math/OBB.mjs +235 -0
  254. package/math/Octree.js +76 -139
  255. package/math/Octree.mjs +278 -0
  256. package/math/SimplexNoise.js +217 -238
  257. package/math/SimplexNoise.mjs +425 -0
  258. package/misc/ConvexObjectBreaker.js +79 -185
  259. package/misc/ConvexObjectBreaker.mjs +292 -0
  260. package/misc/GPUComputationRenderer.js +69 -194
  261. package/misc/GPUComputationRenderer.mjs +171 -0
  262. package/misc/Gyroscope.js +16 -22
  263. package/misc/Gyroscope.mjs +35 -0
  264. package/misc/MD2Character.js +52 -74
  265. package/misc/MD2Character.mjs +162 -0
  266. package/misc/MD2CharacterComplex.js +112 -163
  267. package/misc/MD2CharacterComplex.mjs +328 -0
  268. package/misc/MorphAnimMesh.js +20 -28
  269. package/misc/MorphAnimMesh.mjs +40 -0
  270. package/misc/MorphBlendMesh.js +45 -69
  271. package/misc/MorphBlendMesh.mjs +179 -0
  272. package/misc/ProgressiveLightmap.js +70 -187
  273. package/misc/ProgressiveLightmap.mjs +166 -0
  274. package/misc/RollerCoaster.js +106 -135
  275. package/misc/RollerCoaster.mjs +346 -0
  276. package/misc/TubePainter.js +74 -92
  277. package/misc/TubePainter.mjs +123 -0
  278. package/misc/Volume.js +108 -270
  279. package/misc/Volume.mjs +244 -0
  280. package/misc/VolumeSlice.js +34 -122
  281. package/misc/VolumeSlice.mjs +106 -0
  282. package/misc/WebGL.js +37 -34
  283. package/misc/WebGL.mjs +74 -0
  284. package/modifiers/CurveModifier.js +46 -151
  285. package/modifiers/CurveModifier.mjs +182 -0
  286. package/modifiers/EdgeSplitModifier.js +46 -90
  287. package/modifiers/EdgeSplitModifier.mjs +162 -0
  288. package/modifiers/SimplifyModifier.js +77 -202
  289. package/modifiers/SimplifyModifier.mjs +282 -0
  290. package/modifiers/TessellateModifier.js +65 -90
  291. package/modifiers/TessellateModifier.mjs +206 -0
  292. package/nodes/Nodes.js +274 -140
  293. package/nodes/Nodes.mjs +400 -0
  294. package/nodes/ShaderNode.js +296 -196
  295. package/nodes/ShaderNode.mjs +408 -0
  296. package/nodes/accessors/BufferNode.js +4 -8
  297. package/nodes/accessors/BufferNode.mjs +15 -0
  298. package/nodes/accessors/CameraNode.js +20 -25
  299. package/nodes/accessors/CameraNode.mjs +44 -0
  300. package/nodes/accessors/CubeTextureNode.js +14 -26
  301. package/nodes/accessors/CubeTextureNode.mjs +42 -0
  302. package/nodes/accessors/MaterialNode.js +43 -53
  303. package/nodes/accessors/MaterialNode.mjs +71 -0
  304. package/nodes/accessors/MaterialReferenceNode.js +3 -6
  305. package/nodes/accessors/MaterialReferenceNode.mjs +14 -0
  306. package/nodes/accessors/ModelNode.js +3 -5
  307. package/nodes/accessors/ModelNode.mjs +9 -0
  308. package/nodes/accessors/ModelViewProjectionNode.js +14 -13
  309. package/nodes/accessors/ModelViewProjectionNode.mjs +24 -0
  310. package/nodes/accessors/NormalNode.js +40 -39
  311. package/nodes/accessors/NormalNode.mjs +62 -0
  312. package/nodes/accessors/Object3DNode.js +40 -50
  313. package/nodes/accessors/Object3DNode.mjs +76 -0
  314. package/nodes/accessors/PointUVNode.js +5 -9
  315. package/nodes/accessors/PointUVNode.mjs +13 -0
  316. package/nodes/accessors/PositionNode.js +42 -41
  317. package/nodes/accessors/PositionNode.mjs +65 -0
  318. package/nodes/accessors/ReferenceNode.js +10 -17
  319. package/nodes/accessors/ReferenceNode.mjs +37 -0
  320. package/nodes/accessors/ReflectNode.js +23 -26
  321. package/nodes/accessors/ReflectNode.mjs +43 -0
  322. package/nodes/accessors/SkinningNode.js +46 -48
  323. package/nodes/accessors/SkinningNode.mjs +58 -0
  324. package/nodes/accessors/TextureNode.js +14 -29
  325. package/nodes/accessors/TextureNode.mjs +54 -0
  326. package/nodes/accessors/UVNode.js +5 -11
  327. package/nodes/accessors/UVNode.mjs +23 -0
  328. package/nodes/core/ArrayUniformNode.js +3 -7
  329. package/nodes/core/ArrayUniformNode.mjs +14 -0
  330. package/nodes/core/AttributeNode.js +5 -12
  331. package/nodes/core/AttributeNode.mjs +30 -0
  332. package/nodes/core/BypassNode.js +5 -12
  333. package/nodes/core/BypassNode.mjs +22 -0
  334. package/nodes/core/CodeNode.js +4 -12
  335. package/nodes/core/CodeNode.mjs +28 -0
  336. package/nodes/core/ConstNode.js +3 -7
  337. package/nodes/core/ConstNode.mjs +14 -0
  338. package/nodes/core/ContextNode.js +3 -8
  339. package/nodes/core/ContextNode.mjs +22 -0
  340. package/nodes/core/ExpressionNode.js +5 -9
  341. package/nodes/core/ExpressionNode.mjs +19 -0
  342. package/nodes/core/FunctionCallNode.js +6 -15
  343. package/nodes/core/FunctionCallNode.mjs +37 -0
  344. package/nodes/core/FunctionNode.js +10 -25
  345. package/nodes/core/FunctionNode.mjs +56 -0
  346. package/nodes/core/InputNode.js +12 -23
  347. package/nodes/core/InputNode.mjs +38 -0
  348. package/nodes/core/Node.js +35 -75
  349. package/nodes/core/Node.mjs +139 -0
  350. package/nodes/core/NodeAttribute.js +2 -4
  351. package/nodes/core/NodeAttribute.mjs +10 -0
  352. package/nodes/core/NodeBuilder.js +110 -224
  353. package/nodes/core/NodeBuilder.mjs +395 -0
  354. package/nodes/core/NodeCode.js +4 -7
  355. package/nodes/core/NodeCode.mjs +11 -0
  356. package/nodes/core/NodeFrame.js +9 -12
  357. package/nodes/core/NodeFrame.mjs +35 -0
  358. package/nodes/core/NodeFunctionInput.js +3 -5
  359. package/nodes/core/NodeFunctionInput.mjs +13 -0
  360. package/nodes/core/NodeKeywords.js +5 -16
  361. package/nodes/core/NodeKeywords.mjs +44 -0
  362. package/nodes/core/NodeUniform.js +3 -7
  363. package/nodes/core/NodeUniform.mjs +18 -0
  364. package/nodes/core/NodeUtils.js +39 -43
  365. package/nodes/core/NodeUtils.mjs +57 -0
  366. package/nodes/core/NodeVar.js +2 -4
  367. package/nodes/core/NodeVar.mjs +10 -0
  368. package/nodes/core/NodeVary.js +2 -4
  369. package/nodes/core/NodeVary.mjs +10 -0
  370. package/nodes/core/PropertyNode.js +4 -10
  371. package/nodes/core/PropertyNode.mjs +21 -0
  372. package/nodes/core/TempNode.js +5 -11
  373. package/nodes/core/TempNode.mjs +25 -0
  374. package/nodes/core/UniformNode.js +4 -10
  375. package/nodes/core/UniformNode.mjs +23 -0
  376. package/nodes/core/VarNode.js +3 -11
  377. package/nodes/core/VarNode.mjs +31 -0
  378. package/nodes/core/VaryNode.js +6 -15
  379. package/nodes/core/VaryNode.mjs +30 -0
  380. package/nodes/core/constants.js +20 -7
  381. package/nodes/core/constants.mjs +24 -0
  382. package/nodes/display/ColorSpaceNode.js +34 -38
  383. package/nodes/display/ColorSpaceNode.mjs +63 -0
  384. package/nodes/display/NormalMapNode.js +35 -53
  385. package/nodes/display/NormalMapNode.mjs +54 -0
  386. package/nodes/fog/FogNode.js +5 -9
  387. package/nodes/fog/FogNode.mjs +15 -0
  388. package/nodes/fog/FogRangeNode.js +5 -9
  389. package/nodes/fog/FogRangeNode.mjs +17 -0
  390. package/nodes/functions/BSDFs.js +61 -118
  391. package/nodes/functions/BSDFs.mjs +64 -0
  392. package/nodes/lights/LightContextNode.js +14 -23
  393. package/nodes/lights/LightContextNode.mjs +35 -0
  394. package/nodes/lights/LightNode.js +27 -31
  395. package/nodes/lights/LightNode.mjs +58 -0
  396. package/nodes/lights/LightsNode.js +9 -28
  397. package/nodes/lights/LightsNode.mjs +59 -0
  398. package/nodes/loaders/NodeLoader.js +27 -42
  399. package/nodes/loaders/NodeLoader.mjs +66 -0
  400. package/nodes/loaders/NodeMaterialLoader.js +4 -10
  401. package/nodes/loaders/NodeMaterialLoader.mjs +24 -0
  402. package/nodes/loaders/NodeObjectLoader.js +9 -19
  403. package/nodes/loaders/NodeObjectLoader.mjs +40 -0
  404. package/nodes/materials/LineBasicNodeMaterial.js +5 -10
  405. package/nodes/materials/LineBasicNodeMaterial.mjs +27 -0
  406. package/nodes/materials/Materials.js +14 -17
  407. package/nodes/materials/Materials.mjs +28 -0
  408. package/nodes/materials/MeshBasicNodeMaterial.js +5 -10
  409. package/nodes/materials/MeshBasicNodeMaterial.mjs +28 -0
  410. package/nodes/materials/MeshStandardNodeMaterial.js +5 -8
  411. package/nodes/materials/MeshStandardNodeMaterial.mjs +41 -0
  412. package/nodes/materials/NodeMaterial.js +20 -36
  413. package/nodes/materials/NodeMaterial.mjs +64 -0
  414. package/nodes/materials/PointsNodeMaterial.js +5 -10
  415. package/nodes/materials/PointsNodeMaterial.mjs +30 -0
  416. package/nodes/math/CondNode.js +11 -23
  417. package/nodes/math/CondNode.mjs +38 -0
  418. package/nodes/math/MathNode.js +98 -142
  419. package/nodes/math/MathNode.mjs +163 -0
  420. package/nodes/math/OperatorNode.js +24 -46
  421. package/nodes/math/OperatorNode.mjs +103 -0
  422. package/nodes/procedural/CheckerNode.js +13 -19
  423. package/nodes/procedural/CheckerNode.mjs +21 -0
  424. package/nodes/utils/ArrayElementNode.js +4 -8
  425. package/nodes/utils/ArrayElementNode.mjs +19 -0
  426. package/nodes/utils/ConvertNode.js +3 -8
  427. package/nodes/utils/ConvertNode.mjs +25 -0
  428. package/nodes/utils/JoinNode.js +7 -11
  429. package/nodes/utils/JoinNode.mjs +26 -0
  430. package/nodes/utils/MatcapUVNode.js +8 -11
  431. package/nodes/utils/MatcapUVNode.mjs +16 -0
  432. package/nodes/utils/OscNode.js +27 -33
  433. package/nodes/utils/OscNode.mjs +50 -0
  434. package/nodes/utils/SplitNode.js +6 -20
  435. package/nodes/utils/SplitNode.mjs +45 -0
  436. package/nodes/utils/SpriteSheetUVNode.js +23 -23
  437. package/nodes/utils/SpriteSheetUVNode.mjs +40 -0
  438. package/nodes/utils/TimerNode.js +20 -24
  439. package/nodes/utils/TimerNode.mjs +44 -0
  440. package/objects/GroundProjectedEnv.js +22 -37
  441. package/objects/GroundProjectedEnv.mjs +130 -0
  442. package/objects/Lensflare.js +86 -156
  443. package/objects/Lensflare.mjs +262 -0
  444. package/objects/LightningStorm.js +38 -102
  445. package/objects/LightningStorm.mjs +110 -0
  446. package/objects/MarchingCubes.js +150 -303
  447. package/objects/MarchingCubes.mjs +457 -0
  448. package/objects/Reflector.js +50 -72
  449. package/objects/Reflector.mjs +166 -0
  450. package/objects/ReflectorForSSRPass.js +80 -131
  451. package/objects/ReflectorForSSRPass.mjs +247 -0
  452. package/objects/ReflectorRTT.js +6 -7
  453. package/objects/ReflectorRTT.mjs +10 -0
  454. package/objects/Refractor.js +64 -106
  455. package/objects/Refractor.mjs +178 -0
  456. package/objects/ShadowMesh.js +8 -17
  457. package/objects/ShadowMesh.mjs +41 -0
  458. package/objects/Sky.js +119 -80
  459. package/objects/Sky.mjs +124 -0
  460. package/objects/Water.js +83 -127
  461. package/objects/Water.mjs +235 -0
  462. package/objects/Water2.js +72 -108
  463. package/objects/Water2.mjs +252 -0
  464. package/offscreen/jank.js +10 -14
  465. package/offscreen/jank.mjs +27 -0
  466. package/offscreen/offscreen.js +4 -5
  467. package/offscreen/offscreen.mjs +5 -0
  468. package/offscreen/scene.js +45 -48
  469. package/offscreen/scene.mjs +52 -0
  470. package/package.json +3 -3
  471. package/physics/AmmoPhysics.js +30 -71
  472. package/physics/AmmoPhysics.mjs +165 -0
  473. package/postprocessing/AdaptiveToneMappingPass.js +97 -123
  474. package/postprocessing/AdaptiveToneMappingPass.mjs +221 -0
  475. package/postprocessing/AfterimagePass.js +28 -49
  476. package/postprocessing/AfterimagePass.mjs +55 -0
  477. package/postprocessing/BloomPass.js +43 -69
  478. package/postprocessing/BloomPass.mjs +90 -0
  479. package/postprocessing/BokehPass.js +39 -69
  480. package/postprocessing/BokehPass.mjs +76 -0
  481. package/postprocessing/ClearPass.js +10 -25
  482. package/postprocessing/ClearPass.mjs +27 -0
  483. package/postprocessing/CubeTexturePass.js +28 -27
  484. package/postprocessing/CubeTexturePass.mjs +49 -0
  485. package/postprocessing/DotScreenPass.js +24 -32
  486. package/postprocessing/DotScreenPass.mjs +40 -0
  487. package/postprocessing/EffectComposer.js +39 -86
  488. package/postprocessing/EffectComposer.mjs +139 -0
  489. package/postprocessing/FilmPass.js +25 -30
  490. package/postprocessing/FilmPass.mjs +42 -0
  491. package/postprocessing/GlitchPass.js +38 -61
  492. package/postprocessing/GlitchPass.mjs +75 -0
  493. package/postprocessing/HalftonePass.js +19 -39
  494. package/postprocessing/HalftonePass.mjs +44 -0
  495. package/postprocessing/LUTPass.js +13 -38
  496. package/postprocessing/LUTPass.mjs +136 -0
  497. package/postprocessing/MaskPass.js +19 -38
  498. package/postprocessing/MaskPass.mjs +60 -0
  499. package/postprocessing/OutlinePass.js +135 -277
  500. package/postprocessing/OutlinePass.mjs +438 -0
  501. package/postprocessing/Pass.js +20 -44
  502. package/postprocessing/Pass.mjs +37 -0
  503. package/postprocessing/RenderPass.js +13 -36
  504. package/postprocessing/RenderPass.mjs +48 -0
  505. package/postprocessing/RenderPixelatedPass.js +44 -58
  506. package/postprocessing/RenderPixelatedPass.mjs +199 -0
  507. package/postprocessing/SAOPass.js +154 -189
  508. package/postprocessing/SAOPass.mjs +282 -0
  509. package/postprocessing/SMAAPass.js +64 -84
  510. package/postprocessing/SMAAPass.mjs +112 -0
  511. package/postprocessing/SSAARenderPass.js +121 -69
  512. package/postprocessing/SSAARenderPass.mjs +170 -0
  513. package/postprocessing/SSAOPass.js +123 -172
  514. package/postprocessing/SSAOPass.mjs +265 -0
  515. package/postprocessing/SSRPass.js +211 -280
  516. package/postprocessing/SSRPass.mjs +432 -0
  517. package/postprocessing/SavePass.js +20 -25
  518. package/postprocessing/SavePass.mjs +37 -0
  519. package/postprocessing/ShaderPass.js +14 -30
  520. package/postprocessing/ShaderPass.mjs +39 -0
  521. package/postprocessing/TAARenderPass.js +42 -61
  522. package/postprocessing/TAARenderPass.mjs +88 -0
  523. package/postprocessing/TexturePass.js +21 -22
  524. package/postprocessing/TexturePass.mjs +39 -0
  525. package/postprocessing/UnrealBloomPass.js +105 -213
  526. package/postprocessing/UnrealBloomPass.mjs +220 -0
  527. package/renderers/CSS2DRenderer.js +44 -56
  528. package/renderers/CSS2DRenderer.mjs +112 -0
  529. package/renderers/CSS3DRenderer.js +53 -86
  530. package/renderers/CSS3DRenderer.mjs +133 -0
  531. package/renderers/Projector.js +107 -274
  532. package/renderers/Projector.mjs +511 -0
  533. package/renderers/SVGRenderer.js +72 -182
  534. package/renderers/SVGRenderer.mjs +306 -0
  535. package/renderers/nodes/accessors/CameraNode.js +29 -40
  536. package/renderers/nodes/accessors/CameraNode.mjs +63 -0
  537. package/renderers/nodes/accessors/ModelNode.js +28 -37
  538. package/renderers/nodes/accessors/ModelNode.mjs +61 -0
  539. package/renderers/nodes/accessors/ModelViewProjectionNode.js +10 -23
  540. package/renderers/nodes/accessors/ModelViewProjectionNode.mjs +21 -0
  541. package/renderers/nodes/accessors/NormalNode.js +35 -45
  542. package/renderers/nodes/accessors/NormalNode.mjs +61 -0
  543. package/renderers/nodes/accessors/PositionNode.js +18 -19
  544. package/renderers/nodes/accessors/PositionNode.mjs +30 -0
  545. package/renderers/nodes/accessors/UVNode.js +5 -10
  546. package/renderers/nodes/accessors/UVNode.mjs +13 -0
  547. package/renderers/nodes/core/AttributeNode.js +5 -14
  548. package/renderers/nodes/core/AttributeNode.mjs +35 -0
  549. package/renderers/nodes/core/InputNode.js +4 -14
  550. package/renderers/nodes/core/InputNode.mjs +31 -0
  551. package/renderers/nodes/core/Node.js +7 -17
  552. package/renderers/nodes/core/Node.mjs +34 -0
  553. package/renderers/nodes/core/NodeAttribute.js +3 -6
  554. package/renderers/nodes/core/NodeAttribute.mjs +10 -0
  555. package/renderers/nodes/core/NodeBuilder.js +87 -154
  556. package/renderers/nodes/core/NodeBuilder.mjs +243 -0
  557. package/renderers/nodes/core/NodeFrame.js +9 -12
  558. package/renderers/nodes/core/NodeFrame.mjs +35 -0
  559. package/renderers/nodes/core/NodeSlot.js +2 -3
  560. package/renderers/nodes/core/NodeSlot.mjs +10 -0
  561. package/renderers/nodes/core/NodeUniform.js +4 -9
  562. package/renderers/nodes/core/NodeUniform.mjs +18 -0
  563. package/renderers/nodes/core/NodeVary.js +4 -7
  564. package/renderers/nodes/core/NodeVary.mjs +11 -0
  565. package/renderers/nodes/core/VaryNode.js +6 -12
  566. package/renderers/nodes/core/VaryNode.mjs +22 -0
  567. package/renderers/nodes/core/constants.js +16 -13
  568. package/renderers/nodes/core/constants.mjs +22 -0
  569. package/renderers/nodes/inputs/ColorNode.js +5 -11
  570. package/renderers/nodes/inputs/ColorNode.mjs +11 -0
  571. package/renderers/nodes/inputs/FloatNode.js +5 -11
  572. package/renderers/nodes/inputs/FloatNode.mjs +11 -0
  573. package/renderers/nodes/inputs/Matrix3Node.js +7 -13
  574. package/renderers/nodes/inputs/Matrix3Node.mjs +12 -0
  575. package/renderers/nodes/inputs/Matrix4Node.js +7 -13
  576. package/renderers/nodes/inputs/Matrix4Node.mjs +12 -0
  577. package/renderers/nodes/inputs/TextureNode.js +7 -15
  578. package/renderers/nodes/inputs/TextureNode.mjs +20 -0
  579. package/renderers/nodes/inputs/Vector2Node.js +5 -11
  580. package/renderers/nodes/inputs/Vector2Node.mjs +11 -0
  581. package/renderers/nodes/inputs/Vector3Node.js +7 -13
  582. package/renderers/nodes/inputs/Vector3Node.mjs +12 -0
  583. package/renderers/nodes/inputs/Vector4Node.js +7 -13
  584. package/renderers/nodes/inputs/Vector4Node.mjs +12 -0
  585. package/renderers/nodes/math/MathNode.js +20 -30
  586. package/renderers/nodes/math/MathNode.mjs +55 -0
  587. package/renderers/nodes/math/OperatorNode.js +4 -20
  588. package/renderers/nodes/math/OperatorNode.mjs +42 -0
  589. package/renderers/nodes/utils/SwitchNode.js +4 -9
  590. package/renderers/nodes/utils/SwitchNode.mjs +20 -0
  591. package/renderers/nodes/utils/TimerNode.js +5 -10
  592. package/renderers/nodes/utils/TimerNode.mjs +14 -0
  593. package/renderers/webgpu/WebGPU.js +14 -16
  594. package/renderers/webgpu/WebGPU.mjs +24 -0
  595. package/renderers/webgpu/WebGPUAttributes.js +16 -23
  596. package/renderers/webgpu/WebGPUAttributes.mjs +69 -0
  597. package/renderers/webgpu/WebGPUBackground.js +13 -30
  598. package/renderers/webgpu/WebGPUBackground.mjs +61 -0
  599. package/renderers/webgpu/WebGPUBinding.js +4 -7
  600. package/renderers/webgpu/WebGPUBinding.mjs +14 -0
  601. package/renderers/webgpu/WebGPUBindings.js +21 -57
  602. package/renderers/webgpu/WebGPUBindings.mjs +155 -0
  603. package/renderers/webgpu/WebGPUComputePipelines.js +14 -25
  604. package/renderers/webgpu/WebGPUComputePipelines.mjs +44 -0
  605. package/renderers/webgpu/WebGPUGeometries.js +5 -15
  606. package/renderers/webgpu/WebGPUGeometries.mjs +41 -0
  607. package/renderers/webgpu/WebGPUInfo.js +3 -8
  608. package/renderers/webgpu/WebGPUInfo.mjs +46 -0
  609. package/renderers/webgpu/WebGPUObjects.js +5 -10
  610. package/renderers/webgpu/WebGPUObjects.mjs +25 -0
  611. package/renderers/webgpu/WebGPUProperties.js +5 -11
  612. package/renderers/webgpu/WebGPUProperties.mjs +22 -0
  613. package/renderers/webgpu/WebGPURenderLists.js +20 -36
  614. package/renderers/webgpu/WebGPURenderLists.mjs +119 -0
  615. package/renderers/webgpu/WebGPURenderPipelines.js +260 -387
  616. package/renderers/webgpu/WebGPURenderPipelines.mjs +545 -0
  617. package/renderers/webgpu/WebGPURenderer.js +124 -262
  618. package/renderers/webgpu/WebGPURenderer.mjs +574 -0
  619. package/renderers/webgpu/WebGPUSampledTexture.js +18 -31
  620. package/renderers/webgpu/WebGPUSampledTexture.mjs +40 -0
  621. package/renderers/webgpu/WebGPUSampler.js +7 -12
  622. package/renderers/webgpu/WebGPUSampler.mjs +15 -0
  623. package/renderers/webgpu/WebGPUStorageBuffer.js +7 -12
  624. package/renderers/webgpu/WebGPUStorageBuffer.mjs +15 -0
  625. package/renderers/webgpu/WebGPUTextureRenderer.js +5 -11
  626. package/renderers/webgpu/WebGPUTextureRenderer.mjs +23 -0
  627. package/renderers/webgpu/WebGPUTextureUtils.js +29 -40
  628. package/renderers/webgpu/WebGPUTextureUtils.mjs +98 -0
  629. package/renderers/webgpu/WebGPUTextures.js +186 -333
  630. package/renderers/webgpu/WebGPUTextures.mjs +484 -0
  631. package/renderers/webgpu/WebGPUUniform.js +25 -51
  632. package/renderers/webgpu/WebGPUUniform.mjs +81 -0
  633. package/renderers/webgpu/WebGPUUniformsGroup.js +32 -72
  634. package/renderers/webgpu/WebGPUUniformsGroup.mjs +176 -0
  635. package/renderers/webgpu/constants.js +190 -181
  636. package/renderers/webgpu/constants.mjs +230 -0
  637. package/renderers/webgpu/nodes/ShaderLib.js +2 -2
  638. package/renderers/webgpu/nodes/ShaderLib.mjs +42 -0
  639. package/renderers/webgpu/nodes/WebGPUNodeBuilder.js +53 -124
  640. package/renderers/webgpu/nodes/WebGPUNodeBuilder.mjs +165 -0
  641. package/renderers/webgpu/nodes/WebGPUNodeUniform.js +17 -31
  642. package/renderers/webgpu/nodes/WebGPUNodeUniform.mjs +73 -0
  643. package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +8 -9
  644. package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.mjs +15 -0
  645. package/renderers/webgpu/nodes/WebGPUNodes.js +7 -45
  646. package/renderers/webgpu/nodes/WebGPUNodes.mjs +40 -0
  647. package/shaders/ACESFilmicToneMappingShader.js +44 -24
  648. package/shaders/ACESFilmicToneMappingShader.mjs +48 -0
  649. package/shaders/AfterimageShader.js +28 -18
  650. package/shaders/AfterimageShader.mjs +32 -0
  651. package/shaders/BasicShader.js +9 -7
  652. package/shaders/BasicShader.mjs +12 -0
  653. package/shaders/BleachBypassShader.js +31 -15
  654. package/shaders/BleachBypassShader.mjs +35 -0
  655. package/shaders/BlendShader.js +26 -19
  656. package/shaders/BlendShader.mjs +30 -0
  657. package/shaders/BokehShader.js +98 -36
  658. package/shaders/BokehShader.mjs +106 -0
  659. package/shaders/BokehShader2.js +261 -90
  660. package/shaders/BokehShader2.mjs +269 -0
  661. package/shaders/BrightnessContrastShader.js +28 -19
  662. package/shaders/BrightnessContrastShader.mjs +32 -0
  663. package/shaders/ColorCorrectionShader.js +26 -22
  664. package/shaders/ColorCorrectionShader.mjs +30 -0
  665. package/shaders/ColorifyShader.js +24 -16
  666. package/shaders/ColorifyShader.mjs +28 -0
  667. package/shaders/ConvolutionShader.js +40 -36
  668. package/shaders/ConvolutionShader.mjs +55 -0
  669. package/shaders/CopyShader.js +21 -13
  670. package/shaders/CopyShader.mjs +25 -0
  671. package/shaders/DOFMipMapShader.js +28 -21
  672. package/shaders/DOFMipMapShader.mjs +32 -0
  673. package/shaders/DepthLimitedBlurShader.js +85 -40
  674. package/shaders/DepthLimitedBlurShader.mjs +114 -0
  675. package/shaders/DigitalGlitch.js +74 -46
  676. package/shaders/DigitalGlitch.mjs +78 -0
  677. package/shaders/DotScreenShader.js +35 -27
  678. package/shaders/DotScreenShader.mjs +39 -0
  679. package/shaders/FXAAShader.js +1094 -19
  680. package/shaders/FXAAShader.mjs +1098 -0
  681. package/shaders/FilmShader.js +38 -52
  682. package/shaders/FilmShader.mjs +42 -0
  683. package/shaders/FocusShader.js +51 -24
  684. package/shaders/FocusShader.mjs +55 -0
  685. package/shaders/FreiChenShader.js +57 -24
  686. package/shaders/FreiChenShader.mjs +61 -0
  687. package/shaders/FresnelShader.js +43 -22
  688. package/shaders/FresnelShader.mjs +47 -0
  689. package/shaders/GammaCorrectionShader.js +19 -11
  690. package/shaders/GammaCorrectionShader.mjs +23 -0
  691. package/shaders/GodRaysShader.js +103 -94
  692. package/shaders/GodRaysShader.mjs +146 -0
  693. package/shaders/HalftoneShader.js +208 -65
  694. package/shaders/HalftoneShader.mjs +212 -0
  695. package/shaders/HorizontalBlurShader.js +7 -23
  696. package/shaders/HorizontalBlurShader.mjs +43 -0
  697. package/shaders/HorizontalTiltShiftShader.js +33 -21
  698. package/shaders/HorizontalTiltShiftShader.mjs +37 -0
  699. package/shaders/HueSaturationShader.js +37 -21
  700. package/shaders/HueSaturationShader.mjs +41 -0
  701. package/shaders/KaleidoShader.js +30 -22
  702. package/shaders/KaleidoShader.mjs +34 -0
  703. package/shaders/LuminosityHighPassShader.js +33 -27
  704. package/shaders/LuminosityHighPassShader.mjs +37 -0
  705. package/shaders/LuminosityShader.js +21 -11
  706. package/shaders/LuminosityShader.mjs +25 -0
  707. package/shaders/MirrorShader.js +31 -16
  708. package/shaders/MirrorShader.mjs +35 -0
  709. package/shaders/NormalMapShader.js +27 -23
  710. package/shaders/NormalMapShader.mjs +31 -0
  711. package/shaders/ParallaxShader.js +107 -48
  712. package/shaders/ParallaxShader.mjs +113 -0
  713. package/shaders/PixelShader.js +24 -16
  714. package/shaders/PixelShader.mjs +28 -0
  715. package/shaders/RGBShiftShader.js +26 -22
  716. package/shaders/RGBShiftShader.mjs +30 -0
  717. package/shaders/SAOShader.js +132 -48
  718. package/shaders/SAOShader.mjs +144 -0
  719. package/shaders/SMAAShader.js +256 -135
  720. package/shaders/SMAAShader.mjs +272 -0
  721. package/shaders/SSAOShader.js +153 -81
  722. package/shaders/SSAOShader.mjs +172 -0
  723. package/shaders/SSRShader.js +32 -87
  724. package/shaders/SSRShader.mjs +324 -0
  725. package/shaders/SepiaShader.js +25 -15
  726. package/shaders/SepiaShader.mjs +29 -0
  727. package/shaders/SobelOperatorShader.js +40 -29
  728. package/shaders/SobelOperatorShader.mjs +44 -0
  729. package/shaders/SubsurfaceScatteringShader.js +53 -39
  730. package/shaders/SubsurfaceScatteringShader.mjs +59 -0
  731. package/shaders/TechnicolorShader.js +20 -13
  732. package/shaders/TechnicolorShader.mjs +24 -0
  733. package/shaders/ToneMapShader.js +44 -28
  734. package/shaders/ToneMapShader.mjs +48 -0
  735. package/shaders/ToonShader.js +172 -96
  736. package/shaders/ToonShader.mjs +188 -0
  737. package/shaders/TriangleBlurShader.js +32 -23
  738. package/shaders/TriangleBlurShader.mjs +36 -0
  739. package/shaders/UnpackDepthRGBAShader.js +22 -14
  740. package/shaders/UnpackDepthRGBAShader.mjs +26 -0
  741. package/shaders/VerticalBlurShader.js +7 -23
  742. package/shaders/VerticalBlurShader.mjs +44 -0
  743. package/shaders/VerticalTiltShiftShader.js +33 -21
  744. package/shaders/VerticalTiltShiftShader.mjs +37 -0
  745. package/shaders/VignetteShader.js +24 -28
  746. package/shaders/VignetteShader.mjs +28 -0
  747. package/shaders/VolumeShader.js +174 -77
  748. package/shaders/VolumeShader.mjs +178 -0
  749. package/shaders/WaterRefractionShader.js +38 -6
  750. package/shaders/WaterRefractionShader.mjs +57 -0
  751. package/shaders/types.js +1 -1
  752. package/{custom.d.js → shaders/types.mjs} +0 -0
  753. package/textures/FlakesTexture.js +8 -10
  754. package/textures/FlakesTexture.mjs +30 -0
  755. package/types/helpers.js +3 -2
  756. package/types/helpers.mjs +4 -0
  757. package/utils/BufferGeometryUtils.js +251 -325
  758. package/utils/BufferGeometryUtils.mjs +570 -0
  759. package/utils/GeometryCompressionUtils.js +241 -239
  760. package/utils/GeometryCompressionUtils.mjs +547 -0
  761. package/utils/GeometryUtils.js +41 -94
  762. package/utils/GeometryUtils.mjs +108 -0
  763. package/utils/RoughnessMipmapper.js +38 -82
  764. package/utils/RoughnessMipmapper.mjs +213 -0
  765. package/utils/SceneUtils.js +15 -20
  766. package/utils/SceneUtils.mjs +36 -0
  767. package/utils/ShadowMapViewer.js +49 -95
  768. package/utils/ShadowMapViewer.mjs +114 -0
  769. package/utils/SkeletonUtils.js +74 -165
  770. package/utils/SkeletonUtils.mjs +292 -0
  771. package/utils/UVsDebug.js +32 -62
  772. package/utils/UVsDebug.mjs +85 -0
  773. package/utils/WorkerPool.js +13 -33
  774. package/utils/WorkerPool.mjs +62 -0
  775. package/webxr/ARButton.js +72 -98
  776. package/webxr/ARButton.mjs +119 -0
  777. package/webxr/OculusHandModel.js +18 -37
  778. package/webxr/OculusHandModel.mjs +71 -0
  779. package/webxr/OculusHandPointerModel.js +58 -80
  780. package/webxr/OculusHandPointerModel.mjs +207 -0
  781. package/webxr/Text2D.js +37 -19
  782. package/webxr/Text2D.mjs +31 -0
  783. package/webxr/VRButton.js +59 -90
  784. package/webxr/VRButton.mjs +105 -0
  785. package/webxr/XRControllerModelFactory.js +58 -116
  786. package/webxr/XRControllerModelFactory.mjs +146 -0
  787. package/webxr/XREstimatedLight.js +39 -66
  788. package/webxr/XREstimatedLight.mjs +126 -0
  789. package/webxr/XRHandMeshModel.js +40 -29
  790. package/webxr/XRHandMeshModel.mjs +73 -0
  791. package/webxr/XRHandModelFactory.js +28 -31
  792. package/webxr/XRHandModelFactory.mjs +61 -0
  793. package/webxr/XRHandPrimitiveModel.js +41 -27
  794. package/webxr/XRHandPrimitiveModel.mjs +68 -0
  795. package/BufferGeometryUtils-1a7a235c.js +0 -655
  796. package/BufferGeometryUtils-971dfde3.js +0 -1
  797. package/Nodes-4f766d71.js +0 -471
  798. package/Nodes-9aa16d74.js +0 -1
  799. package/animation/AnimationClipCreator.cjs.js +0 -1
  800. package/animation/CCDIKSolver.cjs.js +0 -1
  801. package/animation/MMDAnimationHelper.cjs.js +0 -1
  802. package/animation/MMDPhysics.cjs.js +0 -1
  803. package/cameras/CinematicCamera.cjs.js +0 -1
  804. package/controls/ArcballControls.cjs.js +0 -1
  805. package/controls/DeviceOrientationControls.cjs.js +0 -1
  806. package/controls/DragControls.cjs.js +0 -1
  807. package/controls/FirstPersonControls.cjs.js +0 -1
  808. package/controls/FlyControls.cjs.js +0 -1
  809. package/controls/OrbitControls.cjs.js +0 -1
  810. package/controls/PointerLockControls.cjs.js +0 -1
  811. package/controls/TrackballControls.cjs.js +0 -1
  812. package/controls/TransformControls.cjs.js +0 -1
  813. package/controls/experimental/CameraControls.cjs.js +0 -1
  814. package/csm/CSM.cjs.js +0 -1
  815. package/csm/CSMFrustum.cjs.js +0 -1
  816. package/csm/CSMHelper.cjs.js +0 -1
  817. package/csm/CSMShader.cjs.js +0 -1
  818. package/curves/CurveExtras.cjs.js +0 -1
  819. package/curves/NURBSCurve.cjs.js +0 -1
  820. package/curves/NURBSSurface.cjs.js +0 -1
  821. package/curves/NURBSUtils.cjs.js +0 -1
  822. package/custom.d.cjs.js +0 -1
  823. package/deprecated/Geometry.cjs.js +0 -1
  824. package/effects/AnaglyphEffect.cjs.js +0 -1
  825. package/effects/AsciiEffect.cjs.js +0 -1
  826. package/effects/OutlineEffect.cjs.js +0 -1
  827. package/effects/ParallaxBarrierEffect.cjs.js +0 -1
  828. package/effects/PeppersGhostEffect.cjs.js +0 -1
  829. package/effects/StereoEffect.cjs.js +0 -1
  830. package/environments/RoomEnvironment.cjs.js +0 -1
  831. package/exporters/ColladaExporter.cjs.js +0 -1
  832. package/exporters/DRACOExporter.cjs.js +0 -1
  833. package/exporters/GLTFExporter.cjs.js +0 -1
  834. package/exporters/MMDExporter.cjs.js +0 -1
  835. package/exporters/OBJExporter.cjs.js +0 -1
  836. package/exporters/PLYExporter.cjs.js +0 -1
  837. package/exporters/STLExporter.cjs.js +0 -1
  838. package/exporters/USDZExporter.cjs.js +0 -1
  839. package/geometries/BoxLineGeometry.cjs.js +0 -1
  840. package/geometries/ConvexGeometry.cjs.js +0 -1
  841. package/geometries/DecalGeometry.cjs.js +0 -1
  842. package/geometries/LightningStrike.cjs.js +0 -1
  843. package/geometries/ParametricGeometries.cjs.js +0 -1
  844. package/geometries/ParametricGeometry.cjs.js +0 -1
  845. package/geometries/RoundedBoxGeometry.cjs.js +0 -1
  846. package/geometries/TeapotGeometry.cjs.js +0 -1
  847. package/geometries/TextGeometry.cjs.js +0 -1
  848. package/helpers/LightProbeHelper.cjs.js +0 -1
  849. package/helpers/PositionalAudioHelper.cjs.js +0 -1
  850. package/helpers/RectAreaLightHelper.cjs.js +0 -1
  851. package/helpers/VertexNormalsHelper.cjs.js +0 -1
  852. package/helpers/VertexTangentsHelper.cjs.js +0 -1
  853. package/index.cjs.js +0 -1
  854. package/interactive/InteractiveGroup.cjs.js +0 -1
  855. package/interactive/InteractiveGroup.d.ts +0 -5
  856. package/interactive/InteractiveGroup.js +0 -87
  857. package/interactive/SelectionBox.cjs.js +0 -1
  858. package/interactive/SelectionHelper.cjs.js +0 -1
  859. package/libs/MeshoptDecoder.cjs.js +0 -1
  860. package/libs/MotionControllers.cjs.js +0 -1
  861. package/lights/LightProbeGenerator.cjs.js +0 -1
  862. package/lights/RectAreaLightUniformsLib.cjs.js +0 -1
  863. package/lines/Line2.cjs.js +0 -1
  864. package/lines/LineGeometry.cjs.js +0 -1
  865. package/lines/LineMaterial.cjs.js +0 -1
  866. package/lines/LineSegments2.cjs.js +0 -1
  867. package/lines/LineSegmentsGeometry.cjs.js +0 -1
  868. package/lines/Wireframe.cjs.js +0 -1
  869. package/lines/WireframeGeometry2.cjs.js +0 -1
  870. package/loaders/3DMLoader.cjs.js +0 -1
  871. package/loaders/3MFLoader.cjs.js +0 -1
  872. package/loaders/AMFLoader.cjs.js +0 -1
  873. package/loaders/AssimpLoader.cjs.js +0 -1
  874. package/loaders/BVHLoader.cjs.js +0 -1
  875. package/loaders/BasisTextureLoader.cjs.js +0 -1
  876. package/loaders/ColladaLoader.cjs.js +0 -1
  877. package/loaders/DDSLoader.cjs.js +0 -1
  878. package/loaders/DRACOLoader.cjs.js +0 -1
  879. package/loaders/EXRLoader.cjs.js +0 -1
  880. package/loaders/FBXLoader.cjs.js +0 -1
  881. package/loaders/FontLoader.cjs.js +0 -1
  882. package/loaders/GCodeLoader.cjs.js +0 -1
  883. package/loaders/GLTFLoader.cjs.js +0 -1
  884. package/loaders/HDRCubeTextureLoader.cjs.js +0 -1
  885. package/loaders/KMZLoader.cjs.js +0 -1
  886. package/loaders/KTX2Loader.cjs.js +0 -1
  887. package/loaders/KTXLoader.cjs.js +0 -1
  888. package/loaders/LDrawLoader.cjs.js +0 -1
  889. package/loaders/LUT3dlLoader.cjs.js +0 -1
  890. package/loaders/LUTCubeLoader.cjs.js +0 -1
  891. package/loaders/LWOLoader.cjs.js +0 -1
  892. package/loaders/LottieLoader.cjs.js +0 -1
  893. package/loaders/MD2Loader.cjs.js +0 -1
  894. package/loaders/MDDLoader.cjs.js +0 -1
  895. package/loaders/MMDLoader.cjs.js +0 -1
  896. package/loaders/MTLLoader.cjs.js +0 -1
  897. package/loaders/NRRDLoader.cjs.js +0 -1
  898. package/loaders/NodeMaterialLoader.cjs.js +0 -1
  899. package/loaders/OBJLoader.cjs.js +0 -1
  900. package/loaders/PCDLoader.cjs.js +0 -1
  901. package/loaders/PDBLoader.cjs.js +0 -1
  902. package/loaders/PLYLoader.cjs.js +0 -1
  903. package/loaders/PRWMLoader.cjs.js +0 -1
  904. package/loaders/PVRLoader.cjs.js +0 -1
  905. package/loaders/RGBELoader.cjs.js +0 -1
  906. package/loaders/RGBMLoader.cjs.js +0 -1
  907. package/loaders/STLLoader.cjs.js +0 -1
  908. package/loaders/SVGLoader.cjs.js +0 -1
  909. package/loaders/TDSLoader.cjs.js +0 -1
  910. package/loaders/TGALoader.cjs.js +0 -1
  911. package/loaders/TTFLoader.cjs.js +0 -1
  912. package/loaders/TiltLoader.cjs.js +0 -1
  913. package/loaders/VOXLoader.cjs.js +0 -1
  914. package/loaders/VRMLLoader.cjs.js +0 -1
  915. package/loaders/VRMLoader.cjs.js +0 -1
  916. package/loaders/VTKLoader.cjs.js +0 -1
  917. package/loaders/XLoader.cjs.js +0 -1
  918. package/loaders/XYZLoader.cjs.js +0 -1
  919. package/loaders/lwo/IFFParser.cjs.js +0 -1
  920. package/loaders/lwo/LWO2Parser.cjs.js +0 -1
  921. package/loaders/lwo/LWO3Parser.cjs.js +0 -1
  922. package/math/Capsule.cjs.js +0 -1
  923. package/math/ColorConverter.cjs.js +0 -1
  924. package/math/ConvexHull.cjs.js +0 -1
  925. package/math/ImprovedNoise.cjs.js +0 -1
  926. package/math/Lut.cjs.js +0 -1
  927. package/math/MeshSurfaceSampler.cjs.js +0 -1
  928. package/math/OBB.cjs.js +0 -1
  929. package/math/Octree.cjs.js +0 -1
  930. package/math/SimplexNoise.cjs.js +0 -1
  931. package/misc/ConvexObjectBreaker.cjs.js +0 -1
  932. package/misc/GPUComputationRenderer.cjs.js +0 -1
  933. package/misc/Gyroscope.cjs.js +0 -1
  934. package/misc/MD2Character.cjs.js +0 -1
  935. package/misc/MD2CharacterComplex.cjs.js +0 -1
  936. package/misc/MorphAnimMesh.cjs.js +0 -1
  937. package/misc/MorphBlendMesh.cjs.js +0 -1
  938. package/misc/ProgressiveLightmap.cjs.js +0 -1
  939. package/misc/RollerCoaster.cjs.js +0 -1
  940. package/misc/TubePainter.cjs.js +0 -1
  941. package/misc/Volume.cjs.js +0 -1
  942. package/misc/VolumeSlice.cjs.js +0 -1
  943. package/misc/WebGL.cjs.js +0 -1
  944. package/modifiers/CurveModifier.cjs.js +0 -1
  945. package/modifiers/EdgeSplitModifier.cjs.js +0 -1
  946. package/modifiers/SimplifyModifier.cjs.js +0 -1
  947. package/modifiers/TessellateModifier.cjs.js +0 -1
  948. package/nodes/Nodes.cjs.js +0 -1
  949. package/nodes/ShaderNode.cjs.js +0 -1
  950. package/nodes/accessors/BufferNode.cjs.js +0 -1
  951. package/nodes/accessors/CameraNode.cjs.js +0 -1
  952. package/nodes/accessors/CubeTextureNode.cjs.js +0 -1
  953. package/nodes/accessors/MaterialNode.cjs.js +0 -1
  954. package/nodes/accessors/MaterialReferenceNode.cjs.js +0 -1
  955. package/nodes/accessors/ModelNode.cjs.js +0 -1
  956. package/nodes/accessors/ModelViewProjectionNode.cjs.js +0 -1
  957. package/nodes/accessors/NormalNode.cjs.js +0 -1
  958. package/nodes/accessors/Object3DNode.cjs.js +0 -1
  959. package/nodes/accessors/PointUVNode.cjs.js +0 -1
  960. package/nodes/accessors/PositionNode.cjs.js +0 -1
  961. package/nodes/accessors/ReferenceNode.cjs.js +0 -1
  962. package/nodes/accessors/ReflectNode.cjs.js +0 -1
  963. package/nodes/accessors/SkinningNode.cjs.js +0 -1
  964. package/nodes/accessors/TextureNode.cjs.js +0 -1
  965. package/nodes/accessors/UVNode.cjs.js +0 -1
  966. package/nodes/core/ArrayUniformNode.cjs.js +0 -1
  967. package/nodes/core/AttributeNode.cjs.js +0 -1
  968. package/nodes/core/BypassNode.cjs.js +0 -1
  969. package/nodes/core/CodeNode.cjs.js +0 -1
  970. package/nodes/core/ConstNode.cjs.js +0 -1
  971. package/nodes/core/ContextNode.cjs.js +0 -1
  972. package/nodes/core/ExpressionNode.cjs.js +0 -1
  973. package/nodes/core/FunctionCallNode.cjs.js +0 -1
  974. package/nodes/core/FunctionNode.cjs.js +0 -1
  975. package/nodes/core/InputNode.cjs.js +0 -1
  976. package/nodes/core/Node.cjs.js +0 -1
  977. package/nodes/core/NodeAttribute.cjs.js +0 -1
  978. package/nodes/core/NodeBuilder.cjs.js +0 -1
  979. package/nodes/core/NodeCode.cjs.js +0 -1
  980. package/nodes/core/NodeFrame.cjs.js +0 -1
  981. package/nodes/core/NodeFunction.cjs.js +0 -1
  982. package/nodes/core/NodeFunction.js +0 -17
  983. package/nodes/core/NodeFunctionInput.cjs.js +0 -1
  984. package/nodes/core/NodeKeywords.cjs.js +0 -1
  985. package/nodes/core/NodeParser.cjs.js +0 -1
  986. package/nodes/core/NodeParser.js +0 -8
  987. package/nodes/core/NodeUniform.cjs.js +0 -1
  988. package/nodes/core/NodeUtils.cjs.js +0 -1
  989. package/nodes/core/NodeVar.cjs.js +0 -1
  990. package/nodes/core/NodeVary.cjs.js +0 -1
  991. package/nodes/core/PropertyNode.cjs.js +0 -1
  992. package/nodes/core/TempNode.cjs.js +0 -1
  993. package/nodes/core/UniformNode.cjs.js +0 -1
  994. package/nodes/core/VarNode.cjs.js +0 -1
  995. package/nodes/core/VaryNode.cjs.js +0 -1
  996. package/nodes/core/constants.cjs.js +0 -1
  997. package/nodes/display/ColorSpaceNode.cjs.js +0 -1
  998. package/nodes/display/NormalMapNode.cjs.js +0 -1
  999. package/nodes/fog/FogNode.cjs.js +0 -1
  1000. package/nodes/fog/FogRangeNode.cjs.js +0 -1
  1001. package/nodes/functions/BSDFs.cjs.js +0 -1
  1002. package/nodes/functions/PhysicalMaterialFunctions.cjs.js +0 -1
  1003. package/nodes/functions/PhysicalMaterialFunctions.js +0 -57
  1004. package/nodes/lights/LightContextNode.cjs.js +0 -1
  1005. package/nodes/lights/LightNode.cjs.js +0 -1
  1006. package/nodes/lights/LightsNode.cjs.js +0 -1
  1007. package/nodes/loaders/NodeLoader.cjs.js +0 -1
  1008. package/nodes/loaders/NodeMaterialLoader.cjs.js +0 -1
  1009. package/nodes/loaders/NodeObjectLoader.cjs.js +0 -1
  1010. package/nodes/materials/LineBasicNodeMaterial.cjs.js +0 -1
  1011. package/nodes/materials/Materials.cjs.js +0 -1
  1012. package/nodes/materials/MeshBasicNodeMaterial.cjs.js +0 -1
  1013. package/nodes/materials/MeshStandardNodeMaterial.cjs.js +0 -1
  1014. package/nodes/materials/NodeMaterial.cjs.js +0 -1
  1015. package/nodes/materials/PointsNodeMaterial.cjs.js +0 -1
  1016. package/nodes/math/CondNode.cjs.js +0 -1
  1017. package/nodes/math/MathNode.cjs.js +0 -1
  1018. package/nodes/math/OperatorNode.cjs.js +0 -1
  1019. package/nodes/parsers/GLSLNodeFunction.cjs.js +0 -1
  1020. package/nodes/parsers/GLSLNodeFunction.js +0 -101
  1021. package/nodes/parsers/GLSLNodeParser.cjs.js +0 -1
  1022. package/nodes/parsers/GLSLNodeParser.js +0 -13
  1023. package/nodes/parsers/WGSLNodeFunction.cjs.js +0 -1
  1024. package/nodes/parsers/WGSLNodeFunction.js +0 -71
  1025. package/nodes/parsers/WGSLNodeParser.cjs.js +0 -1
  1026. package/nodes/parsers/WGSLNodeParser.js +0 -13
  1027. package/nodes/procedural/CheckerNode.cjs.js +0 -1
  1028. package/nodes/utils/ArrayElementNode.cjs.js +0 -1
  1029. package/nodes/utils/ConvertNode.cjs.js +0 -1
  1030. package/nodes/utils/JoinNode.cjs.js +0 -1
  1031. package/nodes/utils/MatcapUVNode.cjs.js +0 -1
  1032. package/nodes/utils/OscNode.cjs.js +0 -1
  1033. package/nodes/utils/SplitNode.cjs.js +0 -1
  1034. package/nodes/utils/SpriteSheetUVNode.cjs.js +0 -1
  1035. package/nodes/utils/TimerNode.cjs.js +0 -1
  1036. package/objects/GroundProjectedEnv.cjs.js +0 -1
  1037. package/objects/Lensflare.cjs.js +0 -1
  1038. package/objects/LightningStorm.cjs.js +0 -1
  1039. package/objects/MarchingCubes.cjs.js +0 -1
  1040. package/objects/Reflector.cjs.js +0 -1
  1041. package/objects/ReflectorForSSRPass.cjs.js +0 -1
  1042. package/objects/ReflectorRTT.cjs.js +0 -1
  1043. package/objects/Refractor.cjs.js +0 -1
  1044. package/objects/ShadowMesh.cjs.js +0 -1
  1045. package/objects/Sky.cjs.js +0 -1
  1046. package/objects/Water.cjs.js +0 -1
  1047. package/objects/Water2.cjs.js +0 -1
  1048. package/offscreen/jank.cjs.js +0 -1
  1049. package/offscreen/offscreen.cjs.js +0 -1
  1050. package/offscreen/scene.cjs.js +0 -1
  1051. package/physics/AmmoPhysics.cjs.js +0 -1
  1052. package/postprocessing/AdaptiveToneMappingPass.cjs.js +0 -1
  1053. package/postprocessing/AfterimagePass.cjs.js +0 -1
  1054. package/postprocessing/BloomPass.cjs.js +0 -1
  1055. package/postprocessing/BokehPass.cjs.js +0 -1
  1056. package/postprocessing/ClearPass.cjs.js +0 -1
  1057. package/postprocessing/CubeTexturePass.cjs.js +0 -1
  1058. package/postprocessing/DotScreenPass.cjs.js +0 -1
  1059. package/postprocessing/EffectComposer.cjs.js +0 -1
  1060. package/postprocessing/FilmPass.cjs.js +0 -1
  1061. package/postprocessing/GlitchPass.cjs.js +0 -1
  1062. package/postprocessing/HalftonePass.cjs.js +0 -1
  1063. package/postprocessing/LUTPass.cjs.js +0 -1
  1064. package/postprocessing/MaskPass.cjs.js +0 -1
  1065. package/postprocessing/OutlinePass.cjs.js +0 -1
  1066. package/postprocessing/Pass.cjs.js +0 -1
  1067. package/postprocessing/RenderPass.cjs.js +0 -1
  1068. package/postprocessing/RenderPixelatedPass.cjs.js +0 -1
  1069. package/postprocessing/SAOPass.cjs.js +0 -1
  1070. package/postprocessing/SMAAPass.cjs.js +0 -1
  1071. package/postprocessing/SSAARenderPass.cjs.js +0 -1
  1072. package/postprocessing/SSAOPass.cjs.js +0 -1
  1073. package/postprocessing/SSRPass.cjs.js +0 -1
  1074. package/postprocessing/SavePass.cjs.js +0 -1
  1075. package/postprocessing/ShaderPass.cjs.js +0 -1
  1076. package/postprocessing/TAARenderPass.cjs.js +0 -1
  1077. package/postprocessing/TexturePass.cjs.js +0 -1
  1078. package/postprocessing/UnrealBloomPass.cjs.js +0 -1
  1079. package/renderers/CSS2DRenderer.cjs.js +0 -1
  1080. package/renderers/CSS3DRenderer.cjs.js +0 -1
  1081. package/renderers/Projector.cjs.js +0 -1
  1082. package/renderers/SVGRenderer.cjs.js +0 -1
  1083. package/renderers/nodes/accessors/CameraNode.cjs.js +0 -1
  1084. package/renderers/nodes/accessors/ModelNode.cjs.js +0 -1
  1085. package/renderers/nodes/accessors/ModelViewProjectionNode.cjs.js +0 -1
  1086. package/renderers/nodes/accessors/NormalNode.cjs.js +0 -1
  1087. package/renderers/nodes/accessors/PositionNode.cjs.js +0 -1
  1088. package/renderers/nodes/accessors/UVNode.cjs.js +0 -1
  1089. package/renderers/nodes/core/AttributeNode.cjs.js +0 -1
  1090. package/renderers/nodes/core/InputNode.cjs.js +0 -1
  1091. package/renderers/nodes/core/Node.cjs.js +0 -1
  1092. package/renderers/nodes/core/NodeAttribute.cjs.js +0 -1
  1093. package/renderers/nodes/core/NodeBuilder.cjs.js +0 -1
  1094. package/renderers/nodes/core/NodeFrame.cjs.js +0 -1
  1095. package/renderers/nodes/core/NodeSlot.cjs.js +0 -1
  1096. package/renderers/nodes/core/NodeUniform.cjs.js +0 -1
  1097. package/renderers/nodes/core/NodeVary.cjs.js +0 -1
  1098. package/renderers/nodes/core/VaryNode.cjs.js +0 -1
  1099. package/renderers/nodes/core/constants.cjs.js +0 -1
  1100. package/renderers/nodes/inputs/ColorNode.cjs.js +0 -1
  1101. package/renderers/nodes/inputs/FloatNode.cjs.js +0 -1
  1102. package/renderers/nodes/inputs/Matrix3Node.cjs.js +0 -1
  1103. package/renderers/nodes/inputs/Matrix4Node.cjs.js +0 -1
  1104. package/renderers/nodes/inputs/TextureNode.cjs.js +0 -1
  1105. package/renderers/nodes/inputs/Vector2Node.cjs.js +0 -1
  1106. package/renderers/nodes/inputs/Vector3Node.cjs.js +0 -1
  1107. package/renderers/nodes/inputs/Vector4Node.cjs.js +0 -1
  1108. package/renderers/nodes/math/MathNode.cjs.js +0 -1
  1109. package/renderers/nodes/math/OperatorNode.cjs.js +0 -1
  1110. package/renderers/nodes/utils/SwitchNode.cjs.js +0 -1
  1111. package/renderers/nodes/utils/TimerNode.cjs.js +0 -1
  1112. package/renderers/webgpu/WebGPU.cjs.js +0 -1
  1113. package/renderers/webgpu/WebGPUAttributes.cjs.js +0 -1
  1114. package/renderers/webgpu/WebGPUBackground.cjs.js +0 -1
  1115. package/renderers/webgpu/WebGPUBinding.cjs.js +0 -1
  1116. package/renderers/webgpu/WebGPUBindings.cjs.js +0 -1
  1117. package/renderers/webgpu/WebGPUComputePipelines.cjs.js +0 -1
  1118. package/renderers/webgpu/WebGPUGeometries.cjs.js +0 -1
  1119. package/renderers/webgpu/WebGPUInfo.cjs.js +0 -1
  1120. package/renderers/webgpu/WebGPUObjects.cjs.js +0 -1
  1121. package/renderers/webgpu/WebGPUProperties.cjs.js +0 -1
  1122. package/renderers/webgpu/WebGPURenderLists.cjs.js +0 -1
  1123. package/renderers/webgpu/WebGPURenderPipelines.cjs.js +0 -1
  1124. package/renderers/webgpu/WebGPURenderer.cjs.js +0 -1
  1125. package/renderers/webgpu/WebGPUSampledTexture.cjs.js +0 -1
  1126. package/renderers/webgpu/WebGPUSampler.cjs.js +0 -1
  1127. package/renderers/webgpu/WebGPUStorageBuffer.cjs.js +0 -1
  1128. package/renderers/webgpu/WebGPUTextureRenderer.cjs.js +0 -1
  1129. package/renderers/webgpu/WebGPUTextureUtils.cjs.js +0 -1
  1130. package/renderers/webgpu/WebGPUTextures.cjs.js +0 -1
  1131. package/renderers/webgpu/WebGPUUniform.cjs.js +0 -1
  1132. package/renderers/webgpu/WebGPUUniformsGroup.cjs.js +0 -1
  1133. package/renderers/webgpu/constants.cjs.js +0 -1
  1134. package/renderers/webgpu/nodes/ShaderLib.cjs.js +0 -1
  1135. package/renderers/webgpu/nodes/WebGPUNodeBuilder.cjs.js +0 -1
  1136. package/renderers/webgpu/nodes/WebGPUNodeUniform.cjs.js +0 -1
  1137. package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.cjs.js +0 -1
  1138. package/renderers/webgpu/nodes/WebGPUNodes.cjs.js +0 -1
  1139. package/shaders/ACESFilmicToneMappingShader.cjs.js +0 -1
  1140. package/shaders/AfterimageShader.cjs.js +0 -1
  1141. package/shaders/BasicShader.cjs.js +0 -1
  1142. package/shaders/BleachBypassShader.cjs.js +0 -1
  1143. package/shaders/BlendShader.cjs.js +0 -1
  1144. package/shaders/BokehShader.cjs.js +0 -1
  1145. package/shaders/BokehShader2.cjs.js +0 -1
  1146. package/shaders/BrightnessContrastShader.cjs.js +0 -1
  1147. package/shaders/ColorCorrectionShader.cjs.js +0 -1
  1148. package/shaders/ColorifyShader.cjs.js +0 -1
  1149. package/shaders/ConvolutionShader.cjs.js +0 -1
  1150. package/shaders/CopyShader.cjs.js +0 -1
  1151. package/shaders/DOFMipMapShader.cjs.js +0 -1
  1152. package/shaders/DepthLimitedBlurShader.cjs.js +0 -1
  1153. package/shaders/DigitalGlitch.cjs.js +0 -1
  1154. package/shaders/DotScreenShader.cjs.js +0 -1
  1155. package/shaders/FXAAShader.cjs.js +0 -1
  1156. package/shaders/FilmShader.cjs.js +0 -1
  1157. package/shaders/FocusShader.cjs.js +0 -1
  1158. package/shaders/FreiChenShader.cjs.js +0 -1
  1159. package/shaders/FresnelShader.cjs.js +0 -1
  1160. package/shaders/GammaCorrectionShader.cjs.js +0 -1
  1161. package/shaders/GodRaysShader.cjs.js +0 -1
  1162. package/shaders/HalftoneShader.cjs.js +0 -1
  1163. package/shaders/HorizontalBlurShader.cjs.js +0 -1
  1164. package/shaders/HorizontalTiltShiftShader.cjs.js +0 -1
  1165. package/shaders/HueSaturationShader.cjs.js +0 -1
  1166. package/shaders/KaleidoShader.cjs.js +0 -1
  1167. package/shaders/LuminosityHighPassShader.cjs.js +0 -1
  1168. package/shaders/LuminosityShader.cjs.js +0 -1
  1169. package/shaders/MirrorShader.cjs.js +0 -1
  1170. package/shaders/NormalMapShader.cjs.js +0 -1
  1171. package/shaders/ParallaxShader.cjs.js +0 -1
  1172. package/shaders/PixelShader.cjs.js +0 -1
  1173. package/shaders/RGBShiftShader.cjs.js +0 -1
  1174. package/shaders/SAOShader.cjs.js +0 -1
  1175. package/shaders/SMAAShader.cjs.js +0 -1
  1176. package/shaders/SSAOShader.cjs.js +0 -1
  1177. package/shaders/SSRShader.cjs.js +0 -1
  1178. package/shaders/SepiaShader.cjs.js +0 -1
  1179. package/shaders/SobelOperatorShader.cjs.js +0 -1
  1180. package/shaders/SubsurfaceScatteringShader.cjs.js +0 -1
  1181. package/shaders/TechnicolorShader.cjs.js +0 -1
  1182. package/shaders/ToneMapShader.cjs.js +0 -1
  1183. package/shaders/ToonShader.cjs.js +0 -1
  1184. package/shaders/TriangleBlurShader.cjs.js +0 -1
  1185. package/shaders/UnpackDepthRGBAShader.cjs.js +0 -1
  1186. package/shaders/VerticalBlurShader.cjs.js +0 -1
  1187. package/shaders/VerticalTiltShiftShader.cjs.js +0 -1
  1188. package/shaders/VignetteShader.cjs.js +0 -1
  1189. package/shaders/VolumeShader.cjs.js +0 -1
  1190. package/shaders/WaterRefractionShader.cjs.js +0 -1
  1191. package/shaders/index.cjs.js +0 -1
  1192. package/shaders/index.d.ts +0 -54
  1193. package/shaders/index.js +0 -53
  1194. package/shaders/types.cjs.js +0 -1
  1195. package/textures/FlakesTexture.cjs.js +0 -1
  1196. package/types/helpers.cjs.js +0 -1
  1197. package/types/shared.cjs.js +0 -1
  1198. package/types/shared.js +0 -1
  1199. package/types/utils.cjs.js +0 -1
  1200. package/types/utils.js +0 -1
  1201. package/utils/BufferGeometryUtils.cjs.js +0 -1
  1202. package/utils/GeometryCompressionUtils.cjs.js +0 -1
  1203. package/utils/GeometryUtils.cjs.js +0 -1
  1204. package/utils/LDrawUtils.cjs.js +0 -1
  1205. package/utils/LDrawUtils.d.ts +0 -5
  1206. package/utils/LDrawUtils.js +0 -144
  1207. package/utils/RoughnessMipmapper.cjs.js +0 -1
  1208. package/utils/SceneUtils.cjs.js +0 -1
  1209. package/utils/ShadowMapViewer.cjs.js +0 -1
  1210. package/utils/SkeletonUtils.cjs.js +0 -1
  1211. package/utils/UVsDebug.cjs.js +0 -1
  1212. package/utils/WorkerPool.cjs.js +0 -1
  1213. package/webxr/ARButton.cjs.js +0 -1
  1214. package/webxr/OculusHandModel.cjs.js +0 -1
  1215. package/webxr/OculusHandPointerModel.cjs.js +0 -1
  1216. package/webxr/Text2D.cjs.js +0 -1
  1217. package/webxr/VRButton.cjs.js +0 -1
  1218. package/webxr/XRControllerModelFactory.cjs.js +0 -1
  1219. package/webxr/XREstimatedLight.cjs.js +0 -1
  1220. package/webxr/XRHandMeshModel.cjs.js +0 -1
  1221. package/webxr/XRHandModelFactory.cjs.js +0 -1
  1222. package/webxr/XRHandPrimitiveModel.cjs.js +0 -1
@@ -1,884 +1,732 @@
1
- import { Loader, LoaderUtils, FileLoader, Vector3, Vector2, TextureLoader, Scene, Object3D, Group, SphereGeometry, MeshBasicMaterial, BackSide, Mesh, PointsMaterial, Points, LineBasicMaterial, LineSegments, FrontSide, DoubleSide, MeshPhongMaterial, Color, DataTexture, BufferGeometry, Float32BufferAttribute, BoxGeometry, ConeGeometry, CylinderGeometry, Quaternion, ShapeUtils, BufferAttribute, RepeatWrapping, ClampToEdgeWrapping } from 'three';
2
- import { createToken, Lexer, CstParser } from 'chevrotain';
3
-
4
- class VRMLLoader extends Loader {
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const THREE = require("three");
4
+ const chevrotain = require("chevrotain");
5
+ class VRMLLoader extends THREE.Loader {
5
6
  constructor(manager) {
6
7
  super(manager);
7
8
  }
8
-
9
9
  load(url, onLoad, onProgress, onError) {
10
10
  const scope = this;
11
- const path = scope.path === '' ? LoaderUtils.extractUrlBase(url) : scope.path;
12
- const loader = new FileLoader(scope.manager);
11
+ const path = scope.path === "" ? THREE.LoaderUtils.extractUrlBase(url) : scope.path;
12
+ const loader = new THREE.FileLoader(scope.manager);
13
13
  loader.setPath(scope.path);
14
14
  loader.setRequestHeader(scope.requestHeader);
15
15
  loader.setWithCredentials(scope.withCredentials);
16
- loader.load(url, function (text) {
17
- try {
18
- onLoad(scope.parse(text, path));
19
- } catch (e) {
20
- if (onError) {
21
- onError(e);
22
- } else {
23
- console.error(e);
16
+ loader.load(
17
+ url,
18
+ function(text) {
19
+ try {
20
+ onLoad(scope.parse(text, path));
21
+ } catch (e) {
22
+ if (onError) {
23
+ onError(e);
24
+ } else {
25
+ console.error(e);
26
+ }
27
+ scope.manager.itemError(url);
24
28
  }
25
-
26
- scope.manager.itemError(url);
27
- }
28
- }, onProgress, onError);
29
+ },
30
+ onProgress,
31
+ onError
32
+ );
29
33
  }
30
-
31
34
  parse(data, path) {
32
35
  const nodeMap = {};
33
-
34
- function generateVRMLTree(data) {
35
- // create lexer, parser and visitor
36
+ function generateVRMLTree(data2) {
36
37
  const tokenData = createTokens();
37
38
  const lexer = new VRMLLexer(tokenData.tokens);
38
39
  const parser = new VRMLParser(tokenData.tokenVocabulary);
39
- const visitor = createVisitor(parser.getBaseCstVisitorConstructor()); // lexing
40
-
41
- const lexingResult = lexer.lex(data);
42
- parser.input = lexingResult.tokens; // parsing
43
-
40
+ const visitor = createVisitor(parser.getBaseCstVisitorConstructor());
41
+ const lexingResult = lexer.lex(data2);
42
+ parser.input = lexingResult.tokens;
44
43
  const cstOutput = parser.vrml();
45
-
46
44
  if (parser.errors.length > 0) {
47
45
  console.error(parser.errors);
48
- throw Error('THREE.VRMLLoader: Parsing errors detected.');
49
- } // actions
50
-
51
-
46
+ throw Error("THREE.VRMLLoader: Parsing errors detected.");
47
+ }
52
48
  const ast = visitor.visit(cstOutput);
53
49
  return ast;
54
50
  }
55
-
56
51
  function createTokens() {
57
- // from http://gun.teipir.gr/VRML-amgem/spec/part1/concepts.html#SyntaxBasics
58
- const RouteIdentifier = createToken({
59
- name: 'RouteIdentifier',
52
+ const RouteIdentifier = chevrotain.createToken({
53
+ name: "RouteIdentifier",
60
54
  pattern: /[^\x30-\x39\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d][^\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d]*[\.][^\x30-\x39\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d][^\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d]*/
61
55
  });
62
- const Identifier = createToken({
63
- name: 'Identifier',
56
+ const Identifier = chevrotain.createToken({
57
+ name: "Identifier",
64
58
  pattern: /[^\x30-\x39\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d][^\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d]*/,
65
59
  longer_alt: RouteIdentifier
66
- }); // from http://gun.teipir.gr/VRML-amgem/spec/part1/nodesRef.html
67
-
68
- const nodeTypes = ['Anchor', 'Billboard', 'Collision', 'Group', 'Transform', // grouping nodes
69
- 'Inline', 'LOD', 'Switch', // special groups
70
- 'AudioClip', 'DirectionalLight', 'PointLight', 'Script', 'Shape', 'Sound', 'SpotLight', 'WorldInfo', // common nodes
71
- 'CylinderSensor', 'PlaneSensor', 'ProximitySensor', 'SphereSensor', 'TimeSensor', 'TouchSensor', 'VisibilitySensor', // sensors
72
- 'Box', 'Cone', 'Cylinder', 'ElevationGrid', 'Extrusion', 'IndexedFaceSet', 'IndexedLineSet', 'PointSet', 'Sphere', // geometries
73
- 'Color', 'Coordinate', 'Normal', 'TextureCoordinate', // geometric properties
74
- 'Appearance', 'FontStyle', 'ImageTexture', 'Material', 'MovieTexture', 'PixelTexture', 'TextureTransform', // appearance
75
- 'ColorInterpolator', 'CoordinateInterpolator', 'NormalInterpolator', 'OrientationInterpolator', 'PositionInterpolator', 'ScalarInterpolator', // interpolators
76
- 'Background', 'Fog', 'NavigationInfo', 'Viewpoint', // bindable nodes
77
- 'Text' // Text must be placed at the end of the regex so there are no matches for TextureTransform and TextureCoordinate
78
- ]; //
79
-
80
- const Version = createToken({
81
- name: 'Version',
60
+ });
61
+ const nodeTypes = [
62
+ "Anchor",
63
+ "Billboard",
64
+ "Collision",
65
+ "Group",
66
+ "Transform",
67
+ "Inline",
68
+ "LOD",
69
+ "Switch",
70
+ "AudioClip",
71
+ "DirectionalLight",
72
+ "PointLight",
73
+ "Script",
74
+ "Shape",
75
+ "Sound",
76
+ "SpotLight",
77
+ "WorldInfo",
78
+ "CylinderSensor",
79
+ "PlaneSensor",
80
+ "ProximitySensor",
81
+ "SphereSensor",
82
+ "TimeSensor",
83
+ "TouchSensor",
84
+ "VisibilitySensor",
85
+ "Box",
86
+ "Cone",
87
+ "Cylinder",
88
+ "ElevationGrid",
89
+ "Extrusion",
90
+ "IndexedFaceSet",
91
+ "IndexedLineSet",
92
+ "PointSet",
93
+ "Sphere",
94
+ "Color",
95
+ "Coordinate",
96
+ "Normal",
97
+ "TextureCoordinate",
98
+ "Appearance",
99
+ "FontStyle",
100
+ "ImageTexture",
101
+ "Material",
102
+ "MovieTexture",
103
+ "PixelTexture",
104
+ "TextureTransform",
105
+ "ColorInterpolator",
106
+ "CoordinateInterpolator",
107
+ "NormalInterpolator",
108
+ "OrientationInterpolator",
109
+ "PositionInterpolator",
110
+ "ScalarInterpolator",
111
+ "Background",
112
+ "Fog",
113
+ "NavigationInfo",
114
+ "Viewpoint",
115
+ "Text"
116
+ ];
117
+ const Version = chevrotain.createToken({
118
+ name: "Version",
82
119
  pattern: /#VRML.*/,
83
120
  longer_alt: Identifier
84
121
  });
85
- const NodeName = createToken({
86
- name: 'NodeName',
87
- pattern: new RegExp(nodeTypes.join('|')),
122
+ const NodeName = chevrotain.createToken({
123
+ name: "NodeName",
124
+ pattern: new RegExp(nodeTypes.join("|")),
88
125
  longer_alt: Identifier
89
126
  });
90
- const DEF = createToken({
91
- name: 'DEF',
127
+ const DEF = chevrotain.createToken({
128
+ name: "DEF",
92
129
  pattern: /DEF/,
93
130
  longer_alt: Identifier
94
131
  });
95
- const USE = createToken({
96
- name: 'USE',
132
+ const USE = chevrotain.createToken({
133
+ name: "USE",
97
134
  pattern: /USE/,
98
135
  longer_alt: Identifier
99
136
  });
100
- const ROUTE = createToken({
101
- name: 'ROUTE',
137
+ const ROUTE = chevrotain.createToken({
138
+ name: "ROUTE",
102
139
  pattern: /ROUTE/,
103
140
  longer_alt: Identifier
104
141
  });
105
- const TO = createToken({
106
- name: 'TO',
142
+ const TO = chevrotain.createToken({
143
+ name: "TO",
107
144
  pattern: /TO/,
108
145
  longer_alt: Identifier
109
- }); //
110
-
111
- const StringLiteral = createToken({
112
- name: 'StringLiteral',
113
- pattern: /"(?:[^\\"\n\r]|\\[bfnrtv"\\/]|\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])*"/
114
- });
115
- const HexLiteral = createToken({
116
- name: 'HexLiteral',
117
- pattern: /0[xX][0-9a-fA-F]+/
118
- });
119
- const NumberLiteral = createToken({
120
- name: 'NumberLiteral',
121
- pattern: /[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/
122
- });
123
- const TrueLiteral = createToken({
124
- name: 'TrueLiteral',
125
- pattern: /TRUE/
126
- });
127
- const FalseLiteral = createToken({
128
- name: 'FalseLiteral',
129
- pattern: /FALSE/
130
- });
131
- const NullLiteral = createToken({
132
- name: 'NullLiteral',
133
- pattern: /NULL/
134
146
  });
135
- const LSquare = createToken({
136
- name: 'LSquare',
137
- pattern: /\[/
138
- });
139
- const RSquare = createToken({
140
- name: 'RSquare',
141
- pattern: /]/
142
- });
143
- const LCurly = createToken({
144
- name: 'LCurly',
145
- pattern: /{/
146
- });
147
- const RCurly = createToken({
148
- name: 'RCurly',
149
- pattern: /}/
147
+ const StringLiteral = chevrotain.createToken({
148
+ name: "StringLiteral",
149
+ pattern: /"(?:[^\\"\n\r]|\\[bfnrtv"\\/]|\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])*"/
150
150
  });
151
- const Comment = createToken({
152
- name: 'Comment',
151
+ const HexLiteral = chevrotain.createToken({ name: "HexLiteral", pattern: /0[xX][0-9a-fA-F]+/ });
152
+ const NumberLiteral = chevrotain.createToken({ name: "NumberLiteral", pattern: /[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/ });
153
+ const TrueLiteral = chevrotain.createToken({ name: "TrueLiteral", pattern: /TRUE/ });
154
+ const FalseLiteral = chevrotain.createToken({ name: "FalseLiteral", pattern: /FALSE/ });
155
+ const NullLiteral = chevrotain.createToken({ name: "NullLiteral", pattern: /NULL/ });
156
+ const LSquare = chevrotain.createToken({ name: "LSquare", pattern: /\[/ });
157
+ const RSquare = chevrotain.createToken({ name: "RSquare", pattern: /]/ });
158
+ const LCurly = chevrotain.createToken({ name: "LCurly", pattern: /{/ });
159
+ const RCurly = chevrotain.createToken({ name: "RCurly", pattern: /}/ });
160
+ const Comment = chevrotain.createToken({
161
+ name: "Comment",
153
162
  pattern: /#.*/,
154
- group: Lexer.SKIPPED // eslint-disable-line no-undef
155
-
156
- }); // commas, blanks, tabs, newlines and carriage returns are whitespace characters wherever they appear outside of string fields
157
-
158
- const WhiteSpace = createToken({
159
- name: 'WhiteSpace',
163
+ group: chevrotain.Lexer.SKIPPED
164
+ });
165
+ const WhiteSpace = chevrotain.createToken({
166
+ name: "WhiteSpace",
160
167
  pattern: /[ ,\s]/,
161
- group: Lexer.SKIPPED // eslint-disable-line no-undef
162
-
168
+ group: chevrotain.Lexer.SKIPPED
163
169
  });
164
- const tokens = [WhiteSpace, // keywords appear before the Identifier
165
- NodeName, DEF, USE, ROUTE, TO, TrueLiteral, FalseLiteral, NullLiteral, // the Identifier must appear after the keywords because all keywords are valid identifiers
166
- Version, Identifier, RouteIdentifier, StringLiteral, HexLiteral, NumberLiteral, LSquare, RSquare, LCurly, RCurly, Comment];
170
+ const tokens = [
171
+ WhiteSpace,
172
+ NodeName,
173
+ DEF,
174
+ USE,
175
+ ROUTE,
176
+ TO,
177
+ TrueLiteral,
178
+ FalseLiteral,
179
+ NullLiteral,
180
+ Version,
181
+ Identifier,
182
+ RouteIdentifier,
183
+ StringLiteral,
184
+ HexLiteral,
185
+ NumberLiteral,
186
+ LSquare,
187
+ RSquare,
188
+ LCurly,
189
+ RCurly,
190
+ Comment
191
+ ];
167
192
  const tokenVocabulary = {};
168
-
169
193
  for (let i = 0, l = tokens.length; i < l; i++) {
170
194
  const token = tokens[i];
171
195
  tokenVocabulary[token.name] = token;
172
196
  }
173
-
174
- return {
175
- tokens: tokens,
176
- tokenVocabulary: tokenVocabulary
177
- };
197
+ return { tokens, tokenVocabulary };
178
198
  }
179
-
180
199
  function createVisitor(BaseVRMLVisitor) {
181
- // the visitor is created dynmaically based on the given base class
182
200
  function VRMLToASTVisitor() {
183
201
  BaseVRMLVisitor.call(this);
184
202
  this.validateVisitor();
185
203
  }
186
-
187
204
  VRMLToASTVisitor.prototype = Object.assign(Object.create(BaseVRMLVisitor.prototype), {
188
205
  constructor: VRMLToASTVisitor,
189
- vrml: function (ctx) {
190
- const data = {
206
+ vrml: function(ctx) {
207
+ const data2 = {
191
208
  version: this.visit(ctx.version),
192
209
  nodes: [],
193
210
  routes: []
194
211
  };
195
-
196
212
  for (let i = 0, l = ctx.node.length; i < l; i++) {
197
213
  const node = ctx.node[i];
198
- data.nodes.push(this.visit(node));
214
+ data2.nodes.push(this.visit(node));
199
215
  }
200
-
201
216
  if (ctx.route) {
202
217
  for (let i = 0, l = ctx.route.length; i < l; i++) {
203
218
  const route = ctx.route[i];
204
- data.routes.push(this.visit(route));
219
+ data2.routes.push(this.visit(route));
205
220
  }
206
221
  }
207
-
208
- return data;
222
+ return data2;
209
223
  },
210
- version: function (ctx) {
224
+ version: function(ctx) {
211
225
  return ctx.Version[0].image;
212
226
  },
213
- node: function (ctx) {
214
- const data = {
227
+ node: function(ctx) {
228
+ const data2 = {
215
229
  name: ctx.NodeName[0].image,
216
230
  fields: []
217
231
  };
218
-
219
232
  if (ctx.field) {
220
233
  for (let i = 0, l = ctx.field.length; i < l; i++) {
221
234
  const field = ctx.field[i];
222
- data.fields.push(this.visit(field));
235
+ data2.fields.push(this.visit(field));
223
236
  }
224
- } // DEF
225
-
226
-
237
+ }
227
238
  if (ctx.def) {
228
- data.DEF = this.visit(ctx.def[0]);
239
+ data2.DEF = this.visit(ctx.def[0]);
229
240
  }
230
-
231
- return data;
241
+ return data2;
232
242
  },
233
- field: function (ctx) {
234
- const data = {
243
+ field: function(ctx) {
244
+ const data2 = {
235
245
  name: ctx.Identifier[0].image,
236
246
  type: null,
237
247
  values: null
238
248
  };
239
- let result; // SFValue
240
-
249
+ let result;
241
250
  if (ctx.singleFieldValue) {
242
251
  result = this.visit(ctx.singleFieldValue[0]);
243
- } // MFValue
244
-
245
-
252
+ }
246
253
  if (ctx.multiFieldValue) {
247
254
  result = this.visit(ctx.multiFieldValue[0]);
248
255
  }
249
-
250
- data.type = result.type;
251
- data.values = result.values;
252
- return data;
256
+ data2.type = result.type;
257
+ data2.values = result.values;
258
+ return data2;
253
259
  },
254
- def: function (ctx) {
260
+ def: function(ctx) {
255
261
  return (ctx.Identifier || ctx.NodeName)[0].image;
256
262
  },
257
- use: function (ctx) {
258
- return {
259
- USE: (ctx.Identifier || ctx.NodeName)[0].image
260
- };
263
+ use: function(ctx) {
264
+ return { USE: (ctx.Identifier || ctx.NodeName)[0].image };
261
265
  },
262
- singleFieldValue: function (ctx) {
266
+ singleFieldValue: function(ctx) {
263
267
  return processField(this, ctx);
264
268
  },
265
- multiFieldValue: function (ctx) {
269
+ multiFieldValue: function(ctx) {
266
270
  return processField(this, ctx);
267
271
  },
268
- route: function (ctx) {
269
- const data = {
272
+ route: function(ctx) {
273
+ const data2 = {
270
274
  FROM: ctx.RouteIdentifier[0].image,
271
275
  TO: ctx.RouteIdentifier[1].image
272
276
  };
273
- return data;
277
+ return data2;
274
278
  }
275
279
  });
276
-
277
280
  function processField(scope, ctx) {
278
281
  const field = {
279
282
  type: null,
280
283
  values: []
281
284
  };
282
-
283
285
  if (ctx.node) {
284
- field.type = 'node';
285
-
286
+ field.type = "node";
286
287
  for (let i = 0, l = ctx.node.length; i < l; i++) {
287
288
  const node = ctx.node[i];
288
289
  field.values.push(scope.visit(node));
289
290
  }
290
291
  }
291
-
292
292
  if (ctx.use) {
293
- field.type = 'use';
294
-
293
+ field.type = "use";
295
294
  for (let i = 0, l = ctx.use.length; i < l; i++) {
296
295
  const use = ctx.use[i];
297
296
  field.values.push(scope.visit(use));
298
297
  }
299
298
  }
300
-
301
299
  if (ctx.StringLiteral) {
302
- field.type = 'string';
303
-
300
+ field.type = "string";
304
301
  for (let i = 0, l = ctx.StringLiteral.length; i < l; i++) {
305
302
  const stringLiteral = ctx.StringLiteral[i];
306
- field.values.push(stringLiteral.image.replace(/'|"/g, ''));
303
+ field.values.push(stringLiteral.image.replace(/'|"/g, ""));
307
304
  }
308
305
  }
309
-
310
306
  if (ctx.NumberLiteral) {
311
- field.type = 'number';
312
-
307
+ field.type = "number";
313
308
  for (let i = 0, l = ctx.NumberLiteral.length; i < l; i++) {
314
309
  const numberLiteral = ctx.NumberLiteral[i];
315
310
  field.values.push(parseFloat(numberLiteral.image));
316
311
  }
317
312
  }
318
-
319
313
  if (ctx.HexLiteral) {
320
- field.type = 'hex';
321
-
314
+ field.type = "hex";
322
315
  for (let i = 0, l = ctx.HexLiteral.length; i < l; i++) {
323
316
  const hexLiteral = ctx.HexLiteral[i];
324
317
  field.values.push(hexLiteral.image);
325
318
  }
326
319
  }
327
-
328
320
  if (ctx.TrueLiteral) {
329
- field.type = 'boolean';
330
-
321
+ field.type = "boolean";
331
322
  for (let i = 0, l = ctx.TrueLiteral.length; i < l; i++) {
332
323
  const trueLiteral = ctx.TrueLiteral[i];
333
- if (trueLiteral.image === 'TRUE') field.values.push(true);
324
+ if (trueLiteral.image === "TRUE")
325
+ field.values.push(true);
334
326
  }
335
327
  }
336
-
337
328
  if (ctx.FalseLiteral) {
338
- field.type = 'boolean';
339
-
329
+ field.type = "boolean";
340
330
  for (let i = 0, l = ctx.FalseLiteral.length; i < l; i++) {
341
331
  const falseLiteral = ctx.FalseLiteral[i];
342
- if (falseLiteral.image === 'FALSE') field.values.push(false);
332
+ if (falseLiteral.image === "FALSE")
333
+ field.values.push(false);
343
334
  }
344
335
  }
345
-
346
336
  if (ctx.NullLiteral) {
347
- field.type = 'null';
348
- ctx.NullLiteral.forEach(function () {
337
+ field.type = "null";
338
+ ctx.NullLiteral.forEach(function() {
349
339
  field.values.push(null);
350
340
  });
351
341
  }
352
-
353
342
  return field;
354
343
  }
355
-
356
344
  return new VRMLToASTVisitor();
357
345
  }
358
-
359
- function parseTree(tree) {
360
- // console.log( JSON.stringify( tree, null, 2 ) );
361
- const nodes = tree.nodes;
362
- const scene = new Scene(); // first iteration: build nodemap based on DEF statements
363
-
346
+ function parseTree(tree2) {
347
+ const nodes = tree2.nodes;
348
+ const scene2 = new THREE.Scene();
364
349
  for (let i = 0, l = nodes.length; i < l; i++) {
365
350
  const node = nodes[i];
366
351
  buildNodeMap(node);
367
- } // second iteration: build nodes
368
-
369
-
352
+ }
370
353
  for (let i = 0, l = nodes.length; i < l; i++) {
371
354
  const node = nodes[i];
372
355
  const object = getNode(node);
373
- if (object instanceof Object3D) scene.add(object);
374
- if (node.name === 'WorldInfo') scene.userData.worldInfo = object;
356
+ if (object instanceof THREE.Object3D)
357
+ scene2.add(object);
358
+ if (node.name === "WorldInfo")
359
+ scene2.userData.worldInfo = object;
375
360
  }
376
-
377
- return scene;
361
+ return scene2;
378
362
  }
379
-
380
363
  function buildNodeMap(node) {
381
364
  if (node.DEF) {
382
365
  nodeMap[node.DEF] = node;
383
366
  }
384
-
385
367
  const fields = node.fields;
386
-
387
368
  for (let i = 0, l = fields.length; i < l; i++) {
388
369
  const field = fields[i];
389
-
390
- if (field.type === 'node') {
370
+ if (field.type === "node") {
391
371
  const fieldValues = field.values;
392
-
393
372
  for (let j = 0, jl = fieldValues.length; j < jl; j++) {
394
373
  buildNodeMap(fieldValues[j]);
395
374
  }
396
375
  }
397
376
  }
398
377
  }
399
-
400
378
  function getNode(node) {
401
- // handle case where a node refers to a different one
402
379
  if (node.USE) {
403
380
  return resolveUSE(node.USE);
404
381
  }
405
-
406
- if (node.build !== undefined) return node.build;
382
+ if (node.build !== void 0)
383
+ return node.build;
407
384
  node.build = buildNode(node);
408
385
  return node.build;
409
- } // node builder
410
-
411
-
386
+ }
412
387
  function buildNode(node) {
413
388
  const nodeName = node.name;
414
389
  let build;
415
-
416
390
  switch (nodeName) {
417
- case 'Group':
418
- case 'Transform':
419
- case 'Collision':
391
+ case "Group":
392
+ case "Transform":
393
+ case "Collision":
420
394
  build = buildGroupingNode(node);
421
395
  break;
422
-
423
- case 'Background':
396
+ case "Background":
424
397
  build = buildBackgroundNode(node);
425
398
  break;
426
-
427
- case 'Shape':
399
+ case "Shape":
428
400
  build = buildShapeNode(node);
429
401
  break;
430
-
431
- case 'Appearance':
402
+ case "Appearance":
432
403
  build = buildAppearanceNode(node);
433
404
  break;
434
-
435
- case 'Material':
405
+ case "Material":
436
406
  build = buildMaterialNode(node);
437
407
  break;
438
-
439
- case 'ImageTexture':
408
+ case "ImageTexture":
440
409
  build = buildImageTextureNode(node);
441
410
  break;
442
-
443
- case 'PixelTexture':
411
+ case "PixelTexture":
444
412
  build = buildPixelTextureNode(node);
445
413
  break;
446
-
447
- case 'TextureTransform':
414
+ case "TextureTransform":
448
415
  build = buildTextureTransformNode(node);
449
416
  break;
450
-
451
- case 'IndexedFaceSet':
417
+ case "IndexedFaceSet":
452
418
  build = buildIndexedFaceSetNode(node);
453
419
  break;
454
-
455
- case 'IndexedLineSet':
420
+ case "IndexedLineSet":
456
421
  build = buildIndexedLineSetNode(node);
457
422
  break;
458
-
459
- case 'PointSet':
423
+ case "PointSet":
460
424
  build = buildPointSetNode(node);
461
425
  break;
462
-
463
- case 'Box':
426
+ case "Box":
464
427
  build = buildBoxNode(node);
465
428
  break;
466
-
467
- case 'Cone':
429
+ case "Cone":
468
430
  build = buildConeNode(node);
469
431
  break;
470
-
471
- case 'Cylinder':
432
+ case "Cylinder":
472
433
  build = buildCylinderNode(node);
473
434
  break;
474
-
475
- case 'Sphere':
435
+ case "Sphere":
476
436
  build = buildSphereNode(node);
477
437
  break;
478
-
479
- case 'ElevationGrid':
438
+ case "ElevationGrid":
480
439
  build = buildElevationGridNode(node);
481
440
  break;
482
-
483
- case 'Extrusion':
441
+ case "Extrusion":
484
442
  build = buildExtrusionNode(node);
485
443
  break;
486
-
487
- case 'Color':
488
- case 'Coordinate':
489
- case 'Normal':
490
- case 'TextureCoordinate':
444
+ case "Color":
445
+ case "Coordinate":
446
+ case "Normal":
447
+ case "TextureCoordinate":
491
448
  build = buildGeometricNode(node);
492
449
  break;
493
-
494
- case 'WorldInfo':
450
+ case "WorldInfo":
495
451
  build = buildWorldInfoNode(node);
496
452
  break;
497
-
498
- case 'Anchor':
499
- case 'Billboard':
500
- case 'Inline':
501
- case 'LOD':
502
- case 'Switch':
503
- case 'AudioClip':
504
- case 'DirectionalLight':
505
- case 'PointLight':
506
- case 'Script':
507
- case 'Sound':
508
- case 'SpotLight':
509
- case 'CylinderSensor':
510
- case 'PlaneSensor':
511
- case 'ProximitySensor':
512
- case 'SphereSensor':
513
- case 'TimeSensor':
514
- case 'TouchSensor':
515
- case 'VisibilitySensor':
516
- case 'Text':
517
- case 'FontStyle':
518
- case 'MovieTexture':
519
- case 'ColorInterpolator':
520
- case 'CoordinateInterpolator':
521
- case 'NormalInterpolator':
522
- case 'OrientationInterpolator':
523
- case 'PositionInterpolator':
524
- case 'ScalarInterpolator':
525
- case 'Fog':
526
- case 'NavigationInfo':
527
- case 'Viewpoint':
528
- // node not supported yet
453
+ case "Anchor":
454
+ case "Billboard":
455
+ case "Inline":
456
+ case "LOD":
457
+ case "Switch":
458
+ case "AudioClip":
459
+ case "DirectionalLight":
460
+ case "PointLight":
461
+ case "Script":
462
+ case "Sound":
463
+ case "SpotLight":
464
+ case "CylinderSensor":
465
+ case "PlaneSensor":
466
+ case "ProximitySensor":
467
+ case "SphereSensor":
468
+ case "TimeSensor":
469
+ case "TouchSensor":
470
+ case "VisibilitySensor":
471
+ case "Text":
472
+ case "FontStyle":
473
+ case "MovieTexture":
474
+ case "ColorInterpolator":
475
+ case "CoordinateInterpolator":
476
+ case "NormalInterpolator":
477
+ case "OrientationInterpolator":
478
+ case "PositionInterpolator":
479
+ case "ScalarInterpolator":
480
+ case "Fog":
481
+ case "NavigationInfo":
482
+ case "Viewpoint":
529
483
  break;
530
-
531
484
  default:
532
- console.warn('THREE.VRMLLoader: Unknown node:', nodeName);
485
+ console.warn("THREE.VRMLLoader: Unknown node:", nodeName);
533
486
  break;
534
487
  }
535
-
536
- if (build !== undefined && node.DEF !== undefined && build.hasOwnProperty('name') === true) {
488
+ if (build !== void 0 && node.DEF !== void 0 && build.hasOwnProperty("name") === true) {
537
489
  build.name = node.DEF;
538
490
  }
539
-
540
491
  return build;
541
492
  }
542
-
543
493
  function buildGroupingNode(node) {
544
- const object = new Group(); //
545
-
494
+ const object = new THREE.Group();
546
495
  const fields = node.fields;
547
-
548
496
  for (let i = 0, l = fields.length; i < l; i++) {
549
497
  const field = fields[i];
550
498
  const fieldName = field.name;
551
499
  const fieldValues = field.values;
552
-
553
500
  switch (fieldName) {
554
- case 'bboxCenter':
555
- // field not supported
501
+ case "bboxCenter":
556
502
  break;
557
-
558
- case 'bboxSize':
559
- // field not supported
503
+ case "bboxSize":
560
504
  break;
561
-
562
- case 'center':
563
- // field not supported
505
+ case "center":
564
506
  break;
565
-
566
- case 'children':
507
+ case "children":
567
508
  parseFieldChildren(fieldValues, object);
568
509
  break;
569
-
570
- case 'collide':
571
- // field not supported
510
+ case "collide":
572
511
  break;
573
-
574
- case 'rotation':
575
- const axis = new Vector3(fieldValues[0], fieldValues[1], fieldValues[2]);
512
+ case "rotation":
513
+ const axis = new THREE.Vector3(fieldValues[0], fieldValues[1], fieldValues[2]);
576
514
  const angle = fieldValues[3];
577
515
  object.quaternion.setFromAxisAngle(axis, angle);
578
516
  break;
579
-
580
- case 'scale':
517
+ case "scale":
581
518
  object.scale.set(fieldValues[0], fieldValues[1], fieldValues[2]);
582
519
  break;
583
-
584
- case 'scaleOrientation':
585
- // field not supported
520
+ case "scaleOrientation":
586
521
  break;
587
-
588
- case 'translation':
522
+ case "translation":
589
523
  object.position.set(fieldValues[0], fieldValues[1], fieldValues[2]);
590
524
  break;
591
-
592
- case 'proxy':
593
- // field not supported
525
+ case "proxy":
594
526
  break;
595
-
596
527
  default:
597
- console.warn('THREE.VRMLLoader: Unknown field:', fieldName);
528
+ console.warn("THREE.VRMLLoader: Unknown field:", fieldName);
598
529
  break;
599
530
  }
600
531
  }
601
-
602
532
  return object;
603
533
  }
604
-
605
534
  function buildBackgroundNode(node) {
606
- const group = new Group();
535
+ const group = new THREE.Group();
607
536
  let groundAngle, groundColor;
608
537
  let skyAngle, skyColor;
609
538
  const fields = node.fields;
610
-
611
539
  for (let i = 0, l = fields.length; i < l; i++) {
612
540
  const field = fields[i];
613
541
  const fieldName = field.name;
614
542
  const fieldValues = field.values;
615
-
616
543
  switch (fieldName) {
617
- case 'groundAngle':
544
+ case "groundAngle":
618
545
  groundAngle = fieldValues;
619
546
  break;
620
-
621
- case 'groundColor':
547
+ case "groundColor":
622
548
  groundColor = fieldValues;
623
549
  break;
624
-
625
- case 'backUrl':
626
- // field not supported
550
+ case "backUrl":
627
551
  break;
628
-
629
- case 'bottomUrl':
630
- // field not supported
552
+ case "bottomUrl":
631
553
  break;
632
-
633
- case 'frontUrl':
634
- // field not supported
554
+ case "frontUrl":
635
555
  break;
636
-
637
- case 'leftUrl':
638
- // field not supported
556
+ case "leftUrl":
639
557
  break;
640
-
641
- case 'rightUrl':
642
- // field not supported
558
+ case "rightUrl":
643
559
  break;
644
-
645
- case 'topUrl':
646
- // field not supported
560
+ case "topUrl":
647
561
  break;
648
-
649
- case 'skyAngle':
562
+ case "skyAngle":
650
563
  skyAngle = fieldValues;
651
564
  break;
652
-
653
- case 'skyColor':
565
+ case "skyColor":
654
566
  skyColor = fieldValues;
655
567
  break;
656
-
657
568
  default:
658
- console.warn('THREE.VRMLLoader: Unknown field:', fieldName);
569
+ console.warn("THREE.VRMLLoader: Unknown field:", fieldName);
659
570
  break;
660
571
  }
661
572
  }
662
-
663
- const radius = 10000; // sky
664
-
573
+ const radius = 1e4;
665
574
  if (skyColor) {
666
- const skyGeometry = new SphereGeometry(radius, 32, 16);
667
- const skyMaterial = new MeshBasicMaterial({
668
- fog: false,
669
- side: BackSide,
670
- depthWrite: false,
671
- depthTest: false
672
- });
673
-
575
+ const skyGeometry = new THREE.SphereGeometry(radius, 32, 16);
576
+ const skyMaterial = new THREE.MeshBasicMaterial({ fog: false, side: THREE.BackSide, depthWrite: false, depthTest: false });
674
577
  if (skyColor.length > 3) {
675
578
  paintFaces(skyGeometry, radius, skyAngle, toColorArray(skyColor), true);
676
579
  skyMaterial.vertexColors = true;
677
580
  } else {
678
581
  skyMaterial.color.setRGB(skyColor[0], skyColor[1], skyColor[2]);
679
582
  }
680
-
681
- const sky = new Mesh(skyGeometry, skyMaterial);
583
+ const sky = new THREE.Mesh(skyGeometry, skyMaterial);
682
584
  group.add(sky);
683
- } // ground
684
-
685
-
585
+ }
686
586
  if (groundColor) {
687
587
  if (groundColor.length > 0) {
688
- const groundGeometry = new SphereGeometry(radius, 32, 16, 0, 2 * Math.PI, 0.5 * Math.PI, 1.5 * Math.PI);
689
- const groundMaterial = new MeshBasicMaterial({
588
+ const groundGeometry = new THREE.SphereGeometry(radius, 32, 16, 0, 2 * Math.PI, 0.5 * Math.PI, 1.5 * Math.PI);
589
+ const groundMaterial = new THREE.MeshBasicMaterial({
690
590
  fog: false,
691
- side: BackSide,
591
+ side: THREE.BackSide,
692
592
  vertexColors: true,
693
593
  depthWrite: false,
694
594
  depthTest: false
695
595
  });
696
596
  paintFaces(groundGeometry, radius, groundAngle, toColorArray(groundColor), false);
697
- const ground = new Mesh(groundGeometry, groundMaterial);
597
+ const ground = new THREE.Mesh(groundGeometry, groundMaterial);
698
598
  group.add(ground);
699
599
  }
700
- } // render background group first
701
-
702
-
600
+ }
703
601
  group.renderOrder = -Infinity;
704
602
  return group;
705
603
  }
706
-
707
604
  function buildShapeNode(node) {
708
- const fields = node.fields; // if the appearance field is NULL or unspecified, lighting is off and the unlit object color is (0, 0, 0)
709
-
710
- let material = new MeshBasicMaterial({
711
- color: 0x000000
712
- });
605
+ const fields = node.fields;
606
+ let material = new THREE.MeshBasicMaterial({ color: 0 });
713
607
  let geometry;
714
-
715
608
  for (let i = 0, l = fields.length; i < l; i++) {
716
609
  const field = fields[i];
717
610
  const fieldName = field.name;
718
611
  const fieldValues = field.values;
719
-
720
612
  switch (fieldName) {
721
- case 'appearance':
613
+ case "appearance":
722
614
  if (fieldValues[0] !== null) {
723
615
  material = getNode(fieldValues[0]);
724
616
  }
725
-
726
617
  break;
727
-
728
- case 'geometry':
618
+ case "geometry":
729
619
  if (fieldValues[0] !== null) {
730
620
  geometry = getNode(fieldValues[0]);
731
621
  }
732
-
733
622
  break;
734
-
735
623
  default:
736
- console.warn('THREE.VRMLLoader: Unknown field:', fieldName);
624
+ console.warn("THREE.VRMLLoader: Unknown field:", fieldName);
737
625
  break;
738
626
  }
739
- } // build 3D object
740
-
741
-
627
+ }
742
628
  let object;
743
-
744
629
  if (geometry && geometry.attributes.position) {
745
630
  const type = geometry._type;
746
-
747
- if (type === 'points') {
748
- // points
749
- const pointsMaterial = new PointsMaterial({
750
- color: 0xffffff
751
- });
752
-
753
- if (geometry.attributes.color !== undefined) {
631
+ if (type === "points") {
632
+ const pointsMaterial = new THREE.PointsMaterial({ color: 16777215 });
633
+ if (geometry.attributes.color !== void 0) {
754
634
  pointsMaterial.vertexColors = true;
755
635
  } else {
756
- // if the color field is NULL and there is a material defined for the appearance affecting this PointSet, then use the emissiveColor of the material to draw the points
757
636
  if (material.isMeshPhongMaterial) {
758
637
  pointsMaterial.color.copy(material.emissive);
759
638
  }
760
639
  }
761
-
762
- object = new Points(geometry, pointsMaterial);
763
- } else if (type === 'line') {
764
- // lines
765
- const lineMaterial = new LineBasicMaterial({
766
- color: 0xffffff
767
- });
768
-
769
- if (geometry.attributes.color !== undefined) {
640
+ object = new THREE.Points(geometry, pointsMaterial);
641
+ } else if (type === "line") {
642
+ const lineMaterial = new THREE.LineBasicMaterial({ color: 16777215 });
643
+ if (geometry.attributes.color !== void 0) {
770
644
  lineMaterial.vertexColors = true;
771
645
  } else {
772
- // if the color field is NULL and there is a material defined for the appearance affecting this IndexedLineSet, then use the emissiveColor of the material to draw the lines
773
646
  if (material.isMeshPhongMaterial) {
774
647
  lineMaterial.color.copy(material.emissive);
775
648
  }
776
649
  }
777
-
778
- object = new LineSegments(geometry, lineMaterial);
650
+ object = new THREE.LineSegments(geometry, lineMaterial);
779
651
  } else {
780
- // consider meshes
781
- // check "solid" hint (it's placed in the geometry but affects the material)
782
- if (geometry._solid !== undefined) {
783
- material.side = geometry._solid ? FrontSide : DoubleSide;
784
- } // check for vertex colors
785
-
786
-
787
- if (geometry.attributes.color !== undefined) {
652
+ if (geometry._solid !== void 0) {
653
+ material.side = geometry._solid ? THREE.FrontSide : THREE.DoubleSide;
654
+ }
655
+ if (geometry.attributes.color !== void 0) {
788
656
  material.vertexColors = true;
789
657
  }
790
-
791
- object = new Mesh(geometry, material);
658
+ object = new THREE.Mesh(geometry, material);
792
659
  }
793
660
  } else {
794
- object = new Object3D(); // if the geometry field is NULL or no vertices are defined the object is not drawn
795
-
661
+ object = new THREE.Object3D();
796
662
  object.visible = false;
797
663
  }
798
-
799
664
  return object;
800
665
  }
801
-
802
666
  function buildAppearanceNode(node) {
803
- let material = new MeshPhongMaterial();
667
+ let material = new THREE.MeshPhongMaterial();
804
668
  let transformData;
805
669
  const fields = node.fields;
806
-
807
670
  for (let i = 0, l = fields.length; i < l; i++) {
808
671
  const field = fields[i];
809
672
  const fieldName = field.name;
810
673
  const fieldValues = field.values;
811
-
812
674
  switch (fieldName) {
813
- case 'material':
675
+ case "material":
814
676
  if (fieldValues[0] !== null) {
815
677
  const materialData = getNode(fieldValues[0]);
816
- if (materialData.diffuseColor) material.color.copy(materialData.diffuseColor);
817
- if (materialData.emissiveColor) material.emissive.copy(materialData.emissiveColor);
818
- if (materialData.shininess) material.shininess = materialData.shininess;
819
- if (materialData.specularColor) material.specular.copy(materialData.specularColor);
820
- if (materialData.transparency) material.opacity = 1 - materialData.transparency;
821
- if (materialData.transparency > 0) material.transparent = true;
678
+ if (materialData.diffuseColor)
679
+ material.color.copy(materialData.diffuseColor);
680
+ if (materialData.emissiveColor)
681
+ material.emissive.copy(materialData.emissiveColor);
682
+ if (materialData.shininess)
683
+ material.shininess = materialData.shininess;
684
+ if (materialData.specularColor)
685
+ material.specular.copy(materialData.specularColor);
686
+ if (materialData.transparency)
687
+ material.opacity = 1 - materialData.transparency;
688
+ if (materialData.transparency > 0)
689
+ material.transparent = true;
822
690
  } else {
823
- // if the material field is NULL or unspecified, lighting is off and the unlit object color is (0, 0, 0)
824
- material = new MeshBasicMaterial({
825
- color: 0x000000
826
- });
691
+ material = new THREE.MeshBasicMaterial({ color: 0 });
827
692
  }
828
-
829
693
  break;
830
-
831
- case 'texture':
694
+ case "texture":
832
695
  const textureNode = fieldValues[0];
833
-
834
696
  if (textureNode !== null) {
835
- if (textureNode.name === 'ImageTexture' || textureNode.name === 'PixelTexture') {
697
+ if (textureNode.name === "ImageTexture" || textureNode.name === "PixelTexture") {
836
698
  material.map = getNode(textureNode);
699
+ } else {
837
700
  }
838
701
  }
839
-
840
702
  break;
841
-
842
- case 'textureTransform':
703
+ case "textureTransform":
843
704
  if (fieldValues[0] !== null) {
844
705
  transformData = getNode(fieldValues[0]);
845
706
  }
846
-
847
707
  break;
848
-
849
708
  default:
850
- console.warn('THREE.VRMLLoader: Unknown field:', fieldName);
709
+ console.warn("THREE.VRMLLoader: Unknown field:", fieldName);
851
710
  break;
852
711
  }
853
- } // only apply texture transform data if a texture was defined
854
-
855
-
712
+ }
856
713
  if (material.map) {
857
- // respect VRML lighting model
858
714
  if (material.map.__type) {
859
715
  switch (material.map.__type) {
860
716
  case TEXTURE_TYPE.INTENSITY_ALPHA:
861
- material.opacity = 1; // ignore transparency
862
-
717
+ material.opacity = 1;
863
718
  break;
864
-
865
719
  case TEXTURE_TYPE.RGB:
866
- material.color.set(0xffffff); // ignore material color
867
-
720
+ material.color.set(16777215);
868
721
  break;
869
-
870
722
  case TEXTURE_TYPE.RGBA:
871
- material.color.set(0xffffff); // ignore material color
872
-
873
- material.opacity = 1; // ignore transparency
874
-
723
+ material.color.set(16777215);
724
+ material.opacity = 1;
875
725
  break;
726
+ default:
876
727
  }
877
-
878
728
  delete material.map.__type;
879
- } // apply texture transform
880
-
881
-
729
+ }
882
730
  if (transformData) {
883
731
  material.map.center.copy(transformData.center);
884
732
  material.map.rotation = transformData.rotation;
@@ -886,734 +734,563 @@ class VRMLLoader extends Loader {
886
734
  material.map.offset.copy(transformData.translation);
887
735
  }
888
736
  }
889
-
890
737
  return material;
891
738
  }
892
-
893
739
  function buildMaterialNode(node) {
894
740
  const materialData = {};
895
741
  const fields = node.fields;
896
-
897
742
  for (let i = 0, l = fields.length; i < l; i++) {
898
743
  const field = fields[i];
899
744
  const fieldName = field.name;
900
745
  const fieldValues = field.values;
901
-
902
746
  switch (fieldName) {
903
- case 'ambientIntensity':
904
- // field not supported
747
+ case "ambientIntensity":
905
748
  break;
906
-
907
- case 'diffuseColor':
908
- materialData.diffuseColor = new Color(fieldValues[0], fieldValues[1], fieldValues[2]);
749
+ case "diffuseColor":
750
+ materialData.diffuseColor = new THREE.Color(fieldValues[0], fieldValues[1], fieldValues[2]);
909
751
  break;
910
-
911
- case 'emissiveColor':
912
- materialData.emissiveColor = new Color(fieldValues[0], fieldValues[1], fieldValues[2]);
752
+ case "emissiveColor":
753
+ materialData.emissiveColor = new THREE.Color(fieldValues[0], fieldValues[1], fieldValues[2]);
913
754
  break;
914
-
915
- case 'shininess':
755
+ case "shininess":
916
756
  materialData.shininess = fieldValues[0];
917
757
  break;
918
-
919
- case 'specularColor':
920
- materialData.emissiveColor = new Color(fieldValues[0], fieldValues[1], fieldValues[2]);
758
+ case "specularColor":
759
+ materialData.emissiveColor = new THREE.Color(fieldValues[0], fieldValues[1], fieldValues[2]);
921
760
  break;
922
-
923
- case 'transparency':
761
+ case "transparency":
924
762
  materialData.transparency = fieldValues[0];
925
763
  break;
926
-
927
764
  default:
928
- console.warn('THREE.VRMLLoader: Unknown field:', fieldName);
765
+ console.warn("THREE.VRMLLoader: Unknown field:", fieldName);
929
766
  break;
930
767
  }
931
768
  }
932
-
933
769
  return materialData;
934
770
  }
935
-
936
771
  function parseHexColor(hex, textureType, color) {
937
772
  let value;
938
-
939
773
  switch (textureType) {
940
774
  case TEXTURE_TYPE.INTENSITY:
941
- // Intensity texture: A one-component image specifies one-byte hexadecimal or integer values representing the intensity of the image
942
775
  value = parseInt(hex);
943
776
  color.r = value;
944
777
  color.g = value;
945
778
  color.b = value;
946
779
  color.a = 1;
947
780
  break;
948
-
949
781
  case TEXTURE_TYPE.INTENSITY_ALPHA:
950
- // Intensity+Alpha texture: A two-component image specifies the intensity in the first (high) byte and the alpha opacity in the second (low) byte.
951
- value = parseInt('0x' + hex.substring(2, 4));
782
+ value = parseInt("0x" + hex.substring(2, 4));
952
783
  color.r = value;
953
784
  color.g = value;
954
785
  color.b = value;
955
- color.a = parseInt('0x' + hex.substring(4, 6));
786
+ color.a = parseInt("0x" + hex.substring(4, 6));
956
787
  break;
957
-
958
788
  case TEXTURE_TYPE.RGB:
959
- // RGB texture: Pixels in a three-component image specify the red component in the first (high) byte, followed by the green and blue components
960
- color.r = parseInt('0x' + hex.substring(2, 4));
961
- color.g = parseInt('0x' + hex.substring(4, 6));
962
- color.b = parseInt('0x' + hex.substring(6, 8));
789
+ color.r = parseInt("0x" + hex.substring(2, 4));
790
+ color.g = parseInt("0x" + hex.substring(4, 6));
791
+ color.b = parseInt("0x" + hex.substring(6, 8));
963
792
  color.a = 1;
964
793
  break;
965
-
966
794
  case TEXTURE_TYPE.RGBA:
967
- // RGBA texture: Four-component images specify the alpha opacity byte after red/green/blue
968
- color.r = parseInt('0x' + hex.substring(2, 4));
969
- color.g = parseInt('0x' + hex.substring(4, 6));
970
- color.b = parseInt('0x' + hex.substring(6, 8));
971
- color.a = parseInt('0x' + hex.substring(8, 10));
795
+ color.r = parseInt("0x" + hex.substring(2, 4));
796
+ color.g = parseInt("0x" + hex.substring(4, 6));
797
+ color.b = parseInt("0x" + hex.substring(6, 8));
798
+ color.a = parseInt("0x" + hex.substring(8, 10));
972
799
  break;
800
+ default:
973
801
  }
974
802
  }
975
-
976
803
  function getTextureType(num_components) {
977
804
  let type;
978
-
979
805
  switch (num_components) {
980
806
  case 1:
981
807
  type = TEXTURE_TYPE.INTENSITY;
982
808
  break;
983
-
984
809
  case 2:
985
810
  type = TEXTURE_TYPE.INTENSITY_ALPHA;
986
811
  break;
987
-
988
812
  case 3:
989
813
  type = TEXTURE_TYPE.RGB;
990
814
  break;
991
-
992
815
  case 4:
993
816
  type = TEXTURE_TYPE.RGBA;
994
817
  break;
818
+ default:
995
819
  }
996
-
997
820
  return type;
998
821
  }
999
-
1000
822
  function buildPixelTextureNode(node) {
1001
823
  let texture;
1002
- let wrapS = RepeatWrapping;
1003
- let wrapT = RepeatWrapping;
824
+ let wrapS = THREE.RepeatWrapping;
825
+ let wrapT = THREE.RepeatWrapping;
1004
826
  const fields = node.fields;
1005
-
1006
827
  for (let i = 0, l = fields.length; i < l; i++) {
1007
828
  const field = fields[i];
1008
829
  const fieldName = field.name;
1009
830
  const fieldValues = field.values;
1010
-
1011
831
  switch (fieldName) {
1012
- case 'image':
832
+ case "image":
1013
833
  const width = fieldValues[0];
1014
834
  const height = fieldValues[1];
1015
835
  const num_components = fieldValues[2];
1016
836
  const textureType = getTextureType(num_components);
1017
- const data = new Uint8Array(4 * width * height);
1018
- const color = {
1019
- r: 0,
1020
- g: 0,
1021
- b: 0,
1022
- a: 0
1023
- };
1024
-
837
+ const data2 = new Uint8Array(4 * width * height);
838
+ const color = { r: 0, g: 0, b: 0, a: 0 };
1025
839
  for (let j = 3, k = 0, jl = fieldValues.length; j < jl; j++, k++) {
1026
840
  parseHexColor(fieldValues[j], textureType, color);
1027
841
  const stride = k * 4;
1028
- data[stride + 0] = color.r;
1029
- data[stride + 1] = color.g;
1030
- data[stride + 2] = color.b;
1031
- data[stride + 3] = color.a;
842
+ data2[stride + 0] = color.r;
843
+ data2[stride + 1] = color.g;
844
+ data2[stride + 2] = color.b;
845
+ data2[stride + 3] = color.a;
1032
846
  }
1033
-
1034
- texture = new DataTexture(data, width, height);
847
+ texture = new THREE.DataTexture(data2, width, height);
1035
848
  texture.needsUpdate = true;
1036
- texture.__type = textureType; // needed for material modifications
1037
-
849
+ texture.__type = textureType;
1038
850
  break;
1039
-
1040
- case 'repeatS':
1041
- if (fieldValues[0] === false) wrapS = ClampToEdgeWrapping;
851
+ case "repeatS":
852
+ if (fieldValues[0] === false)
853
+ wrapS = THREE.ClampToEdgeWrapping;
1042
854
  break;
1043
-
1044
- case 'repeatT':
1045
- if (fieldValues[0] === false) wrapT = ClampToEdgeWrapping;
855
+ case "repeatT":
856
+ if (fieldValues[0] === false)
857
+ wrapT = THREE.ClampToEdgeWrapping;
1046
858
  break;
1047
-
1048
859
  default:
1049
- console.warn('THREE.VRMLLoader: Unknown field:', fieldName);
860
+ console.warn("THREE.VRMLLoader: Unknown field:", fieldName);
1050
861
  break;
1051
862
  }
1052
863
  }
1053
-
1054
864
  if (texture) {
1055
865
  texture.wrapS = wrapS;
1056
866
  texture.wrapT = wrapT;
1057
867
  }
1058
-
1059
868
  return texture;
1060
869
  }
1061
-
1062
870
  function buildImageTextureNode(node) {
1063
871
  let texture;
1064
- let wrapS = RepeatWrapping;
1065
- let wrapT = RepeatWrapping;
872
+ let wrapS = THREE.RepeatWrapping;
873
+ let wrapT = THREE.RepeatWrapping;
1066
874
  const fields = node.fields;
1067
-
1068
875
  for (let i = 0, l = fields.length; i < l; i++) {
1069
876
  const field = fields[i];
1070
877
  const fieldName = field.name;
1071
878
  const fieldValues = field.values;
1072
-
1073
879
  switch (fieldName) {
1074
- case 'url':
880
+ case "url":
1075
881
  const url = fieldValues[0];
1076
- if (url) texture = textureLoader.load(url);
882
+ if (url)
883
+ texture = textureLoader.load(url);
1077
884
  break;
1078
-
1079
- case 'repeatS':
1080
- if (fieldValues[0] === false) wrapS = ClampToEdgeWrapping;
885
+ case "repeatS":
886
+ if (fieldValues[0] === false)
887
+ wrapS = THREE.ClampToEdgeWrapping;
1081
888
  break;
1082
-
1083
- case 'repeatT':
1084
- if (fieldValues[0] === false) wrapT = ClampToEdgeWrapping;
889
+ case "repeatT":
890
+ if (fieldValues[0] === false)
891
+ wrapT = THREE.ClampToEdgeWrapping;
1085
892
  break;
1086
-
1087
893
  default:
1088
- console.warn('THREE.VRMLLoader: Unknown field:', fieldName);
894
+ console.warn("THREE.VRMLLoader: Unknown field:", fieldName);
1089
895
  break;
1090
896
  }
1091
897
  }
1092
-
1093
898
  if (texture) {
1094
899
  texture.wrapS = wrapS;
1095
900
  texture.wrapT = wrapT;
1096
901
  }
1097
-
1098
902
  return texture;
1099
903
  }
1100
-
1101
904
  function buildTextureTransformNode(node) {
1102
905
  const transformData = {
1103
- center: new Vector2(),
1104
- rotation: new Vector2(),
1105
- scale: new Vector2(),
1106
- translation: new Vector2()
906
+ center: new THREE.Vector2(),
907
+ rotation: new THREE.Vector2(),
908
+ scale: new THREE.Vector2(),
909
+ translation: new THREE.Vector2()
1107
910
  };
1108
911
  const fields = node.fields;
1109
-
1110
912
  for (let i = 0, l = fields.length; i < l; i++) {
1111
913
  const field = fields[i];
1112
914
  const fieldName = field.name;
1113
915
  const fieldValues = field.values;
1114
-
1115
916
  switch (fieldName) {
1116
- case 'center':
917
+ case "center":
1117
918
  transformData.center.set(fieldValues[0], fieldValues[1]);
1118
919
  break;
1119
-
1120
- case 'rotation':
920
+ case "rotation":
1121
921
  transformData.rotation = fieldValues[0];
1122
922
  break;
1123
-
1124
- case 'scale':
923
+ case "scale":
1125
924
  transformData.scale.set(fieldValues[0], fieldValues[1]);
1126
925
  break;
1127
-
1128
- case 'translation':
926
+ case "translation":
1129
927
  transformData.translation.set(fieldValues[0], fieldValues[1]);
1130
928
  break;
1131
-
1132
929
  default:
1133
- console.warn('THREE.VRMLLoader: Unknown field:', fieldName);
930
+ console.warn("THREE.VRMLLoader: Unknown field:", fieldName);
1134
931
  break;
1135
932
  }
1136
933
  }
1137
-
1138
934
  return transformData;
1139
935
  }
1140
-
1141
936
  function buildGeometricNode(node) {
1142
937
  return node.fields[0].values;
1143
938
  }
1144
-
1145
939
  function buildWorldInfoNode(node) {
1146
940
  const worldInfo = {};
1147
941
  const fields = node.fields;
1148
-
1149
942
  for (let i = 0, l = fields.length; i < l; i++) {
1150
943
  const field = fields[i];
1151
944
  const fieldName = field.name;
1152
945
  const fieldValues = field.values;
1153
-
1154
946
  switch (fieldName) {
1155
- case 'title':
947
+ case "title":
1156
948
  worldInfo.title = fieldValues[0];
1157
949
  break;
1158
-
1159
- case 'info':
950
+ case "info":
1160
951
  worldInfo.info = fieldValues;
1161
952
  break;
1162
-
1163
953
  default:
1164
- console.warn('THREE.VRMLLoader: Unknown field:', fieldName);
954
+ console.warn("THREE.VRMLLoader: Unknown field:", fieldName);
1165
955
  break;
1166
956
  }
1167
957
  }
1168
-
1169
958
  return worldInfo;
1170
959
  }
1171
-
1172
960
  function buildIndexedFaceSetNode(node) {
1173
961
  let color, coord, normal, texCoord;
1174
- let ccw = true,
1175
- solid = true,
1176
- creaseAngle = 0;
962
+ let ccw = true, solid = true, creaseAngle = 0;
1177
963
  let colorIndex, coordIndex, normalIndex, texCoordIndex;
1178
- let colorPerVertex = true,
1179
- normalPerVertex = true;
964
+ let colorPerVertex = true, normalPerVertex = true;
1180
965
  const fields = node.fields;
1181
-
1182
966
  for (let i = 0, l = fields.length; i < l; i++) {
1183
967
  const field = fields[i];
1184
968
  const fieldName = field.name;
1185
969
  const fieldValues = field.values;
1186
-
1187
970
  switch (fieldName) {
1188
- case 'color':
971
+ case "color":
1189
972
  const colorNode = fieldValues[0];
1190
-
1191
973
  if (colorNode !== null) {
1192
974
  color = getNode(colorNode);
1193
975
  }
1194
-
1195
976
  break;
1196
-
1197
- case 'coord':
977
+ case "coord":
1198
978
  const coordNode = fieldValues[0];
1199
-
1200
979
  if (coordNode !== null) {
1201
980
  coord = getNode(coordNode);
1202
981
  }
1203
-
1204
982
  break;
1205
-
1206
- case 'normal':
983
+ case "normal":
1207
984
  const normalNode = fieldValues[0];
1208
-
1209
985
  if (normalNode !== null) {
1210
986
  normal = getNode(normalNode);
1211
987
  }
1212
-
1213
988
  break;
1214
-
1215
- case 'texCoord':
989
+ case "texCoord":
1216
990
  const texCoordNode = fieldValues[0];
1217
-
1218
991
  if (texCoordNode !== null) {
1219
992
  texCoord = getNode(texCoordNode);
1220
993
  }
1221
-
1222
994
  break;
1223
-
1224
- case 'ccw':
995
+ case "ccw":
1225
996
  ccw = fieldValues[0];
1226
997
  break;
1227
-
1228
- case 'colorIndex':
998
+ case "colorIndex":
1229
999
  colorIndex = fieldValues;
1230
1000
  break;
1231
-
1232
- case 'colorPerVertex':
1001
+ case "colorPerVertex":
1233
1002
  colorPerVertex = fieldValues[0];
1234
1003
  break;
1235
-
1236
- case 'convex':
1237
- // field not supported
1004
+ case "convex":
1238
1005
  break;
1239
-
1240
- case 'coordIndex':
1006
+ case "coordIndex":
1241
1007
  coordIndex = fieldValues;
1242
1008
  break;
1243
-
1244
- case 'creaseAngle':
1009
+ case "creaseAngle":
1245
1010
  creaseAngle = fieldValues[0];
1246
1011
  break;
1247
-
1248
- case 'normalIndex':
1012
+ case "normalIndex":
1249
1013
  normalIndex = fieldValues;
1250
1014
  break;
1251
-
1252
- case 'normalPerVertex':
1015
+ case "normalPerVertex":
1253
1016
  normalPerVertex = fieldValues[0];
1254
1017
  break;
1255
-
1256
- case 'solid':
1018
+ case "solid":
1257
1019
  solid = fieldValues[0];
1258
1020
  break;
1259
-
1260
- case 'texCoordIndex':
1021
+ case "texCoordIndex":
1261
1022
  texCoordIndex = fieldValues;
1262
1023
  break;
1263
-
1264
1024
  default:
1265
- console.warn('THREE.VRMLLoader: Unknown field:', fieldName);
1025
+ console.warn("THREE.VRMLLoader: Unknown field:", fieldName);
1266
1026
  break;
1267
1027
  }
1268
1028
  }
1269
-
1270
- if (coordIndex === undefined) {
1271
- console.warn('THREE.VRMLLoader: Missing coordIndex.');
1272
- return new BufferGeometry(); // handle VRML files with incomplete geometry definition
1029
+ if (coordIndex === void 0) {
1030
+ console.warn("THREE.VRMLLoader: Missing coordIndex.");
1031
+ return new THREE.BufferGeometry();
1273
1032
  }
1274
-
1275
1033
  const triangulatedCoordIndex = triangulateFaceIndex(coordIndex, ccw);
1276
1034
  let colorAttribute;
1277
1035
  let normalAttribute;
1278
1036
  let uvAttribute;
1279
-
1280
1037
  if (color) {
1281
1038
  if (colorPerVertex === true) {
1282
1039
  if (colorIndex && colorIndex.length > 0) {
1283
- // if the colorIndex field is not empty, then it is used to choose colors for each vertex of the IndexedFaceSet.
1284
1040
  const triangulatedColorIndex = triangulateFaceIndex(colorIndex, ccw);
1285
1041
  colorAttribute = computeAttributeFromIndexedData(triangulatedCoordIndex, triangulatedColorIndex, color, 3);
1286
1042
  } else {
1287
- // if the colorIndex field is empty, then the coordIndex field is used to choose colors from the Color node
1288
- colorAttribute = toNonIndexedAttribute(triangulatedCoordIndex, new Float32BufferAttribute(color, 3));
1043
+ colorAttribute = toNonIndexedAttribute(triangulatedCoordIndex, new THREE.Float32BufferAttribute(color, 3));
1289
1044
  }
1290
1045
  } else {
1291
1046
  if (colorIndex && colorIndex.length > 0) {
1292
- // if the colorIndex field is not empty, then they are used to choose one color for each face of the IndexedFaceSet
1293
1047
  const flattenFaceColors = flattenData(color, colorIndex);
1294
1048
  const triangulatedFaceColors = triangulateFaceData(flattenFaceColors, coordIndex);
1295
1049
  colorAttribute = computeAttributeFromFaceData(triangulatedCoordIndex, triangulatedFaceColors);
1296
1050
  } else {
1297
- // if the colorIndex field is empty, then the color are applied to each face of the IndexedFaceSet in order
1298
1051
  const triangulatedFaceColors = triangulateFaceData(color, coordIndex);
1299
1052
  colorAttribute = computeAttributeFromFaceData(triangulatedCoordIndex, triangulatedFaceColors);
1300
1053
  }
1301
1054
  }
1302
1055
  }
1303
-
1304
1056
  if (normal) {
1305
1057
  if (normalPerVertex === true) {
1306
- // consider vertex normals
1307
1058
  if (normalIndex && normalIndex.length > 0) {
1308
- // if the normalIndex field is not empty, then it is used to choose normals for each vertex of the IndexedFaceSet.
1309
1059
  const triangulatedNormalIndex = triangulateFaceIndex(normalIndex, ccw);
1310
- normalAttribute = computeAttributeFromIndexedData(triangulatedCoordIndex, triangulatedNormalIndex, normal, 3);
1060
+ normalAttribute = computeAttributeFromIndexedData(
1061
+ triangulatedCoordIndex,
1062
+ triangulatedNormalIndex,
1063
+ normal,
1064
+ 3
1065
+ );
1311
1066
  } else {
1312
- // if the normalIndex field is empty, then the coordIndex field is used to choose normals from the Normal node
1313
- normalAttribute = toNonIndexedAttribute(triangulatedCoordIndex, new Float32BufferAttribute(normal, 3));
1067
+ normalAttribute = toNonIndexedAttribute(triangulatedCoordIndex, new THREE.Float32BufferAttribute(normal, 3));
1314
1068
  }
1315
1069
  } else {
1316
- // consider face normals
1317
1070
  if (normalIndex && normalIndex.length > 0) {
1318
- // if the normalIndex field is not empty, then they are used to choose one normal for each face of the IndexedFaceSet
1319
1071
  const flattenFaceNormals = flattenData(normal, normalIndex);
1320
1072
  const triangulatedFaceNormals = triangulateFaceData(flattenFaceNormals, coordIndex);
1321
1073
  normalAttribute = computeAttributeFromFaceData(triangulatedCoordIndex, triangulatedFaceNormals);
1322
1074
  } else {
1323
- // if the normalIndex field is empty, then the normals are applied to each face of the IndexedFaceSet in order
1324
1075
  const triangulatedFaceNormals = triangulateFaceData(normal, coordIndex);
1325
1076
  normalAttribute = computeAttributeFromFaceData(triangulatedCoordIndex, triangulatedFaceNormals);
1326
1077
  }
1327
1078
  }
1328
1079
  } else {
1329
- // if the normal field is NULL, then the loader should automatically generate normals, using creaseAngle to determine if and how normals are smoothed across shared vertices
1330
1080
  normalAttribute = computeNormalAttribute(triangulatedCoordIndex, coord, creaseAngle);
1331
1081
  }
1332
-
1333
1082
  if (texCoord) {
1334
- // texture coordinates are always defined on vertex level
1335
1083
  if (texCoordIndex && texCoordIndex.length > 0) {
1336
- // if the texCoordIndex field is not empty, then it is used to choose texture coordinates for each vertex of the IndexedFaceSet.
1337
1084
  const triangulatedTexCoordIndex = triangulateFaceIndex(texCoordIndex, ccw);
1338
1085
  uvAttribute = computeAttributeFromIndexedData(triangulatedCoordIndex, triangulatedTexCoordIndex, texCoord, 2);
1339
1086
  } else {
1340
- // if the texCoordIndex field is empty, then the coordIndex array is used to choose texture coordinates from the TextureCoordinate node
1341
- uvAttribute = toNonIndexedAttribute(triangulatedCoordIndex, new Float32BufferAttribute(texCoord, 2));
1087
+ uvAttribute = toNonIndexedAttribute(triangulatedCoordIndex, new THREE.Float32BufferAttribute(texCoord, 2));
1342
1088
  }
1343
1089
  }
1344
-
1345
- const geometry = new BufferGeometry();
1346
- const positionAttribute = toNonIndexedAttribute(triangulatedCoordIndex, new Float32BufferAttribute(coord, 3));
1347
- geometry.setAttribute('position', positionAttribute);
1348
- geometry.setAttribute('normal', normalAttribute); // optional attributes
1349
-
1350
- if (colorAttribute) geometry.setAttribute('color', colorAttribute);
1351
- if (uvAttribute) geometry.setAttribute('uv', uvAttribute); // "solid" influences the material so let's store it for later use
1352
-
1090
+ const geometry = new THREE.BufferGeometry();
1091
+ const positionAttribute = toNonIndexedAttribute(triangulatedCoordIndex, new THREE.Float32BufferAttribute(coord, 3));
1092
+ geometry.setAttribute("position", positionAttribute);
1093
+ geometry.setAttribute("normal", normalAttribute);
1094
+ if (colorAttribute)
1095
+ geometry.setAttribute("color", colorAttribute);
1096
+ if (uvAttribute)
1097
+ geometry.setAttribute("uv", uvAttribute);
1353
1098
  geometry._solid = solid;
1354
- geometry._type = 'mesh';
1099
+ geometry._type = "mesh";
1355
1100
  return geometry;
1356
1101
  }
1357
-
1358
1102
  function buildIndexedLineSetNode(node) {
1359
1103
  let color, coord;
1360
1104
  let colorIndex, coordIndex;
1361
1105
  let colorPerVertex = true;
1362
1106
  const fields = node.fields;
1363
-
1364
1107
  for (let i = 0, l = fields.length; i < l; i++) {
1365
1108
  const field = fields[i];
1366
1109
  const fieldName = field.name;
1367
1110
  const fieldValues = field.values;
1368
-
1369
1111
  switch (fieldName) {
1370
- case 'color':
1112
+ case "color":
1371
1113
  const colorNode = fieldValues[0];
1372
-
1373
1114
  if (colorNode !== null) {
1374
1115
  color = getNode(colorNode);
1375
1116
  }
1376
-
1377
1117
  break;
1378
-
1379
- case 'coord':
1118
+ case "coord":
1380
1119
  const coordNode = fieldValues[0];
1381
-
1382
1120
  if (coordNode !== null) {
1383
1121
  coord = getNode(coordNode);
1384
1122
  }
1385
-
1386
1123
  break;
1387
-
1388
- case 'colorIndex':
1124
+ case "colorIndex":
1389
1125
  colorIndex = fieldValues;
1390
1126
  break;
1391
-
1392
- case 'colorPerVertex':
1127
+ case "colorPerVertex":
1393
1128
  colorPerVertex = fieldValues[0];
1394
1129
  break;
1395
-
1396
- case 'coordIndex':
1130
+ case "coordIndex":
1397
1131
  coordIndex = fieldValues;
1398
1132
  break;
1399
-
1400
1133
  default:
1401
- console.warn('THREE.VRMLLoader: Unknown field:', fieldName);
1134
+ console.warn("THREE.VRMLLoader: Unknown field:", fieldName);
1402
1135
  break;
1403
1136
  }
1404
- } // build lines
1405
-
1406
-
1137
+ }
1407
1138
  let colorAttribute;
1408
- const expandedLineIndex = expandLineIndex(coordIndex); // create an index for three.js's linesegment primitive
1409
-
1139
+ const expandedLineIndex = expandLineIndex(coordIndex);
1410
1140
  if (color) {
1411
1141
  if (colorPerVertex === true) {
1412
1142
  if (colorIndex.length > 0) {
1413
- // if the colorIndex field is not empty, then one color is used for each polyline of the IndexedLineSet.
1414
- const expandedColorIndex = expandLineIndex(colorIndex); // compute colors for each line segment (rendering primitve)
1415
-
1416
- colorAttribute = computeAttributeFromIndexedData(expandedLineIndex, expandedColorIndex, color, 3); // compute data on vertex level
1143
+ const expandedColorIndex = expandLineIndex(colorIndex);
1144
+ colorAttribute = computeAttributeFromIndexedData(expandedLineIndex, expandedColorIndex, color, 3);
1417
1145
  } else {
1418
- // if the colorIndex field is empty, then the colors are applied to each polyline of the IndexedLineSet in order.
1419
- colorAttribute = toNonIndexedAttribute(expandedLineIndex, new Float32BufferAttribute(color, 3));
1146
+ colorAttribute = toNonIndexedAttribute(expandedLineIndex, new THREE.Float32BufferAttribute(color, 3));
1420
1147
  }
1421
1148
  } else {
1422
1149
  if (colorIndex.length > 0) {
1423
- // if the colorIndex field is not empty, then colors are applied to each vertex of the IndexedLineSet
1424
- const flattenLineColors = flattenData(color, colorIndex); // compute colors for each VRML primitve
1425
-
1426
- const expandedLineColors = expandLineData(flattenLineColors, coordIndex); // compute colors for each line segment (rendering primitve)
1427
-
1428
- colorAttribute = computeAttributeFromLineData(expandedLineIndex, expandedLineColors); // compute data on vertex level
1150
+ const flattenLineColors = flattenData(color, colorIndex);
1151
+ const expandedLineColors = expandLineData(flattenLineColors, coordIndex);
1152
+ colorAttribute = computeAttributeFromLineData(expandedLineIndex, expandedLineColors);
1429
1153
  } else {
1430
- // if the colorIndex field is empty, then the coordIndex field is used to choose colors from the Color node
1431
- const expandedLineColors = expandLineData(color, coordIndex); // compute colors for each line segment (rendering primitve)
1432
-
1433
- colorAttribute = computeAttributeFromLineData(expandedLineIndex, expandedLineColors); // compute data on vertex level
1154
+ const expandedLineColors = expandLineData(color, coordIndex);
1155
+ colorAttribute = computeAttributeFromLineData(expandedLineIndex, expandedLineColors);
1434
1156
  }
1435
1157
  }
1436
- } //
1437
-
1438
-
1439
- const geometry = new BufferGeometry();
1440
- const positionAttribute = toNonIndexedAttribute(expandedLineIndex, new Float32BufferAttribute(coord, 3));
1441
- geometry.setAttribute('position', positionAttribute);
1442
- if (colorAttribute) geometry.setAttribute('color', colorAttribute);
1443
- geometry._type = 'line';
1158
+ }
1159
+ const geometry = new THREE.BufferGeometry();
1160
+ const positionAttribute = toNonIndexedAttribute(expandedLineIndex, new THREE.Float32BufferAttribute(coord, 3));
1161
+ geometry.setAttribute("position", positionAttribute);
1162
+ if (colorAttribute)
1163
+ geometry.setAttribute("color", colorAttribute);
1164
+ geometry._type = "line";
1444
1165
  return geometry;
1445
1166
  }
1446
-
1447
1167
  function buildPointSetNode(node) {
1448
1168
  let color, coord;
1449
1169
  const fields = node.fields;
1450
-
1451
1170
  for (let i = 0, l = fields.length; i < l; i++) {
1452
1171
  const field = fields[i];
1453
1172
  const fieldName = field.name;
1454
1173
  const fieldValues = field.values;
1455
-
1456
1174
  switch (fieldName) {
1457
- case 'color':
1175
+ case "color":
1458
1176
  const colorNode = fieldValues[0];
1459
-
1460
1177
  if (colorNode !== null) {
1461
1178
  color = getNode(colorNode);
1462
1179
  }
1463
-
1464
1180
  break;
1465
-
1466
- case 'coord':
1181
+ case "coord":
1467
1182
  const coordNode = fieldValues[0];
1468
-
1469
1183
  if (coordNode !== null) {
1470
1184
  coord = getNode(coordNode);
1471
1185
  }
1472
-
1473
1186
  break;
1474
-
1475
1187
  default:
1476
- console.warn('THREE.VRMLLoader: Unknown field:', fieldName);
1188
+ console.warn("THREE.VRMLLoader: Unknown field:", fieldName);
1477
1189
  break;
1478
1190
  }
1479
1191
  }
1480
-
1481
- const geometry = new BufferGeometry();
1482
- geometry.setAttribute('position', new Float32BufferAttribute(coord, 3));
1483
- if (color) geometry.setAttribute('color', new Float32BufferAttribute(color, 3));
1484
- geometry._type = 'points';
1192
+ const geometry = new THREE.BufferGeometry();
1193
+ geometry.setAttribute("position", new THREE.Float32BufferAttribute(coord, 3));
1194
+ if (color)
1195
+ geometry.setAttribute("color", new THREE.Float32BufferAttribute(color, 3));
1196
+ geometry._type = "points";
1485
1197
  return geometry;
1486
1198
  }
1487
-
1488
1199
  function buildBoxNode(node) {
1489
- const size = new Vector3(2, 2, 2);
1200
+ const size = new THREE.Vector3(2, 2, 2);
1490
1201
  const fields = node.fields;
1491
-
1492
1202
  for (let i = 0, l = fields.length; i < l; i++) {
1493
1203
  const field = fields[i];
1494
1204
  const fieldName = field.name;
1495
1205
  const fieldValues = field.values;
1496
-
1497
1206
  switch (fieldName) {
1498
- case 'size':
1207
+ case "size":
1499
1208
  size.x = fieldValues[0];
1500
1209
  size.y = fieldValues[1];
1501
1210
  size.z = fieldValues[2];
1502
1211
  break;
1503
-
1504
1212
  default:
1505
- console.warn('THREE.VRMLLoader: Unknown field:', fieldName);
1213
+ console.warn("THREE.VRMLLoader: Unknown field:", fieldName);
1506
1214
  break;
1507
1215
  }
1508
1216
  }
1509
-
1510
- const geometry = new BoxGeometry(size.x, size.y, size.z);
1217
+ const geometry = new THREE.BoxGeometry(size.x, size.y, size.z);
1511
1218
  return geometry;
1512
1219
  }
1513
-
1514
1220
  function buildConeNode(node) {
1515
- let radius = 1,
1516
- height = 2,
1517
- openEnded = false;
1221
+ let radius = 1, height = 2, openEnded = false;
1518
1222
  const fields = node.fields;
1519
-
1520
1223
  for (let i = 0, l = fields.length; i < l; i++) {
1521
1224
  const field = fields[i];
1522
1225
  const fieldName = field.name;
1523
1226
  const fieldValues = field.values;
1524
-
1525
1227
  switch (fieldName) {
1526
- case 'bottom':
1228
+ case "bottom":
1527
1229
  openEnded = !fieldValues[0];
1528
1230
  break;
1529
-
1530
- case 'bottomRadius':
1231
+ case "bottomRadius":
1531
1232
  radius = fieldValues[0];
1532
1233
  break;
1533
-
1534
- case 'height':
1234
+ case "height":
1535
1235
  height = fieldValues[0];
1536
1236
  break;
1537
-
1538
- case 'side':
1539
- // field not supported
1237
+ case "side":
1540
1238
  break;
1541
-
1542
1239
  default:
1543
- console.warn('THREE.VRMLLoader: Unknown field:', fieldName);
1240
+ console.warn("THREE.VRMLLoader: Unknown field:", fieldName);
1544
1241
  break;
1545
1242
  }
1546
1243
  }
1547
-
1548
- const geometry = new ConeGeometry(radius, height, 16, 1, openEnded);
1244
+ const geometry = new THREE.ConeGeometry(radius, height, 16, 1, openEnded);
1549
1245
  return geometry;
1550
1246
  }
1551
-
1552
1247
  function buildCylinderNode(node) {
1553
- let radius = 1,
1554
- height = 2;
1248
+ let radius = 1, height = 2;
1555
1249
  const fields = node.fields;
1556
-
1557
1250
  for (let i = 0, l = fields.length; i < l; i++) {
1558
1251
  const field = fields[i];
1559
1252
  const fieldName = field.name;
1560
1253
  const fieldValues = field.values;
1561
-
1562
1254
  switch (fieldName) {
1563
- case 'bottom':
1564
- // field not supported
1255
+ case "bottom":
1565
1256
  break;
1566
-
1567
- case 'radius':
1257
+ case "radius":
1568
1258
  radius = fieldValues[0];
1569
1259
  break;
1570
-
1571
- case 'height':
1260
+ case "height":
1572
1261
  height = fieldValues[0];
1573
1262
  break;
1574
-
1575
- case 'side':
1576
- // field not supported
1263
+ case "side":
1577
1264
  break;
1578
-
1579
- case 'top':
1580
- // field not supported
1265
+ case "top":
1581
1266
  break;
1582
-
1583
1267
  default:
1584
- console.warn('THREE.VRMLLoader: Unknown field:', fieldName);
1268
+ console.warn("THREE.VRMLLoader: Unknown field:", fieldName);
1585
1269
  break;
1586
1270
  }
1587
1271
  }
1588
-
1589
- const geometry = new CylinderGeometry(radius, radius, height, 16, 1);
1272
+ const geometry = new THREE.CylinderGeometry(radius, radius, height, 16, 1);
1590
1273
  return geometry;
1591
1274
  }
1592
-
1593
1275
  function buildSphereNode(node) {
1594
1276
  let radius = 1;
1595
1277
  const fields = node.fields;
1596
-
1597
1278
  for (let i = 0, l = fields.length; i < l; i++) {
1598
1279
  const field = fields[i];
1599
1280
  const fieldName = field.name;
1600
1281
  const fieldValues = field.values;
1601
-
1602
1282
  switch (fieldName) {
1603
- case 'radius':
1283
+ case "radius":
1604
1284
  radius = fieldValues[0];
1605
1285
  break;
1606
-
1607
1286
  default:
1608
- console.warn('THREE.VRMLLoader: Unknown field:', fieldName);
1287
+ console.warn("THREE.VRMLLoader: Unknown field:", fieldName);
1609
1288
  break;
1610
1289
  }
1611
1290
  }
1612
-
1613
- const geometry = new SphereGeometry(radius, 16, 16);
1291
+ const geometry = new THREE.SphereGeometry(radius, 16, 16);
1614
1292
  return geometry;
1615
1293
  }
1616
-
1617
1294
  function buildElevationGridNode(node) {
1618
1295
  let color;
1619
1296
  let normal;
@@ -1629,118 +1306,87 @@ class VRMLLoader extends Loader {
1629
1306
  let xSpacing = 1;
1630
1307
  let zSpacing = 1;
1631
1308
  const fields = node.fields;
1632
-
1633
1309
  for (let i = 0, l = fields.length; i < l; i++) {
1634
1310
  const field = fields[i];
1635
1311
  const fieldName = field.name;
1636
1312
  const fieldValues = field.values;
1637
-
1638
1313
  switch (fieldName) {
1639
- case 'color':
1314
+ case "color":
1640
1315
  const colorNode = fieldValues[0];
1641
-
1642
1316
  if (colorNode !== null) {
1643
1317
  color = getNode(colorNode);
1644
1318
  }
1645
-
1646
1319
  break;
1647
-
1648
- case 'normal':
1320
+ case "normal":
1649
1321
  const normalNode = fieldValues[0];
1650
-
1651
1322
  if (normalNode !== null) {
1652
1323
  normal = getNode(normalNode);
1653
1324
  }
1654
-
1655
1325
  break;
1656
-
1657
- case 'texCoord':
1326
+ case "texCoord":
1658
1327
  const texCoordNode = fieldValues[0];
1659
-
1660
1328
  if (texCoordNode !== null) {
1661
1329
  texCoord = getNode(texCoordNode);
1662
1330
  }
1663
-
1664
1331
  break;
1665
-
1666
- case 'height':
1332
+ case "height":
1667
1333
  height = fieldValues;
1668
1334
  break;
1669
-
1670
- case 'ccw':
1335
+ case "ccw":
1671
1336
  ccw = fieldValues[0];
1672
1337
  break;
1673
-
1674
- case 'colorPerVertex':
1338
+ case "colorPerVertex":
1675
1339
  colorPerVertex = fieldValues[0];
1676
1340
  break;
1677
-
1678
- case 'creaseAngle':
1341
+ case "creaseAngle":
1679
1342
  creaseAngle = fieldValues[0];
1680
1343
  break;
1681
-
1682
- case 'normalPerVertex':
1344
+ case "normalPerVertex":
1683
1345
  normalPerVertex = fieldValues[0];
1684
1346
  break;
1685
-
1686
- case 'solid':
1347
+ case "solid":
1687
1348
  solid = fieldValues[0];
1688
1349
  break;
1689
-
1690
- case 'xDimension':
1350
+ case "xDimension":
1691
1351
  xDimension = fieldValues[0];
1692
1352
  break;
1693
-
1694
- case 'xSpacing':
1353
+ case "xSpacing":
1695
1354
  xSpacing = fieldValues[0];
1696
1355
  break;
1697
-
1698
- case 'zDimension':
1356
+ case "zDimension":
1699
1357
  zDimension = fieldValues[0];
1700
1358
  break;
1701
-
1702
- case 'zSpacing':
1359
+ case "zSpacing":
1703
1360
  zSpacing = fieldValues[0];
1704
1361
  break;
1705
-
1706
1362
  default:
1707
- console.warn('THREE.VRMLLoader: Unknown field:', fieldName);
1363
+ console.warn("THREE.VRMLLoader: Unknown field:", fieldName);
1708
1364
  break;
1709
1365
  }
1710
- } // vertex data
1711
-
1712
-
1366
+ }
1713
1367
  const vertices = [];
1714
1368
  const normals = [];
1715
1369
  const colors = [];
1716
1370
  const uvs = [];
1717
-
1718
1371
  for (let i = 0; i < zDimension; i++) {
1719
1372
  for (let j = 0; j < xDimension; j++) {
1720
- // compute a row major index
1721
- const index = i * xDimension + j; // vertices
1722
-
1373
+ const index = i * xDimension + j;
1723
1374
  const x = xSpacing * i;
1724
1375
  const y = height[index];
1725
1376
  const z = zSpacing * j;
1726
- vertices.push(x, y, z); // colors
1727
-
1377
+ vertices.push(x, y, z);
1728
1378
  if (color && colorPerVertex === true) {
1729
1379
  const r = color[index * 3 + 0];
1730
1380
  const g = color[index * 3 + 1];
1731
1381
  const b = color[index * 3 + 2];
1732
1382
  colors.push(r, g, b);
1733
- } // normals
1734
-
1735
-
1383
+ }
1736
1384
  if (normal && normalPerVertex === true) {
1737
1385
  const xn = normal[index * 3 + 0];
1738
1386
  const yn = normal[index * 3 + 1];
1739
1387
  const zn = normal[index * 3 + 2];
1740
1388
  normals.push(xn, yn, zn);
1741
- } // uvs
1742
-
1743
-
1389
+ }
1744
1390
  if (texCoord) {
1745
1391
  const s = texCoord[index * 2 + 0];
1746
1392
  const t = texCoord[index * 2 + 1];
@@ -1749,19 +1395,14 @@ class VRMLLoader extends Loader {
1749
1395
  uvs.push(i / (xDimension - 1), j / (zDimension - 1));
1750
1396
  }
1751
1397
  }
1752
- } // indices
1753
-
1754
-
1398
+ }
1755
1399
  const indices = [];
1756
-
1757
1400
  for (let i = 0; i < xDimension - 1; i++) {
1758
1401
  for (let j = 0; j < zDimension - 1; j++) {
1759
- // from https://tecfa.unige.ch/guides/vrml/vrml97/spec/part1/nodesRef.html#ElevationGrid
1760
1402
  const a = i + j * xDimension;
1761
1403
  const b = i + (j + 1) * xDimension;
1762
1404
  const c = i + 1 + (j + 1) * xDimension;
1763
- const d = i + 1 + j * xDimension; // faces
1764
-
1405
+ const d = i + 1 + j * xDimension;
1765
1406
  if (ccw === true) {
1766
1407
  indices.push(a, c, b);
1767
1408
  indices.push(c, a, d);
@@ -1770,14 +1411,11 @@ class VRMLLoader extends Loader {
1770
1411
  indices.push(c, d, a);
1771
1412
  }
1772
1413
  }
1773
- } //
1774
-
1775
-
1776
- const positionAttribute = toNonIndexedAttribute(indices, new Float32BufferAttribute(vertices, 3));
1777
- const uvAttribute = toNonIndexedAttribute(indices, new Float32BufferAttribute(uvs, 2));
1414
+ }
1415
+ const positionAttribute = toNonIndexedAttribute(indices, new THREE.Float32BufferAttribute(vertices, 3));
1416
+ const uvAttribute = toNonIndexedAttribute(indices, new THREE.Float32BufferAttribute(uvs, 2));
1778
1417
  let colorAttribute;
1779
- let normalAttribute; // color attribute
1780
-
1418
+ let normalAttribute;
1781
1419
  if (color) {
1782
1420
  if (colorPerVertex === false) {
1783
1421
  for (let i = 0; i < xDimension - 1; i++) {
@@ -1785,8 +1423,7 @@ class VRMLLoader extends Loader {
1785
1423
  const index = i + j * (xDimension - 1);
1786
1424
  const r = color[index * 3 + 0];
1787
1425
  const g = color[index * 3 + 1];
1788
- const b = color[index * 3 + 2]; // one color per quad
1789
-
1426
+ const b = color[index * 3 + 2];
1790
1427
  colors.push(r, g, b);
1791
1428
  colors.push(r, g, b);
1792
1429
  colors.push(r, g, b);
@@ -1795,14 +1432,11 @@ class VRMLLoader extends Loader {
1795
1432
  colors.push(r, g, b);
1796
1433
  }
1797
1434
  }
1798
-
1799
- colorAttribute = new Float32BufferAttribute(colors, 3);
1435
+ colorAttribute = new THREE.Float32BufferAttribute(colors, 3);
1800
1436
  } else {
1801
- colorAttribute = toNonIndexedAttribute(indices, new Float32BufferAttribute(colors, 3));
1437
+ colorAttribute = toNonIndexedAttribute(indices, new THREE.Float32BufferAttribute(colors, 3));
1802
1438
  }
1803
- } // normal attribute
1804
-
1805
-
1439
+ }
1806
1440
  if (normal) {
1807
1441
  if (normalPerVertex === false) {
1808
1442
  for (let i = 0; i < xDimension - 1; i++) {
@@ -1810,8 +1444,7 @@ class VRMLLoader extends Loader {
1810
1444
  const index = i + j * (xDimension - 1);
1811
1445
  const xn = normal[index * 3 + 0];
1812
1446
  const yn = normal[index * 3 + 1];
1813
- const zn = normal[index * 3 + 2]; // one normal per quad
1814
-
1447
+ const zn = normal[index * 3 + 2];
1815
1448
  normals.push(xn, yn, zn);
1816
1449
  normals.push(xn, yn, zn);
1817
1450
  normals.push(xn, yn, zn);
@@ -1820,27 +1453,23 @@ class VRMLLoader extends Loader {
1820
1453
  normals.push(xn, yn, zn);
1821
1454
  }
1822
1455
  }
1823
-
1824
- normalAttribute = new Float32BufferAttribute(normals, 3);
1456
+ normalAttribute = new THREE.Float32BufferAttribute(normals, 3);
1825
1457
  } else {
1826
- normalAttribute = toNonIndexedAttribute(indices, new Float32BufferAttribute(normals, 3));
1458
+ normalAttribute = toNonIndexedAttribute(indices, new THREE.Float32BufferAttribute(normals, 3));
1827
1459
  }
1828
1460
  } else {
1829
1461
  normalAttribute = computeNormalAttribute(indices, vertices, creaseAngle);
1830
- } // build geometry
1831
-
1832
-
1833
- const geometry = new BufferGeometry();
1834
- geometry.setAttribute('position', positionAttribute);
1835
- geometry.setAttribute('normal', normalAttribute);
1836
- geometry.setAttribute('uv', uvAttribute);
1837
- if (colorAttribute) geometry.setAttribute('color', colorAttribute); // "solid" influences the material so let's store it for later use
1838
-
1462
+ }
1463
+ const geometry = new THREE.BufferGeometry();
1464
+ geometry.setAttribute("position", positionAttribute);
1465
+ geometry.setAttribute("normal", normalAttribute);
1466
+ geometry.setAttribute("uv", uvAttribute);
1467
+ if (colorAttribute)
1468
+ geometry.setAttribute("color", colorAttribute);
1839
1469
  geometry._solid = solid;
1840
- geometry._type = 'mesh';
1470
+ geometry._type = "mesh";
1841
1471
  return geometry;
1842
1472
  }
1843
-
1844
1473
  function buildExtrusionNode(node) {
1845
1474
  let crossSection = [1, 1, 1, -1, -1, -1, -1, 1, 1, 1];
1846
1475
  let spine = [0, 0, 0, 0, 1, 0];
@@ -1852,69 +1481,52 @@ class VRMLLoader extends Loader {
1852
1481
  let endCap = true;
1853
1482
  let solid = true;
1854
1483
  const fields = node.fields;
1855
-
1856
1484
  for (let i = 0, l = fields.length; i < l; i++) {
1857
1485
  const field = fields[i];
1858
1486
  const fieldName = field.name;
1859
1487
  const fieldValues = field.values;
1860
-
1861
1488
  switch (fieldName) {
1862
- case 'beginCap':
1489
+ case "beginCap":
1863
1490
  beginCap = fieldValues[0];
1864
1491
  break;
1865
-
1866
- case 'ccw':
1492
+ case "ccw":
1867
1493
  ccw = fieldValues[0];
1868
1494
  break;
1869
-
1870
- case 'convex':
1871
- // field not supported
1495
+ case "convex":
1872
1496
  break;
1873
-
1874
- case 'creaseAngle':
1497
+ case "creaseAngle":
1875
1498
  creaseAngle = fieldValues[0];
1876
1499
  break;
1877
-
1878
- case 'crossSection':
1500
+ case "crossSection":
1879
1501
  crossSection = fieldValues;
1880
1502
  break;
1881
-
1882
- case 'endCap':
1503
+ case "endCap":
1883
1504
  endCap = fieldValues[0];
1884
1505
  break;
1885
-
1886
- case 'orientation':
1506
+ case "orientation":
1887
1507
  orientation = fieldValues;
1888
1508
  break;
1889
-
1890
- case 'scale':
1509
+ case "scale":
1891
1510
  scale = fieldValues;
1892
1511
  break;
1893
-
1894
- case 'solid':
1512
+ case "solid":
1895
1513
  solid = fieldValues[0];
1896
1514
  break;
1897
-
1898
- case 'spine':
1899
- spine = fieldValues; // only extrusion along the Y-axis are supported so far
1900
-
1515
+ case "spine":
1516
+ spine = fieldValues;
1901
1517
  break;
1902
-
1903
1518
  default:
1904
- console.warn('THREE.VRMLLoader: Unknown field:', fieldName);
1519
+ console.warn("THREE.VRMLLoader: Unknown field:", fieldName);
1905
1520
  break;
1906
1521
  }
1907
1522
  }
1908
-
1909
- const crossSectionClosed = crossSection[0] === crossSection[crossSection.length - 2] && crossSection[1] === crossSection[crossSection.length - 1]; // vertices
1910
-
1523
+ const crossSectionClosed = crossSection[0] === crossSection[crossSection.length - 2] && crossSection[1] === crossSection[crossSection.length - 1];
1911
1524
  const vertices = [];
1912
- const spineVector = new Vector3();
1913
- const scaling = new Vector3();
1914
- const axis = new Vector3();
1915
- const vertex = new Vector3();
1916
- const quaternion = new Quaternion();
1917
-
1525
+ const spineVector = new THREE.Vector3();
1526
+ const scaling = new THREE.Vector3();
1527
+ const axis = new THREE.Vector3();
1528
+ const vertex = new THREE.Vector3();
1529
+ const quaternion = new THREE.Quaternion();
1918
1530
  for (let i = 0, j = 0, o = 0, il = spine.length; i < il; i += 3, j += 2, o += 4) {
1919
1531
  spineVector.fromArray(spine, i);
1920
1532
  scaling.x = scale ? scale[j + 0] : 1;
@@ -1924,39 +1536,30 @@ class VRMLLoader extends Loader {
1924
1536
  axis.y = orientation ? orientation[o + 1] : 0;
1925
1537
  axis.z = orientation ? orientation[o + 2] : 1;
1926
1538
  const angle = orientation ? orientation[o + 3] : 0;
1927
-
1928
1539
  for (let k = 0, kl = crossSection.length; k < kl; k += 2) {
1929
1540
  vertex.x = crossSection[k + 0];
1930
1541
  vertex.y = 0;
1931
- vertex.z = crossSection[k + 1]; // scale
1932
-
1933
- vertex.multiply(scaling); // rotate
1934
-
1542
+ vertex.z = crossSection[k + 1];
1543
+ vertex.multiply(scaling);
1935
1544
  quaternion.setFromAxisAngle(axis, angle);
1936
- vertex.applyQuaternion(quaternion); // translate
1937
-
1545
+ vertex.applyQuaternion(quaternion);
1938
1546
  vertex.add(spineVector);
1939
1547
  vertices.push(vertex.x, vertex.y, vertex.z);
1940
1548
  }
1941
- } // indices
1942
-
1943
-
1549
+ }
1944
1550
  const indices = [];
1945
1551
  const spineCount = spine.length / 3;
1946
1552
  const crossSectionCount = crossSection.length / 2;
1947
-
1948
1553
  for (let i = 0; i < spineCount - 1; i++) {
1949
1554
  for (let j = 0; j < crossSectionCount - 1; j++) {
1950
1555
  const a = j + i * crossSectionCount;
1951
1556
  let b = j + 1 + i * crossSectionCount;
1952
1557
  const c = j + (i + 1) * crossSectionCount;
1953
1558
  let d = j + 1 + (i + 1) * crossSectionCount;
1954
-
1955
1559
  if (j === crossSectionCount - 2 && crossSectionClosed === true) {
1956
1560
  b = i * crossSectionCount;
1957
1561
  d = (i + 1) * crossSectionCount;
1958
1562
  }
1959
-
1960
1563
  if (ccw === true) {
1961
1564
  indices.push(a, b, c);
1962
1565
  indices.push(c, b, d);
@@ -1965,25 +1568,18 @@ class VRMLLoader extends Loader {
1965
1568
  indices.push(c, d, b);
1966
1569
  }
1967
1570
  }
1968
- } // triangulate cap
1969
-
1970
-
1571
+ }
1971
1572
  if (beginCap === true || endCap === true) {
1972
1573
  const contour = [];
1973
-
1974
1574
  for (let i = 0, l = crossSection.length; i < l; i += 2) {
1975
- contour.push(new Vector2(crossSection[i], crossSection[i + 1]));
1575
+ contour.push(new THREE.Vector2(crossSection[i], crossSection[i + 1]));
1976
1576
  }
1977
-
1978
- const faces = ShapeUtils.triangulateShape(contour, []);
1577
+ const faces = THREE.ShapeUtils.triangulateShape(contour, []);
1979
1578
  const capIndices = [];
1980
-
1981
1579
  for (let i = 0, l = faces.length; i < l; i++) {
1982
1580
  const face = faces[i];
1983
1581
  capIndices.push(face[0], face[1], face[2]);
1984
- } // begin cap
1985
-
1986
-
1582
+ }
1987
1583
  if (beginCap === true) {
1988
1584
  for (let i = 0, l = capIndices.length; i < l; i += 3) {
1989
1585
  if (ccw === true) {
@@ -1992,228 +1588,185 @@ class VRMLLoader extends Loader {
1992
1588
  indices.push(capIndices[i + 0], capIndices[i + 2], capIndices[i + 1]);
1993
1589
  }
1994
1590
  }
1995
- } // end cap
1996
-
1997
-
1591
+ }
1998
1592
  if (endCap === true) {
1999
- const indexOffset = crossSectionCount * (spineCount - 1); // references to the first vertex of the last cross section
2000
-
1593
+ const indexOffset = crossSectionCount * (spineCount - 1);
2001
1594
  for (let i = 0, l = capIndices.length; i < l; i += 3) {
2002
1595
  if (ccw === true) {
2003
- indices.push(indexOffset + capIndices[i + 0], indexOffset + capIndices[i + 2], indexOffset + capIndices[i + 1]);
1596
+ indices.push(
1597
+ indexOffset + capIndices[i + 0],
1598
+ indexOffset + capIndices[i + 2],
1599
+ indexOffset + capIndices[i + 1]
1600
+ );
2004
1601
  } else {
2005
- indices.push(indexOffset + capIndices[i + 0], indexOffset + capIndices[i + 1], indexOffset + capIndices[i + 2]);
1602
+ indices.push(
1603
+ indexOffset + capIndices[i + 0],
1604
+ indexOffset + capIndices[i + 1],
1605
+ indexOffset + capIndices[i + 2]
1606
+ );
2006
1607
  }
2007
1608
  }
2008
1609
  }
2009
1610
  }
2010
-
2011
- const positionAttribute = toNonIndexedAttribute(indices, new Float32BufferAttribute(vertices, 3));
1611
+ const positionAttribute = toNonIndexedAttribute(indices, new THREE.Float32BufferAttribute(vertices, 3));
2012
1612
  const normalAttribute = computeNormalAttribute(indices, vertices, creaseAngle);
2013
- const geometry = new BufferGeometry();
2014
- geometry.setAttribute('position', positionAttribute);
2015
- geometry.setAttribute('normal', normalAttribute); // no uvs yet
2016
- // "solid" influences the material so let's store it for later use
2017
-
1613
+ const geometry = new THREE.BufferGeometry();
1614
+ geometry.setAttribute("position", positionAttribute);
1615
+ geometry.setAttribute("normal", normalAttribute);
2018
1616
  geometry._solid = solid;
2019
- geometry._type = 'mesh';
1617
+ geometry._type = "mesh";
2020
1618
  return geometry;
2021
- } // helper functions
2022
-
2023
-
1619
+ }
2024
1620
  function resolveUSE(identifier) {
2025
1621
  const node = nodeMap[identifier];
2026
- const build = getNode(node); // because the same 3D objects can have different transformations, it's necessary to clone them.
2027
- // materials can be influenced by the geometry (e.g. vertex normals). cloning is necessary to avoid
2028
- // any side effects
2029
-
1622
+ const build = getNode(node);
2030
1623
  return build.isObject3D || build.isMaterial ? build.clone() : build;
2031
1624
  }
2032
-
2033
1625
  function parseFieldChildren(children, owner) {
2034
1626
  for (let i = 0, l = children.length; i < l; i++) {
2035
1627
  const object = getNode(children[i]);
2036
- if (object instanceof Object3D) owner.add(object);
1628
+ if (object instanceof THREE.Object3D)
1629
+ owner.add(object);
2037
1630
  }
2038
1631
  }
2039
-
2040
1632
  function triangulateFaceIndex(index, ccw) {
2041
- const indices = []; // since face defintions can have more than three vertices, it's necessary to
2042
- // perform a simple triangulation
2043
-
1633
+ const indices = [];
2044
1634
  let start = 0;
2045
-
2046
1635
  for (let i = 0, l = index.length; i < l; i++) {
2047
1636
  const i1 = index[start];
2048
1637
  const i2 = index[i + (ccw ? 1 : 2)];
2049
1638
  const i3 = index[i + (ccw ? 2 : 1)];
2050
- indices.push(i1, i2, i3); // an index of -1 indicates that the current face has ended and the next one begins
2051
-
1639
+ indices.push(i1, i2, i3);
2052
1640
  if (index[i + 3] === -1 || i + 3 >= l) {
2053
1641
  i += 3;
2054
1642
  start = i + 1;
2055
1643
  }
2056
1644
  }
2057
-
2058
1645
  return indices;
2059
1646
  }
2060
-
2061
- function triangulateFaceData(data, index) {
1647
+ function triangulateFaceData(data2, index) {
2062
1648
  const triangulatedData = [];
2063
1649
  let start = 0;
2064
-
2065
1650
  for (let i = 0, l = index.length; i < l; i++) {
2066
1651
  const stride = start * 3;
2067
- const x = data[stride];
2068
- const y = data[stride + 1];
2069
- const z = data[stride + 2];
2070
- triangulatedData.push(x, y, z); // an index of -1 indicates that the current face has ended and the next one begins
2071
-
1652
+ const x = data2[stride];
1653
+ const y = data2[stride + 1];
1654
+ const z = data2[stride + 2];
1655
+ triangulatedData.push(x, y, z);
2072
1656
  if (index[i + 3] === -1 || i + 3 >= l) {
2073
1657
  i += 3;
2074
1658
  start++;
2075
1659
  }
2076
1660
  }
2077
-
2078
1661
  return triangulatedData;
2079
1662
  }
2080
-
2081
- function flattenData(data, index) {
2082
- const flattenData = [];
2083
-
1663
+ function flattenData(data2, index) {
1664
+ const flattenData2 = [];
2084
1665
  for (let i = 0, l = index.length; i < l; i++) {
2085
1666
  const i1 = index[i];
2086
1667
  const stride = i1 * 3;
2087
- const x = data[stride];
2088
- const y = data[stride + 1];
2089
- const z = data[stride + 2];
2090
- flattenData.push(x, y, z);
1668
+ const x = data2[stride];
1669
+ const y = data2[stride + 1];
1670
+ const z = data2[stride + 2];
1671
+ flattenData2.push(x, y, z);
2091
1672
  }
2092
-
2093
- return flattenData;
1673
+ return flattenData2;
2094
1674
  }
2095
-
2096
1675
  function expandLineIndex(index) {
2097
1676
  const indices = [];
2098
-
2099
1677
  for (let i = 0, l = index.length; i < l; i++) {
2100
1678
  const i1 = index[i];
2101
1679
  const i2 = index[i + 1];
2102
- indices.push(i1, i2); // an index of -1 indicates that the current line has ended and the next one begins
2103
-
1680
+ indices.push(i1, i2);
2104
1681
  if (index[i + 2] === -1 || i + 2 >= l) {
2105
1682
  i += 2;
2106
1683
  }
2107
1684
  }
2108
-
2109
1685
  return indices;
2110
1686
  }
2111
-
2112
- function expandLineData(data, index) {
1687
+ function expandLineData(data2, index) {
2113
1688
  const triangulatedData = [];
2114
1689
  let start = 0;
2115
-
2116
1690
  for (let i = 0, l = index.length; i < l; i++) {
2117
1691
  const stride = start * 3;
2118
- const x = data[stride];
2119
- const y = data[stride + 1];
2120
- const z = data[stride + 2];
2121
- triangulatedData.push(x, y, z); // an index of -1 indicates that the current line has ended and the next one begins
2122
-
1692
+ const x = data2[stride];
1693
+ const y = data2[stride + 1];
1694
+ const z = data2[stride + 2];
1695
+ triangulatedData.push(x, y, z);
2123
1696
  if (index[i + 2] === -1 || i + 2 >= l) {
2124
1697
  i += 2;
2125
1698
  start++;
2126
1699
  }
2127
1700
  }
2128
-
2129
1701
  return triangulatedData;
2130
1702
  }
2131
-
2132
- const vA = new Vector3();
2133
- const vB = new Vector3();
2134
- const vC = new Vector3();
2135
- const uvA = new Vector2();
2136
- const uvB = new Vector2();
2137
- const uvC = new Vector2();
2138
-
2139
- function computeAttributeFromIndexedData(coordIndex, index, data, itemSize) {
2140
- const array = []; // we use the coordIndex.length as delimiter since normalIndex must contain at least as many indices
2141
-
1703
+ const vA = new THREE.Vector3();
1704
+ const vB = new THREE.Vector3();
1705
+ const vC = new THREE.Vector3();
1706
+ const uvA = new THREE.Vector2();
1707
+ const uvB = new THREE.Vector2();
1708
+ const uvC = new THREE.Vector2();
1709
+ function computeAttributeFromIndexedData(coordIndex, index, data2, itemSize) {
1710
+ const array = [];
2142
1711
  for (let i = 0, l = coordIndex.length; i < l; i += 3) {
2143
1712
  const a = index[i];
2144
1713
  const b = index[i + 1];
2145
1714
  const c = index[i + 2];
2146
-
2147
1715
  if (itemSize === 2) {
2148
- uvA.fromArray(data, a * itemSize);
2149
- uvB.fromArray(data, b * itemSize);
2150
- uvC.fromArray(data, c * itemSize);
1716
+ uvA.fromArray(data2, a * itemSize);
1717
+ uvB.fromArray(data2, b * itemSize);
1718
+ uvC.fromArray(data2, c * itemSize);
2151
1719
  array.push(uvA.x, uvA.y);
2152
1720
  array.push(uvB.x, uvB.y);
2153
1721
  array.push(uvC.x, uvC.y);
2154
1722
  } else {
2155
- vA.fromArray(data, a * itemSize);
2156
- vB.fromArray(data, b * itemSize);
2157
- vC.fromArray(data, c * itemSize);
1723
+ vA.fromArray(data2, a * itemSize);
1724
+ vB.fromArray(data2, b * itemSize);
1725
+ vC.fromArray(data2, c * itemSize);
2158
1726
  array.push(vA.x, vA.y, vA.z);
2159
1727
  array.push(vB.x, vB.y, vB.z);
2160
1728
  array.push(vC.x, vC.y, vC.z);
2161
1729
  }
2162
1730
  }
2163
-
2164
- return new Float32BufferAttribute(array, itemSize);
1731
+ return new THREE.Float32BufferAttribute(array, itemSize);
2165
1732
  }
2166
-
2167
1733
  function computeAttributeFromFaceData(index, faceData) {
2168
1734
  const array = [];
2169
-
2170
1735
  for (let i = 0, j = 0, l = index.length; i < l; i += 3, j++) {
2171
1736
  vA.fromArray(faceData, j * 3);
2172
1737
  array.push(vA.x, vA.y, vA.z);
2173
1738
  array.push(vA.x, vA.y, vA.z);
2174
1739
  array.push(vA.x, vA.y, vA.z);
2175
1740
  }
2176
-
2177
- return new Float32BufferAttribute(array, 3);
1741
+ return new THREE.Float32BufferAttribute(array, 3);
2178
1742
  }
2179
-
2180
1743
  function computeAttributeFromLineData(index, lineData) {
2181
1744
  const array = [];
2182
-
2183
1745
  for (let i = 0, j = 0, l = index.length; i < l; i += 2, j++) {
2184
1746
  vA.fromArray(lineData, j * 3);
2185
1747
  array.push(vA.x, vA.y, vA.z);
2186
1748
  array.push(vA.x, vA.y, vA.z);
2187
1749
  }
2188
-
2189
- return new Float32BufferAttribute(array, 3);
1750
+ return new THREE.Float32BufferAttribute(array, 3);
2190
1751
  }
2191
-
2192
1752
  function toNonIndexedAttribute(indices, attribute) {
2193
1753
  const array = attribute.array;
2194
1754
  const itemSize = attribute.itemSize;
2195
1755
  const array2 = new array.constructor(indices.length * itemSize);
2196
- let index = 0,
2197
- index2 = 0;
2198
-
1756
+ let index = 0, index2 = 0;
2199
1757
  for (let i = 0, l = indices.length; i < l; i++) {
2200
1758
  index = indices[i] * itemSize;
2201
-
2202
1759
  for (let j = 0; j < itemSize; j++) {
2203
1760
  array2[index2++] = array[index++];
2204
1761
  }
2205
1762
  }
2206
-
2207
- return new Float32BufferAttribute(array2, itemSize);
1763
+ return new THREE.Float32BufferAttribute(array2, itemSize);
2208
1764
  }
2209
-
2210
- const ab = new Vector3();
2211
- const cb = new Vector3();
2212
-
1765
+ const ab = new THREE.Vector3();
1766
+ const cb = new THREE.Vector3();
2213
1767
  function computeNormalAttribute(index, coord, creaseAngle) {
2214
1768
  const faces = [];
2215
- const vertexNormals = {}; // prepare face and raw vertex normals
2216
-
1769
+ const vertexNormals = {};
2217
1770
  for (let i = 0, l = index.length; i < l; i += 3) {
2218
1771
  const a = index[i];
2219
1772
  const b = index[i + 1];
@@ -2227,18 +1780,18 @@ class VRMLLoader extends Loader {
2227
1780
  cb.cross(ab);
2228
1781
  cb.normalize();
2229
1782
  face.normal.copy(cb);
2230
- if (vertexNormals[a] === undefined) vertexNormals[a] = [];
2231
- if (vertexNormals[b] === undefined) vertexNormals[b] = [];
2232
- if (vertexNormals[c] === undefined) vertexNormals[c] = [];
1783
+ if (vertexNormals[a] === void 0)
1784
+ vertexNormals[a] = [];
1785
+ if (vertexNormals[b] === void 0)
1786
+ vertexNormals[b] = [];
1787
+ if (vertexNormals[c] === void 0)
1788
+ vertexNormals[c] = [];
2233
1789
  vertexNormals[a].push(face.normal);
2234
1790
  vertexNormals[b].push(face.normal);
2235
1791
  vertexNormals[c].push(face.normal);
2236
1792
  faces.push(face);
2237
- } // compute vertex normals and build final geometry
2238
-
2239
-
1793
+ }
2240
1794
  const normals = [];
2241
-
2242
1795
  for (let i = 0, l = faces.length; i < l; i++) {
2243
1796
  const face = faces[i];
2244
1797
  const nA = weightedNormal(vertexNormals[face.a], face.normal, creaseAngle);
@@ -2251,13 +1804,10 @@ class VRMLLoader extends Loader {
2251
1804
  normals.push(nB.x, nB.y, nB.z);
2252
1805
  normals.push(nC.x, nC.y, nC.z);
2253
1806
  }
2254
-
2255
- return new Float32BufferAttribute(normals, 3);
1807
+ return new THREE.Float32BufferAttribute(normals, 3);
2256
1808
  }
2257
-
2258
1809
  function weightedNormal(normals, vector, creaseAngle) {
2259
- const normal = new Vector3();
2260
-
1810
+ const normal = new THREE.Vector3();
2261
1811
  if (creaseAngle === 0) {
2262
1812
  normal.copy(vector);
2263
1813
  } else {
@@ -2267,284 +1817,257 @@ class VRMLLoader extends Loader {
2267
1817
  }
2268
1818
  }
2269
1819
  }
2270
-
2271
1820
  return normal.normalize();
2272
1821
  }
2273
-
2274
1822
  function toColorArray(colors) {
2275
1823
  const array = [];
2276
-
2277
1824
  for (let i = 0, l = colors.length; i < l; i += 3) {
2278
- array.push(new Color(colors[i], colors[i + 1], colors[i + 2]));
1825
+ array.push(new THREE.Color(colors[i], colors[i + 1], colors[i + 2]));
2279
1826
  }
2280
-
2281
1827
  return array;
2282
1828
  }
2283
- /**
2284
- * Vertically paints the faces interpolating between the
2285
- * specified colors at the specified angels. This is used for the Background
2286
- * node, but could be applied to other nodes with multiple faces as well.
2287
- *
2288
- * When used with the Background node, default is directionIsDown is true if
2289
- * interpolating the skyColor down from the Zenith. When interpolationg up from
2290
- * the Nadir i.e. interpolating the groundColor, the directionIsDown is false.
2291
- *
2292
- * The first angle is never specified, it is the Zenith (0 rad). Angles are specified
2293
- * in radians. The geometry is thought a sphere, but could be anything. The color interpolation
2294
- * is linear along the Y axis in any case.
2295
- *
2296
- * You must specify one more color than you have angles at the beginning of the colors array.
2297
- * This is the color of the Zenith (the top of the shape).
2298
- *
2299
- * @param {BufferGeometry} geometry
2300
- * @param {number} radius
2301
- * @param {array} angles
2302
- * @param {array} colors
2303
- * @param {boolean} topDown - Whether to work top down or bottom up.
2304
- */
2305
-
2306
-
2307
1829
  function paintFaces(geometry, radius, angles, colors, topDown) {
2308
- // compute threshold values
2309
1830
  const thresholds = [];
2310
1831
  const startAngle = topDown === true ? 0 : Math.PI;
2311
-
2312
1832
  for (let i = 0, l = colors.length; i < l; i++) {
2313
1833
  let angle = i === 0 ? 0 : angles[i - 1];
2314
1834
  angle = topDown === true ? angle : startAngle - angle;
2315
- const point = new Vector3();
1835
+ const point = new THREE.Vector3();
2316
1836
  point.setFromSphericalCoords(radius, angle, 0);
2317
1837
  thresholds.push(point);
2318
- } // generate vertex colors
2319
-
2320
-
1838
+ }
2321
1839
  const indices = geometry.index;
2322
1840
  const positionAttribute = geometry.attributes.position;
2323
- const colorAttribute = new BufferAttribute(new Float32Array(geometry.attributes.position.count * 3), 3);
2324
- const position = new Vector3();
2325
- const color = new Color();
2326
-
1841
+ const colorAttribute = new THREE.BufferAttribute(new Float32Array(geometry.attributes.position.count * 3), 3);
1842
+ const position = new THREE.Vector3();
1843
+ const color = new THREE.Color();
2327
1844
  for (let i = 0; i < indices.count; i++) {
2328
1845
  const index = indices.getX(i);
2329
1846
  position.fromBufferAttribute(positionAttribute, index);
2330
1847
  let thresholdIndexA, thresholdIndexB;
2331
1848
  let t = 1;
2332
-
2333
1849
  for (let j = 1; j < thresholds.length; j++) {
2334
1850
  thresholdIndexA = j - 1;
2335
1851
  thresholdIndexB = j;
2336
1852
  const thresholdA = thresholds[thresholdIndexA];
2337
1853
  const thresholdB = thresholds[thresholdIndexB];
2338
-
2339
1854
  if (topDown === true) {
2340
- // interpolation for sky color
2341
1855
  if (position.y <= thresholdA.y && position.y > thresholdB.y) {
2342
1856
  t = Math.abs(thresholdA.y - position.y) / Math.abs(thresholdA.y - thresholdB.y);
2343
1857
  break;
2344
1858
  }
2345
1859
  } else {
2346
- // interpolation for ground color
2347
1860
  if (position.y >= thresholdA.y && position.y < thresholdB.y) {
2348
1861
  t = Math.abs(thresholdA.y - position.y) / Math.abs(thresholdA.y - thresholdB.y);
2349
1862
  break;
2350
1863
  }
2351
1864
  }
2352
1865
  }
2353
-
2354
1866
  const colorA = colors[thresholdIndexA];
2355
1867
  const colorB = colors[thresholdIndexB];
2356
1868
  color.copy(colorA).lerp(colorB, t);
2357
1869
  colorAttribute.setXYZ(index, color.r, color.g, color.b);
2358
1870
  }
2359
-
2360
- geometry.setAttribute('color', colorAttribute);
2361
- } //
2362
-
2363
-
2364
- const textureLoader = new TextureLoader(this.manager);
2365
- textureLoader.setPath(this.resourcePath || path).setCrossOrigin(this.crossOrigin); // check version (only 2.0 is supported)
2366
-
2367
- if (data.indexOf('#VRML V2.0') === -1) {
2368
- throw Error('THREE.VRMLLexer: Version of VRML asset not supported.');
2369
- } // create JSON representing the tree structure of the VRML asset
2370
-
2371
-
2372
- const tree = generateVRMLTree(data); // parse the tree structure to a three.js scene
2373
-
1871
+ geometry.setAttribute("color", colorAttribute);
1872
+ }
1873
+ const textureLoader = new THREE.TextureLoader(this.manager);
1874
+ textureLoader.setPath(this.resourcePath || path).setCrossOrigin(this.crossOrigin);
1875
+ if (data.indexOf("#VRML V2.0") === -1) {
1876
+ throw Error("THREE.VRMLLexer: Version of VRML asset not supported.");
1877
+ }
1878
+ const tree = generateVRMLTree(data);
2374
1879
  const scene = parseTree(tree);
2375
1880
  return scene;
2376
1881
  }
2377
-
2378
1882
  }
2379
-
2380
1883
  class VRMLLexer {
2381
1884
  constructor(tokens) {
2382
- this.lexer = new Lexer(tokens); // eslint-disable-line no-undef
1885
+ this.lexer = new chevrotain.Lexer(tokens);
2383
1886
  }
2384
-
2385
1887
  lex(inputText) {
2386
1888
  const lexingResult = this.lexer.tokenize(inputText);
2387
-
2388
1889
  if (lexingResult.errors.length > 0) {
2389
1890
  console.error(lexingResult.errors);
2390
- throw Error('THREE.VRMLLexer: Lexing errors detected.');
1891
+ throw Error("THREE.VRMLLexer: Lexing errors detected.");
2391
1892
  }
2392
-
2393
1893
  return lexingResult;
2394
1894
  }
2395
-
2396
1895
  }
2397
-
2398
- class VRMLParser extends CstParser {
1896
+ class VRMLParser extends chevrotain.CstParser {
2399
1897
  constructor(tokenVocabulary) {
2400
1898
  super(tokenVocabulary);
2401
1899
  const $ = this;
2402
- const Version = tokenVocabulary['Version'];
2403
- const LCurly = tokenVocabulary['LCurly'];
2404
- const RCurly = tokenVocabulary['RCurly'];
2405
- const LSquare = tokenVocabulary['LSquare'];
2406
- const RSquare = tokenVocabulary['RSquare'];
2407
- const Identifier = tokenVocabulary['Identifier'];
2408
- const RouteIdentifier = tokenVocabulary['RouteIdentifier'];
2409
- const StringLiteral = tokenVocabulary['StringLiteral'];
2410
- const HexLiteral = tokenVocabulary['HexLiteral'];
2411
- const NumberLiteral = tokenVocabulary['NumberLiteral'];
2412
- const TrueLiteral = tokenVocabulary['TrueLiteral'];
2413
- const FalseLiteral = tokenVocabulary['FalseLiteral'];
2414
- const NullLiteral = tokenVocabulary['NullLiteral'];
2415
- const DEF = tokenVocabulary['DEF'];
2416
- const USE = tokenVocabulary['USE'];
2417
- const ROUTE = tokenVocabulary['ROUTE'];
2418
- const TO = tokenVocabulary['TO'];
2419
- const NodeName = tokenVocabulary['NodeName'];
2420
- $.RULE('vrml', function () {
1900
+ const Version = tokenVocabulary["Version"];
1901
+ const LCurly = tokenVocabulary["LCurly"];
1902
+ const RCurly = tokenVocabulary["RCurly"];
1903
+ const LSquare = tokenVocabulary["LSquare"];
1904
+ const RSquare = tokenVocabulary["RSquare"];
1905
+ const Identifier = tokenVocabulary["Identifier"];
1906
+ const RouteIdentifier = tokenVocabulary["RouteIdentifier"];
1907
+ const StringLiteral = tokenVocabulary["StringLiteral"];
1908
+ const HexLiteral = tokenVocabulary["HexLiteral"];
1909
+ const NumberLiteral = tokenVocabulary["NumberLiteral"];
1910
+ const TrueLiteral = tokenVocabulary["TrueLiteral"];
1911
+ const FalseLiteral = tokenVocabulary["FalseLiteral"];
1912
+ const NullLiteral = tokenVocabulary["NullLiteral"];
1913
+ const DEF = tokenVocabulary["DEF"];
1914
+ const USE = tokenVocabulary["USE"];
1915
+ const ROUTE = tokenVocabulary["ROUTE"];
1916
+ const TO = tokenVocabulary["TO"];
1917
+ const NodeName = tokenVocabulary["NodeName"];
1918
+ $.RULE("vrml", function() {
2421
1919
  $.SUBRULE($.version);
2422
- $.AT_LEAST_ONE(function () {
1920
+ $.AT_LEAST_ONE(function() {
2423
1921
  $.SUBRULE($.node);
2424
1922
  });
2425
- $.MANY(function () {
1923
+ $.MANY(function() {
2426
1924
  $.SUBRULE($.route);
2427
1925
  });
2428
1926
  });
2429
- $.RULE('version', function () {
1927
+ $.RULE("version", function() {
2430
1928
  $.CONSUME(Version);
2431
1929
  });
2432
- $.RULE('node', function () {
2433
- $.OPTION(function () {
1930
+ $.RULE("node", function() {
1931
+ $.OPTION(function() {
2434
1932
  $.SUBRULE($.def);
2435
1933
  });
2436
1934
  $.CONSUME(NodeName);
2437
1935
  $.CONSUME(LCurly);
2438
- $.MANY(function () {
1936
+ $.MANY(function() {
2439
1937
  $.SUBRULE($.field);
2440
1938
  });
2441
1939
  $.CONSUME(RCurly);
2442
1940
  });
2443
- $.RULE('field', function () {
1941
+ $.RULE("field", function() {
2444
1942
  $.CONSUME(Identifier);
2445
- $.OR2([{
2446
- ALT: function () {
2447
- $.SUBRULE($.singleFieldValue);
2448
- }
2449
- }, {
2450
- ALT: function () {
2451
- $.SUBRULE($.multiFieldValue);
1943
+ $.OR2([
1944
+ {
1945
+ ALT: function() {
1946
+ $.SUBRULE($.singleFieldValue);
1947
+ }
1948
+ },
1949
+ {
1950
+ ALT: function() {
1951
+ $.SUBRULE($.multiFieldValue);
1952
+ }
2452
1953
  }
2453
- }]);
1954
+ ]);
2454
1955
  });
2455
- $.RULE('def', function () {
1956
+ $.RULE("def", function() {
2456
1957
  $.CONSUME(DEF);
2457
- $.OR([{
2458
- ALT: function () {
2459
- $.CONSUME(Identifier);
2460
- }
2461
- }, {
2462
- ALT: function () {
2463
- $.CONSUME(NodeName);
1958
+ $.OR([
1959
+ {
1960
+ ALT: function() {
1961
+ $.CONSUME(Identifier);
1962
+ }
1963
+ },
1964
+ {
1965
+ ALT: function() {
1966
+ $.CONSUME(NodeName);
1967
+ }
2464
1968
  }
2465
- }]);
1969
+ ]);
2466
1970
  });
2467
- $.RULE('use', function () {
1971
+ $.RULE("use", function() {
2468
1972
  $.CONSUME(USE);
2469
- $.OR([{
2470
- ALT: function () {
2471
- $.CONSUME(Identifier);
2472
- }
2473
- }, {
2474
- ALT: function () {
2475
- $.CONSUME(NodeName);
2476
- }
2477
- }]);
2478
- });
2479
- $.RULE('singleFieldValue', function () {
2480
- $.AT_LEAST_ONE(function () {
2481
- $.OR([{
2482
- ALT: function () {
2483
- $.SUBRULE($.node);
2484
- }
2485
- }, {
2486
- ALT: function () {
2487
- $.SUBRULE($.use);
2488
- }
2489
- }, {
2490
- ALT: function () {
2491
- $.CONSUME(StringLiteral);
2492
- }
2493
- }, {
2494
- ALT: function () {
2495
- $.CONSUME(HexLiteral);
2496
- }
2497
- }, {
2498
- ALT: function () {
2499
- $.CONSUME(NumberLiteral);
1973
+ $.OR([
1974
+ {
1975
+ ALT: function() {
1976
+ $.CONSUME(Identifier);
2500
1977
  }
2501
- }, {
2502
- ALT: function () {
2503
- $.CONSUME(TrueLiteral);
2504
- }
2505
- }, {
2506
- ALT: function () {
2507
- $.CONSUME(FalseLiteral);
1978
+ },
1979
+ {
1980
+ ALT: function() {
1981
+ $.CONSUME(NodeName);
2508
1982
  }
2509
- }, {
2510
- ALT: function () {
2511
- $.CONSUME(NullLiteral);
1983
+ }
1984
+ ]);
1985
+ });
1986
+ $.RULE("singleFieldValue", function() {
1987
+ $.AT_LEAST_ONE(function() {
1988
+ $.OR([
1989
+ {
1990
+ ALT: function() {
1991
+ $.SUBRULE($.node);
1992
+ }
1993
+ },
1994
+ {
1995
+ ALT: function() {
1996
+ $.SUBRULE($.use);
1997
+ }
1998
+ },
1999
+ {
2000
+ ALT: function() {
2001
+ $.CONSUME(StringLiteral);
2002
+ }
2003
+ },
2004
+ {
2005
+ ALT: function() {
2006
+ $.CONSUME(HexLiteral);
2007
+ }
2008
+ },
2009
+ {
2010
+ ALT: function() {
2011
+ $.CONSUME(NumberLiteral);
2012
+ }
2013
+ },
2014
+ {
2015
+ ALT: function() {
2016
+ $.CONSUME(TrueLiteral);
2017
+ }
2018
+ },
2019
+ {
2020
+ ALT: function() {
2021
+ $.CONSUME(FalseLiteral);
2022
+ }
2023
+ },
2024
+ {
2025
+ ALT: function() {
2026
+ $.CONSUME(NullLiteral);
2027
+ }
2512
2028
  }
2513
- }]);
2029
+ ]);
2514
2030
  });
2515
2031
  });
2516
- $.RULE('multiFieldValue', function () {
2032
+ $.RULE("multiFieldValue", function() {
2517
2033
  $.CONSUME(LSquare);
2518
- $.MANY(function () {
2519
- $.OR([{
2520
- ALT: function () {
2521
- $.SUBRULE($.node);
2522
- }
2523
- }, {
2524
- ALT: function () {
2525
- $.SUBRULE($.use);
2526
- }
2527
- }, {
2528
- ALT: function () {
2529
- $.CONSUME(StringLiteral);
2530
- }
2531
- }, {
2532
- ALT: function () {
2533
- $.CONSUME(HexLiteral);
2534
- }
2535
- }, {
2536
- ALT: function () {
2537
- $.CONSUME(NumberLiteral);
2538
- }
2539
- }, {
2540
- ALT: function () {
2541
- $.CONSUME(NullLiteral);
2034
+ $.MANY(function() {
2035
+ $.OR([
2036
+ {
2037
+ ALT: function() {
2038
+ $.SUBRULE($.node);
2039
+ }
2040
+ },
2041
+ {
2042
+ ALT: function() {
2043
+ $.SUBRULE($.use);
2044
+ }
2045
+ },
2046
+ {
2047
+ ALT: function() {
2048
+ $.CONSUME(StringLiteral);
2049
+ }
2050
+ },
2051
+ {
2052
+ ALT: function() {
2053
+ $.CONSUME(HexLiteral);
2054
+ }
2055
+ },
2056
+ {
2057
+ ALT: function() {
2058
+ $.CONSUME(NumberLiteral);
2059
+ }
2060
+ },
2061
+ {
2062
+ ALT: function() {
2063
+ $.CONSUME(NullLiteral);
2064
+ }
2542
2065
  }
2543
- }]);
2066
+ ]);
2544
2067
  });
2545
2068
  $.CONSUME(RSquare);
2546
2069
  });
2547
- $.RULE('route', function () {
2070
+ $.RULE("route", function() {
2548
2071
  $.CONSUME(ROUTE);
2549
2072
  $.CONSUME(RouteIdentifier);
2550
2073
  $.CONSUME(TO);
@@ -2552,24 +2075,19 @@ class VRMLParser extends CstParser {
2552
2075
  });
2553
2076
  this.performSelfAnalysis();
2554
2077
  }
2555
-
2556
2078
  }
2557
-
2558
2079
  class Face {
2559
2080
  constructor(a, b, c) {
2560
2081
  this.a = a;
2561
2082
  this.b = b;
2562
2083
  this.c = c;
2563
- this.normal = new Vector3();
2084
+ this.normal = new THREE.Vector3();
2564
2085
  }
2565
-
2566
2086
  }
2567
-
2568
2087
  const TEXTURE_TYPE = {
2569
2088
  INTENSITY: 1,
2570
2089
  INTENSITY_ALPHA: 2,
2571
2090
  RGB: 3,
2572
2091
  RGBA: 4
2573
2092
  };
2574
-
2575
- export { VRMLLoader };
2093
+ exports.VRMLLoader = VRMLLoader;