three-stdlib 2.15.0 → 2.15.2

Sign up to get free protection for your applications and to get access to all the features.
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;