super-three 0.147.1 → 0.154.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (896) hide show
  1. package/LICENSE +1 -1
  2. package/build/three.cjs +37190 -21678
  3. package/build/three.js +37182 -21669
  4. package/build/three.min.js +4 -2
  5. package/build/three.module.js +7656 -6548
  6. package/build/three.module.min.js +7 -0
  7. package/examples/jsm/animation/AnimationClipCreator.js +5 -3
  8. package/examples/jsm/cameras/CinematicCamera.js +1 -2
  9. package/examples/jsm/capabilities/WebGPU.js +17 -5
  10. package/examples/jsm/controls/ArcballControls.js +1835 -1827
  11. package/examples/jsm/controls/FlyControls.js +25 -9
  12. package/examples/jsm/controls/MapControls.js +28 -0
  13. package/examples/jsm/controls/OrbitControls.js +25 -46
  14. package/examples/jsm/controls/PointerLockControls.js +70 -65
  15. package/examples/jsm/controls/TrackballControls.js +18 -4
  16. package/examples/jsm/controls/TransformControls.js +0 -1
  17. package/examples/jsm/csm/CSM.js +12 -6
  18. package/examples/jsm/csm/CSMShader.js +7 -6
  19. package/examples/jsm/effects/AnaglyphEffect.js +6 -20
  20. package/examples/jsm/effects/AsciiEffect.js +3 -6
  21. package/examples/jsm/effects/OutlineEffect.js +2 -16
  22. package/examples/jsm/effects/ParallaxBarrierEffect.js +3 -0
  23. package/examples/jsm/environments/RoomEnvironment.js +6 -2
  24. package/examples/jsm/exporters/DRACOExporter.js +53 -11
  25. package/examples/jsm/exporters/EXRExporter.js +3 -9
  26. package/examples/jsm/exporters/GLTFExporter.js +597 -112
  27. package/examples/jsm/exporters/KTX2Exporter.js +34 -23
  28. package/examples/jsm/exporters/MMDExporter.js +1 -1
  29. package/examples/jsm/exporters/PLYExporter.js +8 -1
  30. package/examples/jsm/exporters/STLExporter.js +8 -4
  31. package/examples/jsm/exporters/USDZExporter.js +184 -124
  32. package/examples/jsm/geometries/ConvexGeometry.js +0 -6
  33. package/examples/jsm/geometries/ParametricGeometry.js +10 -0
  34. package/examples/jsm/helpers/OctreeHelper.js +1 -0
  35. package/examples/jsm/helpers/ViewHelper.js +71 -57
  36. package/examples/jsm/interactive/HTMLMesh.js +16 -3
  37. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  38. package/examples/{js → jsm}/libs/basis/README.md +4 -4
  39. package/examples/jsm/libs/draco/draco_decoder.js +34 -0
  40. package/examples/jsm/libs/draco/draco_decoder.wasm +0 -0
  41. package/examples/jsm/libs/draco/draco_wasm_wrapper.js +117 -0
  42. package/examples/jsm/libs/draco/gltf/draco_decoder.js +33 -0
  43. package/examples/jsm/libs/draco/gltf/draco_decoder.wasm +0 -0
  44. package/examples/jsm/libs/draco/gltf/draco_wasm_wrapper.js +116 -0
  45. package/examples/jsm/libs/lil-gui.module.min.js +2 -2
  46. package/examples/jsm/libs/tween.module.js +803 -0
  47. package/examples/jsm/lights/IESSpotLight.js +25 -0
  48. package/examples/jsm/lights/LightProbeGenerator.js +11 -9
  49. package/examples/jsm/lines/LineMaterial.js +1 -1
  50. package/examples/jsm/lines/LineSegments2.js +12 -10
  51. package/examples/jsm/loaders/3DMLoader.js +9 -6
  52. package/examples/jsm/loaders/3MFLoader.js +17 -12
  53. package/examples/jsm/loaders/AMFLoader.js +7 -4
  54. package/examples/jsm/loaders/BVHLoader.js +2 -2
  55. package/examples/jsm/loaders/ColladaLoader.js +19 -17
  56. package/examples/jsm/loaders/DRACOLoader.js +69 -18
  57. package/examples/jsm/loaders/EXRLoader.js +23 -24
  58. package/examples/jsm/loaders/FBXLoader.js +41 -52
  59. package/examples/jsm/loaders/GCodeLoader.js +1 -2
  60. package/examples/jsm/loaders/GLTFLoader.js +452 -282
  61. package/examples/jsm/loaders/HDRCubeTextureLoader.js +4 -4
  62. package/examples/jsm/loaders/IESLoader.js +337 -0
  63. package/examples/jsm/loaders/KMZLoader.js +4 -4
  64. package/examples/jsm/loaders/KTX2Loader.js +145 -69
  65. package/examples/jsm/loaders/LDrawLoader.js +24 -25
  66. package/examples/jsm/loaders/LWOLoader.js +12 -29
  67. package/examples/jsm/loaders/LottieLoader.js +3 -1
  68. package/examples/jsm/loaders/MMDLoader.js +49 -18
  69. package/examples/jsm/loaders/MTLLoader.js +2 -2
  70. package/examples/jsm/loaders/MaterialXLoader.js +9 -3
  71. package/examples/jsm/loaders/NRRDLoader.js +33 -5
  72. package/examples/jsm/loaders/OBJLoader.js +1 -1
  73. package/examples/jsm/loaders/PCDLoader.js +26 -12
  74. package/examples/jsm/loaders/PDBLoader.js +7 -2
  75. package/examples/jsm/loaders/PLYLoader.js +261 -106
  76. package/examples/jsm/loaders/RGBELoader.js +3 -3
  77. package/examples/jsm/loaders/STLLoader.js +9 -5
  78. package/examples/jsm/loaders/SVGLoader.js +36 -27
  79. package/examples/jsm/loaders/TTFLoader.js +1 -8
  80. package/examples/jsm/loaders/TiltLoader.js +13 -7
  81. package/examples/jsm/loaders/USDZLoader.js +5 -5
  82. package/examples/jsm/loaders/VOXLoader.js +8 -2
  83. package/examples/jsm/loaders/VRMLLoader.js +60 -20
  84. package/examples/jsm/loaders/VTKLoader.js +19 -10
  85. package/examples/jsm/loaders/XYZLoader.js +9 -3
  86. package/examples/jsm/loaders/lwo/IFFParser.js +19 -19
  87. package/examples/jsm/materials/MeshGouraudMaterial.js +2 -5
  88. package/examples/jsm/math/Lut.js +5 -4
  89. package/examples/jsm/math/MeshSurfaceSampler.js +82 -43
  90. package/examples/jsm/misc/ConvexObjectBreaker.js +2 -8
  91. package/examples/jsm/misc/GPUComputationRenderer.js +6 -5
  92. package/examples/jsm/misc/MD2Character.js +2 -2
  93. package/examples/jsm/misc/MD2CharacterComplex.js +2 -2
  94. package/examples/jsm/misc/ProgressiveLightMap.js +12 -10
  95. package/examples/jsm/misc/RollerCoaster.js +7 -1
  96. package/examples/jsm/misc/Volume.js +20 -5
  97. package/examples/jsm/misc/VolumeSlice.js +3 -1
  98. package/examples/jsm/modifiers/CurveModifier.js +1 -0
  99. package/examples/jsm/modifiers/TessellateModifier.js +19 -19
  100. package/examples/jsm/nodes/Nodes.js +149 -335
  101. package/examples/jsm/nodes/accessors/BitangentNode.js +43 -16
  102. package/examples/jsm/nodes/accessors/BufferAttributeNode.js +99 -0
  103. package/examples/jsm/nodes/accessors/BufferNode.js +6 -0
  104. package/examples/jsm/nodes/accessors/CameraNode.js +36 -5
  105. package/examples/jsm/nodes/accessors/CubeTextureNode.js +27 -33
  106. package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +64 -0
  107. package/examples/jsm/nodes/accessors/InstanceNode.js +39 -26
  108. package/examples/jsm/nodes/accessors/MaterialNode.js +164 -39
  109. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +16 -0
  110. package/examples/jsm/nodes/accessors/ModelNode.js +13 -0
  111. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +13 -14
  112. package/examples/jsm/nodes/accessors/MorphNode.js +70 -0
  113. package/examples/jsm/nodes/accessors/NormalNode.js +36 -19
  114. package/examples/jsm/nodes/accessors/Object3DNode.js +40 -12
  115. package/examples/jsm/nodes/accessors/PointUVNode.js +6 -1
  116. package/examples/jsm/nodes/accessors/PositionNode.js +38 -23
  117. package/examples/jsm/nodes/accessors/ReferenceNode.js +21 -14
  118. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +11 -7
  119. package/examples/jsm/nodes/accessors/SceneNode.js +46 -0
  120. package/examples/jsm/nodes/accessors/SkinningNode.js +55 -71
  121. package/examples/jsm/nodes/accessors/StorageBufferNode.js +6 -0
  122. package/examples/jsm/nodes/accessors/TangentNode.js +28 -20
  123. package/examples/jsm/nodes/accessors/TextureBicubicNode.js +94 -0
  124. package/examples/jsm/nodes/accessors/TextureNode.js +143 -13
  125. package/examples/jsm/nodes/accessors/TextureSizeNode.js +35 -0
  126. package/examples/jsm/nodes/accessors/UVNode.js +7 -1
  127. package/examples/jsm/nodes/accessors/UserDataNode.js +6 -0
  128. package/examples/jsm/nodes/code/CodeNode.js +78 -0
  129. package/examples/jsm/nodes/code/ExpressionNode.js +37 -0
  130. package/examples/jsm/nodes/{core → code}/FunctionCallNode.js +15 -1
  131. package/examples/jsm/nodes/{core → code}/FunctionNode.js +31 -9
  132. package/examples/jsm/nodes/code/ScriptableNode.js +488 -0
  133. package/examples/jsm/nodes/code/ScriptableValueNode.js +167 -0
  134. package/examples/jsm/nodes/core/ArrayUniformNode.js +3 -0
  135. package/examples/jsm/nodes/core/AttributeNode.js +17 -9
  136. package/examples/jsm/nodes/core/BypassNode.js +11 -4
  137. package/examples/jsm/nodes/core/CacheNode.js +46 -0
  138. package/examples/jsm/nodes/core/ConstNode.js +3 -0
  139. package/examples/jsm/nodes/core/ContextNode.js +10 -1
  140. package/examples/jsm/nodes/core/IndexNode.js +66 -0
  141. package/examples/jsm/nodes/core/InputNode.js +26 -5
  142. package/examples/jsm/nodes/core/LightingModel.js +17 -0
  143. package/examples/jsm/nodes/core/Node.js +128 -37
  144. package/examples/jsm/nodes/core/NodeAttribute.js +2 -1
  145. package/examples/jsm/nodes/core/NodeBuilder.js +287 -118
  146. package/examples/jsm/nodes/core/NodeCache.js +26 -0
  147. package/examples/jsm/nodes/core/NodeFrame.js +56 -5
  148. package/examples/jsm/nodes/core/NodeUtils.js +115 -28
  149. package/examples/jsm/nodes/core/PropertyNode.js +23 -2
  150. package/examples/jsm/nodes/core/StackNode.js +99 -0
  151. package/examples/jsm/nodes/core/TempNode.js +11 -3
  152. package/examples/jsm/nodes/core/UniformNode.js +16 -1
  153. package/examples/jsm/nodes/core/VarNode.js +19 -29
  154. package/examples/jsm/nodes/core/VaryingNode.js +15 -2
  155. package/examples/jsm/nodes/core/constants.js +6 -0
  156. package/examples/jsm/nodes/display/BlendModeNode.js +33 -19
  157. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +36 -20
  158. package/examples/jsm/nodes/display/ColorSpaceNode.js +60 -47
  159. package/examples/jsm/nodes/display/FrontFacingNode.js +7 -1
  160. package/examples/jsm/nodes/display/NormalMapNode.js +33 -20
  161. package/examples/jsm/nodes/display/PosterizeNode.js +10 -3
  162. package/examples/jsm/nodes/display/ToneMappingNode.js +101 -11
  163. package/examples/jsm/nodes/display/ViewportDepthNode.js +69 -0
  164. package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +34 -0
  165. package/examples/jsm/nodes/display/ViewportNode.js +27 -18
  166. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +31 -0
  167. package/examples/jsm/nodes/display/ViewportTextureNode.js +75 -0
  168. package/examples/jsm/nodes/fog/FogExp2Node.js +35 -0
  169. package/examples/jsm/nodes/fog/FogNode.js +12 -6
  170. package/examples/jsm/nodes/fog/FogRangeNode.js +12 -5
  171. package/examples/jsm/nodes/functions/BSDF/BRDF_BlinnPhong.js +30 -0
  172. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +15 -16
  173. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +3 -3
  174. package/examples/jsm/nodes/functions/BSDF/BRDF_Sheen.js +43 -0
  175. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +9 -7
  176. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +5 -5
  177. package/examples/jsm/nodes/functions/BSDF/EnvironmentBRDF.js +13 -0
  178. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +4 -6
  179. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +8 -6
  180. package/examples/jsm/nodes/functions/PhongLightingModel.js +28 -0
  181. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +155 -45
  182. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +5 -4
  183. package/examples/jsm/nodes/functions/material/getRoughness.js +6 -6
  184. package/examples/jsm/nodes/geometry/RangeNode.js +50 -55
  185. package/examples/jsm/nodes/gpgpu/ComputeNode.js +9 -2
  186. package/examples/jsm/nodes/lighting/AONode.js +5 -3
  187. package/examples/jsm/nodes/lighting/AmbientLightNode.js +27 -0
  188. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +114 -5
  189. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +43 -0
  190. package/examples/jsm/nodes/lighting/EnvironmentNode.js +153 -38
  191. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +15 -10
  192. package/examples/jsm/nodes/lighting/IESSpotLightNode.js +39 -0
  193. package/examples/jsm/nodes/lighting/LightNode.js +57 -0
  194. package/examples/jsm/nodes/lighting/LightUtils.js +17 -0
  195. package/examples/jsm/nodes/lighting/LightingContextNode.js +41 -17
  196. package/examples/jsm/nodes/lighting/LightingNode.js +3 -1
  197. package/examples/jsm/nodes/lighting/LightsNode.js +18 -10
  198. package/examples/jsm/nodes/lighting/PointLightNode.js +71 -0
  199. package/examples/jsm/nodes/lighting/SpotLightNode.js +92 -0
  200. package/examples/jsm/nodes/loaders/NodeLoader.js +5 -4
  201. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +4 -20
  202. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +6 -24
  203. package/examples/jsm/nodes/materials/Materials.js +11 -55
  204. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +5 -26
  205. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +38 -0
  206. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +65 -0
  207. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +47 -6
  208. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +22 -110
  209. package/examples/jsm/nodes/materials/NodeMaterial.js +340 -67
  210. package/examples/jsm/nodes/materials/PointsNodeMaterial.js +7 -10
  211. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +29 -32
  212. package/examples/jsm/nodes/materialx/MaterialXNodes.js +31 -22
  213. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +3 -3
  214. package/examples/jsm/nodes/materialx/lib/mx_noise.js +14 -13
  215. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +4 -3
  216. package/examples/jsm/nodes/math/CondNode.js +43 -17
  217. package/examples/jsm/nodes/math/MathNode.js +184 -73
  218. package/examples/jsm/nodes/math/OperatorNode.js +53 -3
  219. package/examples/jsm/nodes/procedural/CheckerNode.js +16 -8
  220. package/examples/jsm/nodes/shadernode/ShaderNode.js +206 -63
  221. package/examples/jsm/nodes/utils/ArrayElementNode.js +4 -2
  222. package/examples/jsm/nodes/utils/ConvertNode.js +19 -1
  223. package/examples/jsm/nodes/utils/DiscardNode.js +26 -0
  224. package/examples/jsm/nodes/utils/EquirectUVNode.js +10 -4
  225. package/examples/jsm/nodes/utils/JoinNode.js +4 -1
  226. package/examples/jsm/nodes/utils/LoopNode.js +186 -0
  227. package/examples/jsm/nodes/utils/MatcapUVNode.js +11 -4
  228. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +18 -5
  229. package/examples/jsm/nodes/utils/OscNode.js +21 -14
  230. package/examples/jsm/nodes/utils/PackingNode.js +55 -0
  231. package/examples/jsm/nodes/utils/RemapNode.js +13 -5
  232. package/examples/jsm/nodes/utils/RotateUVNode.js +18 -7
  233. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +37 -0
  234. package/examples/jsm/nodes/utils/SplitNode.js +7 -5
  235. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +15 -30
  236. package/examples/jsm/nodes/utils/TimerNode.js +16 -6
  237. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +21 -10
  238. package/examples/jsm/objects/GroundProjectedSkybox.js +172 -0
  239. package/examples/jsm/objects/Lensflare.js +3 -4
  240. package/examples/jsm/objects/MarchingCubes.js +5 -1
  241. package/examples/jsm/objects/Reflector.js +8 -5
  242. package/examples/jsm/objects/Refractor.js +5 -5
  243. package/examples/jsm/objects/ShadowMesh.js +3 -3
  244. package/examples/jsm/objects/Sky.js +1 -1
  245. package/examples/jsm/objects/Water.js +2 -1
  246. package/examples/jsm/objects/Water2.js +1 -1
  247. package/examples/jsm/offscreen/scene.js +1 -0
  248. package/examples/jsm/physics/AmmoPhysics.js +27 -28
  249. package/examples/jsm/physics/RapierPhysics.js +199 -0
  250. package/examples/jsm/postprocessing/AfterimagePass.js +3 -2
  251. package/examples/jsm/postprocessing/BloomPass.js +7 -4
  252. package/examples/jsm/postprocessing/BokehPass.js +3 -8
  253. package/examples/jsm/postprocessing/DotScreenPass.js +1 -2
  254. package/examples/jsm/postprocessing/EffectComposer.js +7 -95
  255. package/examples/jsm/postprocessing/FilmPass.js +1 -2
  256. package/examples/jsm/postprocessing/GlitchPass.js +0 -2
  257. package/examples/jsm/postprocessing/HalftonePass.js +0 -6
  258. package/examples/jsm/postprocessing/OutlinePass.js +8 -10
  259. package/examples/jsm/postprocessing/OutputPass.js +72 -0
  260. package/examples/jsm/postprocessing/Pass.js +2 -0
  261. package/examples/jsm/postprocessing/RenderPixelatedPass.js +4 -3
  262. package/examples/jsm/postprocessing/SAOPass.js +4 -26
  263. package/examples/jsm/postprocessing/SMAAPass.js +5 -8
  264. package/examples/jsm/postprocessing/SSAARenderPass.js +5 -5
  265. package/examples/jsm/postprocessing/SSAOPass.js +4 -14
  266. package/examples/jsm/postprocessing/SSRPass.js +3 -7
  267. package/examples/jsm/postprocessing/SavePass.js +5 -4
  268. package/examples/jsm/postprocessing/ShaderPass.js +1 -0
  269. package/examples/jsm/postprocessing/TAARenderPass.js +17 -4
  270. package/examples/jsm/postprocessing/TexturePass.js +2 -3
  271. package/examples/jsm/postprocessing/UnrealBloomPass.js +13 -21
  272. package/examples/jsm/renderers/CSS2DRenderer.js +6 -1
  273. package/examples/jsm/renderers/CSS3DRenderer.js +27 -5
  274. package/examples/jsm/renderers/{webgpu/WebGPUAnimation.js → common/Animation.js} +4 -4
  275. package/examples/jsm/renderers/common/Attributes.js +75 -0
  276. package/examples/jsm/renderers/common/Backend.js +162 -0
  277. package/examples/jsm/renderers/common/Background.js +134 -0
  278. package/examples/jsm/renderers/common/Binding.js +11 -0
  279. package/examples/jsm/renderers/common/Bindings.js +169 -0
  280. package/examples/jsm/renderers/common/Buffer.js +38 -0
  281. package/examples/jsm/renderers/{webgpu/WebGPUBufferUtils.js → common/BufferUtils.js} +2 -2
  282. package/examples/jsm/renderers/common/ChainMap.js +89 -0
  283. package/examples/jsm/renderers/common/ComputePipeline.js +17 -0
  284. package/examples/jsm/renderers/common/Constants.js +14 -0
  285. package/examples/jsm/renderers/common/CubeRenderTarget.js +65 -0
  286. package/examples/jsm/renderers/common/DataMap.js +54 -0
  287. package/examples/jsm/renderers/common/Geometries.js +215 -0
  288. package/examples/jsm/renderers/{webgpu/WebGPUInfo.js → common/Info.js} +2 -3
  289. package/examples/jsm/renderers/common/Pipeline.js +13 -0
  290. package/examples/jsm/renderers/common/Pipelines.js +321 -0
  291. package/examples/jsm/renderers/common/ProgrammableStage.js +18 -0
  292. package/examples/jsm/renderers/common/RenderContext.js +37 -0
  293. package/examples/jsm/renderers/common/RenderContexts.js +38 -0
  294. package/examples/jsm/renderers/{webgpu/WebGPURenderLists.js → common/RenderList.js} +26 -47
  295. package/examples/jsm/renderers/common/RenderLists.js +38 -0
  296. package/examples/jsm/renderers/common/RenderObject.js +113 -0
  297. package/examples/jsm/renderers/common/RenderObjects.js +92 -0
  298. package/examples/jsm/renderers/common/RenderPipeline.js +16 -0
  299. package/examples/jsm/renderers/common/RenderTarget.js +15 -0
  300. package/examples/jsm/renderers/common/Renderer.js +864 -0
  301. package/examples/jsm/renderers/common/SampledTexture.js +80 -0
  302. package/examples/jsm/renderers/common/Sampler.js +18 -0
  303. package/examples/jsm/renderers/common/StorageBuffer.js +17 -0
  304. package/examples/jsm/renderers/common/Textures.js +206 -0
  305. package/examples/jsm/renderers/{webgpu/WebGPUUniform.js → common/Uniform.js} +13 -9
  306. package/examples/jsm/renderers/common/UniformBuffer.js +15 -0
  307. package/examples/jsm/renderers/{webgpu/WebGPUUniformsGroup.js → common/UniformsGroup.js} +13 -13
  308. package/examples/jsm/renderers/common/nodes/NodeRender.js +302 -0
  309. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeSampledTexture.js → common/nodes/NodeSampledTexture.js} +4 -4
  310. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeSampler.js → common/nodes/NodeSampler.js} +3 -3
  311. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeUniform.js → common/nodes/NodeUniform.js} +1 -1
  312. package/examples/jsm/renderers/common/nodes/Nodes.js +319 -0
  313. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +340 -0
  314. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +58 -50
  315. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +847 -0
  316. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +15 -987
  317. package/examples/jsm/renderers/webgpu/nodes/{WebGPUNodeBuilder.js → WGSLNodeBuilder.js} +139 -92
  318. package/examples/jsm/{nodes/parsers → renderers/webgpu/nodes}/WGSLNodeFunction.js +2 -2
  319. package/examples/jsm/{nodes/parsers → renderers/webgpu/nodes}/WGSLNodeParser.js +1 -1
  320. package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +255 -0
  321. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +145 -0
  322. package/examples/jsm/renderers/webgpu/{constants.js → utils/WebGPUConstants.js} +73 -12
  323. package/examples/jsm/renderers/webgpu/{WebGPURenderPipeline.js → utils/WebGPUPipelineUtils.js} +141 -296
  324. package/examples/jsm/renderers/webgpu/{WebGPUTextureUtils.js → utils/WebGPUTextureMipmapUtils.js} +5 -25
  325. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +937 -0
  326. package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +92 -0
  327. package/examples/jsm/shaders/BleachBypassShader.js +2 -0
  328. package/examples/jsm/shaders/BlendShader.js +1 -2
  329. package/examples/jsm/shaders/BokehShader2.js +3 -0
  330. package/examples/jsm/shaders/ColorifyShader.js +2 -0
  331. package/examples/jsm/shaders/ConvolutionShader.js +2 -0
  332. package/examples/jsm/shaders/CopyShader.js +4 -2
  333. package/examples/jsm/shaders/DotScreenShader.js +2 -0
  334. package/examples/jsm/shaders/ExposureShader.js +44 -0
  335. package/examples/jsm/shaders/FilmShader.js +2 -0
  336. package/examples/jsm/shaders/GammaCorrectionShader.js +2 -0
  337. package/examples/jsm/shaders/HorizontalBlurShader.js +2 -0
  338. package/examples/jsm/shaders/MMDToonShader.js +15 -4
  339. package/examples/jsm/shaders/OutputShader.js +61 -0
  340. package/examples/jsm/shaders/RGBShiftShader.js +4 -2
  341. package/examples/jsm/shaders/SepiaShader.js +2 -0
  342. package/examples/jsm/shaders/ToonShader.js +13 -5
  343. package/examples/jsm/shaders/VelocityShader.js +1 -1
  344. package/examples/jsm/shaders/VerticalBlurShader.js +2 -0
  345. package/examples/jsm/shaders/VignetteShader.js +2 -0
  346. package/examples/jsm/shaders/WaterRefractionShader.js +5 -2
  347. package/examples/jsm/utils/BufferGeometryUtils.js +54 -36
  348. package/examples/jsm/utils/LDrawUtils.js +4 -4
  349. package/examples/jsm/utils/PackedPhongMaterial.js +5 -78
  350. package/examples/jsm/utils/SceneUtils.js +8 -4
  351. package/examples/jsm/utils/SkeletonUtils.js +27 -210
  352. package/examples/jsm/utils/TextureUtils.js +86 -0
  353. package/examples/jsm/webxr/OculusHandPointerModel.js +34 -13
  354. package/examples/jsm/webxr/VRButton.js +1 -2
  355. package/examples/jsm/webxr/XRButton.js +198 -0
  356. package/examples/jsm/webxr/XRHandPrimitiveModel.js +1 -0
  357. package/examples/jsm/webxr/XRPlanes.js +100 -0
  358. package/package.json +35 -87
  359. package/src/Three.Legacy.js +0 -319
  360. package/src/Three.js +4 -3
  361. package/src/animation/AnimationUtils.js +13 -1
  362. package/src/animation/PropertyBinding.js +2 -2
  363. package/src/audio/Audio.js +7 -2
  364. package/src/audio/PositionalAudio.js +8 -0
  365. package/src/cameras/Camera.js +5 -0
  366. package/src/cameras/CubeCamera.js +76 -13
  367. package/src/cameras/OrthographicCamera.js +1 -1
  368. package/src/cameras/PerspectiveCamera.js +1 -1
  369. package/src/constants.js +22 -2
  370. package/src/core/BufferAttribute.js +146 -29
  371. package/src/core/BufferGeometry.js +2 -15
  372. package/src/core/GLBufferAttribute.js +2 -0
  373. package/src/core/InterleavedBufferAttribute.js +1 -1
  374. package/src/core/Object3D.js +37 -8
  375. package/src/extras/DataUtils.js +7 -1
  376. package/src/extras/ImageUtils.js +2 -2
  377. package/src/extras/PMREMGenerator.js +5 -5
  378. package/src/extras/core/Curve.js +1 -1
  379. package/src/extras/curves/LineCurve.js +6 -4
  380. package/src/extras/curves/LineCurve3.js +13 -0
  381. package/src/geometries/BoxGeometry.js +10 -0
  382. package/src/geometries/CircleGeometry.js +11 -1
  383. package/src/geometries/ConeGeometry.js +1 -1
  384. package/src/geometries/CylinderGeometry.js +11 -1
  385. package/src/geometries/EdgesGeometry.js +10 -0
  386. package/src/geometries/ExtrudeGeometry.js +11 -1
  387. package/src/geometries/LatheGeometry.js +10 -0
  388. package/src/geometries/PlaneGeometry.js +10 -0
  389. package/src/geometries/PolyhedronGeometry.js +10 -0
  390. package/src/geometries/RingGeometry.js +11 -1
  391. package/src/geometries/ShapeGeometry.js +10 -0
  392. package/src/geometries/SphereGeometry.js +12 -2
  393. package/src/geometries/TorusGeometry.js +11 -1
  394. package/src/geometries/TorusKnotGeometry.js +10 -0
  395. package/src/geometries/TubeGeometry.js +10 -0
  396. package/src/geometries/WireframeGeometry.js +10 -0
  397. package/src/helpers/Box3Helper.js +1 -2
  398. package/src/lights/DirectionalLight.js +1 -1
  399. package/src/lights/HemisphereLight.js +1 -1
  400. package/src/lights/SpotLight.js +1 -1
  401. package/src/loaders/AudioLoader.js +14 -8
  402. package/src/loaders/CubeTextureLoader.js +2 -0
  403. package/src/loaders/DataTextureLoader.js +5 -1
  404. package/src/loaders/Loader.js +2 -0
  405. package/src/loaders/MaterialLoader.js +9 -0
  406. package/src/loaders/ObjectLoader.js +10 -2
  407. package/src/materials/LineBasicMaterial.js +4 -0
  408. package/src/materials/Material.js +19 -4
  409. package/src/materials/MeshDistanceMaterial.js +0 -9
  410. package/src/materials/MeshPhysicalMaterial.js +32 -6
  411. package/src/materials/ShaderMaterial.js +6 -1
  412. package/src/math/Box2.js +3 -2
  413. package/src/math/Box3.js +49 -64
  414. package/src/math/Color.js +88 -66
  415. package/src/math/ColorManagement.js +75 -16
  416. package/src/math/Euler.js +2 -11
  417. package/src/math/Frustum.js +29 -5
  418. package/src/math/MathUtils.js +43 -1
  419. package/src/math/Matrix3.js +26 -6
  420. package/src/math/Matrix4.js +74 -19
  421. package/src/math/Plane.js +2 -2
  422. package/src/math/Quaternion.js +6 -0
  423. package/src/math/Ray.js +7 -7
  424. package/src/math/Triangle.js +37 -7
  425. package/src/math/Vector2.js +16 -0
  426. package/src/math/Vector3.js +10 -0
  427. package/src/math/interpolants/CubicInterpolant.js +1 -2
  428. package/src/objects/InstancedMesh.js +82 -1
  429. package/src/objects/Mesh.js +108 -76
  430. package/src/objects/Skeleton.js +1 -3
  431. package/src/objects/SkinnedMesh.js +123 -8
  432. package/src/objects/Sprite.js +1 -1
  433. package/src/renderers/WebGLCubeRenderTarget.js +12 -3
  434. package/src/renderers/WebGLMultipleRenderTargets.js +4 -2
  435. package/src/renderers/WebGLRenderTarget.js +14 -2
  436. package/src/renderers/WebGLRenderer.js +1439 -1252
  437. package/src/renderers/shaders/ShaderChunk/alphahash_fragment.glsl.js +7 -0
  438. package/src/renderers/shaders/ShaderChunk/alphahash_pars_fragment.glsl.js +68 -0
  439. package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +1 -1
  440. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +1 -1
  441. package/src/renderers/shaders/ShaderChunk/begin_vertex.glsl.js +6 -0
  442. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +0 -271
  443. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +5 -5
  444. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +2 -10
  445. package/src/renderers/shaders/ShaderChunk/clearcoat_pars_fragment.glsl.js +5 -5
  446. package/src/renderers/shaders/ShaderChunk/common.glsl.js +38 -0
  447. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +1 -1
  448. package/src/renderers/shaders/ShaderChunk/displacementmap_vertex.glsl.js +1 -1
  449. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +1 -1
  450. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +26 -3
  451. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -1
  452. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  453. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +10 -2
  454. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +11 -11
  455. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +39 -13
  456. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +306 -10
  457. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +1 -11
  458. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +9 -1
  459. package/src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl.js +10 -2
  460. package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +1 -1
  461. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +40 -10
  462. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -13
  463. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +7 -7
  464. package/src/renderers/shaders/ShaderChunk/{output_fragment.glsl.js → opaque_fragment.glsl.js} +1 -2
  465. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +11 -5
  466. package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +1 -1
  467. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +4 -11
  468. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +2 -2
  469. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +39 -34
  470. package/src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl.js +1 -1
  471. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
  472. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +5 -5
  473. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +101 -16
  474. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +113 -1
  475. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +135 -7
  476. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +117 -2
  477. package/src/renderers/shaders/ShaderChunk.js +10 -12
  478. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -9
  479. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -1
  480. package/src/renderers/shaders/ShaderLib/cube.glsl.js +1 -1
  481. package/src/renderers/shaders/ShaderLib/depth.glsl.js +2 -0
  482. package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
  483. package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -1
  484. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +7 -2
  485. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +5 -6
  486. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +4 -5
  487. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +4 -2
  488. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +3 -3
  489. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +4 -5
  490. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +20 -14
  491. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +4 -5
  492. package/src/renderers/shaders/ShaderLib/points.glsl.js +17 -2
  493. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +6 -1
  494. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +4 -2
  495. package/src/renderers/shaders/ShaderLib.js +18 -4
  496. package/src/renderers/shaders/UniformsLib.js +27 -15
  497. package/src/renderers/shaders/UniformsUtils.js +12 -3
  498. package/src/renderers/webgl/WebGLBackground.js +23 -12
  499. package/src/renderers/webgl/WebGLBindingStates.js +13 -5
  500. package/src/renderers/webgl/WebGLCapabilities.js +1 -2
  501. package/src/renderers/webgl/WebGLClipping.js +7 -3
  502. package/src/renderers/webgl/WebGLGeometries.js +12 -0
  503. package/src/renderers/webgl/WebGLInfo.js +0 -1
  504. package/src/renderers/webgl/WebGLLights.js +2 -2
  505. package/src/renderers/webgl/WebGLMaterials.js +123 -234
  506. package/src/renderers/webgl/WebGLMorphtargets.js +1 -1
  507. package/src/renderers/webgl/WebGLObjects.js +23 -3
  508. package/src/renderers/webgl/WebGLProgram.js +154 -53
  509. package/src/renderers/webgl/WebGLPrograms.js +213 -130
  510. package/src/renderers/webgl/WebGLRenderStates.js +2 -2
  511. package/src/renderers/webgl/WebGLShadowMap.js +40 -27
  512. package/src/renderers/webgl/WebGLState.js +23 -9
  513. package/src/renderers/webgl/WebGLTextures.js +39 -19
  514. package/src/renderers/webgl/WebGLUniformsGroups.js +74 -33
  515. package/src/renderers/webgl/WebGLUtils.js +41 -29
  516. package/src/renderers/webvr/WebVRManager.js +12 -0
  517. package/src/renderers/webxr/WebXRController.js +3 -0
  518. package/src/renderers/webxr/WebXRManager.js +96 -134
  519. package/src/scenes/Scene.js +2 -18
  520. package/src/textures/CompressedTexture.js +2 -2
  521. package/src/textures/CubeTexture.js +2 -2
  522. package/src/textures/DataTexture.js +2 -2
  523. package/src/textures/DepthTexture.js +22 -0
  524. package/src/textures/FramebufferTexture.js +1 -3
  525. package/src/textures/Source.js +4 -0
  526. package/src/textures/Texture.js +42 -13
  527. package/src/utils.js +13 -1
  528. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
  529. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
  530. package/examples/fonts/open-sans/open-sans.css +0 -9
  531. package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
  532. package/examples/fonts/tabler-icons/fonts/tabler-icons.svg +0 -3966
  533. package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
  534. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
  535. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
  536. package/examples/fonts/tabler-icons/tabler-icons.min.css +0 -4
  537. package/examples/js/animation/AnimationClipCreator.js +0 -89
  538. package/examples/js/animation/CCDIKSolver.js +0 -416
  539. package/examples/js/animation/MMDAnimationHelper.js +0 -1046
  540. package/examples/js/animation/MMDPhysics.js +0 -1174
  541. package/examples/js/cameras/CinematicCamera.js +0 -168
  542. package/examples/js/controls/ArcballControls.js +0 -2770
  543. package/examples/js/controls/DragControls.js +0 -205
  544. package/examples/js/controls/FirstPersonControls.js +0 -312
  545. package/examples/js/controls/FlyControls.js +0 -321
  546. package/examples/js/controls/OrbitControls.js +0 -1101
  547. package/examples/js/controls/PointerLockControls.js +0 -144
  548. package/examples/js/controls/TrackballControls.js +0 -729
  549. package/examples/js/controls/TransformControls.js +0 -1301
  550. package/examples/js/csm/CSM.js +0 -347
  551. package/examples/js/csm/CSMFrustum.js +0 -127
  552. package/examples/js/csm/CSMHelper.js +0 -165
  553. package/examples/js/csm/CSMShader.js +0 -253
  554. package/examples/js/curves/CurveExtras.js +0 -348
  555. package/examples/js/curves/NURBSCurve.js +0 -63
  556. package/examples/js/curves/NURBSSurface.js +0 -48
  557. package/examples/js/curves/NURBSUtils.js +0 -439
  558. package/examples/js/effects/AnaglyphEffect.js +0 -86
  559. package/examples/js/effects/AsciiEffect.js +0 -260
  560. package/examples/js/effects/OutlineEffect.js +0 -450
  561. package/examples/js/effects/ParallaxBarrierEffect.js +0 -62
  562. package/examples/js/effects/PeppersGhostEffect.js +0 -139
  563. package/examples/js/effects/StereoEffect.js +0 -46
  564. package/examples/js/environments/DebugEnvironment.js +0 -53
  565. package/examples/js/environments/RoomEnvironment.js +0 -124
  566. package/examples/js/exporters/ColladaExporter.js +0 -487
  567. package/examples/js/exporters/DRACOExporter.js +0 -212
  568. package/examples/js/exporters/EXRExporter.js +0 -455
  569. package/examples/js/exporters/GLTFExporter.js +0 -2367
  570. package/examples/js/exporters/MMDExporter.js +0 -187
  571. package/examples/js/exporters/OBJExporter.js +0 -260
  572. package/examples/js/exporters/PLYExporter.js +0 -427
  573. package/examples/js/exporters/STLExporter.js +0 -188
  574. package/examples/js/exporters/USDZExporter.js +0 -608
  575. package/examples/js/geometries/BoxLineGeometry.js +0 -59
  576. package/examples/js/geometries/ConvexGeometry.js +0 -53
  577. package/examples/js/geometries/DecalGeometry.js +0 -324
  578. package/examples/js/geometries/LightningStrike.js +0 -861
  579. package/examples/js/geometries/ParametricGeometries.js +0 -216
  580. package/examples/js/geometries/ParametricGeometry.js +0 -121
  581. package/examples/js/geometries/RoundedBoxGeometry.js +0 -142
  582. package/examples/js/geometries/TeapotGeometry.js +0 -335
  583. package/examples/js/geometries/TextGeometry.js +0 -53
  584. package/examples/js/helpers/LightProbeHelper.js +0 -48
  585. package/examples/js/helpers/OctreeHelper.js +0 -76
  586. package/examples/js/helpers/PositionalAudioHelper.js +0 -91
  587. package/examples/js/helpers/RectAreaLightHelper.js +0 -73
  588. package/examples/js/helpers/VertexNormalsHelper.js +0 -74
  589. package/examples/js/helpers/VertexTangentsHelper.js +0 -68
  590. package/examples/js/helpers/ViewHelper.js +0 -281
  591. package/examples/js/interactive/HTMLMesh.js +0 -497
  592. package/examples/js/interactive/InteractiveGroup.js +0 -95
  593. package/examples/js/interactive/SelectionBox.js +0 -195
  594. package/examples/js/interactive/SelectionHelper.js +0 -83
  595. package/examples/js/libs/chevrotain.min.js +0 -3
  596. package/examples/js/libs/draco/draco_decoder.js +0 -52
  597. package/examples/js/libs/draco/draco_decoder.wasm +0 -0
  598. package/examples/js/libs/draco/draco_wasm_wrapper.js +0 -104
  599. package/examples/js/libs/draco/gltf/draco_decoder.js +0 -48
  600. package/examples/js/libs/draco/gltf/draco_decoder.wasm +0 -0
  601. package/examples/js/libs/draco/gltf/draco_wasm_wrapper.js +0 -104
  602. package/examples/js/libs/fflate.min.js +0 -7
  603. package/examples/js/libs/ktx-parse.umd.js +0 -1
  604. package/examples/js/libs/meshopt_decoder.js +0 -188
  605. package/examples/js/libs/opentype.min.js +0 -1
  606. package/examples/js/libs/stats.min.js +0 -5
  607. package/examples/js/lights/LightProbeGenerator.js +0 -221
  608. package/examples/js/lights/RectAreaLightUniformsLib.js +0 -60
  609. package/examples/js/lines/Line2.js +0 -19
  610. package/examples/js/lines/LineGeometry.js +0 -69
  611. package/examples/js/lines/LineMaterial.js +0 -635
  612. package/examples/js/lines/LineSegments2.js +0 -313
  613. package/examples/js/lines/LineSegmentsGeometry.js +0 -198
  614. package/examples/js/lines/Wireframe.js +0 -47
  615. package/examples/js/lines/WireframeGeometry2.js +0 -20
  616. package/examples/js/loaders/3DMLoader.js +0 -1273
  617. package/examples/js/loaders/3MFLoader.js +0 -1306
  618. package/examples/js/loaders/AMFLoader.js +0 -504
  619. package/examples/js/loaders/BVHLoader.js +0 -395
  620. package/examples/js/loaders/BasisTextureLoader.js +0 -706
  621. package/examples/js/loaders/ColladaLoader.js +0 -3690
  622. package/examples/js/loaders/DDSLoader.js +0 -244
  623. package/examples/js/loaders/DRACOLoader.js +0 -511
  624. package/examples/js/loaders/EXRLoader.js +0 -2039
  625. package/examples/js/loaders/FBXLoader.js +0 -3681
  626. package/examples/js/loaders/FontLoader.js +0 -160
  627. package/examples/js/loaders/GCodeLoader.js +0 -255
  628. package/examples/js/loaders/GLTFLoader.js +0 -3862
  629. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -87
  630. package/examples/js/loaders/KMZLoader.js +0 -121
  631. package/examples/js/loaders/KTXLoader.js +0 -159
  632. package/examples/js/loaders/LDrawLoader.js +0 -2263
  633. package/examples/js/loaders/LUT3dlLoader.js +0 -135
  634. package/examples/js/loaders/LUTCubeLoader.js +0 -132
  635. package/examples/js/loaders/LWOLoader.js +0 -901
  636. package/examples/js/loaders/LogLuvLoader.js +0 -715
  637. package/examples/js/loaders/LottieLoader.js +0 -62
  638. package/examples/js/loaders/MD2Loader.js +0 -248
  639. package/examples/js/loaders/MDDLoader.js +0 -91
  640. package/examples/js/loaders/MMDLoader.js +0 -1915
  641. package/examples/js/loaders/MTLLoader.js +0 -472
  642. package/examples/js/loaders/NRRDLoader.js +0 -609
  643. package/examples/js/loaders/OBJLoader.js +0 -789
  644. package/examples/js/loaders/PCDLoader.js +0 -413
  645. package/examples/js/loaders/PDBLoader.js +0 -317
  646. package/examples/js/loaders/PLYLoader.js +0 -576
  647. package/examples/js/loaders/PRWMLoader.js +0 -249
  648. package/examples/js/loaders/PVRLoader.js +0 -218
  649. package/examples/js/loaders/RGBELoader.js +0 -442
  650. package/examples/js/loaders/RGBMLoader.js +0 -1354
  651. package/examples/js/loaders/STLLoader.js +0 -364
  652. package/examples/js/loaders/SVGLoader.js +0 -2783
  653. package/examples/js/loaders/TDSLoader.js +0 -992
  654. package/examples/js/loaders/TGALoader.js +0 -484
  655. package/examples/js/loaders/TIFFLoader.js +0 -30
  656. package/examples/js/loaders/TTFLoader.js +0 -203
  657. package/examples/js/loaders/TiltLoader.js +0 -459
  658. package/examples/js/loaders/VOXLoader.js +0 -240
  659. package/examples/js/loaders/VRMLLoader.js +0 -3140
  660. package/examples/js/loaders/VTKLoader.js +0 -1078
  661. package/examples/js/loaders/XYZLoader.js +0 -89
  662. package/examples/js/loaders/lwo/IFFParser.js +0 -1067
  663. package/examples/js/loaders/lwo/LWO2Parser.js +0 -397
  664. package/examples/js/loaders/lwo/LWO3Parser.js +0 -360
  665. package/examples/js/materials/MeshGouraudMaterial.js +0 -387
  666. package/examples/js/math/Capsule.js +0 -103
  667. package/examples/js/math/ColorConverter.js +0 -33
  668. package/examples/js/math/ConvexHull.js +0 -1154
  669. package/examples/js/math/ImprovedNoise.js +0 -66
  670. package/examples/js/math/Lut.js +0 -164
  671. package/examples/js/math/MeshSurfaceSampler.js +0 -171
  672. package/examples/js/math/OBB.js +0 -382
  673. package/examples/js/math/Octree.js +0 -410
  674. package/examples/js/math/SimplexNoise.js +0 -445
  675. package/examples/js/misc/ConvexObjectBreaker.js +0 -474
  676. package/examples/js/misc/GPUComputationRenderer.js +0 -393
  677. package/examples/js/misc/Gyroscope.js +0 -56
  678. package/examples/js/misc/MD2Character.js +0 -235
  679. package/examples/js/misc/MD2CharacterComplex.js +0 -513
  680. package/examples/js/misc/MorphAnimMesh.js +0 -63
  681. package/examples/js/misc/MorphBlendMesh.js +0 -265
  682. package/examples/js/misc/ProgressiveLightMap.js +0 -335
  683. package/examples/js/misc/RollerCoaster.js +0 -430
  684. package/examples/js/misc/TubePainter.js +0 -167
  685. package/examples/js/misc/Volume.js +0 -437
  686. package/examples/js/misc/VolumeSlice.js +0 -214
  687. package/examples/js/modifiers/CurveModifier.js +0 -309
  688. package/examples/js/modifiers/EdgeSplitModifier.js +0 -228
  689. package/examples/js/modifiers/SimplifyModifier.js +0 -465
  690. package/examples/js/modifiers/TessellateModifier.js +0 -276
  691. package/examples/js/objects/GroundProjectedEnv.js +0 -181
  692. package/examples/js/objects/Lensflare.js +0 -356
  693. package/examples/js/objects/LightningStorm.js +0 -206
  694. package/examples/js/objects/MarchingCubes.js +0 -759
  695. package/examples/js/objects/Reflector.js +0 -216
  696. package/examples/js/objects/ReflectorForSSRPass.js +0 -315
  697. package/examples/js/objects/Refractor.js +0 -283
  698. package/examples/js/objects/ShadowMesh.js +0 -59
  699. package/examples/js/objects/Sky.js +0 -218
  700. package/examples/js/objects/Water.js +0 -292
  701. package/examples/js/objects/Water2.js +0 -307
  702. package/examples/js/physics/AmmoPhysics.js +0 -259
  703. package/examples/js/physics/OimoPhysics.js +0 -217
  704. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +0 -335
  705. package/examples/js/postprocessing/AfterimagePass.js +0 -77
  706. package/examples/js/postprocessing/BloomPass.js +0 -135
  707. package/examples/js/postprocessing/BokehPass.js +0 -120
  708. package/examples/js/postprocessing/ClearPass.js +0 -39
  709. package/examples/js/postprocessing/CubeTexturePass.js +0 -60
  710. package/examples/js/postprocessing/DotScreenPass.js +0 -51
  711. package/examples/js/postprocessing/EffectComposer.js +0 -272
  712. package/examples/js/postprocessing/FilmPass.js +0 -52
  713. package/examples/js/postprocessing/GlitchPass.js +0 -104
  714. package/examples/js/postprocessing/HalftonePass.js +0 -75
  715. package/examples/js/postprocessing/LUTPass.js +0 -171
  716. package/examples/js/postprocessing/MaskPass.js +0 -95
  717. package/examples/js/postprocessing/OutlinePass.js +0 -598
  718. package/examples/js/postprocessing/Pass.js +0 -72
  719. package/examples/js/postprocessing/RenderPass.js +0 -70
  720. package/examples/js/postprocessing/RenderPixelatedPass.js +0 -215
  721. package/examples/js/postprocessing/SAOPass.js +0 -374
  722. package/examples/js/postprocessing/SMAAPass.js +0 -170
  723. package/examples/js/postprocessing/SSAARenderPass.js +0 -156
  724. package/examples/js/postprocessing/SSAOPass.js +0 -365
  725. package/examples/js/postprocessing/SSRPass.js +0 -567
  726. package/examples/js/postprocessing/SavePass.js +0 -59
  727. package/examples/js/postprocessing/ShaderPass.js +0 -64
  728. package/examples/js/postprocessing/TAARenderPass.js +0 -130
  729. package/examples/js/postprocessing/TexturePass.js +0 -49
  730. package/examples/js/postprocessing/UnrealBloomPass.js +0 -375
  731. package/examples/js/renderers/CSS2DRenderer.js +0 -178
  732. package/examples/js/renderers/CSS3DRenderer.js +0 -237
  733. package/examples/js/renderers/Projector.js +0 -818
  734. package/examples/js/renderers/SVGRenderer.js +0 -491
  735. package/examples/js/shaders/ACESFilmicToneMappingShader.js +0 -89
  736. package/examples/js/shaders/AfterimageShader.js +0 -60
  737. package/examples/js/shaders/BasicShader.js +0 -27
  738. package/examples/js/shaders/BleachBypassShader.js +0 -62
  739. package/examples/js/shaders/BlendShader.js +0 -54
  740. package/examples/js/shaders/BokehShader.js +0 -156
  741. package/examples/js/shaders/BokehShader2.js +0 -419
  742. package/examples/js/shaders/BrightnessContrastShader.js +0 -58
  743. package/examples/js/shaders/ColorCorrectionShader.js +0 -52
  744. package/examples/js/shaders/ColorifyShader.js +0 -47
  745. package/examples/js/shaders/ConvolutionShader.js +0 -92
  746. package/examples/js/shaders/CopyShader.js +0 -45
  747. package/examples/js/shaders/DOFMipMapShader.js +0 -60
  748. package/examples/js/shaders/DepthLimitedBlurShader.js +0 -173
  749. package/examples/js/shaders/DigitalGlitch.js +0 -127
  750. package/examples/js/shaders/DotScreenShader.js +0 -72
  751. package/examples/js/shaders/FXAAShader.js +0 -284
  752. package/examples/js/shaders/FilmShader.js +0 -110
  753. package/examples/js/shaders/FocusShader.js +0 -95
  754. package/examples/js/shaders/FreiChenShader.js +0 -93
  755. package/examples/js/shaders/GammaCorrectionShader.js +0 -41
  756. package/examples/js/shaders/GodRaysShader.js +0 -284
  757. package/examples/js/shaders/HalftoneShader.js +0 -336
  758. package/examples/js/shaders/HorizontalBlurShader.js +0 -59
  759. package/examples/js/shaders/HorizontalTiltShiftShader.js +0 -65
  760. package/examples/js/shaders/HueSaturationShader.js +0 -69
  761. package/examples/js/shaders/KaleidoShader.js +0 -60
  762. package/examples/js/shaders/LuminosityHighPassShader.js +0 -67
  763. package/examples/js/shaders/LuminosityShader.js +0 -46
  764. package/examples/js/shaders/MMDToonShader.js +0 -94
  765. package/examples/js/shaders/MirrorShader.js +0 -56
  766. package/examples/js/shaders/NormalMapShader.js +0 -55
  767. package/examples/js/shaders/RGBShiftShader.js +0 -56
  768. package/examples/js/shaders/SAOShader.js +0 -209
  769. package/examples/js/shaders/SMAAShader.js +0 -454
  770. package/examples/js/shaders/SSAOShader.js +0 -295
  771. package/examples/js/shaders/SSRShader.js +0 -381
  772. package/examples/js/shaders/SepiaShader.js +0 -52
  773. package/examples/js/shaders/SobelOperatorShader.js +0 -88
  774. package/examples/js/shaders/SubsurfaceScatteringShader.js +0 -49
  775. package/examples/js/shaders/TechnicolorShader.js +0 -43
  776. package/examples/js/shaders/ToneMapShader.js +0 -84
  777. package/examples/js/shaders/ToonShader.js +0 -335
  778. package/examples/js/shaders/TriangleBlurShader.js +0 -70
  779. package/examples/js/shaders/UnpackDepthRGBAShader.js +0 -47
  780. package/examples/js/shaders/VelocityShader.js +0 -126
  781. package/examples/js/shaders/VerticalBlurShader.js +0 -59
  782. package/examples/js/shaders/VerticalTiltShiftShader.js +0 -65
  783. package/examples/js/shaders/VignetteShader.js +0 -53
  784. package/examples/js/shaders/VolumeShader.js +0 -296
  785. package/examples/js/shaders/WaterRefractionShader.js +0 -84
  786. package/examples/js/textures/FlakesTexture.js +0 -40
  787. package/examples/js/utils/BufferGeometryUtils.js +0 -1160
  788. package/examples/js/utils/CameraUtils.js +0 -71
  789. package/examples/js/utils/GPUStatsPanel.js +0 -125
  790. package/examples/js/utils/GeometryCompressionUtils.js +0 -549
  791. package/examples/js/utils/GeometryUtils.js +0 -168
  792. package/examples/js/utils/LDrawUtils.js +0 -179
  793. package/examples/js/utils/PackedPhongMaterial.js +0 -109
  794. package/examples/js/utils/SceneUtils.js +0 -214
  795. package/examples/js/utils/ShadowMapViewer.js +0 -183
  796. package/examples/js/utils/SkeletonUtils.js +0 -493
  797. package/examples/js/utils/UVsDebug.js +0 -143
  798. package/examples/js/utils/WorkerPool.js +0 -105
  799. package/examples/jsm/exporters/ColladaExporter.js +0 -713
  800. package/examples/jsm/geometries/LightningStrike.js +0 -1017
  801. package/examples/jsm/libs/OimoPhysics/OimoPhysics.js +0 -37071
  802. package/examples/jsm/libs/OimoPhysics/index.js +0 -43
  803. package/examples/jsm/libs/flow.module.js +0 -4552
  804. package/examples/jsm/libs/tween.module.min.js +0 -3
  805. package/examples/jsm/loaders/BasisTextureLoader.js +0 -790
  806. package/examples/jsm/loaders/IFCLoader.js +0 -2431
  807. package/examples/jsm/loaders/PRWMLoader.js +0 -299
  808. package/examples/jsm/loaders/ifc/web-ifc-api.js +0 -47504
  809. package/examples/jsm/loaders/ifc/web-ifc.wasm +0 -0
  810. package/examples/jsm/node-editor/NodeEditor.js +0 -857
  811. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +0 -14
  812. package/examples/jsm/node-editor/accessors/NormalEditor.js +0 -30
  813. package/examples/jsm/node-editor/accessors/PositionEditor.js +0 -30
  814. package/examples/jsm/node-editor/accessors/UVEditor.js +0 -25
  815. package/examples/jsm/node-editor/core/BaseNode.js +0 -96
  816. package/examples/jsm/node-editor/core/DataFile.js +0 -59
  817. package/examples/jsm/node-editor/core/FileEditor.js +0 -20
  818. package/examples/jsm/node-editor/core/FileURLEditor.js +0 -29
  819. package/examples/jsm/node-editor/display/BlendEditor.js +0 -44
  820. package/examples/jsm/node-editor/display/NormalMapEditor.js +0 -49
  821. package/examples/jsm/node-editor/examples/animate-uv.json +0 -1
  822. package/examples/jsm/node-editor/examples/fake-top-light.json +0 -1
  823. package/examples/jsm/node-editor/examples/matcap.json +0 -1
  824. package/examples/jsm/node-editor/examples/oscillator-color.json +0 -1
  825. package/examples/jsm/node-editor/examples/rim.json +0 -1
  826. package/examples/jsm/node-editor/inputs/ColorEditor.js +0 -96
  827. package/examples/jsm/node-editor/inputs/FloatEditor.js +0 -23
  828. package/examples/jsm/node-editor/inputs/SliderEditor.js +0 -67
  829. package/examples/jsm/node-editor/inputs/TextureEditor.js +0 -155
  830. package/examples/jsm/node-editor/inputs/Vector2Editor.js +0 -28
  831. package/examples/jsm/node-editor/inputs/Vector3Editor.js +0 -30
  832. package/examples/jsm/node-editor/inputs/Vector4Editor.js +0 -37
  833. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +0 -84
  834. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +0 -102
  835. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +0 -118
  836. package/examples/jsm/node-editor/math/AngleEditor.js +0 -40
  837. package/examples/jsm/node-editor/math/DotEditor.js +0 -35
  838. package/examples/jsm/node-editor/math/InvertEditor.js +0 -39
  839. package/examples/jsm/node-editor/math/LimiterEditor.js +0 -62
  840. package/examples/jsm/node-editor/math/NormalizeEditor.js +0 -28
  841. package/examples/jsm/node-editor/math/OperatorEditor.js +0 -63
  842. package/examples/jsm/node-editor/math/PowerEditor.js +0 -44
  843. package/examples/jsm/node-editor/math/TrigonometryEditor.js +0 -45
  844. package/examples/jsm/node-editor/procedural/CheckerEditor.js +0 -27
  845. package/examples/jsm/node-editor/scene/MeshEditor.js +0 -102
  846. package/examples/jsm/node-editor/scene/Object3DEditor.js +0 -160
  847. package/examples/jsm/node-editor/scene/PointsEditor.js +0 -99
  848. package/examples/jsm/node-editor/utils/JoinEditor.js +0 -58
  849. package/examples/jsm/node-editor/utils/OscillatorEditor.js +0 -43
  850. package/examples/jsm/node-editor/utils/PreviewEditor.js +0 -170
  851. package/examples/jsm/node-editor/utils/SplitEditor.js +0 -39
  852. package/examples/jsm/node-editor/utils/TimerEditor.js +0 -58
  853. package/examples/jsm/nodes/core/CodeNode.js +0 -50
  854. package/examples/jsm/nodes/core/ExpressionNode.js +0 -32
  855. package/examples/jsm/nodes/core/InstanceIndexNode.js +0 -21
  856. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +0 -22
  857. package/examples/jsm/nodes/lighting/PunctualLightNode.js +0 -68
  858. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +0 -301
  859. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +0 -149
  860. package/examples/jsm/objects/GroundProjectedEnv.js +0 -186
  861. package/examples/jsm/objects/LightningStorm.js +0 -245
  862. package/examples/jsm/physics/OimoPhysics.js +0 -231
  863. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +0 -369
  864. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +0 -187
  865. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +0 -173
  866. package/examples/jsm/renderers/webgpu/WebGPUBinding.js +0 -22
  867. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +0 -255
  868. package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +0 -43
  869. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +0 -78
  870. package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +0 -82
  871. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +0 -36
  872. package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +0 -22
  873. package/examples/jsm/renderers/webgpu/WebGPUProperties.js +0 -38
  874. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +0 -296
  875. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +0 -66
  876. package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +0 -73
  877. package/examples/jsm/renderers/webgpu/WebGPUSampler.js +0 -29
  878. package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +0 -20
  879. package/examples/jsm/renderers/webgpu/WebGPUTextureRenderer.js +0 -40
  880. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +0 -794
  881. package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +0 -18
  882. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +0 -81
  883. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +0 -83
  884. package/examples/jsm/shaders/ToneMapShader.js +0 -73
  885. package/src/renderers/shaders/ShaderChunk/uv2_pars_fragment.glsl.js +0 -7
  886. package/src/renderers/shaders/ShaderChunk/uv2_pars_vertex.glsl.js +0 -10
  887. package/src/renderers/shaders/ShaderChunk/uv2_vertex.glsl.js +0 -7
  888. /package/examples/{js → jsm}/libs/ammo.wasm.js +0 -0
  889. /package/examples/{js → jsm}/libs/ammo.wasm.wasm +0 -0
  890. /package/examples/{js → jsm}/libs/basis/basis_transcoder.js +0 -0
  891. /package/examples/{js → jsm}/libs/basis/basis_transcoder.wasm +0 -0
  892. /package/examples/{js → jsm}/libs/draco/README.md +0 -0
  893. /package/examples/{js → jsm}/libs/draco/draco_encoder.js +0 -0
  894. /package/examples/{js → jsm}/libs/draco/gltf/draco_encoder.js +0 -0
  895. /package/src/renderers/shaders/ShaderChunk/{encodings_fragment.glsl.js → colorspace_fragment.glsl.js} +0 -0
  896. /package/src/renderers/shaders/ShaderChunk/{encodings_pars_fragment.glsl.js → colorspace_pars_fragment.glsl.js} +0 -0
@@ -1,1306 +0,0 @@
1
- ( function () {
2
-
3
- /**
4
- *
5
- * 3D Manufacturing Format (3MF) specification: https://3mf.io/specification/
6
- *
7
- * The following features from the core specification are supported:
8
- *
9
- * - 3D Models
10
- * - Object Resources (Meshes and Components)
11
- * - Material Resources (Base Materials)
12
- *
13
- * 3MF Materials and Properties Extension are only partially supported.
14
- *
15
- * - Texture 2D
16
- * - Texture 2D Groups
17
- * - THREE.Color Groups (Vertex Colors)
18
- * - Metallic Display Properties (PBR)
19
- */
20
-
21
- class ThreeMFLoader extends THREE.Loader {
22
-
23
- constructor( manager ) {
24
-
25
- super( manager );
26
- this.availableExtensions = [];
27
-
28
- }
29
- load( url, onLoad, onProgress, onError ) {
30
-
31
- const scope = this;
32
- const loader = new THREE.FileLoader( scope.manager );
33
- loader.setPath( scope.path );
34
- loader.setResponseType( 'arraybuffer' );
35
- loader.setRequestHeader( scope.requestHeader );
36
- loader.setWithCredentials( scope.withCredentials );
37
- loader.load( url, function ( buffer ) {
38
-
39
- try {
40
-
41
- onLoad( scope.parse( buffer ) );
42
-
43
- } catch ( e ) {
44
-
45
- if ( onError ) {
46
-
47
- onError( e );
48
-
49
- } else {
50
-
51
- console.error( e );
52
-
53
- }
54
-
55
- scope.manager.itemError( url );
56
-
57
- }
58
-
59
- }, onProgress, onError );
60
-
61
- }
62
- parse( data ) {
63
-
64
- const scope = this;
65
- const textureLoader = new THREE.TextureLoader( this.manager );
66
- function loadDocument( data ) {
67
-
68
- let zip = null;
69
- let file = null;
70
- let relsName;
71
- let modelRelsName;
72
- const modelPartNames = [];
73
- const texturesPartNames = [];
74
- let modelRels;
75
- const modelParts = {};
76
- const printTicketParts = {};
77
- const texturesParts = {};
78
- try {
79
-
80
- zip = fflate.unzipSync( new Uint8Array( data ) ); // eslint-disable-line no-undef
81
-
82
- } catch ( e ) {
83
-
84
- if ( e instanceof ReferenceError ) {
85
-
86
- console.error( 'THREE.3MFLoader: fflate missing and file is compressed.' );
87
- return null;
88
-
89
- }
90
-
91
- }
92
-
93
- for ( file in zip ) {
94
-
95
- if ( file.match( /\_rels\/.rels$/ ) ) {
96
-
97
- relsName = file;
98
-
99
- } else if ( file.match( /3D\/_rels\/.*\.model\.rels$/ ) ) {
100
-
101
- modelRelsName = file;
102
-
103
- } else if ( file.match( /^3D\/.*\.model$/ ) ) {
104
-
105
- modelPartNames.push( file );
106
-
107
- } else if ( file.match( /^3D\/Textures?\/.*/ ) ) {
108
-
109
- texturesPartNames.push( file );
110
-
111
- }
112
-
113
- }
114
-
115
- //
116
-
117
- const relsView = zip[ relsName ];
118
- const relsFileText = THREE.LoaderUtils.decodeText( relsView );
119
- const rels = parseRelsXml( relsFileText );
120
-
121
- //
122
-
123
- if ( modelRelsName ) {
124
-
125
- const relsView = zip[ modelRelsName ];
126
- const relsFileText = THREE.LoaderUtils.decodeText( relsView );
127
- modelRels = parseRelsXml( relsFileText );
128
-
129
- }
130
-
131
- //
132
-
133
- for ( let i = 0; i < modelPartNames.length; i ++ ) {
134
-
135
- const modelPart = modelPartNames[ i ];
136
- const view = zip[ modelPart ];
137
- const fileText = THREE.LoaderUtils.decodeText( view );
138
- const xmlData = new DOMParser().parseFromString( fileText, 'application/xml' );
139
- if ( xmlData.documentElement.nodeName.toLowerCase() !== 'model' ) {
140
-
141
- console.error( 'THREE.3MFLoader: Error loading 3MF - no 3MF document found: ', modelPart );
142
-
143
- }
144
-
145
- const modelNode = xmlData.querySelector( 'model' );
146
- const extensions = {};
147
- for ( let i = 0; i < modelNode.attributes.length; i ++ ) {
148
-
149
- const attr = modelNode.attributes[ i ];
150
- if ( attr.name.match( /^xmlns:(.+)$/ ) ) {
151
-
152
- extensions[ attr.value ] = RegExp.$1;
153
-
154
- }
155
-
156
- }
157
-
158
- const modelData = parseModelNode( modelNode );
159
- modelData[ 'xml' ] = modelNode;
160
- if ( 0 < Object.keys( extensions ).length ) {
161
-
162
- modelData[ 'extensions' ] = extensions;
163
-
164
- }
165
-
166
- modelParts[ modelPart ] = modelData;
167
-
168
- }
169
-
170
- //
171
-
172
- for ( let i = 0; i < texturesPartNames.length; i ++ ) {
173
-
174
- const texturesPartName = texturesPartNames[ i ];
175
- texturesParts[ texturesPartName ] = zip[ texturesPartName ].buffer;
176
-
177
- }
178
-
179
- return {
180
- rels: rels,
181
- modelRels: modelRels,
182
- model: modelParts,
183
- printTicket: printTicketParts,
184
- texture: texturesParts
185
- };
186
-
187
- }
188
-
189
- function parseRelsXml( relsFileText ) {
190
-
191
- const relationships = [];
192
- const relsXmlData = new DOMParser().parseFromString( relsFileText, 'application/xml' );
193
- const relsNodes = relsXmlData.querySelectorAll( 'Relationship' );
194
- for ( let i = 0; i < relsNodes.length; i ++ ) {
195
-
196
- const relsNode = relsNodes[ i ];
197
- const relationship = {
198
- target: relsNode.getAttribute( 'Target' ),
199
- //required
200
- id: relsNode.getAttribute( 'Id' ),
201
- //required
202
- type: relsNode.getAttribute( 'Type' ) //required
203
- };
204
-
205
- relationships.push( relationship );
206
-
207
- }
208
-
209
- return relationships;
210
-
211
- }
212
-
213
- function parseMetadataNodes( metadataNodes ) {
214
-
215
- const metadataData = {};
216
- for ( let i = 0; i < metadataNodes.length; i ++ ) {
217
-
218
- const metadataNode = metadataNodes[ i ];
219
- const name = metadataNode.getAttribute( 'name' );
220
- const validNames = [ 'Title', 'Designer', 'Description', 'Copyright', 'LicenseTerms', 'Rating', 'CreationDate', 'ModificationDate' ];
221
- if ( 0 <= validNames.indexOf( name ) ) {
222
-
223
- metadataData[ name ] = metadataNode.textContent;
224
-
225
- }
226
-
227
- }
228
-
229
- return metadataData;
230
-
231
- }
232
-
233
- function parseBasematerialsNode( basematerialsNode ) {
234
-
235
- const basematerialsData = {
236
- id: basematerialsNode.getAttribute( 'id' ),
237
- // required
238
- basematerials: []
239
- };
240
- const basematerialNodes = basematerialsNode.querySelectorAll( 'base' );
241
- for ( let i = 0; i < basematerialNodes.length; i ++ ) {
242
-
243
- const basematerialNode = basematerialNodes[ i ];
244
- const basematerialData = parseBasematerialNode( basematerialNode );
245
- basematerialData.index = i; // the order and count of the material nodes form an implicit 0-based index
246
- basematerialsData.basematerials.push( basematerialData );
247
-
248
- }
249
-
250
- return basematerialsData;
251
-
252
- }
253
-
254
- function parseTexture2DNode( texture2DNode ) {
255
-
256
- const texture2dData = {
257
- id: texture2DNode.getAttribute( 'id' ),
258
- // required
259
- path: texture2DNode.getAttribute( 'path' ),
260
- // required
261
- contenttype: texture2DNode.getAttribute( 'contenttype' ),
262
- // required
263
- tilestyleu: texture2DNode.getAttribute( 'tilestyleu' ),
264
- tilestylev: texture2DNode.getAttribute( 'tilestylev' ),
265
- filter: texture2DNode.getAttribute( 'filter' )
266
- };
267
- return texture2dData;
268
-
269
- }
270
-
271
- function parseTextures2DGroupNode( texture2DGroupNode ) {
272
-
273
- const texture2DGroupData = {
274
- id: texture2DGroupNode.getAttribute( 'id' ),
275
- // required
276
- texid: texture2DGroupNode.getAttribute( 'texid' ),
277
- // required
278
- displaypropertiesid: texture2DGroupNode.getAttribute( 'displaypropertiesid' )
279
- };
280
- const tex2coordNodes = texture2DGroupNode.querySelectorAll( 'tex2coord' );
281
- const uvs = [];
282
- for ( let i = 0; i < tex2coordNodes.length; i ++ ) {
283
-
284
- const tex2coordNode = tex2coordNodes[ i ];
285
- const u = tex2coordNode.getAttribute( 'u' );
286
- const v = tex2coordNode.getAttribute( 'v' );
287
- uvs.push( parseFloat( u ), parseFloat( v ) );
288
-
289
- }
290
-
291
- texture2DGroupData[ 'uvs' ] = new Float32Array( uvs );
292
- return texture2DGroupData;
293
-
294
- }
295
-
296
- function parseColorGroupNode( colorGroupNode ) {
297
-
298
- const colorGroupData = {
299
- id: colorGroupNode.getAttribute( 'id' ),
300
- // required
301
- displaypropertiesid: colorGroupNode.getAttribute( 'displaypropertiesid' )
302
- };
303
- const colorNodes = colorGroupNode.querySelectorAll( 'color' );
304
- const colors = [];
305
- const colorObject = new THREE.Color();
306
- for ( let i = 0; i < colorNodes.length; i ++ ) {
307
-
308
- const colorNode = colorNodes[ i ];
309
- const color = colorNode.getAttribute( 'color' );
310
- colorObject.setStyle( color.substring( 0, 7 ) );
311
- colorObject.convertSRGBToLinear(); // color is in sRGB
312
-
313
- colors.push( colorObject.r, colorObject.g, colorObject.b );
314
-
315
- }
316
-
317
- colorGroupData[ 'colors' ] = new Float32Array( colors );
318
- return colorGroupData;
319
-
320
- }
321
-
322
- function parseMetallicDisplaypropertiesNode( metallicDisplaypropetiesNode ) {
323
-
324
- const metallicDisplaypropertiesData = {
325
- id: metallicDisplaypropetiesNode.getAttribute( 'id' ) // required
326
- };
327
-
328
- const metallicNodes = metallicDisplaypropetiesNode.querySelectorAll( 'pbmetallic' );
329
- const metallicData = [];
330
- for ( let i = 0; i < metallicNodes.length; i ++ ) {
331
-
332
- const metallicNode = metallicNodes[ i ];
333
- metallicData.push( {
334
- name: metallicNode.getAttribute( 'name' ),
335
- // required
336
- metallicness: parseFloat( metallicNode.getAttribute( 'metallicness' ) ),
337
- // required
338
- roughness: parseFloat( metallicNode.getAttribute( 'roughness' ) ) // required
339
- } );
340
-
341
- }
342
-
343
- metallicDisplaypropertiesData.data = metallicData;
344
- return metallicDisplaypropertiesData;
345
-
346
- }
347
-
348
- function parseBasematerialNode( basematerialNode ) {
349
-
350
- const basematerialData = {};
351
- basematerialData[ 'name' ] = basematerialNode.getAttribute( 'name' ); // required
352
- basematerialData[ 'displaycolor' ] = basematerialNode.getAttribute( 'displaycolor' ); // required
353
- basematerialData[ 'displaypropertiesid' ] = basematerialNode.getAttribute( 'displaypropertiesid' );
354
- return basematerialData;
355
-
356
- }
357
-
358
- function parseMeshNode( meshNode ) {
359
-
360
- const meshData = {};
361
- const vertices = [];
362
- const vertexNodes = meshNode.querySelectorAll( 'vertices vertex' );
363
- for ( let i = 0; i < vertexNodes.length; i ++ ) {
364
-
365
- const vertexNode = vertexNodes[ i ];
366
- const x = vertexNode.getAttribute( 'x' );
367
- const y = vertexNode.getAttribute( 'y' );
368
- const z = vertexNode.getAttribute( 'z' );
369
- vertices.push( parseFloat( x ), parseFloat( y ), parseFloat( z ) );
370
-
371
- }
372
-
373
- meshData[ 'vertices' ] = new Float32Array( vertices );
374
- const triangleProperties = [];
375
- const triangles = [];
376
- const triangleNodes = meshNode.querySelectorAll( 'triangles triangle' );
377
- for ( let i = 0; i < triangleNodes.length; i ++ ) {
378
-
379
- const triangleNode = triangleNodes[ i ];
380
- const v1 = triangleNode.getAttribute( 'v1' );
381
- const v2 = triangleNode.getAttribute( 'v2' );
382
- const v3 = triangleNode.getAttribute( 'v3' );
383
- const p1 = triangleNode.getAttribute( 'p1' );
384
- const p2 = triangleNode.getAttribute( 'p2' );
385
- const p3 = triangleNode.getAttribute( 'p3' );
386
- const pid = triangleNode.getAttribute( 'pid' );
387
- const triangleProperty = {};
388
- triangleProperty[ 'v1' ] = parseInt( v1, 10 );
389
- triangleProperty[ 'v2' ] = parseInt( v2, 10 );
390
- triangleProperty[ 'v3' ] = parseInt( v3, 10 );
391
- triangles.push( triangleProperty[ 'v1' ], triangleProperty[ 'v2' ], triangleProperty[ 'v3' ] );
392
-
393
- // optional
394
-
395
- if ( p1 ) {
396
-
397
- triangleProperty[ 'p1' ] = parseInt( p1, 10 );
398
-
399
- }
400
-
401
- if ( p2 ) {
402
-
403
- triangleProperty[ 'p2' ] = parseInt( p2, 10 );
404
-
405
- }
406
-
407
- if ( p3 ) {
408
-
409
- triangleProperty[ 'p3' ] = parseInt( p3, 10 );
410
-
411
- }
412
-
413
- if ( pid ) {
414
-
415
- triangleProperty[ 'pid' ] = pid;
416
-
417
- }
418
-
419
- if ( 0 < Object.keys( triangleProperty ).length ) {
420
-
421
- triangleProperties.push( triangleProperty );
422
-
423
- }
424
-
425
- }
426
-
427
- meshData[ 'triangleProperties' ] = triangleProperties;
428
- meshData[ 'triangles' ] = new Uint32Array( triangles );
429
- return meshData;
430
-
431
- }
432
-
433
- function parseComponentsNode( componentsNode ) {
434
-
435
- const components = [];
436
- const componentNodes = componentsNode.querySelectorAll( 'component' );
437
- for ( let i = 0; i < componentNodes.length; i ++ ) {
438
-
439
- const componentNode = componentNodes[ i ];
440
- const componentData = parseComponentNode( componentNode );
441
- components.push( componentData );
442
-
443
- }
444
-
445
- return components;
446
-
447
- }
448
-
449
- function parseComponentNode( componentNode ) {
450
-
451
- const componentData = {};
452
- componentData[ 'objectId' ] = componentNode.getAttribute( 'objectid' ); // required
453
-
454
- const transform = componentNode.getAttribute( 'transform' );
455
- if ( transform ) {
456
-
457
- componentData[ 'transform' ] = parseTransform( transform );
458
-
459
- }
460
-
461
- return componentData;
462
-
463
- }
464
-
465
- function parseTransform( transform ) {
466
-
467
- const t = [];
468
- transform.split( ' ' ).forEach( function ( s ) {
469
-
470
- t.push( parseFloat( s ) );
471
-
472
- } );
473
- const matrix = new THREE.Matrix4();
474
- matrix.set( t[ 0 ], t[ 3 ], t[ 6 ], t[ 9 ], t[ 1 ], t[ 4 ], t[ 7 ], t[ 10 ], t[ 2 ], t[ 5 ], t[ 8 ], t[ 11 ], 0.0, 0.0, 0.0, 1.0 );
475
- return matrix;
476
-
477
- }
478
-
479
- function parseObjectNode( objectNode ) {
480
-
481
- const objectData = {
482
- type: objectNode.getAttribute( 'type' )
483
- };
484
- const id = objectNode.getAttribute( 'id' );
485
- if ( id ) {
486
-
487
- objectData[ 'id' ] = id;
488
-
489
- }
490
-
491
- const pid = objectNode.getAttribute( 'pid' );
492
- if ( pid ) {
493
-
494
- objectData[ 'pid' ] = pid;
495
-
496
- }
497
-
498
- const pindex = objectNode.getAttribute( 'pindex' );
499
- if ( pindex ) {
500
-
501
- objectData[ 'pindex' ] = pindex;
502
-
503
- }
504
-
505
- const thumbnail = objectNode.getAttribute( 'thumbnail' );
506
- if ( thumbnail ) {
507
-
508
- objectData[ 'thumbnail' ] = thumbnail;
509
-
510
- }
511
-
512
- const partnumber = objectNode.getAttribute( 'partnumber' );
513
- if ( partnumber ) {
514
-
515
- objectData[ 'partnumber' ] = partnumber;
516
-
517
- }
518
-
519
- const name = objectNode.getAttribute( 'name' );
520
- if ( name ) {
521
-
522
- objectData[ 'name' ] = name;
523
-
524
- }
525
-
526
- const meshNode = objectNode.querySelector( 'mesh' );
527
- if ( meshNode ) {
528
-
529
- objectData[ 'mesh' ] = parseMeshNode( meshNode );
530
-
531
- }
532
-
533
- const componentsNode = objectNode.querySelector( 'components' );
534
- if ( componentsNode ) {
535
-
536
- objectData[ 'components' ] = parseComponentsNode( componentsNode );
537
-
538
- }
539
-
540
- return objectData;
541
-
542
- }
543
-
544
- function parseResourcesNode( resourcesNode ) {
545
-
546
- const resourcesData = {};
547
- resourcesData[ 'basematerials' ] = {};
548
- const basematerialsNodes = resourcesNode.querySelectorAll( 'basematerials' );
549
- for ( let i = 0; i < basematerialsNodes.length; i ++ ) {
550
-
551
- const basematerialsNode = basematerialsNodes[ i ];
552
- const basematerialsData = parseBasematerialsNode( basematerialsNode );
553
- resourcesData[ 'basematerials' ][ basematerialsData[ 'id' ] ] = basematerialsData;
554
-
555
- }
556
-
557
- //
558
-
559
- resourcesData[ 'texture2d' ] = {};
560
- const textures2DNodes = resourcesNode.querySelectorAll( 'texture2d' );
561
- for ( let i = 0; i < textures2DNodes.length; i ++ ) {
562
-
563
- const textures2DNode = textures2DNodes[ i ];
564
- const texture2DData = parseTexture2DNode( textures2DNode );
565
- resourcesData[ 'texture2d' ][ texture2DData[ 'id' ] ] = texture2DData;
566
-
567
- }
568
-
569
- //
570
-
571
- resourcesData[ 'colorgroup' ] = {};
572
- const colorGroupNodes = resourcesNode.querySelectorAll( 'colorgroup' );
573
- for ( let i = 0; i < colorGroupNodes.length; i ++ ) {
574
-
575
- const colorGroupNode = colorGroupNodes[ i ];
576
- const colorGroupData = parseColorGroupNode( colorGroupNode );
577
- resourcesData[ 'colorgroup' ][ colorGroupData[ 'id' ] ] = colorGroupData;
578
-
579
- }
580
-
581
- //
582
-
583
- resourcesData[ 'pbmetallicdisplayproperties' ] = {};
584
- const pbmetallicdisplaypropertiesNodes = resourcesNode.querySelectorAll( 'pbmetallicdisplayproperties' );
585
- for ( let i = 0; i < pbmetallicdisplaypropertiesNodes.length; i ++ ) {
586
-
587
- const pbmetallicdisplaypropertiesNode = pbmetallicdisplaypropertiesNodes[ i ];
588
- const pbmetallicdisplaypropertiesData = parseMetallicDisplaypropertiesNode( pbmetallicdisplaypropertiesNode );
589
- resourcesData[ 'pbmetallicdisplayproperties' ][ pbmetallicdisplaypropertiesData[ 'id' ] ] = pbmetallicdisplaypropertiesData;
590
-
591
- }
592
-
593
- //
594
-
595
- resourcesData[ 'texture2dgroup' ] = {};
596
- const textures2DGroupNodes = resourcesNode.querySelectorAll( 'texture2dgroup' );
597
- for ( let i = 0; i < textures2DGroupNodes.length; i ++ ) {
598
-
599
- const textures2DGroupNode = textures2DGroupNodes[ i ];
600
- const textures2DGroupData = parseTextures2DGroupNode( textures2DGroupNode );
601
- resourcesData[ 'texture2dgroup' ][ textures2DGroupData[ 'id' ] ] = textures2DGroupData;
602
-
603
- }
604
-
605
- //
606
-
607
- resourcesData[ 'object' ] = {};
608
- const objectNodes = resourcesNode.querySelectorAll( 'object' );
609
- for ( let i = 0; i < objectNodes.length; i ++ ) {
610
-
611
- const objectNode = objectNodes[ i ];
612
- const objectData = parseObjectNode( objectNode );
613
- resourcesData[ 'object' ][ objectData[ 'id' ] ] = objectData;
614
-
615
- }
616
-
617
- return resourcesData;
618
-
619
- }
620
-
621
- function parseBuildNode( buildNode ) {
622
-
623
- const buildData = [];
624
- const itemNodes = buildNode.querySelectorAll( 'item' );
625
- for ( let i = 0; i < itemNodes.length; i ++ ) {
626
-
627
- const itemNode = itemNodes[ i ];
628
- const buildItem = {
629
- objectId: itemNode.getAttribute( 'objectid' )
630
- };
631
- const transform = itemNode.getAttribute( 'transform' );
632
- if ( transform ) {
633
-
634
- buildItem[ 'transform' ] = parseTransform( transform );
635
-
636
- }
637
-
638
- buildData.push( buildItem );
639
-
640
- }
641
-
642
- return buildData;
643
-
644
- }
645
-
646
- function parseModelNode( modelNode ) {
647
-
648
- const modelData = {
649
- unit: modelNode.getAttribute( 'unit' ) || 'millimeter'
650
- };
651
- const metadataNodes = modelNode.querySelectorAll( 'metadata' );
652
- if ( metadataNodes ) {
653
-
654
- modelData[ 'metadata' ] = parseMetadataNodes( metadataNodes );
655
-
656
- }
657
-
658
- const resourcesNode = modelNode.querySelector( 'resources' );
659
- if ( resourcesNode ) {
660
-
661
- modelData[ 'resources' ] = parseResourcesNode( resourcesNode );
662
-
663
- }
664
-
665
- const buildNode = modelNode.querySelector( 'build' );
666
- if ( buildNode ) {
667
-
668
- modelData[ 'build' ] = parseBuildNode( buildNode );
669
-
670
- }
671
-
672
- return modelData;
673
-
674
- }
675
-
676
- function buildTexture( texture2dgroup, objects, modelData, textureData ) {
677
-
678
- const texid = texture2dgroup.texid;
679
- const texture2ds = modelData.resources.texture2d;
680
- const texture2d = texture2ds[ texid ];
681
- if ( texture2d ) {
682
-
683
- const data = textureData[ texture2d.path ];
684
- const type = texture2d.contenttype;
685
- const blob = new Blob( [ data ], {
686
- type: type
687
- } );
688
- const sourceURI = URL.createObjectURL( blob );
689
- const texture = textureLoader.load( sourceURI, function () {
690
-
691
- URL.revokeObjectURL( sourceURI );
692
-
693
- } );
694
- texture.encoding = THREE.sRGBEncoding;
695
-
696
- // texture parameters
697
-
698
- switch ( texture2d.tilestyleu ) {
699
-
700
- case 'wrap':
701
- texture.wrapS = THREE.RepeatWrapping;
702
- break;
703
- case 'mirror':
704
- texture.wrapS = THREE.MirroredRepeatWrapping;
705
- break;
706
- case 'none':
707
- case 'clamp':
708
- texture.wrapS = THREE.ClampToEdgeWrapping;
709
- break;
710
- default:
711
- texture.wrapS = THREE.RepeatWrapping;
712
-
713
- }
714
-
715
- switch ( texture2d.tilestylev ) {
716
-
717
- case 'wrap':
718
- texture.wrapT = THREE.RepeatWrapping;
719
- break;
720
- case 'mirror':
721
- texture.wrapT = THREE.MirroredRepeatWrapping;
722
- break;
723
- case 'none':
724
- case 'clamp':
725
- texture.wrapT = THREE.ClampToEdgeWrapping;
726
- break;
727
- default:
728
- texture.wrapT = THREE.RepeatWrapping;
729
-
730
- }
731
-
732
- switch ( texture2d.filter ) {
733
-
734
- case 'auto':
735
- texture.magFilter = THREE.LinearFilter;
736
- texture.minFilter = THREE.LinearMipmapLinearFilter;
737
- break;
738
- case 'linear':
739
- texture.magFilter = THREE.LinearFilter;
740
- texture.minFilter = THREE.LinearFilter;
741
- break;
742
- case 'nearest':
743
- texture.magFilter = THREE.NearestFilter;
744
- texture.minFilter = THREE.NearestFilter;
745
- break;
746
- default:
747
- texture.magFilter = THREE.LinearFilter;
748
- texture.minFilter = THREE.LinearMipmapLinearFilter;
749
-
750
- }
751
-
752
- return texture;
753
-
754
- } else {
755
-
756
- return null;
757
-
758
- }
759
-
760
- }
761
-
762
- function buildBasematerialsMeshes( basematerials, triangleProperties, meshData, objects, modelData, textureData, objectData ) {
763
-
764
- const objectPindex = objectData.pindex;
765
- const materialMap = {};
766
- for ( let i = 0, l = triangleProperties.length; i < l; i ++ ) {
767
-
768
- const triangleProperty = triangleProperties[ i ];
769
- const pindex = triangleProperty.p1 !== undefined ? triangleProperty.p1 : objectPindex;
770
- if ( materialMap[ pindex ] === undefined ) materialMap[ pindex ] = [];
771
- materialMap[ pindex ].push( triangleProperty );
772
-
773
- }
774
-
775
- //
776
-
777
- const keys = Object.keys( materialMap );
778
- const meshes = [];
779
- for ( let i = 0, l = keys.length; i < l; i ++ ) {
780
-
781
- const materialIndex = keys[ i ];
782
- const trianglePropertiesProps = materialMap[ materialIndex ];
783
- const basematerialData = basematerials.basematerials[ materialIndex ];
784
- const material = getBuild( basematerialData, objects, modelData, textureData, objectData, buildBasematerial );
785
-
786
- //
787
-
788
- const geometry = new THREE.BufferGeometry();
789
- const positionData = [];
790
- const vertices = meshData.vertices;
791
- for ( let j = 0, jl = trianglePropertiesProps.length; j < jl; j ++ ) {
792
-
793
- const triangleProperty = trianglePropertiesProps[ j ];
794
- positionData.push( vertices[ triangleProperty.v1 * 3 + 0 ] );
795
- positionData.push( vertices[ triangleProperty.v1 * 3 + 1 ] );
796
- positionData.push( vertices[ triangleProperty.v1 * 3 + 2 ] );
797
- positionData.push( vertices[ triangleProperty.v2 * 3 + 0 ] );
798
- positionData.push( vertices[ triangleProperty.v2 * 3 + 1 ] );
799
- positionData.push( vertices[ triangleProperty.v2 * 3 + 2 ] );
800
- positionData.push( vertices[ triangleProperty.v3 * 3 + 0 ] );
801
- positionData.push( vertices[ triangleProperty.v3 * 3 + 1 ] );
802
- positionData.push( vertices[ triangleProperty.v3 * 3 + 2 ] );
803
-
804
- }
805
-
806
- geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( positionData, 3 ) );
807
-
808
- //
809
-
810
- const mesh = new THREE.Mesh( geometry, material );
811
- meshes.push( mesh );
812
-
813
- }
814
-
815
- return meshes;
816
-
817
- }
818
-
819
- function buildTexturedMesh( texture2dgroup, triangleProperties, meshData, objects, modelData, textureData, objectData ) {
820
-
821
- // geometry
822
-
823
- const geometry = new THREE.BufferGeometry();
824
- const positionData = [];
825
- const uvData = [];
826
- const vertices = meshData.vertices;
827
- const uvs = texture2dgroup.uvs;
828
- for ( let i = 0, l = triangleProperties.length; i < l; i ++ ) {
829
-
830
- const triangleProperty = triangleProperties[ i ];
831
- positionData.push( vertices[ triangleProperty.v1 * 3 + 0 ] );
832
- positionData.push( vertices[ triangleProperty.v1 * 3 + 1 ] );
833
- positionData.push( vertices[ triangleProperty.v1 * 3 + 2 ] );
834
- positionData.push( vertices[ triangleProperty.v2 * 3 + 0 ] );
835
- positionData.push( vertices[ triangleProperty.v2 * 3 + 1 ] );
836
- positionData.push( vertices[ triangleProperty.v2 * 3 + 2 ] );
837
- positionData.push( vertices[ triangleProperty.v3 * 3 + 0 ] );
838
- positionData.push( vertices[ triangleProperty.v3 * 3 + 1 ] );
839
- positionData.push( vertices[ triangleProperty.v3 * 3 + 2 ] );
840
-
841
- //
842
-
843
- uvData.push( uvs[ triangleProperty.p1 * 2 + 0 ] );
844
- uvData.push( uvs[ triangleProperty.p1 * 2 + 1 ] );
845
- uvData.push( uvs[ triangleProperty.p2 * 2 + 0 ] );
846
- uvData.push( uvs[ triangleProperty.p2 * 2 + 1 ] );
847
- uvData.push( uvs[ triangleProperty.p3 * 2 + 0 ] );
848
- uvData.push( uvs[ triangleProperty.p3 * 2 + 1 ] );
849
-
850
- }
851
-
852
- geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( positionData, 3 ) );
853
- geometry.setAttribute( 'uv', new THREE.Float32BufferAttribute( uvData, 2 ) );
854
-
855
- // material
856
-
857
- const texture = getBuild( texture2dgroup, objects, modelData, textureData, objectData, buildTexture );
858
- const material = new THREE.MeshPhongMaterial( {
859
- map: texture,
860
- flatShading: true
861
- } );
862
-
863
- // mesh
864
-
865
- const mesh = new THREE.Mesh( geometry, material );
866
- return mesh;
867
-
868
- }
869
-
870
- function buildVertexColorMesh( colorgroup, triangleProperties, meshData, objectData ) {
871
-
872
- // geometry
873
-
874
- const geometry = new THREE.BufferGeometry();
875
- const positionData = [];
876
- const colorData = [];
877
- const vertices = meshData.vertices;
878
- const colors = colorgroup.colors;
879
- for ( let i = 0, l = triangleProperties.length; i < l; i ++ ) {
880
-
881
- const triangleProperty = triangleProperties[ i ];
882
- const v1 = triangleProperty.v1;
883
- const v2 = triangleProperty.v2;
884
- const v3 = triangleProperty.v3;
885
- positionData.push( vertices[ v1 * 3 + 0 ] );
886
- positionData.push( vertices[ v1 * 3 + 1 ] );
887
- positionData.push( vertices[ v1 * 3 + 2 ] );
888
- positionData.push( vertices[ v2 * 3 + 0 ] );
889
- positionData.push( vertices[ v2 * 3 + 1 ] );
890
- positionData.push( vertices[ v2 * 3 + 2 ] );
891
- positionData.push( vertices[ v3 * 3 + 0 ] );
892
- positionData.push( vertices[ v3 * 3 + 1 ] );
893
- positionData.push( vertices[ v3 * 3 + 2 ] );
894
-
895
- //
896
-
897
- const p1 = triangleProperty.p1 !== undefined ? triangleProperty.p1 : objectData.pindex;
898
- const p2 = triangleProperty.p2 !== undefined ? triangleProperty.p2 : p1;
899
- const p3 = triangleProperty.p3 !== undefined ? triangleProperty.p3 : p1;
900
- colorData.push( colors[ p1 * 3 + 0 ] );
901
- colorData.push( colors[ p1 * 3 + 1 ] );
902
- colorData.push( colors[ p1 * 3 + 2 ] );
903
- colorData.push( colors[ p2 * 3 + 0 ] );
904
- colorData.push( colors[ p2 * 3 + 1 ] );
905
- colorData.push( colors[ p2 * 3 + 2 ] );
906
- colorData.push( colors[ p3 * 3 + 0 ] );
907
- colorData.push( colors[ p3 * 3 + 1 ] );
908
- colorData.push( colors[ p3 * 3 + 2 ] );
909
-
910
- }
911
-
912
- geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( positionData, 3 ) );
913
- geometry.setAttribute( 'color', new THREE.Float32BufferAttribute( colorData, 3 ) );
914
-
915
- // material
916
-
917
- const material = new THREE.MeshPhongMaterial( {
918
- vertexColors: true,
919
- flatShading: true
920
- } );
921
-
922
- // mesh
923
-
924
- const mesh = new THREE.Mesh( geometry, material );
925
- return mesh;
926
-
927
- }
928
-
929
- function buildDefaultMesh( meshData ) {
930
-
931
- const geometry = new THREE.BufferGeometry();
932
- geometry.setIndex( new THREE.BufferAttribute( meshData[ 'triangles' ], 1 ) );
933
- geometry.setAttribute( 'position', new THREE.BufferAttribute( meshData[ 'vertices' ], 3 ) );
934
- const material = new THREE.MeshPhongMaterial( {
935
- color: 0xffffff,
936
- flatShading: true
937
- } );
938
- const mesh = new THREE.Mesh( geometry, material );
939
- return mesh;
940
-
941
- }
942
-
943
- function buildMeshes( resourceMap, meshData, objects, modelData, textureData, objectData ) {
944
-
945
- const keys = Object.keys( resourceMap );
946
- const meshes = [];
947
- for ( let i = 0, il = keys.length; i < il; i ++ ) {
948
-
949
- const resourceId = keys[ i ];
950
- const triangleProperties = resourceMap[ resourceId ];
951
- const resourceType = getResourceType( resourceId, modelData );
952
- switch ( resourceType ) {
953
-
954
- case 'material':
955
- const basematerials = modelData.resources.basematerials[ resourceId ];
956
- const newMeshes = buildBasematerialsMeshes( basematerials, triangleProperties, meshData, objects, modelData, textureData, objectData );
957
- for ( let j = 0, jl = newMeshes.length; j < jl; j ++ ) {
958
-
959
- meshes.push( newMeshes[ j ] );
960
-
961
- }
962
-
963
- break;
964
- case 'texture':
965
- const texture2dgroup = modelData.resources.texture2dgroup[ resourceId ];
966
- meshes.push( buildTexturedMesh( texture2dgroup, triangleProperties, meshData, objects, modelData, textureData, objectData ) );
967
- break;
968
- case 'vertexColors':
969
- const colorgroup = modelData.resources.colorgroup[ resourceId ];
970
- meshes.push( buildVertexColorMesh( colorgroup, triangleProperties, meshData, objectData ) );
971
- break;
972
- case 'default':
973
- meshes.push( buildDefaultMesh( meshData ) );
974
- break;
975
- default:
976
- console.error( 'THREE.3MFLoader: Unsupported resource type.' );
977
-
978
- }
979
-
980
- }
981
-
982
- if ( objectData.name ) {
983
-
984
- for ( let i = 0; i < meshes.length; i ++ ) {
985
-
986
- meshes[ i ].name = objectData.name;
987
-
988
- }
989
-
990
- }
991
-
992
- return meshes;
993
-
994
- }
995
-
996
- function getResourceType( pid, modelData ) {
997
-
998
- if ( modelData.resources.texture2dgroup[ pid ] !== undefined ) {
999
-
1000
- return 'texture';
1001
-
1002
- } else if ( modelData.resources.basematerials[ pid ] !== undefined ) {
1003
-
1004
- return 'material';
1005
-
1006
- } else if ( modelData.resources.colorgroup[ pid ] !== undefined ) {
1007
-
1008
- return 'vertexColors';
1009
-
1010
- } else if ( pid === 'default' ) {
1011
-
1012
- return 'default';
1013
-
1014
- } else {
1015
-
1016
- return undefined;
1017
-
1018
- }
1019
-
1020
- }
1021
-
1022
- function analyzeObject( meshData, objectData ) {
1023
-
1024
- const resourceMap = {};
1025
- const triangleProperties = meshData[ 'triangleProperties' ];
1026
- const objectPid = objectData.pid;
1027
- for ( let i = 0, l = triangleProperties.length; i < l; i ++ ) {
1028
-
1029
- const triangleProperty = triangleProperties[ i ];
1030
- let pid = triangleProperty.pid !== undefined ? triangleProperty.pid : objectPid;
1031
- if ( pid === undefined ) pid = 'default';
1032
- if ( resourceMap[ pid ] === undefined ) resourceMap[ pid ] = [];
1033
- resourceMap[ pid ].push( triangleProperty );
1034
-
1035
- }
1036
-
1037
- return resourceMap;
1038
-
1039
- }
1040
-
1041
- function buildGroup( meshData, objects, modelData, textureData, objectData ) {
1042
-
1043
- const group = new THREE.Group();
1044
- const resourceMap = analyzeObject( meshData, objectData );
1045
- const meshes = buildMeshes( resourceMap, meshData, objects, modelData, textureData, objectData );
1046
- for ( let i = 0, l = meshes.length; i < l; i ++ ) {
1047
-
1048
- group.add( meshes[ i ] );
1049
-
1050
- }
1051
-
1052
- return group;
1053
-
1054
- }
1055
-
1056
- function applyExtensions( extensions, meshData, modelXml ) {
1057
-
1058
- if ( ! extensions ) {
1059
-
1060
- return;
1061
-
1062
- }
1063
-
1064
- const availableExtensions = [];
1065
- const keys = Object.keys( extensions );
1066
- for ( let i = 0; i < keys.length; i ++ ) {
1067
-
1068
- const ns = keys[ i ];
1069
- for ( let j = 0; j < scope.availableExtensions.length; j ++ ) {
1070
-
1071
- const extension = scope.availableExtensions[ j ];
1072
- if ( extension.ns === ns ) {
1073
-
1074
- availableExtensions.push( extension );
1075
-
1076
- }
1077
-
1078
- }
1079
-
1080
- }
1081
-
1082
- for ( let i = 0; i < availableExtensions.length; i ++ ) {
1083
-
1084
- const extension = availableExtensions[ i ];
1085
- extension.apply( modelXml, extensions[ extension[ 'ns' ] ], meshData );
1086
-
1087
- }
1088
-
1089
- }
1090
-
1091
- function getBuild( data, objects, modelData, textureData, objectData, builder ) {
1092
-
1093
- if ( data.build !== undefined ) return data.build;
1094
- data.build = builder( data, objects, modelData, textureData, objectData );
1095
- return data.build;
1096
-
1097
- }
1098
-
1099
- function buildBasematerial( materialData, objects, modelData ) {
1100
-
1101
- let material;
1102
- const displaypropertiesid = materialData.displaypropertiesid;
1103
- const pbmetallicdisplayproperties = modelData.resources.pbmetallicdisplayproperties;
1104
- if ( displaypropertiesid !== null && pbmetallicdisplayproperties[ displaypropertiesid ] !== undefined ) {
1105
-
1106
- // metallic display property, use StandardMaterial
1107
-
1108
- const pbmetallicdisplayproperty = pbmetallicdisplayproperties[ displaypropertiesid ];
1109
- const metallicData = pbmetallicdisplayproperty.data[ materialData.index ];
1110
- material = new THREE.MeshStandardMaterial( {
1111
- flatShading: true,
1112
- roughness: metallicData.roughness,
1113
- metalness: metallicData.metallicness
1114
- } );
1115
-
1116
- } else {
1117
-
1118
- // otherwise use PhongMaterial
1119
-
1120
- material = new THREE.MeshPhongMaterial( {
1121
- flatShading: true
1122
- } );
1123
-
1124
- }
1125
-
1126
- material.name = materialData.name;
1127
-
1128
- // displaycolor MUST be specified with a value of a 6 or 8 digit hexadecimal number, e.g. "#RRGGBB" or "#RRGGBBAA"
1129
-
1130
- const displaycolor = materialData.displaycolor;
1131
- const color = displaycolor.substring( 0, 7 );
1132
- material.color.setStyle( color );
1133
- material.color.convertSRGBToLinear(); // displaycolor is in sRGB
1134
-
1135
- // process alpha if set
1136
-
1137
- if ( displaycolor.length === 9 ) {
1138
-
1139
- material.opacity = parseInt( displaycolor.charAt( 7 ) + displaycolor.charAt( 8 ), 16 ) / 255;
1140
-
1141
- }
1142
-
1143
- return material;
1144
-
1145
- }
1146
-
1147
- function buildComposite( compositeData, objects, modelData, textureData ) {
1148
-
1149
- const composite = new THREE.Group();
1150
- for ( let j = 0; j < compositeData.length; j ++ ) {
1151
-
1152
- const component = compositeData[ j ];
1153
- let build = objects[ component.objectId ];
1154
- if ( build === undefined ) {
1155
-
1156
- buildObject( component.objectId, objects, modelData, textureData );
1157
- build = objects[ component.objectId ];
1158
-
1159
- }
1160
-
1161
- const object3D = build.clone();
1162
-
1163
- // apply component transform
1164
-
1165
- const transform = component.transform;
1166
- if ( transform ) {
1167
-
1168
- object3D.applyMatrix4( transform );
1169
-
1170
- }
1171
-
1172
- composite.add( object3D );
1173
-
1174
- }
1175
-
1176
- return composite;
1177
-
1178
- }
1179
-
1180
- function buildObject( objectId, objects, modelData, textureData ) {
1181
-
1182
- const objectData = modelData[ 'resources' ][ 'object' ][ objectId ];
1183
- if ( objectData[ 'mesh' ] ) {
1184
-
1185
- const meshData = objectData[ 'mesh' ];
1186
- const extensions = modelData[ 'extensions' ];
1187
- const modelXml = modelData[ 'xml' ];
1188
- applyExtensions( extensions, meshData, modelXml );
1189
- objects[ objectData.id ] = getBuild( meshData, objects, modelData, textureData, objectData, buildGroup );
1190
-
1191
- } else {
1192
-
1193
- const compositeData = objectData[ 'components' ];
1194
- objects[ objectData.id ] = getBuild( compositeData, objects, modelData, textureData, objectData, buildComposite );
1195
-
1196
- }
1197
-
1198
- if ( objectData.name ) {
1199
-
1200
- objects[ objectData.id ].name = objectData.name;
1201
-
1202
- }
1203
-
1204
- }
1205
-
1206
- function buildObjects( data3mf ) {
1207
-
1208
- const modelsData = data3mf.model;
1209
- const modelRels = data3mf.modelRels;
1210
- const objects = {};
1211
- const modelsKeys = Object.keys( modelsData );
1212
- const textureData = {};
1213
-
1214
- // evaluate model relationships to textures
1215
-
1216
- if ( modelRels ) {
1217
-
1218
- for ( let i = 0, l = modelRels.length; i < l; i ++ ) {
1219
-
1220
- const modelRel = modelRels[ i ];
1221
- const textureKey = modelRel.target.substring( 1 );
1222
- if ( data3mf.texture[ textureKey ] ) {
1223
-
1224
- textureData[ modelRel.target ] = data3mf.texture[ textureKey ];
1225
-
1226
- }
1227
-
1228
- }
1229
-
1230
- }
1231
-
1232
- // start build
1233
-
1234
- for ( let i = 0; i < modelsKeys.length; i ++ ) {
1235
-
1236
- const modelsKey = modelsKeys[ i ];
1237
- const modelData = modelsData[ modelsKey ];
1238
- const objectIds = Object.keys( modelData[ 'resources' ][ 'object' ] );
1239
- for ( let j = 0; j < objectIds.length; j ++ ) {
1240
-
1241
- const objectId = objectIds[ j ];
1242
- buildObject( objectId, objects, modelData, textureData );
1243
-
1244
- }
1245
-
1246
- }
1247
-
1248
- return objects;
1249
-
1250
- }
1251
-
1252
- function fetch3DModelPart( rels ) {
1253
-
1254
- for ( let i = 0; i < rels.length; i ++ ) {
1255
-
1256
- const rel = rels[ i ];
1257
- const extension = rel.target.split( '.' ).pop();
1258
- if ( extension.toLowerCase() === 'model' ) return rel;
1259
-
1260
- }
1261
-
1262
- }
1263
-
1264
- function build( objects, data3mf ) {
1265
-
1266
- const group = new THREE.Group();
1267
- const relationship = fetch3DModelPart( data3mf[ 'rels' ] );
1268
- const buildData = data3mf.model[ relationship[ 'target' ].substring( 1 ) ][ 'build' ];
1269
- for ( let i = 0; i < buildData.length; i ++ ) {
1270
-
1271
- const buildItem = buildData[ i ];
1272
- const object3D = objects[ buildItem[ 'objectId' ] ].clone();
1273
-
1274
- // apply transform
1275
-
1276
- const transform = buildItem[ 'transform' ];
1277
- if ( transform ) {
1278
-
1279
- object3D.applyMatrix4( transform );
1280
-
1281
- }
1282
-
1283
- group.add( object3D );
1284
-
1285
- }
1286
-
1287
- return group;
1288
-
1289
- }
1290
-
1291
- const data3mf = loadDocument( data );
1292
- const objects = buildObjects( data3mf );
1293
- return build( objects, data3mf );
1294
-
1295
- }
1296
- addExtension( extension ) {
1297
-
1298
- this.availableExtensions.push( extension );
1299
-
1300
- }
1301
-
1302
- }
1303
-
1304
- THREE.ThreeMFLoader = ThreeMFLoader;
1305
-
1306
- } )();