@needle-tools/three 0.146.10 → 0.153.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 (865) hide show
  1. package/LICENSE +1 -1
  2. package/build/three.cjs +39486 -20286
  3. package/build/three.js +39471 -20270
  4. package/build/three.min.js +3 -2
  5. package/build/three.module.js +6717 -5427
  6. package/build/three.module.min.js +6 -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 +1828 -1821
  11. package/examples/jsm/controls/MapControls.js +28 -0
  12. package/examples/jsm/controls/OrbitControls.js +26 -53
  13. package/examples/jsm/controls/PointerLockControls.js +70 -65
  14. package/examples/jsm/controls/TrackballControls.js +18 -4
  15. package/examples/jsm/controls/TransformControls.js +0 -1
  16. package/examples/jsm/csm/CSM.js +11 -5
  17. package/examples/jsm/csm/CSMShader.js +7 -6
  18. package/examples/jsm/effects/AnaglyphEffect.js +6 -20
  19. package/examples/jsm/effects/AsciiEffect.js +3 -6
  20. package/examples/jsm/effects/OutlineEffect.js +1 -15
  21. package/examples/jsm/effects/ParallaxBarrierEffect.js +3 -0
  22. package/examples/jsm/exporters/DRACOExporter.js +53 -11
  23. package/examples/jsm/exporters/EXRExporter.js +3 -9
  24. package/examples/jsm/exporters/GLTFExporter.js +561 -154
  25. package/examples/jsm/exporters/KTX2Exporter.js +34 -23
  26. package/examples/jsm/exporters/MMDExporter.js +1 -1
  27. package/examples/jsm/exporters/PLYExporter.js +8 -1
  28. package/examples/jsm/exporters/STLExporter.js +8 -4
  29. package/examples/jsm/exporters/USDZExporter.js +305 -792
  30. package/examples/jsm/geometries/ConvexGeometry.js +0 -6
  31. package/examples/jsm/geometries/ParametricGeometry.js +10 -0
  32. package/examples/jsm/helpers/OctreeHelper.js +1 -0
  33. package/examples/jsm/helpers/ViewHelper.js +71 -57
  34. package/examples/jsm/interactive/HTMLMesh.js +16 -3
  35. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  36. package/examples/{js → jsm}/libs/basis/README.md +4 -4
  37. package/examples/jsm/libs/draco/draco_decoder.js +34 -0
  38. package/examples/jsm/libs/draco/draco_decoder.wasm +0 -0
  39. package/examples/jsm/libs/draco/draco_wasm_wrapper.js +117 -0
  40. package/examples/jsm/libs/draco/gltf/draco_decoder.js +33 -0
  41. package/examples/jsm/libs/draco/gltf/draco_decoder.wasm +0 -0
  42. package/examples/jsm/libs/draco/gltf/draco_wasm_wrapper.js +116 -0
  43. package/examples/jsm/libs/lil-gui.module.min.js +2 -2
  44. package/examples/jsm/libs/tween.module.js +803 -0
  45. package/examples/jsm/lights/IESSpotLight.js +25 -0
  46. package/examples/jsm/lights/LightProbeGenerator.js +11 -9
  47. package/examples/jsm/lines/LineSegments2.js +16 -10
  48. package/examples/jsm/loaders/3DMLoader.js +8 -5
  49. package/examples/jsm/loaders/3MFLoader.js +12 -11
  50. package/examples/jsm/loaders/AMFLoader.js +2 -3
  51. package/examples/jsm/loaders/BVHLoader.js +2 -2
  52. package/examples/jsm/loaders/ColladaLoader.js +15 -16
  53. package/examples/jsm/loaders/DRACOLoader.js +69 -18
  54. package/examples/jsm/loaders/EXRLoader.js +23 -24
  55. package/examples/jsm/loaders/FBXLoader.js +34 -50
  56. package/examples/jsm/loaders/GCodeLoader.js +1 -2
  57. package/examples/jsm/loaders/GLTFLoader.js +417 -895
  58. package/examples/jsm/loaders/GLTFLoaderAnimationPointer.js +684 -0
  59. package/examples/jsm/loaders/HDRCubeTextureLoader.js +4 -4
  60. package/examples/jsm/loaders/IESLoader.js +337 -0
  61. package/examples/jsm/loaders/KMZLoader.js +4 -4
  62. package/examples/jsm/loaders/KTX2Loader.js +145 -69
  63. package/examples/jsm/loaders/LDrawLoader.js +20 -18
  64. package/examples/jsm/loaders/LWOLoader.js +12 -29
  65. package/examples/jsm/loaders/LottieLoader.js +3 -1
  66. package/examples/jsm/loaders/MMDLoader.js +49 -18
  67. package/examples/jsm/loaders/MTLLoader.js +2 -2
  68. package/examples/jsm/loaders/MaterialXLoader.js +9 -3
  69. package/examples/jsm/loaders/NRRDLoader.js +33 -5
  70. package/examples/jsm/loaders/OBJLoader.js +1 -1
  71. package/examples/jsm/loaders/PCDLoader.js +26 -12
  72. package/examples/jsm/loaders/PDBLoader.js +7 -2
  73. package/examples/jsm/loaders/PLYLoader.js +254 -109
  74. package/examples/jsm/loaders/RGBELoader.js +3 -3
  75. package/examples/jsm/loaders/STLLoader.js +9 -5
  76. package/examples/jsm/loaders/SVGLoader.js +36 -27
  77. package/examples/jsm/loaders/TTFLoader.js +1 -8
  78. package/examples/jsm/loaders/TiltLoader.js +13 -7
  79. package/examples/jsm/loaders/USDZLoader.js +6 -6
  80. package/examples/jsm/loaders/VOXLoader.js +8 -2
  81. package/examples/jsm/loaders/VRMLLoader.js +44 -16
  82. package/examples/jsm/loaders/VTKLoader.js +19 -10
  83. package/examples/jsm/loaders/XYZLoader.js +9 -3
  84. package/examples/jsm/loaders/lwo/IFFParser.js +19 -19
  85. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -3
  86. package/examples/jsm/math/ConvexHull.js +3 -3
  87. package/examples/jsm/math/Lut.js +5 -4
  88. package/examples/jsm/math/MeshSurfaceSampler.js +7 -9
  89. package/examples/jsm/math/Octree.js +1 -1
  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 +144 -335
  101. package/examples/jsm/nodes/accessors/BitangentNode.js +43 -16
  102. package/examples/jsm/nodes/accessors/BufferAttributeNode.js +86 -0
  103. package/examples/jsm/nodes/accessors/BufferNode.js +6 -0
  104. package/examples/jsm/nodes/accessors/CameraNode.js +12 -2
  105. package/examples/jsm/nodes/accessors/CubeTextureNode.js +27 -33
  106. package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +58 -0
  107. package/examples/jsm/nodes/accessors/InstanceNode.js +41 -26
  108. package/examples/jsm/nodes/accessors/MaterialNode.js +155 -38
  109. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +16 -0
  110. package/examples/jsm/nodes/accessors/ModelNode.js +11 -0
  111. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +13 -14
  112. package/examples/jsm/nodes/accessors/NormalNode.js +35 -19
  113. package/examples/jsm/nodes/accessors/Object3DNode.js +32 -12
  114. package/examples/jsm/nodes/accessors/PointUVNode.js +6 -1
  115. package/examples/jsm/nodes/accessors/PositionNode.js +38 -23
  116. package/examples/jsm/nodes/accessors/ReferenceNode.js +21 -14
  117. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +11 -7
  118. package/examples/jsm/nodes/accessors/SkinningNode.js +43 -40
  119. package/examples/jsm/nodes/accessors/StorageBufferNode.js +6 -0
  120. package/examples/jsm/nodes/accessors/TangentNode.js +28 -20
  121. package/examples/jsm/nodes/accessors/TextureNode.js +80 -12
  122. package/examples/jsm/nodes/accessors/UVNode.js +6 -0
  123. package/examples/jsm/nodes/accessors/UserDataNode.js +6 -0
  124. package/examples/jsm/nodes/code/CodeNode.js +75 -0
  125. package/examples/jsm/nodes/code/ExpressionNode.js +37 -0
  126. package/examples/jsm/nodes/{core → code}/FunctionCallNode.js +15 -1
  127. package/examples/jsm/nodes/{core → code}/FunctionNode.js +8 -7
  128. package/examples/jsm/nodes/code/ScriptableNode.js +488 -0
  129. package/examples/jsm/nodes/code/ScriptableValueNode.js +167 -0
  130. package/examples/jsm/nodes/core/ArrayUniformNode.js +3 -0
  131. package/examples/jsm/nodes/core/AttributeNode.js +17 -9
  132. package/examples/jsm/nodes/core/BypassNode.js +9 -2
  133. package/examples/jsm/nodes/core/CacheNode.js +46 -0
  134. package/examples/jsm/nodes/core/ConstNode.js +3 -0
  135. package/examples/jsm/nodes/core/ContextNode.js +8 -1
  136. package/examples/jsm/nodes/core/InputNode.js +26 -5
  137. package/examples/jsm/nodes/core/InstanceIndexNode.js +26 -2
  138. package/examples/jsm/nodes/core/LightingModel.js +16 -0
  139. package/examples/jsm/nodes/core/Node.js +129 -35
  140. package/examples/jsm/nodes/core/NodeAttribute.js +2 -1
  141. package/examples/jsm/nodes/core/NodeBuilder.js +271 -121
  142. package/examples/jsm/nodes/core/NodeCache.js +26 -0
  143. package/examples/jsm/nodes/core/NodeFrame.js +56 -5
  144. package/examples/jsm/nodes/core/NodeUtils.js +115 -28
  145. package/examples/jsm/nodes/core/PropertyNode.js +19 -2
  146. package/examples/jsm/nodes/core/StackNode.js +99 -0
  147. package/examples/jsm/nodes/core/TempNode.js +11 -3
  148. package/examples/jsm/nodes/core/UniformNode.js +16 -1
  149. package/examples/jsm/nodes/core/VarNode.js +21 -29
  150. package/examples/jsm/nodes/core/VaryingNode.js +15 -2
  151. package/examples/jsm/nodes/core/constants.js +6 -0
  152. package/examples/jsm/nodes/display/BlendModeNode.js +25 -11
  153. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +30 -14
  154. package/examples/jsm/nodes/display/ColorSpaceNode.js +39 -27
  155. package/examples/jsm/nodes/display/FrontFacingNode.js +7 -1
  156. package/examples/jsm/nodes/display/NormalMapNode.js +31 -18
  157. package/examples/jsm/nodes/display/PosterizeNode.js +10 -3
  158. package/examples/jsm/nodes/display/ToneMappingNode.js +101 -11
  159. package/examples/jsm/nodes/display/ViewportNode.js +27 -18
  160. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +30 -0
  161. package/examples/jsm/nodes/display/ViewportTextureNode.js +67 -0
  162. package/examples/jsm/nodes/fog/FogExp2Node.js +35 -0
  163. package/examples/jsm/nodes/fog/FogNode.js +12 -6
  164. package/examples/jsm/nodes/fog/FogRangeNode.js +12 -5
  165. package/examples/jsm/nodes/functions/BSDF/BRDF_BlinnPhong.js +30 -0
  166. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +10 -13
  167. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  168. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +8 -6
  169. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +4 -4
  170. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +3 -3
  171. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +7 -5
  172. package/examples/jsm/nodes/functions/PhongLightingModel.js +28 -0
  173. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +35 -36
  174. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +4 -3
  175. package/examples/jsm/nodes/functions/material/getRoughness.js +4 -4
  176. package/examples/jsm/nodes/geometry/RangeNode.js +50 -55
  177. package/examples/jsm/nodes/gpgpu/ComputeNode.js +9 -2
  178. package/examples/jsm/nodes/lighting/AONode.js +5 -3
  179. package/examples/jsm/nodes/lighting/AmbientLightNode.js +27 -0
  180. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +114 -5
  181. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +43 -0
  182. package/examples/jsm/nodes/lighting/EnvironmentNode.js +121 -35
  183. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +15 -10
  184. package/examples/jsm/nodes/lighting/IESSpotLightNode.js +39 -0
  185. package/examples/jsm/nodes/lighting/LightNode.js +57 -0
  186. package/examples/jsm/nodes/lighting/LightUtils.js +17 -0
  187. package/examples/jsm/nodes/lighting/LightingContextNode.js +30 -8
  188. package/examples/jsm/nodes/lighting/LightingNode.js +3 -1
  189. package/examples/jsm/nodes/lighting/LightsNode.js +18 -10
  190. package/examples/jsm/nodes/lighting/PointLightNode.js +71 -0
  191. package/examples/jsm/nodes/lighting/SpotLightNode.js +92 -0
  192. package/examples/jsm/nodes/loaders/NodeLoader.js +5 -4
  193. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +4 -20
  194. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +6 -9
  195. package/examples/jsm/nodes/materials/Materials.js +11 -55
  196. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +5 -11
  197. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +48 -0
  198. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +74 -0
  199. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +6 -6
  200. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +21 -96
  201. package/examples/jsm/nodes/materials/NodeMaterial.js +284 -62
  202. package/examples/jsm/nodes/materials/PointsNodeMaterial.js +7 -1
  203. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +29 -25
  204. package/examples/jsm/nodes/materialx/MaterialXNodes.js +31 -22
  205. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +1 -1
  206. package/examples/jsm/nodes/materialx/lib/mx_noise.js +2 -1
  207. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +2 -1
  208. package/examples/jsm/nodes/math/CondNode.js +43 -17
  209. package/examples/jsm/nodes/math/MathNode.js +178 -73
  210. package/examples/jsm/nodes/math/OperatorNode.js +52 -2
  211. package/examples/jsm/nodes/procedural/CheckerNode.js +14 -6
  212. package/examples/jsm/nodes/shadernode/ShaderNode.js +186 -63
  213. package/examples/jsm/nodes/utils/ArrayElementNode.js +4 -2
  214. package/examples/jsm/nodes/utils/ConvertNode.js +19 -1
  215. package/examples/jsm/nodes/utils/DiscardNode.js +26 -0
  216. package/examples/jsm/nodes/utils/EquirectUVNode.js +10 -4
  217. package/examples/jsm/nodes/utils/JoinNode.js +4 -1
  218. package/examples/jsm/nodes/utils/LoopNode.js +186 -0
  219. package/examples/jsm/nodes/utils/MatcapUVNode.js +11 -4
  220. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +18 -5
  221. package/examples/jsm/nodes/utils/OscNode.js +21 -14
  222. package/examples/jsm/nodes/utils/PackingNode.js +55 -0
  223. package/examples/jsm/nodes/utils/RemapNode.js +13 -5
  224. package/examples/jsm/nodes/utils/RotateUVNode.js +18 -7
  225. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +37 -0
  226. package/examples/jsm/nodes/utils/SplitNode.js +7 -5
  227. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +15 -30
  228. package/examples/jsm/nodes/utils/TimerNode.js +16 -6
  229. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +21 -10
  230. package/examples/jsm/objects/GroundProjectedSkybox.js +172 -0
  231. package/examples/jsm/objects/Lensflare.js +3 -4
  232. package/examples/jsm/objects/MarchingCubes.js +5 -1
  233. package/examples/jsm/objects/Reflector.js +7 -4
  234. package/examples/jsm/objects/Refractor.js +4 -4
  235. package/examples/jsm/objects/ShadowMesh.js +3 -3
  236. package/examples/jsm/objects/Water.js +2 -1
  237. package/examples/jsm/physics/AmmoPhysics.js +27 -28
  238. package/examples/jsm/physics/RapierPhysics.js +199 -0
  239. package/examples/jsm/postprocessing/AfterimagePass.js +3 -2
  240. package/examples/jsm/postprocessing/BloomPass.js +7 -4
  241. package/examples/jsm/postprocessing/BokehPass.js +3 -8
  242. package/examples/jsm/postprocessing/DotScreenPass.js +1 -2
  243. package/examples/jsm/postprocessing/EffectComposer.js +5 -95
  244. package/examples/jsm/postprocessing/FilmPass.js +1 -2
  245. package/examples/jsm/postprocessing/GlitchPass.js +0 -2
  246. package/examples/jsm/postprocessing/HalftonePass.js +0 -6
  247. package/examples/jsm/postprocessing/OutlinePass.js +7 -7
  248. package/examples/jsm/postprocessing/OutputPass.js +72 -0
  249. package/examples/jsm/postprocessing/Pass.js +2 -0
  250. package/examples/jsm/postprocessing/RenderPixelatedPass.js +4 -3
  251. package/examples/jsm/postprocessing/SAOPass.js +4 -26
  252. package/examples/jsm/postprocessing/SMAAPass.js +5 -8
  253. package/examples/jsm/postprocessing/SSAARenderPass.js +15 -6
  254. package/examples/jsm/postprocessing/SSAOPass.js +4 -14
  255. package/examples/jsm/postprocessing/SSRPass.js +3 -7
  256. package/examples/jsm/postprocessing/SavePass.js +2 -3
  257. package/examples/jsm/postprocessing/ShaderPass.js +1 -0
  258. package/examples/jsm/postprocessing/TAARenderPass.js +3 -2
  259. package/examples/jsm/postprocessing/TexturePass.js +0 -2
  260. package/examples/jsm/postprocessing/UnrealBloomPass.js +4 -11
  261. package/examples/jsm/renderers/CSS2DRenderer.js +6 -1
  262. package/examples/jsm/renderers/CSS3DRenderer.js +27 -5
  263. package/examples/jsm/renderers/{webgpu/WebGPUAnimation.js → common/Animation.js} +4 -4
  264. package/examples/jsm/renderers/common/Attributes.js +75 -0
  265. package/examples/jsm/renderers/common/Backend.js +160 -0
  266. package/examples/jsm/renderers/common/Background.js +133 -0
  267. package/examples/jsm/renderers/common/Binding.js +11 -0
  268. package/examples/jsm/renderers/common/Bindings.js +169 -0
  269. package/examples/jsm/renderers/common/Buffer.js +38 -0
  270. package/examples/jsm/renderers/{webgpu/WebGPUBufferUtils.js → common/BufferUtils.js} +2 -2
  271. package/examples/jsm/renderers/common/ChainMap.js +89 -0
  272. package/examples/jsm/renderers/common/ComputePipeline.js +17 -0
  273. package/examples/jsm/renderers/common/Constants.js +14 -0
  274. package/examples/jsm/renderers/common/CubeRenderTarget.js +65 -0
  275. package/examples/jsm/renderers/common/DataMap.js +54 -0
  276. package/examples/jsm/renderers/common/Geometries.js +215 -0
  277. package/examples/jsm/renderers/{webgpu/WebGPUInfo.js → common/Info.js} +2 -3
  278. package/examples/jsm/renderers/common/Pipeline.js +13 -0
  279. package/examples/jsm/renderers/common/Pipelines.js +309 -0
  280. package/examples/jsm/renderers/common/ProgrammableStage.js +18 -0
  281. package/examples/jsm/renderers/common/RenderContext.js +37 -0
  282. package/examples/jsm/renderers/common/RenderContexts.js +38 -0
  283. package/examples/jsm/renderers/{webgpu/WebGPURenderLists.js → common/RenderList.js} +26 -47
  284. package/examples/jsm/renderers/common/RenderLists.js +38 -0
  285. package/examples/jsm/renderers/common/RenderObject.js +95 -0
  286. package/examples/jsm/renderers/common/RenderObjects.js +92 -0
  287. package/examples/jsm/renderers/common/RenderPipeline.js +16 -0
  288. package/examples/jsm/renderers/common/RenderTarget.js +15 -0
  289. package/examples/jsm/renderers/common/Renderer.js +822 -0
  290. package/examples/jsm/renderers/common/SampledTexture.js +80 -0
  291. package/examples/jsm/renderers/common/Sampler.js +18 -0
  292. package/examples/jsm/renderers/common/StorageBuffer.js +17 -0
  293. package/examples/jsm/renderers/common/Textures.js +206 -0
  294. package/examples/jsm/renderers/{webgpu/WebGPUUniform.js → common/Uniform.js} +13 -9
  295. package/examples/jsm/renderers/common/UniformBuffer.js +15 -0
  296. package/examples/jsm/renderers/{webgpu/WebGPUUniformsGroup.js → common/UniformsGroup.js} +13 -13
  297. package/examples/jsm/renderers/common/nodes/NodeRender.js +302 -0
  298. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeSampledTexture.js → common/nodes/NodeSampledTexture.js} +4 -4
  299. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeSampler.js → common/nodes/NodeSampler.js} +3 -3
  300. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeUniform.js → common/nodes/NodeUniform.js} +1 -1
  301. package/examples/jsm/renderers/common/nodes/Nodes.js +319 -0
  302. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +35 -31
  303. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +765 -0
  304. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +15 -987
  305. package/examples/jsm/renderers/webgpu/nodes/{WebGPUNodeBuilder.js → WGSLNodeBuilder.js} +117 -90
  306. package/examples/jsm/{nodes/parsers → renderers/webgpu/nodes}/WGSLNodeFunction.js +2 -2
  307. package/examples/jsm/{nodes/parsers → renderers/webgpu/nodes}/WGSLNodeParser.js +1 -1
  308. package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +251 -0
  309. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +145 -0
  310. package/examples/jsm/renderers/webgpu/{constants.js → utils/WebGPUConstants.js} +73 -12
  311. package/examples/jsm/renderers/webgpu/{WebGPURenderPipeline.js → utils/WebGPUPipelineUtils.js} +135 -285
  312. package/examples/jsm/renderers/webgpu/{WebGPUTextureUtils.js → utils/WebGPUTextureMipmapUtils.js} +5 -25
  313. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +855 -0
  314. package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +88 -0
  315. package/examples/jsm/shaders/BleachBypassShader.js +2 -0
  316. package/examples/jsm/shaders/BokehShader2.js +3 -0
  317. package/examples/jsm/shaders/ColorifyShader.js +2 -0
  318. package/examples/jsm/shaders/ConvolutionShader.js +2 -0
  319. package/examples/jsm/shaders/CopyShader.js +2 -0
  320. package/examples/jsm/shaders/DotScreenShader.js +2 -0
  321. package/examples/jsm/shaders/ExposureShader.js +44 -0
  322. package/examples/jsm/shaders/FilmShader.js +2 -0
  323. package/examples/jsm/shaders/GammaCorrectionShader.js +2 -0
  324. package/examples/jsm/shaders/HorizontalBlurShader.js +2 -0
  325. package/examples/jsm/shaders/MMDToonShader.js +15 -4
  326. package/examples/jsm/shaders/OutputShader.js +61 -0
  327. package/examples/jsm/shaders/RGBShiftShader.js +4 -2
  328. package/examples/jsm/shaders/SepiaShader.js +2 -0
  329. package/examples/jsm/shaders/ToonShader.js +13 -5
  330. package/examples/jsm/shaders/VelocityShader.js +1 -1
  331. package/examples/jsm/shaders/VerticalBlurShader.js +2 -0
  332. package/examples/jsm/shaders/VignetteShader.js +2 -0
  333. package/examples/jsm/shaders/WaterRefractionShader.js +5 -2
  334. package/examples/jsm/utils/BufferGeometryUtils.js +54 -36
  335. package/examples/jsm/utils/LDrawUtils.js +4 -4
  336. package/examples/jsm/utils/PackedPhongMaterial.js +5 -78
  337. package/examples/jsm/utils/SceneUtils.js +8 -4
  338. package/examples/jsm/utils/SkeletonUtils.js +27 -210
  339. package/examples/jsm/utils/TextureUtils.js +41 -40
  340. package/examples/jsm/webxr/VRButton.js +1 -2
  341. package/examples/jsm/webxr/XRButton.js +198 -0
  342. package/examples/jsm/webxr/XRHandPrimitiveModel.js +1 -0
  343. package/examples/jsm/webxr/XRPlanes.js +100 -0
  344. package/package.json +34 -87
  345. package/src/Three.Legacy.js +19 -110
  346. package/src/Three.js +4 -3
  347. package/src/animation/AnimationUtils.js +13 -1
  348. package/src/audio/Audio.js +7 -2
  349. package/src/audio/PositionalAudio.js +8 -0
  350. package/src/cameras/Camera.js +5 -0
  351. package/src/cameras/CubeCamera.js +76 -13
  352. package/src/cameras/OrthographicCamera.js +1 -1
  353. package/src/cameras/PerspectiveCamera.js +1 -1
  354. package/src/constants.js +22 -2
  355. package/src/core/BufferAttribute.js +150 -9
  356. package/src/core/BufferGeometry.js +4 -10
  357. package/src/core/GLBufferAttribute.js +2 -0
  358. package/src/core/InterleavedBufferAttribute.js +5 -5
  359. package/src/core/Object3D.js +37 -8
  360. package/src/extras/DataUtils.js +7 -1
  361. package/src/extras/ImageUtils.js +2 -2
  362. package/src/extras/PMREMGenerator.js +5 -5
  363. package/src/extras/core/Curve.js +1 -1
  364. package/src/extras/curves/LineCurve.js +6 -4
  365. package/src/extras/curves/LineCurve3.js +13 -0
  366. package/src/geometries/BoxGeometry.js +10 -0
  367. package/src/geometries/CircleGeometry.js +11 -1
  368. package/src/geometries/ConeGeometry.js +1 -1
  369. package/src/geometries/CylinderGeometry.js +11 -1
  370. package/src/geometries/EdgesGeometry.js +10 -0
  371. package/src/geometries/ExtrudeGeometry.js +11 -1
  372. package/src/geometries/LatheGeometry.js +10 -0
  373. package/src/geometries/PlaneGeometry.js +10 -0
  374. package/src/geometries/PolyhedronGeometry.js +11 -1
  375. package/src/geometries/RingGeometry.js +11 -1
  376. package/src/geometries/ShapeGeometry.js +11 -1
  377. package/src/geometries/SphereGeometry.js +12 -2
  378. package/src/geometries/TorusGeometry.js +11 -1
  379. package/src/geometries/TorusKnotGeometry.js +10 -0
  380. package/src/geometries/TubeGeometry.js +10 -0
  381. package/src/geometries/WireframeGeometry.js +10 -0
  382. package/src/helpers/Box3Helper.js +1 -2
  383. package/src/lights/DirectionalLight.js +1 -1
  384. package/src/lights/HemisphereLight.js +1 -1
  385. package/src/lights/SpotLight.js +1 -1
  386. package/src/loaders/AudioLoader.js +14 -8
  387. package/src/loaders/CubeTextureLoader.js +2 -0
  388. package/src/loaders/DataTextureLoader.js +5 -1
  389. package/src/loaders/MaterialLoader.js +8 -0
  390. package/src/loaders/ObjectLoader.js +10 -2
  391. package/src/materials/LineBasicMaterial.js +4 -0
  392. package/src/materials/Material.js +16 -4
  393. package/src/materials/MeshDistanceMaterial.js +0 -9
  394. package/src/materials/MeshPhysicalMaterial.js +32 -6
  395. package/src/materials/ShaderMaterial.js +6 -1
  396. package/src/math/Box2.js +3 -2
  397. package/src/math/Box3.js +49 -64
  398. package/src/math/Color.js +88 -66
  399. package/src/math/ColorManagement.js +75 -16
  400. package/src/math/Euler.js +2 -11
  401. package/src/math/Frustum.js +29 -5
  402. package/src/math/MathUtils.js +43 -1
  403. package/src/math/Matrix3.js +26 -6
  404. package/src/math/Matrix4.js +74 -19
  405. package/src/math/Plane.js +2 -2
  406. package/src/math/Quaternion.js +6 -0
  407. package/src/math/Ray.js +7 -7
  408. package/src/math/Triangle.js +37 -7
  409. package/src/math/Vector2.js +16 -0
  410. package/src/math/Vector3.js +10 -0
  411. package/src/math/interpolants/CubicInterpolant.js +1 -2
  412. package/src/objects/InstancedMesh.js +82 -1
  413. package/src/objects/Mesh.js +108 -76
  414. package/src/objects/Skeleton.js +1 -1
  415. package/src/objects/SkinnedMesh.js +123 -8
  416. package/src/objects/Sprite.js +1 -1
  417. package/src/renderers/WebGLCubeRenderTarget.js +12 -3
  418. package/src/renderers/WebGLMultipleRenderTargets.js +4 -2
  419. package/src/renderers/WebGLRenderTarget.js +14 -2
  420. package/src/renderers/WebGLRenderer.js +1433 -1236
  421. package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +1 -1
  422. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +1 -1
  423. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +0 -271
  424. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +5 -5
  425. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +2 -10
  426. package/src/renderers/shaders/ShaderChunk/clearcoat_pars_fragment.glsl.js +5 -5
  427. package/src/renderers/shaders/ShaderChunk/common.glsl.js +32 -0
  428. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +1 -1
  429. package/src/renderers/shaders/ShaderChunk/displacementmap_vertex.glsl.js +1 -1
  430. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +1 -1
  431. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +26 -3
  432. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -1
  433. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  434. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +10 -2
  435. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +11 -11
  436. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +39 -13
  437. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +306 -10
  438. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -10
  439. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +9 -1
  440. package/src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl.js +10 -2
  441. package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +1 -1
  442. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +32 -10
  443. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -13
  444. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +7 -7
  445. package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -2
  446. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +11 -5
  447. package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +1 -1
  448. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +4 -11
  449. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +2 -2
  450. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +39 -34
  451. package/src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl.js +1 -1
  452. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
  453. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +5 -5
  454. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +101 -16
  455. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +113 -1
  456. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +134 -6
  457. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +116 -1
  458. package/src/renderers/shaders/ShaderChunk.js +0 -6
  459. package/src/renderers/shaders/ShaderLib/background.glsl.js +0 -8
  460. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +5 -0
  461. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -4
  462. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +0 -3
  463. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +3 -3
  464. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -3
  465. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +16 -12
  466. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -3
  467. package/src/renderers/shaders/ShaderLib/points.glsl.js +13 -0
  468. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +5 -0
  469. package/src/renderers/shaders/ShaderLib.js +18 -4
  470. package/src/renderers/shaders/UniformsLib.js +27 -15
  471. package/src/renderers/shaders/UniformsUtils.js +12 -3
  472. package/src/renderers/webgl/WebGLBackground.js +23 -12
  473. package/src/renderers/webgl/WebGLBindingStates.js +13 -5
  474. package/src/renderers/webgl/WebGLCapabilities.js +1 -2
  475. package/src/renderers/webgl/WebGLClipping.js +7 -3
  476. package/src/renderers/webgl/WebGLGeometries.js +12 -0
  477. package/src/renderers/webgl/WebGLInfo.js +0 -1
  478. package/src/renderers/webgl/WebGLLights.js +2 -2
  479. package/src/renderers/webgl/WebGLMaterials.js +123 -234
  480. package/src/renderers/webgl/WebGLMorphtargets.js +1 -1
  481. package/src/renderers/webgl/WebGLProgram.js +130 -48
  482. package/src/renderers/webgl/WebGLPrograms.js +210 -130
  483. package/src/renderers/webgl/WebGLRenderStates.js +2 -2
  484. package/src/renderers/webgl/WebGLShadowMap.js +40 -27
  485. package/src/renderers/webgl/WebGLState.js +23 -9
  486. package/src/renderers/webgl/WebGLTextures.js +39 -19
  487. package/src/renderers/webgl/WebGLUniformsGroups.js +74 -33
  488. package/src/renderers/webgl/WebGLUtils.js +41 -29
  489. package/src/renderers/webxr/WebXRController.js +3 -0
  490. package/src/renderers/webxr/WebXRManager.js +85 -141
  491. package/src/scenes/Scene.js +4 -6
  492. package/src/textures/CompressedTexture.js +2 -2
  493. package/src/textures/CubeTexture.js +2 -2
  494. package/src/textures/DataTexture.js +2 -2
  495. package/src/textures/DepthTexture.js +22 -0
  496. package/src/textures/FramebufferTexture.js +1 -3
  497. package/src/textures/Source.js +4 -0
  498. package/src/textures/Texture.js +43 -13
  499. package/src/utils.js +13 -1
  500. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
  501. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
  502. package/examples/fonts/open-sans/open-sans.css +0 -9
  503. package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
  504. package/examples/fonts/tabler-icons/fonts/tabler-icons.svg +0 -3966
  505. package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
  506. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
  507. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
  508. package/examples/fonts/tabler-icons/tabler-icons.min.css +0 -4
  509. package/examples/js/animation/AnimationClipCreator.js +0 -89
  510. package/examples/js/animation/CCDIKSolver.js +0 -416
  511. package/examples/js/animation/MMDAnimationHelper.js +0 -1046
  512. package/examples/js/animation/MMDPhysics.js +0 -1174
  513. package/examples/js/cameras/CinematicCamera.js +0 -168
  514. package/examples/js/controls/ArcballControls.js +0 -2770
  515. package/examples/js/controls/DragControls.js +0 -205
  516. package/examples/js/controls/FirstPersonControls.js +0 -312
  517. package/examples/js/controls/FlyControls.js +0 -321
  518. package/examples/js/controls/OrbitControls.js +0 -1065
  519. package/examples/js/controls/PointerLockControls.js +0 -144
  520. package/examples/js/controls/TrackballControls.js +0 -729
  521. package/examples/js/controls/TransformControls.js +0 -1301
  522. package/examples/js/csm/CSM.js +0 -347
  523. package/examples/js/csm/CSMFrustum.js +0 -127
  524. package/examples/js/csm/CSMHelper.js +0 -165
  525. package/examples/js/csm/CSMShader.js +0 -253
  526. package/examples/js/curves/CurveExtras.js +0 -348
  527. package/examples/js/curves/NURBSCurve.js +0 -63
  528. package/examples/js/curves/NURBSSurface.js +0 -48
  529. package/examples/js/curves/NURBSUtils.js +0 -439
  530. package/examples/js/effects/AnaglyphEffect.js +0 -86
  531. package/examples/js/effects/AsciiEffect.js +0 -260
  532. package/examples/js/effects/OutlineEffect.js +0 -450
  533. package/examples/js/effects/ParallaxBarrierEffect.js +0 -62
  534. package/examples/js/effects/PeppersGhostEffect.js +0 -139
  535. package/examples/js/effects/StereoEffect.js +0 -46
  536. package/examples/js/environments/DebugEnvironment.js +0 -53
  537. package/examples/js/environments/RoomEnvironment.js +0 -124
  538. package/examples/js/exporters/ColladaExporter.js +0 -487
  539. package/examples/js/exporters/DRACOExporter.js +0 -212
  540. package/examples/js/exporters/EXRExporter.js +0 -455
  541. package/examples/js/exporters/GLTFExporter.js +0 -2425
  542. package/examples/js/exporters/MMDExporter.js +0 -187
  543. package/examples/js/exporters/OBJExporter.js +0 -260
  544. package/examples/js/exporters/PLYExporter.js +0 -427
  545. package/examples/js/exporters/STLExporter.js +0 -188
  546. package/examples/js/exporters/USDZExporter.js +0 -608
  547. package/examples/js/geometries/BoxLineGeometry.js +0 -59
  548. package/examples/js/geometries/ConvexGeometry.js +0 -53
  549. package/examples/js/geometries/DecalGeometry.js +0 -324
  550. package/examples/js/geometries/LightningStrike.js +0 -861
  551. package/examples/js/geometries/ParametricGeometries.js +0 -216
  552. package/examples/js/geometries/ParametricGeometry.js +0 -121
  553. package/examples/js/geometries/RoundedBoxGeometry.js +0 -142
  554. package/examples/js/geometries/TeapotGeometry.js +0 -335
  555. package/examples/js/geometries/TextGeometry.js +0 -53
  556. package/examples/js/helpers/LightProbeHelper.js +0 -48
  557. package/examples/js/helpers/OctreeHelper.js +0 -76
  558. package/examples/js/helpers/PositionalAudioHelper.js +0 -91
  559. package/examples/js/helpers/RectAreaLightHelper.js +0 -73
  560. package/examples/js/helpers/VertexNormalsHelper.js +0 -74
  561. package/examples/js/helpers/VertexTangentsHelper.js +0 -68
  562. package/examples/js/helpers/ViewHelper.js +0 -281
  563. package/examples/js/interactive/HTMLMesh.js +0 -497
  564. package/examples/js/interactive/InteractiveGroup.js +0 -95
  565. package/examples/js/interactive/SelectionBox.js +0 -195
  566. package/examples/js/interactive/SelectionHelper.js +0 -83
  567. package/examples/js/libs/chevrotain.min.js +0 -3
  568. package/examples/js/libs/draco/draco_decoder.js +0 -52
  569. package/examples/js/libs/draco/draco_decoder.wasm +0 -0
  570. package/examples/js/libs/draco/draco_wasm_wrapper.js +0 -104
  571. package/examples/js/libs/draco/gltf/draco_decoder.js +0 -48
  572. package/examples/js/libs/draco/gltf/draco_decoder.wasm +0 -0
  573. package/examples/js/libs/draco/gltf/draco_wasm_wrapper.js +0 -104
  574. package/examples/js/libs/fflate.min.js +0 -7
  575. package/examples/js/libs/ktx-parse.umd.js +0 -1
  576. package/examples/js/libs/meshopt_decoder.js +0 -188
  577. package/examples/js/libs/opentype.min.js +0 -1
  578. package/examples/js/libs/stats.min.js +0 -5
  579. package/examples/js/lights/LightProbeGenerator.js +0 -221
  580. package/examples/js/lights/RectAreaLightUniformsLib.js +0 -60
  581. package/examples/js/lines/Line2.js +0 -19
  582. package/examples/js/lines/LineGeometry.js +0 -69
  583. package/examples/js/lines/LineMaterial.js +0 -635
  584. package/examples/js/lines/LineSegments2.js +0 -311
  585. package/examples/js/lines/LineSegmentsGeometry.js +0 -198
  586. package/examples/js/lines/Wireframe.js +0 -47
  587. package/examples/js/lines/WireframeGeometry2.js +0 -20
  588. package/examples/js/loaders/3DMLoader.js +0 -1273
  589. package/examples/js/loaders/3MFLoader.js +0 -1306
  590. package/examples/js/loaders/AMFLoader.js +0 -504
  591. package/examples/js/loaders/BVHLoader.js +0 -395
  592. package/examples/js/loaders/BasisTextureLoader.js +0 -706
  593. package/examples/js/loaders/ColladaLoader.js +0 -3663
  594. package/examples/js/loaders/DDSLoader.js +0 -244
  595. package/examples/js/loaders/DRACOLoader.js +0 -511
  596. package/examples/js/loaders/EXRLoader.js +0 -2039
  597. package/examples/js/loaders/FBXLoader.js +0 -3680
  598. package/examples/js/loaders/FontLoader.js +0 -160
  599. package/examples/js/loaders/GCodeLoader.js +0 -255
  600. package/examples/js/loaders/GLTFLoader.js +0 -4108
  601. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -87
  602. package/examples/js/loaders/KMZLoader.js +0 -121
  603. package/examples/js/loaders/KTXLoader.js +0 -159
  604. package/examples/js/loaders/LDrawLoader.js +0 -2263
  605. package/examples/js/loaders/LUT3dlLoader.js +0 -135
  606. package/examples/js/loaders/LUTCubeLoader.js +0 -132
  607. package/examples/js/loaders/LWOLoader.js +0 -901
  608. package/examples/js/loaders/LogLuvLoader.js +0 -715
  609. package/examples/js/loaders/LottieLoader.js +0 -62
  610. package/examples/js/loaders/MD2Loader.js +0 -248
  611. package/examples/js/loaders/MDDLoader.js +0 -91
  612. package/examples/js/loaders/MMDLoader.js +0 -1915
  613. package/examples/js/loaders/MTLLoader.js +0 -472
  614. package/examples/js/loaders/MaterialXLoader.js +0 -392
  615. package/examples/js/loaders/NRRDLoader.js +0 -609
  616. package/examples/js/loaders/OBJLoader.js +0 -789
  617. package/examples/js/loaders/PCDLoader.js +0 -413
  618. package/examples/js/loaders/PDBLoader.js +0 -317
  619. package/examples/js/loaders/PLYLoader.js +0 -532
  620. package/examples/js/loaders/PRWMLoader.js +0 -249
  621. package/examples/js/loaders/PVRLoader.js +0 -218
  622. package/examples/js/loaders/RGBELoader.js +0 -442
  623. package/examples/js/loaders/RGBMLoader.js +0 -1354
  624. package/examples/js/loaders/STLLoader.js +0 -364
  625. package/examples/js/loaders/SVGLoader.js +0 -2783
  626. package/examples/js/loaders/TDSLoader.js +0 -992
  627. package/examples/js/loaders/TGALoader.js +0 -484
  628. package/examples/js/loaders/TIFFLoader.js +0 -30
  629. package/examples/js/loaders/TTFLoader.js +0 -203
  630. package/examples/js/loaders/TiltLoader.js +0 -459
  631. package/examples/js/loaders/VOXLoader.js +0 -240
  632. package/examples/js/loaders/VRMLLoader.js +0 -3140
  633. package/examples/js/loaders/VTKLoader.js +0 -1078
  634. package/examples/js/loaders/XYZLoader.js +0 -89
  635. package/examples/js/loaders/lwo/IFFParser.js +0 -1067
  636. package/examples/js/loaders/lwo/LWO2Parser.js +0 -397
  637. package/examples/js/loaders/lwo/LWO3Parser.js +0 -360
  638. package/examples/js/materials/MeshGouraudMaterial.js +0 -387
  639. package/examples/js/math/Capsule.js +0 -103
  640. package/examples/js/math/ColorConverter.js +0 -33
  641. package/examples/js/math/ConvexHull.js +0 -1154
  642. package/examples/js/math/ImprovedNoise.js +0 -66
  643. package/examples/js/math/Lut.js +0 -164
  644. package/examples/js/math/MeshSurfaceSampler.js +0 -171
  645. package/examples/js/math/OBB.js +0 -382
  646. package/examples/js/math/Octree.js +0 -410
  647. package/examples/js/math/SimplexNoise.js +0 -445
  648. package/examples/js/misc/ConvexObjectBreaker.js +0 -474
  649. package/examples/js/misc/GPUComputationRenderer.js +0 -393
  650. package/examples/js/misc/Gyroscope.js +0 -56
  651. package/examples/js/misc/MD2Character.js +0 -235
  652. package/examples/js/misc/MD2CharacterComplex.js +0 -513
  653. package/examples/js/misc/MorphAnimMesh.js +0 -63
  654. package/examples/js/misc/MorphBlendMesh.js +0 -265
  655. package/examples/js/misc/ProgressiveLightMap.js +0 -335
  656. package/examples/js/misc/RollerCoaster.js +0 -430
  657. package/examples/js/misc/TubePainter.js +0 -167
  658. package/examples/js/misc/Volume.js +0 -437
  659. package/examples/js/misc/VolumeSlice.js +0 -214
  660. package/examples/js/modifiers/CurveModifier.js +0 -309
  661. package/examples/js/modifiers/EdgeSplitModifier.js +0 -228
  662. package/examples/js/modifiers/SimplifyModifier.js +0 -465
  663. package/examples/js/modifiers/TessellateModifier.js +0 -276
  664. package/examples/js/objects/GroundProjectedEnv.js +0 -181
  665. package/examples/js/objects/Lensflare.js +0 -356
  666. package/examples/js/objects/LightningStorm.js +0 -206
  667. package/examples/js/objects/MarchingCubes.js +0 -759
  668. package/examples/js/objects/Reflector.js +0 -216
  669. package/examples/js/objects/ReflectorForSSRPass.js +0 -315
  670. package/examples/js/objects/Refractor.js +0 -283
  671. package/examples/js/objects/ShadowMesh.js +0 -59
  672. package/examples/js/objects/Sky.js +0 -218
  673. package/examples/js/objects/Water.js +0 -292
  674. package/examples/js/objects/Water2.js +0 -307
  675. package/examples/js/physics/AmmoPhysics.js +0 -259
  676. package/examples/js/physics/OimoPhysics.js +0 -217
  677. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +0 -335
  678. package/examples/js/postprocessing/AfterimagePass.js +0 -77
  679. package/examples/js/postprocessing/BloomPass.js +0 -135
  680. package/examples/js/postprocessing/BokehPass.js +0 -120
  681. package/examples/js/postprocessing/ClearPass.js +0 -39
  682. package/examples/js/postprocessing/CubeTexturePass.js +0 -60
  683. package/examples/js/postprocessing/DotScreenPass.js +0 -51
  684. package/examples/js/postprocessing/EffectComposer.js +0 -272
  685. package/examples/js/postprocessing/FilmPass.js +0 -52
  686. package/examples/js/postprocessing/GlitchPass.js +0 -104
  687. package/examples/js/postprocessing/HalftonePass.js +0 -75
  688. package/examples/js/postprocessing/LUTPass.js +0 -171
  689. package/examples/js/postprocessing/MaskPass.js +0 -95
  690. package/examples/js/postprocessing/OutlinePass.js +0 -598
  691. package/examples/js/postprocessing/Pass.js +0 -72
  692. package/examples/js/postprocessing/RenderPass.js +0 -70
  693. package/examples/js/postprocessing/SAOPass.js +0 -374
  694. package/examples/js/postprocessing/SMAAPass.js +0 -170
  695. package/examples/js/postprocessing/SSAARenderPass.js +0 -156
  696. package/examples/js/postprocessing/SSAOPass.js +0 -365
  697. package/examples/js/postprocessing/SSRPass.js +0 -567
  698. package/examples/js/postprocessing/SavePass.js +0 -59
  699. package/examples/js/postprocessing/ShaderPass.js +0 -64
  700. package/examples/js/postprocessing/TAARenderPass.js +0 -130
  701. package/examples/js/postprocessing/TexturePass.js +0 -49
  702. package/examples/js/postprocessing/UnrealBloomPass.js +0 -375
  703. package/examples/js/renderers/CSS2DRenderer.js +0 -178
  704. package/examples/js/renderers/CSS3DRenderer.js +0 -237
  705. package/examples/js/renderers/Projector.js +0 -818
  706. package/examples/js/renderers/SVGRenderer.js +0 -491
  707. package/examples/js/shaders/ACESFilmicToneMappingShader.js +0 -89
  708. package/examples/js/shaders/AfterimageShader.js +0 -60
  709. package/examples/js/shaders/BasicShader.js +0 -27
  710. package/examples/js/shaders/BleachBypassShader.js +0 -62
  711. package/examples/js/shaders/BlendShader.js +0 -54
  712. package/examples/js/shaders/BokehShader.js +0 -156
  713. package/examples/js/shaders/BokehShader2.js +0 -419
  714. package/examples/js/shaders/BrightnessContrastShader.js +0 -58
  715. package/examples/js/shaders/ColorCorrectionShader.js +0 -52
  716. package/examples/js/shaders/ColorifyShader.js +0 -47
  717. package/examples/js/shaders/ConvolutionShader.js +0 -92
  718. package/examples/js/shaders/CopyShader.js +0 -45
  719. package/examples/js/shaders/DOFMipMapShader.js +0 -60
  720. package/examples/js/shaders/DepthLimitedBlurShader.js +0 -173
  721. package/examples/js/shaders/DigitalGlitch.js +0 -127
  722. package/examples/js/shaders/DotScreenShader.js +0 -72
  723. package/examples/js/shaders/FXAAShader.js +0 -284
  724. package/examples/js/shaders/FilmShader.js +0 -110
  725. package/examples/js/shaders/FocusShader.js +0 -95
  726. package/examples/js/shaders/FreiChenShader.js +0 -93
  727. package/examples/js/shaders/GammaCorrectionShader.js +0 -41
  728. package/examples/js/shaders/GodRaysShader.js +0 -284
  729. package/examples/js/shaders/HalftoneShader.js +0 -336
  730. package/examples/js/shaders/HorizontalBlurShader.js +0 -59
  731. package/examples/js/shaders/HorizontalTiltShiftShader.js +0 -65
  732. package/examples/js/shaders/HueSaturationShader.js +0 -69
  733. package/examples/js/shaders/KaleidoShader.js +0 -60
  734. package/examples/js/shaders/LuminosityHighPassShader.js +0 -67
  735. package/examples/js/shaders/LuminosityShader.js +0 -46
  736. package/examples/js/shaders/MMDToonShader.js +0 -96
  737. package/examples/js/shaders/MirrorShader.js +0 -56
  738. package/examples/js/shaders/NormalMapShader.js +0 -55
  739. package/examples/js/shaders/RGBShiftShader.js +0 -56
  740. package/examples/js/shaders/SAOShader.js +0 -209
  741. package/examples/js/shaders/SMAAShader.js +0 -454
  742. package/examples/js/shaders/SSAOShader.js +0 -295
  743. package/examples/js/shaders/SSRShader.js +0 -381
  744. package/examples/js/shaders/SepiaShader.js +0 -52
  745. package/examples/js/shaders/SobelOperatorShader.js +0 -88
  746. package/examples/js/shaders/SubsurfaceScatteringShader.js +0 -49
  747. package/examples/js/shaders/TechnicolorShader.js +0 -43
  748. package/examples/js/shaders/ToneMapShader.js +0 -84
  749. package/examples/js/shaders/ToonShader.js +0 -335
  750. package/examples/js/shaders/TriangleBlurShader.js +0 -70
  751. package/examples/js/shaders/UnpackDepthRGBAShader.js +0 -47
  752. package/examples/js/shaders/VelocityShader.js +0 -126
  753. package/examples/js/shaders/VerticalBlurShader.js +0 -59
  754. package/examples/js/shaders/VerticalTiltShiftShader.js +0 -65
  755. package/examples/js/shaders/VignetteShader.js +0 -53
  756. package/examples/js/shaders/VolumeShader.js +0 -296
  757. package/examples/js/shaders/WaterRefractionShader.js +0 -84
  758. package/examples/js/textures/FlakesTexture.js +0 -40
  759. package/examples/js/utils/BufferGeometryUtils.js +0 -1160
  760. package/examples/js/utils/CameraUtils.js +0 -71
  761. package/examples/js/utils/GPUStatsPanel.js +0 -125
  762. package/examples/js/utils/GeometryCompressionUtils.js +0 -549
  763. package/examples/js/utils/GeometryUtils.js +0 -168
  764. package/examples/js/utils/LDrawUtils.js +0 -179
  765. package/examples/js/utils/PackedPhongMaterial.js +0 -109
  766. package/examples/js/utils/SceneUtils.js +0 -214
  767. package/examples/js/utils/ShadowMapViewer.js +0 -183
  768. package/examples/js/utils/SkeletonUtils.js +0 -493
  769. package/examples/js/utils/UVsDebug.js +0 -143
  770. package/examples/js/utils/WorkerPool.js +0 -105
  771. package/examples/jsm/exporters/ColladaExporter.js +0 -713
  772. package/examples/jsm/geometries/LightningStrike.js +0 -1017
  773. package/examples/jsm/libs/OimoPhysics/OimoPhysics.js +0 -37071
  774. package/examples/jsm/libs/OimoPhysics/index.js +0 -43
  775. package/examples/jsm/libs/flow.module.js +0 -4552
  776. package/examples/jsm/libs/tween.module.min.js +0 -3
  777. package/examples/jsm/loaders/BasisTextureLoader.js +0 -790
  778. package/examples/jsm/loaders/IFCLoader.js +0 -2431
  779. package/examples/jsm/loaders/PRWMLoader.js +0 -299
  780. package/examples/jsm/loaders/ifc/web-ifc-api.js +0 -47504
  781. package/examples/jsm/loaders/ifc/web-ifc.wasm +0 -0
  782. package/examples/jsm/node-editor/NodeEditor.js +0 -857
  783. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +0 -14
  784. package/examples/jsm/node-editor/accessors/NormalEditor.js +0 -30
  785. package/examples/jsm/node-editor/accessors/PositionEditor.js +0 -30
  786. package/examples/jsm/node-editor/accessors/UVEditor.js +0 -25
  787. package/examples/jsm/node-editor/core/BaseNode.js +0 -96
  788. package/examples/jsm/node-editor/core/DataFile.js +0 -59
  789. package/examples/jsm/node-editor/core/FileEditor.js +0 -20
  790. package/examples/jsm/node-editor/core/FileURLEditor.js +0 -29
  791. package/examples/jsm/node-editor/display/BlendEditor.js +0 -44
  792. package/examples/jsm/node-editor/display/NormalMapEditor.js +0 -49
  793. package/examples/jsm/node-editor/examples/animate-uv.json +0 -1
  794. package/examples/jsm/node-editor/examples/fake-top-light.json +0 -1
  795. package/examples/jsm/node-editor/examples/matcap.json +0 -1
  796. package/examples/jsm/node-editor/examples/oscillator-color.json +0 -1
  797. package/examples/jsm/node-editor/examples/rim.json +0 -1
  798. package/examples/jsm/node-editor/inputs/ColorEditor.js +0 -96
  799. package/examples/jsm/node-editor/inputs/FloatEditor.js +0 -23
  800. package/examples/jsm/node-editor/inputs/SliderEditor.js +0 -67
  801. package/examples/jsm/node-editor/inputs/TextureEditor.js +0 -155
  802. package/examples/jsm/node-editor/inputs/Vector2Editor.js +0 -28
  803. package/examples/jsm/node-editor/inputs/Vector3Editor.js +0 -30
  804. package/examples/jsm/node-editor/inputs/Vector4Editor.js +0 -37
  805. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +0 -84
  806. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +0 -102
  807. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +0 -118
  808. package/examples/jsm/node-editor/math/AngleEditor.js +0 -40
  809. package/examples/jsm/node-editor/math/DotEditor.js +0 -35
  810. package/examples/jsm/node-editor/math/InvertEditor.js +0 -39
  811. package/examples/jsm/node-editor/math/LimiterEditor.js +0 -62
  812. package/examples/jsm/node-editor/math/NormalizeEditor.js +0 -28
  813. package/examples/jsm/node-editor/math/OperatorEditor.js +0 -63
  814. package/examples/jsm/node-editor/math/PowerEditor.js +0 -44
  815. package/examples/jsm/node-editor/math/TrigonometryEditor.js +0 -45
  816. package/examples/jsm/node-editor/procedural/CheckerEditor.js +0 -27
  817. package/examples/jsm/node-editor/scene/MeshEditor.js +0 -102
  818. package/examples/jsm/node-editor/scene/Object3DEditor.js +0 -160
  819. package/examples/jsm/node-editor/scene/PointsEditor.js +0 -99
  820. package/examples/jsm/node-editor/utils/JoinEditor.js +0 -58
  821. package/examples/jsm/node-editor/utils/OscillatorEditor.js +0 -43
  822. package/examples/jsm/node-editor/utils/PreviewEditor.js +0 -170
  823. package/examples/jsm/node-editor/utils/SplitEditor.js +0 -39
  824. package/examples/jsm/node-editor/utils/TimerEditor.js +0 -58
  825. package/examples/jsm/nodes/core/CodeNode.js +0 -50
  826. package/examples/jsm/nodes/core/ExpressionNode.js +0 -32
  827. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +0 -22
  828. package/examples/jsm/nodes/lighting/PunctualLightNode.js +0 -68
  829. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +0 -301
  830. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +0 -149
  831. package/examples/jsm/objects/GroundProjectedEnv.js +0 -186
  832. package/examples/jsm/objects/LightningStorm.js +0 -245
  833. package/examples/jsm/physics/OimoPhysics.js +0 -231
  834. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +0 -369
  835. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +0 -187
  836. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +0 -173
  837. package/examples/jsm/renderers/webgpu/WebGPUBinding.js +0 -22
  838. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +0 -255
  839. package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +0 -43
  840. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +0 -78
  841. package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +0 -82
  842. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +0 -36
  843. package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +0 -22
  844. package/examples/jsm/renderers/webgpu/WebGPUProperties.js +0 -38
  845. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +0 -296
  846. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +0 -66
  847. package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +0 -73
  848. package/examples/jsm/renderers/webgpu/WebGPUSampler.js +0 -29
  849. package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +0 -20
  850. package/examples/jsm/renderers/webgpu/WebGPUTextureRenderer.js +0 -40
  851. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +0 -794
  852. package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +0 -18
  853. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +0 -81
  854. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +0 -83
  855. package/examples/jsm/shaders/ToneMapShader.js +0 -73
  856. package/src/renderers/shaders/ShaderChunk/uv2_pars_fragment.glsl.js +0 -7
  857. package/src/renderers/shaders/ShaderChunk/uv2_pars_vertex.glsl.js +0 -10
  858. package/src/renderers/shaders/ShaderChunk/uv2_vertex.glsl.js +0 -7
  859. /package/examples/{js → jsm}/libs/ammo.wasm.js +0 -0
  860. /package/examples/{js → jsm}/libs/ammo.wasm.wasm +0 -0
  861. /package/examples/{js → jsm}/libs/basis/basis_transcoder.js +0 -0
  862. /package/examples/{js → jsm}/libs/basis/basis_transcoder.wasm +0 -0
  863. /package/examples/{js → jsm}/libs/draco/README.md +0 -0
  864. /package/examples/{js → jsm}/libs/draco/draco_encoder.js +0 -0
  865. /package/examples/{js → jsm}/libs/draco/gltf/draco_encoder.js +0 -0
@@ -1,1273 +0,0 @@
1
- ( function () {
2
-
3
- const _taskCache = new WeakMap();
4
- class Rhino3dmLoader extends THREE.Loader {
5
-
6
- constructor( manager ) {
7
-
8
- super( manager );
9
- this.libraryPath = '';
10
- this.libraryPending = null;
11
- this.libraryBinary = null;
12
- this.libraryConfig = {};
13
- this.url = '';
14
- this.workerLimit = 4;
15
- this.workerPool = [];
16
- this.workerNextTaskID = 1;
17
- this.workerSourceURL = '';
18
- this.workerConfig = {};
19
- this.materials = [];
20
- this.warnings = [];
21
-
22
- }
23
- setLibraryPath( path ) {
24
-
25
- this.libraryPath = path;
26
- return this;
27
-
28
- }
29
- setWorkerLimit( workerLimit ) {
30
-
31
- this.workerLimit = workerLimit;
32
- return this;
33
-
34
- }
35
- load( url, onLoad, onProgress, onError ) {
36
-
37
- const loader = new THREE.FileLoader( this.manager );
38
- loader.setPath( this.path );
39
- loader.setResponseType( 'arraybuffer' );
40
- loader.setRequestHeader( this.requestHeader );
41
- this.url = url;
42
- loader.load( url, buffer => {
43
-
44
- // Check for an existing task using this buffer. A transferred buffer cannot be transferred
45
- // again from this thread.
46
- if ( _taskCache.has( buffer ) ) {
47
-
48
- const cachedTask = _taskCache.get( buffer );
49
- return cachedTask.promise.then( onLoad ).catch( onError );
50
-
51
- }
52
-
53
- this.decodeObjects( buffer, url ).then( result => {
54
-
55
- result.userData.warnings = this.warnings;
56
- onLoad( result );
57
-
58
- } ).catch( e => onError( e ) );
59
-
60
- }, onProgress, onError );
61
-
62
- }
63
- debug() {
64
-
65
- console.log( 'Task load: ', this.workerPool.map( worker => worker._taskLoad ) );
66
-
67
- }
68
- decodeObjects( buffer, url ) {
69
-
70
- let worker;
71
- let taskID;
72
- const taskCost = buffer.byteLength;
73
- const objectPending = this._getWorker( taskCost ).then( _worker => {
74
-
75
- worker = _worker;
76
- taskID = this.workerNextTaskID ++;
77
- return new Promise( ( resolve, reject ) => {
78
-
79
- worker._callbacks[ taskID ] = {
80
- resolve,
81
- reject
82
- };
83
- worker.postMessage( {
84
- type: 'decode',
85
- id: taskID,
86
- buffer
87
- }, [ buffer ] );
88
-
89
- // this.debug();
90
-
91
- } );
92
-
93
- } ).then( message => this._createGeometry( message.data ) ).catch( e => {
94
-
95
- throw e;
96
-
97
- } );
98
-
99
- // Remove task from the task list.
100
- // Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416)
101
- objectPending.catch( () => true ).then( () => {
102
-
103
- if ( worker && taskID ) {
104
-
105
- this._releaseTask( worker, taskID );
106
-
107
- //this.debug();
108
-
109
- }
110
-
111
- } );
112
-
113
- // Cache the task result.
114
- _taskCache.set( buffer, {
115
- url: url,
116
- promise: objectPending
117
- } );
118
- return objectPending;
119
-
120
- }
121
- parse( data, onLoad, onError ) {
122
-
123
- this.decodeObjects( data, '' ).then( result => {
124
-
125
- result.userData.warnings = this.warnings;
126
- onLoad( result );
127
-
128
- } ).catch( e => onError( e ) );
129
-
130
- }
131
- _compareMaterials( material ) {
132
-
133
- const mat = {};
134
- mat.name = material.name;
135
- mat.color = {};
136
- mat.color.r = material.color.r;
137
- mat.color.g = material.color.g;
138
- mat.color.b = material.color.b;
139
- mat.type = material.type;
140
- for ( let i = 0; i < this.materials.length; i ++ ) {
141
-
142
- const m = this.materials[ i ];
143
- const _mat = {};
144
- _mat.name = m.name;
145
- _mat.color = {};
146
- _mat.color.r = m.color.r;
147
- _mat.color.g = m.color.g;
148
- _mat.color.b = m.color.b;
149
- _mat.type = m.type;
150
- if ( JSON.stringify( mat ) === JSON.stringify( _mat ) ) {
151
-
152
- return m;
153
-
154
- }
155
-
156
- }
157
-
158
- this.materials.push( material );
159
- return material;
160
-
161
- }
162
- _createMaterial( material ) {
163
-
164
- if ( material === undefined ) {
165
-
166
- return new THREE.MeshStandardMaterial( {
167
- color: new THREE.Color( 1, 1, 1 ),
168
- metalness: 0.8,
169
- name: 'default',
170
- side: 2
171
- } );
172
-
173
- }
174
-
175
- const _diffuseColor = material.diffuseColor;
176
- const diffusecolor = new THREE.Color( _diffuseColor.r / 255.0, _diffuseColor.g / 255.0, _diffuseColor.b / 255.0 );
177
- if ( _diffuseColor.r === 0 && _diffuseColor.g === 0 && _diffuseColor.b === 0 ) {
178
-
179
- diffusecolor.r = 1;
180
- diffusecolor.g = 1;
181
- diffusecolor.b = 1;
182
-
183
- }
184
-
185
- // console.log( material );
186
-
187
- const mat = new THREE.MeshStandardMaterial( {
188
- color: diffusecolor,
189
- name: material.name,
190
- side: 2,
191
- transparent: material.transparency > 0 ? true : false,
192
- opacity: 1.0 - material.transparency
193
- } );
194
- const textureLoader = new THREE.TextureLoader();
195
- for ( let i = 0; i < material.textures.length; i ++ ) {
196
-
197
- const texture = material.textures[ i ];
198
- if ( texture.image !== null ) {
199
-
200
- const map = textureLoader.load( texture.image );
201
- switch ( texture.type ) {
202
-
203
- case 'Diffuse':
204
- mat.map = map;
205
- break;
206
- case 'Bump':
207
- mat.bumpMap = map;
208
- break;
209
- case 'Transparency':
210
- mat.alphaMap = map;
211
- mat.transparent = true;
212
- break;
213
- case 'Emap':
214
- mat.envMap = map;
215
- break;
216
-
217
- }
218
-
219
- map.wrapS = texture.wrapU === 0 ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping;
220
- map.wrapT = texture.wrapV === 0 ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping;
221
- map.repeat.set( texture.repeat[ 0 ], texture.repeat[ 1 ] );
222
-
223
- }
224
-
225
- }
226
-
227
- return mat;
228
-
229
- }
230
- _createGeometry( data ) {
231
-
232
- // console.log(data);
233
-
234
- const object = new THREE.Object3D();
235
- const instanceDefinitionObjects = [];
236
- const instanceDefinitions = [];
237
- const instanceReferences = [];
238
- object.userData[ 'layers' ] = data.layers;
239
- object.userData[ 'groups' ] = data.groups;
240
- object.userData[ 'settings' ] = data.settings;
241
- object.userData[ 'objectType' ] = 'File3dm';
242
- object.userData[ 'materials' ] = null;
243
- object.name = this.url;
244
- let objects = data.objects;
245
- const materials = data.materials;
246
- for ( let i = 0; i < objects.length; i ++ ) {
247
-
248
- const obj = objects[ i ];
249
- const attributes = obj.attributes;
250
- switch ( obj.objectType ) {
251
-
252
- case 'InstanceDefinition':
253
- instanceDefinitions.push( obj );
254
- break;
255
- case 'InstanceReference':
256
- instanceReferences.push( obj );
257
- break;
258
- default:
259
- let _object;
260
- if ( attributes.materialIndex >= 0 ) {
261
-
262
- const rMaterial = materials[ attributes.materialIndex ];
263
- let material = this._createMaterial( rMaterial );
264
- material = this._compareMaterials( material );
265
- _object = this._createObject( obj, material );
266
-
267
- } else {
268
-
269
- const material = this._createMaterial();
270
- _object = this._createObject( obj, material );
271
-
272
- }
273
-
274
- if ( _object === undefined ) {
275
-
276
- continue;
277
-
278
- }
279
-
280
- const layer = data.layers[ attributes.layerIndex ];
281
- _object.visible = layer ? data.layers[ attributes.layerIndex ].visible : true;
282
- if ( attributes.isInstanceDefinitionObject ) {
283
-
284
- instanceDefinitionObjects.push( _object );
285
-
286
- } else {
287
-
288
- object.add( _object );
289
-
290
- }
291
-
292
- break;
293
-
294
- }
295
-
296
- }
297
-
298
- for ( let i = 0; i < instanceDefinitions.length; i ++ ) {
299
-
300
- const iDef = instanceDefinitions[ i ];
301
- objects = [];
302
- for ( let j = 0; j < iDef.attributes.objectIds.length; j ++ ) {
303
-
304
- const objId = iDef.attributes.objectIds[ j ];
305
- for ( let p = 0; p < instanceDefinitionObjects.length; p ++ ) {
306
-
307
- const idoId = instanceDefinitionObjects[ p ].userData.attributes.id;
308
- if ( objId === idoId ) {
309
-
310
- objects.push( instanceDefinitionObjects[ p ] );
311
-
312
- }
313
-
314
- }
315
-
316
- }
317
-
318
- // Currently clones geometry and does not take advantage of instancing
319
-
320
- for ( let j = 0; j < instanceReferences.length; j ++ ) {
321
-
322
- const iRef = instanceReferences[ j ];
323
- if ( iRef.geometry.parentIdefId === iDef.attributes.id ) {
324
-
325
- const iRefObject = new THREE.Object3D();
326
- const xf = iRef.geometry.xform.array;
327
- const matrix = new THREE.Matrix4();
328
- matrix.set( xf[ 0 ], xf[ 1 ], xf[ 2 ], xf[ 3 ], xf[ 4 ], xf[ 5 ], xf[ 6 ], xf[ 7 ], xf[ 8 ], xf[ 9 ], xf[ 10 ], xf[ 11 ], xf[ 12 ], xf[ 13 ], xf[ 14 ], xf[ 15 ] );
329
- iRefObject.applyMatrix4( matrix );
330
- for ( let p = 0; p < objects.length; p ++ ) {
331
-
332
- iRefObject.add( objects[ p ].clone( true ) );
333
-
334
- }
335
-
336
- object.add( iRefObject );
337
-
338
- }
339
-
340
- }
341
-
342
- }
343
-
344
- object.userData[ 'materials' ] = this.materials;
345
- return object;
346
-
347
- }
348
- _createObject( obj, mat ) {
349
-
350
- const loader = new THREE.BufferGeometryLoader();
351
- const attributes = obj.attributes;
352
- let geometry, material, _color, color;
353
- switch ( obj.objectType ) {
354
-
355
- case 'Point':
356
- case 'PointSet':
357
- geometry = loader.parse( obj.geometry );
358
- if ( geometry.attributes.hasOwnProperty( 'color' ) ) {
359
-
360
- material = new THREE.PointsMaterial( {
361
- vertexColors: true,
362
- sizeAttenuation: false,
363
- size: 2
364
- } );
365
-
366
- } else {
367
-
368
- _color = attributes.drawColor;
369
- color = new THREE.Color( _color.r / 255.0, _color.g / 255.0, _color.b / 255.0 );
370
- material = new THREE.PointsMaterial( {
371
- color: color,
372
- sizeAttenuation: false,
373
- size: 2
374
- } );
375
-
376
- }
377
-
378
- material = this._compareMaterials( material );
379
- const points = new THREE.Points( geometry, material );
380
- points.userData[ 'attributes' ] = attributes;
381
- points.userData[ 'objectType' ] = obj.objectType;
382
- if ( attributes.name ) {
383
-
384
- points.name = attributes.name;
385
-
386
- }
387
-
388
- return points;
389
- case 'Mesh':
390
- case 'Extrusion':
391
- case 'SubD':
392
- case 'Brep':
393
- if ( obj.geometry === null ) return;
394
- geometry = loader.parse( obj.geometry );
395
- if ( geometry.attributes.hasOwnProperty( 'color' ) ) {
396
-
397
- mat.vertexColors = true;
398
-
399
- }
400
-
401
- if ( mat === null ) {
402
-
403
- mat = this._createMaterial();
404
- mat = this._compareMaterials( mat );
405
-
406
- }
407
-
408
- const mesh = new THREE.Mesh( geometry, mat );
409
- mesh.castShadow = attributes.castsShadows;
410
- mesh.receiveShadow = attributes.receivesShadows;
411
- mesh.userData[ 'attributes' ] = attributes;
412
- mesh.userData[ 'objectType' ] = obj.objectType;
413
- if ( attributes.name ) {
414
-
415
- mesh.name = attributes.name;
416
-
417
- }
418
-
419
- return mesh;
420
- case 'Curve':
421
- geometry = loader.parse( obj.geometry );
422
- _color = attributes.drawColor;
423
- color = new THREE.Color( _color.r / 255.0, _color.g / 255.0, _color.b / 255.0 );
424
- material = new THREE.LineBasicMaterial( {
425
- color: color
426
- } );
427
- material = this._compareMaterials( material );
428
- const lines = new THREE.Line( geometry, material );
429
- lines.userData[ 'attributes' ] = attributes;
430
- lines.userData[ 'objectType' ] = obj.objectType;
431
- if ( attributes.name ) {
432
-
433
- lines.name = attributes.name;
434
-
435
- }
436
-
437
- return lines;
438
- case 'TextDot':
439
- geometry = obj.geometry;
440
- const ctx = document.createElement( 'canvas' ).getContext( '2d' );
441
- const font = `${geometry.fontHeight}px ${geometry.fontFace}`;
442
- ctx.font = font;
443
- const width = ctx.measureText( geometry.text ).width + 10;
444
- const height = geometry.fontHeight + 10;
445
- const r = window.devicePixelRatio;
446
- ctx.canvas.width = width * r;
447
- ctx.canvas.height = height * r;
448
- ctx.canvas.style.width = width + 'px';
449
- ctx.canvas.style.height = height + 'px';
450
- ctx.setTransform( r, 0, 0, r, 0, 0 );
451
- ctx.font = font;
452
- ctx.textBaseline = 'middle';
453
- ctx.textAlign = 'center';
454
- color = attributes.drawColor;
455
- ctx.fillStyle = `rgba(${color.r},${color.g},${color.b},${color.a})`;
456
- ctx.fillRect( 0, 0, width, height );
457
- ctx.fillStyle = 'white';
458
- ctx.fillText( geometry.text, width / 2, height / 2 );
459
- const texture = new THREE.CanvasTexture( ctx.canvas );
460
- texture.minFilter = THREE.LinearFilter;
461
- texture.wrapS = THREE.ClampToEdgeWrapping;
462
- texture.wrapT = THREE.ClampToEdgeWrapping;
463
- material = new THREE.SpriteMaterial( {
464
- map: texture,
465
- depthTest: false
466
- } );
467
- const sprite = new THREE.Sprite( material );
468
- sprite.position.set( geometry.point[ 0 ], geometry.point[ 1 ], geometry.point[ 2 ] );
469
- sprite.scale.set( width / 10, height / 10, 1.0 );
470
- sprite.userData[ 'attributes' ] = attributes;
471
- sprite.userData[ 'objectType' ] = obj.objectType;
472
- if ( attributes.name ) {
473
-
474
- sprite.name = attributes.name;
475
-
476
- }
477
-
478
- return sprite;
479
- case 'Light':
480
- geometry = obj.geometry;
481
- let light;
482
- switch ( geometry.lightStyle.name ) {
483
-
484
- case 'LightStyle_WorldPoint':
485
- light = new THREE.PointLight();
486
- light.castShadow = attributes.castsShadows;
487
- light.position.set( geometry.location[ 0 ], geometry.location[ 1 ], geometry.location[ 2 ] );
488
- light.shadow.normalBias = 0.1;
489
- break;
490
- case 'LightStyle_WorldSpot':
491
- light = new THREE.SpotLight();
492
- light.castShadow = attributes.castsShadows;
493
- light.position.set( geometry.location[ 0 ], geometry.location[ 1 ], geometry.location[ 2 ] );
494
- light.target.position.set( geometry.direction[ 0 ], geometry.direction[ 1 ], geometry.direction[ 2 ] );
495
- light.angle = geometry.spotAngleRadians;
496
- light.shadow.normalBias = 0.1;
497
- break;
498
- case 'LightStyle_WorldRectangular':
499
- light = new THREE.RectAreaLight();
500
- const width = Math.abs( geometry.width[ 2 ] );
501
- const height = Math.abs( geometry.length[ 0 ] );
502
- light.position.set( geometry.location[ 0 ] - height / 2, geometry.location[ 1 ], geometry.location[ 2 ] - width / 2 );
503
- light.height = height;
504
- light.width = width;
505
- light.lookAt( geometry.direction[ 0 ], geometry.direction[ 1 ], geometry.direction[ 2 ] );
506
- break;
507
- case 'LightStyle_WorldDirectional':
508
- light = new THREE.DirectionalLight();
509
- light.castShadow = attributes.castsShadows;
510
- light.position.set( geometry.location[ 0 ], geometry.location[ 1 ], geometry.location[ 2 ] );
511
- light.target.position.set( geometry.direction[ 0 ], geometry.direction[ 1 ], geometry.direction[ 2 ] );
512
- light.shadow.normalBias = 0.1;
513
- break;
514
- case 'LightStyle_WorldLinear':
515
- // not conversion exists, warning has already been printed to the console
516
- break;
517
- default:
518
- break;
519
-
520
- }
521
-
522
- if ( light ) {
523
-
524
- light.intensity = geometry.intensity;
525
- _color = geometry.diffuse;
526
- color = new THREE.Color( _color.r / 255.0, _color.g / 255.0, _color.b / 255.0 );
527
- light.color = color;
528
- light.userData[ 'attributes' ] = attributes;
529
- light.userData[ 'objectType' ] = obj.objectType;
530
-
531
- }
532
-
533
- return light;
534
-
535
- }
536
-
537
- }
538
- _initLibrary() {
539
-
540
- if ( ! this.libraryPending ) {
541
-
542
- // Load rhino3dm wrapper.
543
- const jsLoader = new THREE.FileLoader( this.manager );
544
- jsLoader.setPath( this.libraryPath );
545
- const jsContent = new Promise( ( resolve, reject ) => {
546
-
547
- jsLoader.load( 'rhino3dm.js', resolve, undefined, reject );
548
-
549
- } );
550
-
551
- // Load rhino3dm WASM binary.
552
- const binaryLoader = new THREE.FileLoader( this.manager );
553
- binaryLoader.setPath( this.libraryPath );
554
- binaryLoader.setResponseType( 'arraybuffer' );
555
- const binaryContent = new Promise( ( resolve, reject ) => {
556
-
557
- binaryLoader.load( 'rhino3dm.wasm', resolve, undefined, reject );
558
-
559
- } );
560
- this.libraryPending = Promise.all( [ jsContent, binaryContent ] ).then( ( [ jsContent, binaryContent ] ) => {
561
-
562
- //this.libraryBinary = binaryContent;
563
- this.libraryConfig.wasmBinary = binaryContent;
564
- const fn = Rhino3dmWorker.toString();
565
- const body = [ '/* rhino3dm.js */', jsContent, '/* worker */', fn.substring( fn.indexOf( '{' ) + 1, fn.lastIndexOf( '}' ) ) ].join( '\n' );
566
- this.workerSourceURL = URL.createObjectURL( new Blob( [ body ] ) );
567
-
568
- } );
569
-
570
- }
571
-
572
- return this.libraryPending;
573
-
574
- }
575
- _getWorker( taskCost ) {
576
-
577
- return this._initLibrary().then( () => {
578
-
579
- if ( this.workerPool.length < this.workerLimit ) {
580
-
581
- const worker = new Worker( this.workerSourceURL );
582
- worker._callbacks = {};
583
- worker._taskCosts = {};
584
- worker._taskLoad = 0;
585
- worker.postMessage( {
586
- type: 'init',
587
- libraryConfig: this.libraryConfig
588
- } );
589
- worker.onmessage = e => {
590
-
591
- const message = e.data;
592
- switch ( message.type ) {
593
-
594
- case 'warning':
595
- this.warnings.push( message.data );
596
- console.warn( message.data );
597
- break;
598
- case 'decode':
599
- worker._callbacks[ message.id ].resolve( message );
600
- break;
601
- case 'error':
602
- worker._callbacks[ message.id ].reject( message );
603
- break;
604
- default:
605
- console.error( 'THREE.Rhino3dmLoader: Unexpected message, "' + message.type + '"' );
606
-
607
- }
608
-
609
- };
610
-
611
- this.workerPool.push( worker );
612
-
613
- } else {
614
-
615
- this.workerPool.sort( function ( a, b ) {
616
-
617
- return a._taskLoad > b._taskLoad ? - 1 : 1;
618
-
619
- } );
620
-
621
- }
622
-
623
- const worker = this.workerPool[ this.workerPool.length - 1 ];
624
- worker._taskLoad += taskCost;
625
- return worker;
626
-
627
- } );
628
-
629
- }
630
- _releaseTask( worker, taskID ) {
631
-
632
- worker._taskLoad -= worker._taskCosts[ taskID ];
633
- delete worker._callbacks[ taskID ];
634
- delete worker._taskCosts[ taskID ];
635
-
636
- }
637
- dispose() {
638
-
639
- for ( let i = 0; i < this.workerPool.length; ++ i ) {
640
-
641
- this.workerPool[ i ].terminate();
642
-
643
- }
644
-
645
- this.workerPool.length = 0;
646
- return this;
647
-
648
- }
649
-
650
- }
651
-
652
- /* WEB WORKER */
653
-
654
- function Rhino3dmWorker() {
655
-
656
- let libraryPending;
657
- let libraryConfig;
658
- let rhino;
659
- let taskID;
660
- onmessage = function ( e ) {
661
-
662
- const message = e.data;
663
- switch ( message.type ) {
664
-
665
- case 'init':
666
- // console.log(message)
667
- libraryConfig = message.libraryConfig;
668
- const wasmBinary = libraryConfig.wasmBinary;
669
- let RhinoModule;
670
- libraryPending = new Promise( function ( resolve ) {
671
-
672
- /* Like Basis THREE.Loader */
673
- RhinoModule = {
674
- wasmBinary,
675
- onRuntimeInitialized: resolve
676
- };
677
- rhino3dm( RhinoModule ); // eslint-disable-line no-undef
678
-
679
- } ).then( () => {
680
-
681
- rhino = RhinoModule;
682
-
683
- } );
684
- break;
685
- case 'decode':
686
- taskID = message.id;
687
- const buffer = message.buffer;
688
- libraryPending.then( () => {
689
-
690
- try {
691
-
692
- const data = decodeObjects( rhino, buffer );
693
- self.postMessage( {
694
- type: 'decode',
695
- id: message.id,
696
- data
697
- } );
698
-
699
- } catch ( error ) {
700
-
701
- self.postMessage( {
702
- type: 'error',
703
- id: message.id,
704
- error
705
- } );
706
-
707
- }
708
-
709
- } );
710
- break;
711
-
712
- }
713
-
714
- };
715
-
716
- function decodeObjects( rhino, buffer ) {
717
-
718
- const arr = new Uint8Array( buffer );
719
- const doc = rhino.File3dm.fromByteArray( arr );
720
- const objects = [];
721
- const materials = [];
722
- const layers = [];
723
- const views = [];
724
- const namedViews = [];
725
- const groups = [];
726
- const strings = [];
727
-
728
- //Handle objects
729
-
730
- const objs = doc.objects();
731
- const cnt = objs.count;
732
- for ( let i = 0; i < cnt; i ++ ) {
733
-
734
- const _object = objs.get( i );
735
- const object = extractObjectData( _object, doc );
736
- _object.delete();
737
- if ( object ) {
738
-
739
- objects.push( object );
740
-
741
- }
742
-
743
- }
744
-
745
- // Handle instance definitions
746
- // console.log( `Instance Definitions Count: ${doc.instanceDefinitions().count()}` );
747
-
748
- for ( let i = 0; i < doc.instanceDefinitions().count(); i ++ ) {
749
-
750
- const idef = doc.instanceDefinitions().get( i );
751
- const idefAttributes = extractProperties( idef );
752
- idefAttributes.objectIds = idef.getObjectIds();
753
- objects.push( {
754
- geometry: null,
755
- attributes: idefAttributes,
756
- objectType: 'InstanceDefinition'
757
- } );
758
-
759
- }
760
-
761
- // Handle materials
762
-
763
- const textureTypes = [
764
- // rhino.TextureType.Bitmap,
765
- rhino.TextureType.Diffuse, rhino.TextureType.Bump, rhino.TextureType.Transparency, rhino.TextureType.Opacity, rhino.TextureType.Emap ];
766
- const pbrTextureTypes = [ rhino.TextureType.PBR_BaseColor, rhino.TextureType.PBR_Subsurface, rhino.TextureType.PBR_SubsurfaceScattering, rhino.TextureType.PBR_SubsurfaceScatteringRadius, rhino.TextureType.PBR_Metallic, rhino.TextureType.PBR_Specular, rhino.TextureType.PBR_SpecularTint, rhino.TextureType.PBR_Roughness, rhino.TextureType.PBR_Anisotropic, rhino.TextureType.PBR_Anisotropic_Rotation, rhino.TextureType.PBR_Sheen, rhino.TextureType.PBR_SheenTint, rhino.TextureType.PBR_Clearcoat, rhino.TextureType.PBR_ClearcoatBump, rhino.TextureType.PBR_ClearcoatRoughness, rhino.TextureType.PBR_OpacityIor, rhino.TextureType.PBR_OpacityRoughness, rhino.TextureType.PBR_Emission, rhino.TextureType.PBR_AmbientOcclusion, rhino.TextureType.PBR_Displacement ];
767
- for ( let i = 0; i < doc.materials().count(); i ++ ) {
768
-
769
- const _material = doc.materials().get( i );
770
- const _pbrMaterial = _material.physicallyBased();
771
- let material = extractProperties( _material );
772
- const textures = [];
773
- for ( let j = 0; j < textureTypes.length; j ++ ) {
774
-
775
- const _texture = _material.getTexture( textureTypes[ j ] );
776
- if ( _texture ) {
777
-
778
- let textureType = textureTypes[ j ].constructor.name;
779
- textureType = textureType.substring( 12, textureType.length );
780
- const texture = {
781
- type: textureType
782
- };
783
- const image = doc.getEmbeddedFileAsBase64( _texture.fileName );
784
- texture.wrapU = _texture.wrapU;
785
- texture.wrapV = _texture.wrapV;
786
- texture.wrapW = _texture.wrapW;
787
- const uvw = _texture.uvwTransform.toFloatArray( true );
788
- texture.repeat = [ uvw[ 0 ], uvw[ 5 ] ];
789
- if ( image ) {
790
-
791
- texture.image = 'data:image/png;base64,' + image;
792
-
793
- } else {
794
-
795
- self.postMessage( {
796
- type: 'warning',
797
- id: taskID,
798
- data: {
799
- message: `THREE.3DMLoader: Image for ${textureType} texture not embedded in file.`,
800
- type: 'missing resource'
801
- }
802
- } );
803
- texture.image = null;
804
-
805
- }
806
-
807
- textures.push( texture );
808
- _texture.delete();
809
-
810
- }
811
-
812
- }
813
-
814
- material.textures = textures;
815
- if ( _pbrMaterial.supported ) {
816
-
817
- for ( let j = 0; j < pbrTextureTypes.length; j ++ ) {
818
-
819
- const _texture = _material.getTexture( pbrTextureTypes[ j ] );
820
- if ( _texture ) {
821
-
822
- const image = doc.getEmbeddedFileAsBase64( _texture.fileName );
823
- let textureType = pbrTextureTypes[ j ].constructor.name;
824
- textureType = textureType.substring( 12, textureType.length );
825
- const texture = {
826
- type: textureType,
827
- image: 'data:image/png;base64,' + image
828
- };
829
- textures.push( texture );
830
- _texture.delete();
831
-
832
- }
833
-
834
- }
835
-
836
- const pbMaterialProperties = extractProperties( _material.physicallyBased() );
837
- material = Object.assign( pbMaterialProperties, material );
838
-
839
- }
840
-
841
- materials.push( material );
842
- _material.delete();
843
- _pbrMaterial.delete();
844
-
845
- }
846
-
847
- // Handle layers
848
-
849
- for ( let i = 0; i < doc.layers().count(); i ++ ) {
850
-
851
- const _layer = doc.layers().get( i );
852
- const layer = extractProperties( _layer );
853
- layers.push( layer );
854
- _layer.delete();
855
-
856
- }
857
-
858
- // Handle views
859
-
860
- for ( let i = 0; i < doc.views().count(); i ++ ) {
861
-
862
- const _view = doc.views().get( i );
863
- const view = extractProperties( _view );
864
- views.push( view );
865
- _view.delete();
866
-
867
- }
868
-
869
- // Handle named views
870
-
871
- for ( let i = 0; i < doc.namedViews().count(); i ++ ) {
872
-
873
- const _namedView = doc.namedViews().get( i );
874
- const namedView = extractProperties( _namedView );
875
- namedViews.push( namedView );
876
- _namedView.delete();
877
-
878
- }
879
-
880
- // Handle groups
881
-
882
- for ( let i = 0; i < doc.groups().count(); i ++ ) {
883
-
884
- const _group = doc.groups().get( i );
885
- const group = extractProperties( _group );
886
- groups.push( group );
887
- _group.delete();
888
-
889
- }
890
-
891
- // Handle settings
892
-
893
- const settings = extractProperties( doc.settings() );
894
-
895
- //TODO: Handle other document stuff like dimstyles, instance definitions, bitmaps etc.
896
-
897
- // Handle dimstyles
898
- // console.log( `Dimstyle Count: ${doc.dimstyles().count()}` );
899
-
900
- // Handle bitmaps
901
- // console.log( `Bitmap Count: ${doc.bitmaps().count()}` );
902
-
903
- // Handle strings
904
- // console.log( `Document Strings Count: ${doc.strings().count()}` );
905
- // Note: doc.strings().documentUserTextCount() counts any doc.strings defined in a section
906
- //console.log( `Document User Text Count: ${doc.strings().documentUserTextCount()}` );
907
-
908
- const strings_count = doc.strings().count();
909
- for ( let i = 0; i < strings_count; i ++ ) {
910
-
911
- strings.push( doc.strings().get( i ) );
912
-
913
- }
914
-
915
- doc.delete();
916
- return {
917
- objects,
918
- materials,
919
- layers,
920
- views,
921
- namedViews,
922
- groups,
923
- strings,
924
- settings
925
- };
926
-
927
- }
928
-
929
- function extractObjectData( object, doc ) {
930
-
931
- const _geometry = object.geometry();
932
- const _attributes = object.attributes();
933
- let objectType = _geometry.objectType;
934
- let geometry, attributes, position, data, mesh;
935
-
936
- // skip instance definition objects
937
- //if( _attributes.isInstanceDefinitionObject ) { continue; }
938
-
939
- // TODO: handle other geometry types
940
- switch ( objectType ) {
941
-
942
- case rhino.ObjectType.Curve:
943
- const pts = curveToPoints( _geometry, 100 );
944
- position = {};
945
- attributes = {};
946
- data = {};
947
- position.itemSize = 3;
948
- position.type = 'Float32Array';
949
- position.array = [];
950
- for ( let j = 0; j < pts.length; j ++ ) {
951
-
952
- position.array.push( pts[ j ][ 0 ] );
953
- position.array.push( pts[ j ][ 1 ] );
954
- position.array.push( pts[ j ][ 2 ] );
955
-
956
- }
957
-
958
- attributes.position = position;
959
- data.attributes = attributes;
960
- geometry = {
961
- data
962
- };
963
- break;
964
- case rhino.ObjectType.Point:
965
- const pt = _geometry.location;
966
- position = {};
967
- const color = {};
968
- attributes = {};
969
- data = {};
970
- position.itemSize = 3;
971
- position.type = 'Float32Array';
972
- position.array = [ pt[ 0 ], pt[ 1 ], pt[ 2 ] ];
973
- const _color = _attributes.drawColor( doc );
974
- color.itemSize = 3;
975
- color.type = 'Float32Array';
976
- color.array = [ _color.r / 255.0, _color.g / 255.0, _color.b / 255.0 ];
977
- attributes.position = position;
978
- attributes.color = color;
979
- data.attributes = attributes;
980
- geometry = {
981
- data
982
- };
983
- break;
984
- case rhino.ObjectType.PointSet:
985
- case rhino.ObjectType.Mesh:
986
- geometry = _geometry.toThreejsJSON();
987
- break;
988
- case rhino.ObjectType.Brep:
989
- const faces = _geometry.faces();
990
- mesh = new rhino.Mesh();
991
- for ( let faceIndex = 0; faceIndex < faces.count; faceIndex ++ ) {
992
-
993
- const face = faces.get( faceIndex );
994
- const _mesh = face.getMesh( rhino.MeshType.Any );
995
- if ( _mesh ) {
996
-
997
- mesh.append( _mesh );
998
- _mesh.delete();
999
-
1000
- }
1001
-
1002
- face.delete();
1003
-
1004
- }
1005
-
1006
- if ( mesh.faces().count > 0 ) {
1007
-
1008
- mesh.compact();
1009
- geometry = mesh.toThreejsJSON();
1010
- faces.delete();
1011
-
1012
- }
1013
-
1014
- mesh.delete();
1015
- break;
1016
- case rhino.ObjectType.Extrusion:
1017
- mesh = _geometry.getMesh( rhino.MeshType.Any );
1018
- if ( mesh ) {
1019
-
1020
- geometry = mesh.toThreejsJSON();
1021
- mesh.delete();
1022
-
1023
- }
1024
-
1025
- break;
1026
- case rhino.ObjectType.TextDot:
1027
- geometry = extractProperties( _geometry );
1028
- break;
1029
- case rhino.ObjectType.Light:
1030
- geometry = extractProperties( _geometry );
1031
- if ( geometry.lightStyle.name === 'LightStyle_WorldLinear' ) {
1032
-
1033
- self.postMessage( {
1034
- type: 'warning',
1035
- id: taskID,
1036
- data: {
1037
- message: `THREE.3DMLoader: No conversion exists for ${objectType.constructor.name} ${geometry.lightStyle.name}`,
1038
- type: 'no conversion',
1039
- guid: _attributes.id
1040
- }
1041
- } );
1042
-
1043
- }
1044
-
1045
- break;
1046
- case rhino.ObjectType.InstanceReference:
1047
- geometry = extractProperties( _geometry );
1048
- geometry.xform = extractProperties( _geometry.xform );
1049
- geometry.xform.array = _geometry.xform.toFloatArray( true );
1050
- break;
1051
- case rhino.ObjectType.SubD:
1052
- // TODO: precalculate resulting vertices and faces and warn on excessive results
1053
- _geometry.subdivide( 3 );
1054
- mesh = rhino.Mesh.createFromSubDControlNet( _geometry );
1055
- if ( mesh ) {
1056
-
1057
- geometry = mesh.toThreejsJSON();
1058
- mesh.delete();
1059
-
1060
- }
1061
-
1062
- break;
1063
-
1064
- /*
1065
- case rhino.ObjectType.Annotation:
1066
- case rhino.ObjectType.Hatch:
1067
- case rhino.ObjectType.ClipPlane:
1068
- */
1069
-
1070
- default:
1071
- self.postMessage( {
1072
- type: 'warning',
1073
- id: taskID,
1074
- data: {
1075
- message: `THREE.3DMLoader: Conversion not implemented for ${objectType.constructor.name}`,
1076
- type: 'not implemented',
1077
- guid: _attributes.id
1078
- }
1079
- } );
1080
- break;
1081
-
1082
- }
1083
-
1084
- if ( geometry ) {
1085
-
1086
- attributes = extractProperties( _attributes );
1087
- attributes.geometry = extractProperties( _geometry );
1088
- if ( _attributes.groupCount > 0 ) {
1089
-
1090
- attributes.groupIds = _attributes.getGroupList();
1091
-
1092
- }
1093
-
1094
- if ( _attributes.userStringCount > 0 ) {
1095
-
1096
- attributes.userStrings = _attributes.getUserStrings();
1097
-
1098
- }
1099
-
1100
- if ( _geometry.userStringCount > 0 ) {
1101
-
1102
- attributes.geometry.userStrings = _geometry.getUserStrings();
1103
-
1104
- }
1105
-
1106
- attributes.drawColor = _attributes.drawColor( doc );
1107
- objectType = objectType.constructor.name;
1108
- objectType = objectType.substring( 11, objectType.length );
1109
- return {
1110
- geometry,
1111
- attributes,
1112
- objectType
1113
- };
1114
-
1115
- } else {
1116
-
1117
- self.postMessage( {
1118
- type: 'warning',
1119
- id: taskID,
1120
- data: {
1121
- message: `THREE.3DMLoader: ${objectType.constructor.name} has no associated mesh geometry.`,
1122
- type: 'missing mesh',
1123
- guid: _attributes.id
1124
- }
1125
- } );
1126
-
1127
- }
1128
-
1129
- }
1130
-
1131
- function extractProperties( object ) {
1132
-
1133
- const result = {};
1134
- for ( const property in object ) {
1135
-
1136
- const value = object[ property ];
1137
- if ( typeof value !== 'function' ) {
1138
-
1139
- if ( typeof value === 'object' && value !== null && value.hasOwnProperty( 'constructor' ) ) {
1140
-
1141
- result[ property ] = {
1142
- name: value.constructor.name,
1143
- value: value.value
1144
- };
1145
-
1146
- } else {
1147
-
1148
- result[ property ] = value;
1149
-
1150
- }
1151
-
1152
- } else {
1153
-
1154
- // these are functions that could be called to extract more data.
1155
- //console.log( `${property}: ${object[ property ].constructor.name}` );
1156
- }
1157
-
1158
- }
1159
-
1160
- return result;
1161
-
1162
- }
1163
-
1164
- function curveToPoints( curve, pointLimit ) {
1165
-
1166
- let pointCount = pointLimit;
1167
- let rc = [];
1168
- const ts = [];
1169
- if ( curve instanceof rhino.LineCurve ) {
1170
-
1171
- return [ curve.pointAtStart, curve.pointAtEnd ];
1172
-
1173
- }
1174
-
1175
- if ( curve instanceof rhino.PolylineCurve ) {
1176
-
1177
- pointCount = curve.pointCount;
1178
- for ( let i = 0; i < pointCount; i ++ ) {
1179
-
1180
- rc.push( curve.point( i ) );
1181
-
1182
- }
1183
-
1184
- return rc;
1185
-
1186
- }
1187
-
1188
- if ( curve instanceof rhino.PolyCurve ) {
1189
-
1190
- const segmentCount = curve.segmentCount;
1191
- for ( let i = 0; i < segmentCount; i ++ ) {
1192
-
1193
- const segment = curve.segmentCurve( i );
1194
- const segmentArray = curveToPoints( segment, pointCount );
1195
- rc = rc.concat( segmentArray );
1196
- segment.delete();
1197
-
1198
- }
1199
-
1200
- return rc;
1201
-
1202
- }
1203
-
1204
- if ( curve instanceof rhino.ArcCurve ) {
1205
-
1206
- pointCount = Math.floor( curve.angleDegrees / 5 );
1207
- pointCount = pointCount < 2 ? 2 : pointCount;
1208
- // alternative to this hardcoded version: https://stackoverflow.com/a/18499923/2179399
1209
-
1210
- }
1211
-
1212
- if ( curve instanceof rhino.NurbsCurve && curve.degree === 1 ) {
1213
-
1214
- const pLine = curve.tryGetPolyline();
1215
- for ( let i = 0; i < pLine.count; i ++ ) {
1216
-
1217
- rc.push( pLine.get( i ) );
1218
-
1219
- }
1220
-
1221
- pLine.delete();
1222
- return rc;
1223
-
1224
- }
1225
-
1226
- const domain = curve.domain;
1227
- const divisions = pointCount - 1.0;
1228
- for ( let j = 0; j < pointCount; j ++ ) {
1229
-
1230
- const t = domain[ 0 ] + j / divisions * ( domain[ 1 ] - domain[ 0 ] );
1231
- if ( t === domain[ 0 ] || t === domain[ 1 ] ) {
1232
-
1233
- ts.push( t );
1234
- continue;
1235
-
1236
- }
1237
-
1238
- const tan = curve.tangentAt( t );
1239
- const prevTan = curve.tangentAt( ts.slice( - 1 )[ 0 ] );
1240
-
1241
- // Duplicated from THREE.Vector3
1242
- // How to pass imports to worker?
1243
-
1244
- const tS = tan[ 0 ] * tan[ 0 ] + tan[ 1 ] * tan[ 1 ] + tan[ 2 ] * tan[ 2 ];
1245
- const ptS = prevTan[ 0 ] * prevTan[ 0 ] + prevTan[ 1 ] * prevTan[ 1 ] + prevTan[ 2 ] * prevTan[ 2 ];
1246
- const denominator = Math.sqrt( tS * ptS );
1247
- let angle;
1248
- if ( denominator === 0 ) {
1249
-
1250
- angle = Math.PI / 2;
1251
-
1252
- } else {
1253
-
1254
- const theta = ( tan.x * prevTan.x + tan.y * prevTan.y + tan.z * prevTan.z ) / denominator;
1255
- angle = Math.acos( Math.max( - 1, Math.min( 1, theta ) ) );
1256
-
1257
- }
1258
-
1259
- if ( angle < 0.1 ) continue;
1260
- ts.push( t );
1261
-
1262
- }
1263
-
1264
- rc = ts.map( t => curve.pointAt( t ) );
1265
- return rc;
1266
-
1267
- }
1268
-
1269
- }
1270
-
1271
- THREE.Rhino3dmLoader = Rhino3dmLoader;
1272
-
1273
- } )();