super-three 0.147.0 → 0.152.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 (757) hide show
  1. package/LICENSE +1 -1
  2. package/build/three.cjs +36408 -21117
  3. package/build/three.js +37007 -21715
  4. package/build/three.min.js +3 -2
  5. package/build/three.module.js +6387 -5510
  6. package/build/three.module.min.js +6 -0
  7. package/examples/jsm/animation/AnimationClipCreator.js +5 -3
  8. package/examples/jsm/capabilities/WebGPU.js +2 -4
  9. package/examples/jsm/controls/ArcballControls.js +1828 -1821
  10. package/examples/jsm/controls/MapControls.js +28 -0
  11. package/examples/jsm/controls/OrbitControls.js +20 -45
  12. package/examples/jsm/controls/PointerLockControls.js +70 -65
  13. package/examples/jsm/controls/TrackballControls.js +18 -4
  14. package/examples/jsm/controls/TransformControls.js +0 -1
  15. package/examples/jsm/csm/CSM.js +11 -3
  16. package/examples/jsm/csm/CSMShader.js +7 -6
  17. package/examples/jsm/effects/AsciiEffect.js +3 -6
  18. package/examples/jsm/effects/OutlineEffect.js +1 -15
  19. package/examples/jsm/exporters/ColladaExporter.js +26 -14
  20. package/examples/jsm/exporters/DRACOExporter.js +53 -11
  21. package/examples/jsm/exporters/EXRExporter.js +3 -9
  22. package/examples/jsm/exporters/GLTFExporter.js +524 -111
  23. package/examples/jsm/exporters/KTX2Exporter.js +34 -23
  24. package/examples/jsm/exporters/MMDExporter.js +1 -1
  25. package/examples/jsm/exporters/PLYExporter.js +8 -1
  26. package/examples/jsm/exporters/STLExporter.js +8 -4
  27. package/examples/jsm/exporters/USDZExporter.js +22 -3
  28. package/examples/jsm/geometries/ConvexGeometry.js +0 -6
  29. package/examples/jsm/geometries/ParametricGeometry.js +10 -0
  30. package/examples/jsm/helpers/OctreeHelper.js +1 -0
  31. package/examples/jsm/helpers/ViewHelper.js +70 -56
  32. package/examples/jsm/interactive/HTMLMesh.js +16 -3
  33. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  34. package/examples/{js → jsm}/libs/basis/README.md +4 -4
  35. package/examples/jsm/libs/draco/draco_decoder.js +34 -0
  36. package/examples/jsm/libs/draco/draco_decoder.wasm +0 -0
  37. package/examples/jsm/libs/draco/draco_wasm_wrapper.js +117 -0
  38. package/examples/jsm/libs/draco/gltf/draco_decoder.js +33 -0
  39. package/examples/jsm/libs/draco/gltf/draco_decoder.wasm +0 -0
  40. package/examples/jsm/libs/draco/gltf/draco_wasm_wrapper.js +116 -0
  41. package/examples/jsm/libs/lil-gui.module.min.js +2 -2
  42. package/examples/jsm/libs/tween.module.js +803 -0
  43. package/examples/jsm/lights/IESSpotLight.js +25 -0
  44. package/examples/jsm/lights/LightProbeGenerator.js +11 -9
  45. package/examples/jsm/lines/LineSegments2.js +12 -10
  46. package/examples/jsm/loaders/3DMLoader.js +8 -5
  47. package/examples/jsm/loaders/3MFLoader.js +12 -11
  48. package/examples/jsm/loaders/AMFLoader.js +2 -3
  49. package/examples/jsm/loaders/BVHLoader.js +2 -2
  50. package/examples/jsm/loaders/ColladaLoader.js +15 -16
  51. package/examples/jsm/loaders/DRACOLoader.js +67 -18
  52. package/examples/jsm/loaders/EXRLoader.js +23 -24
  53. package/examples/jsm/loaders/FBXLoader.js +32 -50
  54. package/examples/jsm/loaders/GCodeLoader.js +1 -2
  55. package/examples/jsm/loaders/GLTFLoader.js +249 -215
  56. package/examples/jsm/loaders/HDRCubeTextureLoader.js +4 -4
  57. package/examples/jsm/loaders/IESLoader.js +337 -0
  58. package/examples/jsm/loaders/KMZLoader.js +4 -4
  59. package/examples/jsm/loaders/KTX2Loader.js +41 -24
  60. package/examples/jsm/loaders/LDrawLoader.js +20 -18
  61. package/examples/jsm/loaders/LWOLoader.js +12 -29
  62. package/examples/jsm/loaders/LottieLoader.js +3 -1
  63. package/examples/jsm/loaders/MMDLoader.js +17 -13
  64. package/examples/jsm/loaders/MTLLoader.js +2 -2
  65. package/examples/jsm/loaders/MaterialXLoader.js +9 -3
  66. package/examples/jsm/loaders/NRRDLoader.js +33 -5
  67. package/examples/jsm/loaders/OBJLoader.js +1 -1
  68. package/examples/jsm/loaders/PCDLoader.js +1 -2
  69. package/examples/jsm/loaders/PLYLoader.js +238 -105
  70. package/examples/jsm/loaders/RGBELoader.js +3 -3
  71. package/examples/jsm/loaders/STLLoader.js +1 -2
  72. package/examples/jsm/loaders/SVGLoader.js +36 -27
  73. package/examples/jsm/loaders/TTFLoader.js +1 -8
  74. package/examples/jsm/loaders/TiltLoader.js +13 -7
  75. package/examples/jsm/loaders/USDZLoader.js +5 -5
  76. package/examples/jsm/loaders/VOXLoader.js +8 -2
  77. package/examples/jsm/loaders/VRMLLoader.js +5 -13
  78. package/examples/jsm/loaders/VTKLoader.js +7 -6
  79. package/examples/jsm/loaders/lwo/IFFParser.js +19 -19
  80. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -3
  81. package/examples/jsm/math/MeshSurfaceSampler.js +0 -6
  82. package/examples/jsm/misc/ConvexObjectBreaker.js +2 -8
  83. package/examples/jsm/misc/GPUComputationRenderer.js +5 -5
  84. package/examples/jsm/misc/MD2Character.js +2 -2
  85. package/examples/jsm/misc/MD2CharacterComplex.js +2 -2
  86. package/examples/jsm/misc/ProgressiveLightMap.js +12 -10
  87. package/examples/jsm/misc/RollerCoaster.js +7 -1
  88. package/examples/jsm/misc/Volume.js +20 -5
  89. package/examples/jsm/modifiers/CurveModifier.js +1 -0
  90. package/examples/jsm/modifiers/TessellateModifier.js +19 -19
  91. package/examples/jsm/nodes/Nodes.js +143 -335
  92. package/examples/jsm/nodes/accessors/BitangentNode.js +43 -16
  93. package/examples/jsm/nodes/accessors/BufferNode.js +6 -0
  94. package/examples/jsm/nodes/accessors/CameraNode.js +12 -2
  95. package/examples/jsm/nodes/accessors/CubeTextureNode.js +27 -33
  96. package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +58 -0
  97. package/examples/jsm/nodes/accessors/InstanceNode.js +17 -21
  98. package/examples/jsm/nodes/accessors/MaterialNode.js +155 -38
  99. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +16 -0
  100. package/examples/jsm/nodes/accessors/ModelNode.js +11 -0
  101. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +12 -8
  102. package/examples/jsm/nodes/accessors/NormalNode.js +35 -19
  103. package/examples/jsm/nodes/accessors/Object3DNode.js +32 -12
  104. package/examples/jsm/nodes/accessors/PointUVNode.js +6 -1
  105. package/examples/jsm/nodes/accessors/PositionNode.js +38 -23
  106. package/examples/jsm/nodes/accessors/ReferenceNode.js +21 -14
  107. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +11 -7
  108. package/examples/jsm/nodes/accessors/SkinningNode.js +43 -40
  109. package/examples/jsm/nodes/accessors/StorageBufferNode.js +6 -0
  110. package/examples/jsm/nodes/accessors/TangentNode.js +28 -20
  111. package/examples/jsm/nodes/accessors/TextureNode.js +80 -12
  112. package/examples/jsm/nodes/accessors/UVNode.js +6 -0
  113. package/examples/jsm/nodes/accessors/UserDataNode.js +6 -0
  114. package/examples/jsm/nodes/{core → code}/CodeNode.js +27 -2
  115. package/examples/jsm/nodes/code/ExpressionNode.js +37 -0
  116. package/examples/jsm/nodes/{core → code}/FunctionCallNode.js +15 -1
  117. package/examples/jsm/nodes/{core → code}/FunctionNode.js +8 -7
  118. package/examples/jsm/nodes/code/ScriptableNode.js +488 -0
  119. package/examples/jsm/nodes/code/ScriptableValueNode.js +167 -0
  120. package/examples/jsm/nodes/core/ArrayUniformNode.js +3 -0
  121. package/examples/jsm/nodes/core/AttributeNode.js +16 -8
  122. package/examples/jsm/nodes/core/BypassNode.js +9 -2
  123. package/examples/jsm/nodes/core/CacheNode.js +46 -0
  124. package/examples/jsm/nodes/core/ConstNode.js +3 -0
  125. package/examples/jsm/nodes/core/ContextNode.js +8 -1
  126. package/examples/jsm/nodes/core/InputNode.js +26 -5
  127. package/examples/jsm/nodes/core/InstanceIndexNode.js +6 -1
  128. package/examples/jsm/nodes/core/LightingModel.js +16 -0
  129. package/examples/jsm/nodes/core/Node.js +128 -34
  130. package/examples/jsm/nodes/core/NodeBuilder.js +209 -118
  131. package/examples/jsm/nodes/core/NodeCache.js +26 -0
  132. package/examples/jsm/nodes/core/NodeFrame.js +56 -5
  133. package/examples/jsm/nodes/core/NodeUtils.js +105 -28
  134. package/examples/jsm/nodes/core/PropertyNode.js +19 -2
  135. package/examples/jsm/nodes/core/StackNode.js +92 -0
  136. package/examples/jsm/nodes/core/TempNode.js +11 -3
  137. package/examples/jsm/nodes/core/UniformNode.js +15 -0
  138. package/examples/jsm/nodes/core/VarNode.js +21 -29
  139. package/examples/jsm/nodes/core/VaryingNode.js +15 -2
  140. package/examples/jsm/nodes/core/constants.js +6 -0
  141. package/examples/jsm/nodes/display/BlendModeNode.js +25 -11
  142. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +30 -14
  143. package/examples/jsm/nodes/display/ColorSpaceNode.js +39 -27
  144. package/examples/jsm/nodes/display/FrontFacingNode.js +7 -1
  145. package/examples/jsm/nodes/display/NormalMapNode.js +31 -18
  146. package/examples/jsm/nodes/display/PosterizeNode.js +10 -3
  147. package/examples/jsm/nodes/display/ToneMappingNode.js +92 -11
  148. package/examples/jsm/nodes/display/ViewportNode.js +27 -18
  149. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +30 -0
  150. package/examples/jsm/nodes/display/ViewportTextureNode.js +61 -0
  151. package/examples/jsm/nodes/fog/FogExp2Node.js +35 -0
  152. package/examples/jsm/nodes/fog/FogNode.js +12 -6
  153. package/examples/jsm/nodes/fog/FogRangeNode.js +12 -5
  154. package/examples/jsm/nodes/functions/BSDF/BRDF_BlinnPhong.js +30 -0
  155. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +10 -13
  156. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  157. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +8 -6
  158. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +4 -4
  159. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +3 -3
  160. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +7 -5
  161. package/examples/jsm/nodes/functions/PhongLightingModel.js +28 -0
  162. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +33 -36
  163. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +4 -3
  164. package/examples/jsm/nodes/functions/material/getRoughness.js +4 -4
  165. package/examples/jsm/nodes/geometry/RangeNode.js +32 -19
  166. package/examples/jsm/nodes/gpgpu/ComputeNode.js +9 -2
  167. package/examples/jsm/nodes/lighting/AONode.js +5 -3
  168. package/examples/jsm/nodes/lighting/AmbientLightNode.js +27 -0
  169. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +112 -6
  170. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +43 -0
  171. package/examples/jsm/nodes/lighting/EnvironmentNode.js +104 -34
  172. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +15 -10
  173. package/examples/jsm/nodes/lighting/IESSpotLightNode.js +39 -0
  174. package/examples/jsm/nodes/lighting/LightNode.js +57 -0
  175. package/examples/jsm/nodes/lighting/LightUtils.js +17 -0
  176. package/examples/jsm/nodes/lighting/LightingContextNode.js +30 -8
  177. package/examples/jsm/nodes/lighting/LightingNode.js +3 -1
  178. package/examples/jsm/nodes/lighting/LightsNode.js +18 -10
  179. package/examples/jsm/nodes/lighting/PointLightNode.js +71 -0
  180. package/examples/jsm/nodes/lighting/SpotLightNode.js +92 -0
  181. package/examples/jsm/nodes/loaders/NodeLoader.js +5 -4
  182. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +4 -20
  183. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +6 -9
  184. package/examples/jsm/nodes/materials/Materials.js +11 -55
  185. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +5 -11
  186. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +48 -0
  187. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +74 -0
  188. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +6 -6
  189. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +21 -96
  190. package/examples/jsm/nodes/materials/NodeMaterial.js +244 -61
  191. package/examples/jsm/nodes/materials/PointsNodeMaterial.js +7 -1
  192. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +29 -25
  193. package/examples/jsm/nodes/materialx/MaterialXNodes.js +31 -22
  194. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +1 -1
  195. package/examples/jsm/nodes/materialx/lib/mx_noise.js +2 -1
  196. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +2 -1
  197. package/examples/jsm/nodes/math/CondNode.js +43 -17
  198. package/examples/jsm/nodes/math/MathNode.js +178 -73
  199. package/examples/jsm/nodes/math/OperatorNode.js +52 -2
  200. package/examples/jsm/nodes/procedural/CheckerNode.js +14 -6
  201. package/examples/jsm/nodes/shadernode/ShaderNode.js +158 -42
  202. package/examples/jsm/nodes/utils/ArrayElementNode.js +4 -2
  203. package/examples/jsm/nodes/utils/ConvertNode.js +19 -1
  204. package/examples/jsm/nodes/utils/DiscardNode.js +26 -0
  205. package/examples/jsm/nodes/utils/EquirectUVNode.js +11 -4
  206. package/examples/jsm/nodes/utils/JoinNode.js +4 -1
  207. package/examples/jsm/nodes/utils/MatcapUVNode.js +11 -4
  208. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +18 -5
  209. package/examples/jsm/nodes/utils/OscNode.js +21 -14
  210. package/examples/jsm/nodes/utils/PackingNode.js +55 -0
  211. package/examples/jsm/nodes/utils/RemapNode.js +13 -5
  212. package/examples/jsm/nodes/utils/RotateUVNode.js +18 -7
  213. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +37 -0
  214. package/examples/jsm/nodes/utils/SplitNode.js +7 -5
  215. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +15 -30
  216. package/examples/jsm/nodes/utils/TimerNode.js +16 -6
  217. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +21 -10
  218. package/examples/jsm/objects/GroundProjectedSkybox.js +172 -0
  219. package/examples/jsm/objects/Reflector.js +4 -4
  220. package/examples/jsm/objects/Refractor.js +4 -4
  221. package/examples/jsm/objects/ShadowMesh.js +3 -3
  222. package/examples/jsm/physics/AmmoPhysics.js +27 -28
  223. package/examples/jsm/physics/{OimoPhysics.js → RapierPhysics.js} +59 -51
  224. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +0 -8
  225. package/examples/jsm/postprocessing/AfterimagePass.js +0 -2
  226. package/examples/jsm/postprocessing/BloomPass.js +0 -2
  227. package/examples/jsm/postprocessing/BokehPass.js +0 -6
  228. package/examples/jsm/postprocessing/DotScreenPass.js +0 -2
  229. package/examples/jsm/postprocessing/EffectComposer.js +3 -94
  230. package/examples/jsm/postprocessing/FilmPass.js +0 -2
  231. package/examples/jsm/postprocessing/GlitchPass.js +0 -2
  232. package/examples/jsm/postprocessing/HalftonePass.js +0 -6
  233. package/examples/jsm/postprocessing/OutlinePass.js +0 -1
  234. package/examples/jsm/postprocessing/Pass.js +2 -0
  235. package/examples/jsm/postprocessing/SAOPass.js +0 -24
  236. package/examples/jsm/postprocessing/SMAAPass.js +0 -6
  237. package/examples/jsm/postprocessing/SSAARenderPass.js +13 -5
  238. package/examples/jsm/postprocessing/SSAOPass.js +0 -12
  239. package/examples/jsm/postprocessing/SSRPass.js +0 -6
  240. package/examples/jsm/postprocessing/SavePass.js +0 -2
  241. package/examples/jsm/postprocessing/TexturePass.js +0 -2
  242. package/examples/jsm/postprocessing/UnrealBloomPass.js +0 -8
  243. package/examples/jsm/renderers/CSS2DRenderer.js +6 -1
  244. package/examples/jsm/renderers/CSS3DRenderer.js +27 -5
  245. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +35 -31
  246. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +2 -2
  247. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +14 -4
  248. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +72 -55
  249. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +34 -19
  250. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +1 -1
  251. package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +158 -26
  252. package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +1 -1
  253. package/examples/jsm/renderers/webgpu/WebGPUProperties.js +6 -0
  254. package/examples/jsm/renderers/webgpu/WebGPURenderLists.js +30 -14
  255. package/examples/jsm/renderers/webgpu/WebGPURenderObject.js +40 -0
  256. package/examples/jsm/renderers/webgpu/WebGPURenderObjects.js +50 -0
  257. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +49 -111
  258. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +40 -62
  259. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +14 -26
  260. package/examples/jsm/renderers/webgpu/WebGPURenderTarget.js +15 -0
  261. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +244 -100
  262. package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +3 -1
  263. package/examples/jsm/renderers/webgpu/WebGPUTextureRenderer.js +2 -4
  264. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +2 -0
  265. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +366 -110
  266. package/examples/jsm/renderers/webgpu/WebGPUUniformsGroup.js +1 -1
  267. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +13 -6
  268. package/examples/jsm/renderers/webgpu/WebGPUWeakMap.js +83 -0
  269. package/examples/jsm/renderers/webgpu/constants.js +68 -6
  270. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +74 -57
  271. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +241 -22
  272. package/examples/jsm/shaders/MMDToonShader.js +15 -4
  273. package/examples/jsm/shaders/RGBShiftShader.js +2 -2
  274. package/examples/jsm/shaders/VelocityShader.js +1 -1
  275. package/examples/jsm/utils/BufferGeometryUtils.js +37 -35
  276. package/examples/jsm/utils/LDrawUtils.js +4 -4
  277. package/examples/jsm/utils/PackedPhongMaterial.js +5 -78
  278. package/examples/jsm/utils/SceneUtils.js +8 -4
  279. package/examples/jsm/utils/SkeletonUtils.js +27 -210
  280. package/examples/jsm/webxr/VRButton.js +1 -2
  281. package/examples/jsm/webxr/XRButton.js +198 -0
  282. package/package.json +33 -87
  283. package/src/Three.Legacy.js +19 -110
  284. package/src/Three.js +4 -3
  285. package/src/animation/AnimationUtils.js +13 -1
  286. package/src/animation/PropertyBinding.js +2 -2
  287. package/src/audio/Audio.js +7 -2
  288. package/src/constants.js +10 -2
  289. package/src/core/BufferAttribute.js +147 -8
  290. package/src/core/BufferGeometry.js +3 -9
  291. package/src/core/GLBufferAttribute.js +2 -0
  292. package/src/core/InterleavedBufferAttribute.js +1 -1
  293. package/src/core/Object3D.js +36 -7
  294. package/src/extras/DataUtils.js +7 -1
  295. package/src/extras/ImageUtils.js +2 -2
  296. package/src/extras/PMREMGenerator.js +5 -5
  297. package/src/extras/curves/LineCurve.js +6 -4
  298. package/src/extras/curves/LineCurve3.js +13 -0
  299. package/src/geometries/BoxGeometry.js +10 -0
  300. package/src/geometries/CircleGeometry.js +11 -1
  301. package/src/geometries/ConeGeometry.js +1 -1
  302. package/src/geometries/CylinderGeometry.js +11 -1
  303. package/src/geometries/EdgesGeometry.js +10 -0
  304. package/src/geometries/ExtrudeGeometry.js +11 -1
  305. package/src/geometries/LatheGeometry.js +10 -0
  306. package/src/geometries/PlaneGeometry.js +10 -0
  307. package/src/geometries/PolyhedronGeometry.js +10 -0
  308. package/src/geometries/RingGeometry.js +11 -1
  309. package/src/geometries/ShapeGeometry.js +10 -0
  310. package/src/geometries/SphereGeometry.js +12 -2
  311. package/src/geometries/TorusGeometry.js +11 -1
  312. package/src/geometries/TorusKnotGeometry.js +10 -0
  313. package/src/geometries/TubeGeometry.js +10 -0
  314. package/src/geometries/WireframeGeometry.js +10 -0
  315. package/src/helpers/Box3Helper.js +1 -2
  316. package/src/lights/DirectionalLight.js +1 -1
  317. package/src/lights/HemisphereLight.js +1 -1
  318. package/src/lights/SpotLight.js +1 -1
  319. package/src/loaders/AudioLoader.js +14 -8
  320. package/src/loaders/DataTextureLoader.js +5 -1
  321. package/src/loaders/MaterialLoader.js +4 -0
  322. package/src/loaders/ObjectLoader.js +9 -2
  323. package/src/materials/LineBasicMaterial.js +4 -0
  324. package/src/materials/Material.js +6 -3
  325. package/src/materials/MeshDistanceMaterial.js +0 -9
  326. package/src/materials/ShaderMaterial.js +6 -1
  327. package/src/math/Box2.js +3 -2
  328. package/src/math/Box3.js +49 -64
  329. package/src/math/Color.js +72 -55
  330. package/src/math/ColorManagement.js +75 -16
  331. package/src/math/Euler.js +2 -11
  332. package/src/math/Frustum.js +13 -3
  333. package/src/math/MathUtils.js +27 -1
  334. package/src/math/Plane.js +2 -2
  335. package/src/math/Quaternion.js +6 -0
  336. package/src/math/Ray.js +7 -7
  337. package/src/math/Triangle.js +37 -7
  338. package/src/math/Vector2.js +16 -0
  339. package/src/math/Vector3.js +10 -0
  340. package/src/math/interpolants/CubicInterpolant.js +1 -2
  341. package/src/objects/InstancedMesh.js +79 -1
  342. package/src/objects/Mesh.js +101 -73
  343. package/src/objects/SkinnedMesh.js +95 -8
  344. package/src/objects/Sprite.js +1 -1
  345. package/src/renderers/WebGLCubeRenderTarget.js +12 -3
  346. package/src/renderers/WebGLMultipleRenderTargets.js +4 -2
  347. package/src/renderers/WebGLRenderTarget.js +14 -2
  348. package/src/renderers/WebGLRenderer.js +1340 -1258
  349. package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +1 -1
  350. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +1 -1
  351. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +0 -271
  352. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +5 -5
  353. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +2 -10
  354. package/src/renderers/shaders/ShaderChunk/clearcoat_pars_fragment.glsl.js +5 -5
  355. package/src/renderers/shaders/ShaderChunk/common.glsl.js +32 -0
  356. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +1 -1
  357. package/src/renderers/shaders/ShaderChunk/displacementmap_vertex.glsl.js +1 -1
  358. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +1 -1
  359. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -1
  360. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  361. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
  362. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +11 -11
  363. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +13 -13
  364. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +256 -10
  365. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +1 -11
  366. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +9 -1
  367. package/src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl.js +10 -2
  368. package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +1 -1
  369. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +32 -10
  370. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -13
  371. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +7 -7
  372. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +11 -5
  373. package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +1 -1
  374. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +4 -11
  375. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +2 -2
  376. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +39 -34
  377. package/src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl.js +1 -1
  378. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +2 -2
  379. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +91 -11
  380. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +108 -1
  381. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +128 -6
  382. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +111 -1
  383. package/src/renderers/shaders/ShaderChunk.js +0 -6
  384. package/src/renderers/shaders/ShaderLib/background.glsl.js +0 -8
  385. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +5 -0
  386. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -4
  387. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +0 -3
  388. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +3 -3
  389. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -3
  390. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +8 -12
  391. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -3
  392. package/src/renderers/shaders/ShaderLib/points.glsl.js +13 -0
  393. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +5 -0
  394. package/src/renderers/shaders/ShaderLib.js +15 -4
  395. package/src/renderers/shaders/UniformsLib.js +25 -15
  396. package/src/renderers/shaders/UniformsUtils.js +12 -3
  397. package/src/renderers/webgl/WebGLBackground.js +23 -12
  398. package/src/renderers/webgl/WebGLCapabilities.js +1 -2
  399. package/src/renderers/webgl/WebGLClipping.js +7 -3
  400. package/src/renderers/webgl/WebGLLights.js +2 -2
  401. package/src/renderers/webgl/WebGLMaterials.js +105 -234
  402. package/src/renderers/webgl/WebGLMorphtargets.js +1 -1
  403. package/src/renderers/webgl/WebGLProgram.js +111 -48
  404. package/src/renderers/webgl/WebGLPrograms.js +200 -129
  405. package/src/renderers/webgl/WebGLRenderStates.js +2 -2
  406. package/src/renderers/webgl/WebGLShadowMap.js +40 -27
  407. package/src/renderers/webgl/WebGLState.js +23 -9
  408. package/src/renderers/webgl/WebGLTextures.js +21 -19
  409. package/src/renderers/webgl/WebGLUniformsGroups.js +74 -33
  410. package/src/renderers/webgl/WebGLUtils.js +41 -29
  411. package/src/renderers/webxr/WebXRController.js +3 -0
  412. package/src/renderers/webxr/WebXRManager.js +70 -48
  413. package/src/scenes/Scene.js +4 -6
  414. package/src/textures/CompressedTexture.js +2 -2
  415. package/src/textures/CubeTexture.js +2 -2
  416. package/src/textures/DataTexture.js +2 -2
  417. package/src/textures/Texture.js +41 -12
  418. package/src/utils.js +13 -1
  419. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
  420. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
  421. package/examples/fonts/open-sans/open-sans.css +0 -9
  422. package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
  423. package/examples/fonts/tabler-icons/fonts/tabler-icons.svg +0 -3966
  424. package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
  425. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
  426. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
  427. package/examples/fonts/tabler-icons/tabler-icons.min.css +0 -4
  428. package/examples/js/animation/AnimationClipCreator.js +0 -89
  429. package/examples/js/animation/CCDIKSolver.js +0 -416
  430. package/examples/js/animation/MMDAnimationHelper.js +0 -1046
  431. package/examples/js/animation/MMDPhysics.js +0 -1174
  432. package/examples/js/cameras/CinematicCamera.js +0 -168
  433. package/examples/js/controls/ArcballControls.js +0 -2770
  434. package/examples/js/controls/DragControls.js +0 -205
  435. package/examples/js/controls/FirstPersonControls.js +0 -312
  436. package/examples/js/controls/FlyControls.js +0 -321
  437. package/examples/js/controls/OrbitControls.js +0 -1101
  438. package/examples/js/controls/PointerLockControls.js +0 -144
  439. package/examples/js/controls/TrackballControls.js +0 -729
  440. package/examples/js/controls/TransformControls.js +0 -1301
  441. package/examples/js/csm/CSM.js +0 -347
  442. package/examples/js/csm/CSMFrustum.js +0 -127
  443. package/examples/js/csm/CSMHelper.js +0 -165
  444. package/examples/js/csm/CSMShader.js +0 -253
  445. package/examples/js/curves/CurveExtras.js +0 -348
  446. package/examples/js/curves/NURBSCurve.js +0 -63
  447. package/examples/js/curves/NURBSSurface.js +0 -48
  448. package/examples/js/curves/NURBSUtils.js +0 -439
  449. package/examples/js/effects/AnaglyphEffect.js +0 -86
  450. package/examples/js/effects/AsciiEffect.js +0 -260
  451. package/examples/js/effects/OutlineEffect.js +0 -450
  452. package/examples/js/effects/ParallaxBarrierEffect.js +0 -62
  453. package/examples/js/effects/PeppersGhostEffect.js +0 -139
  454. package/examples/js/effects/StereoEffect.js +0 -46
  455. package/examples/js/environments/DebugEnvironment.js +0 -53
  456. package/examples/js/environments/RoomEnvironment.js +0 -124
  457. package/examples/js/exporters/ColladaExporter.js +0 -487
  458. package/examples/js/exporters/DRACOExporter.js +0 -212
  459. package/examples/js/exporters/EXRExporter.js +0 -455
  460. package/examples/js/exporters/GLTFExporter.js +0 -2367
  461. package/examples/js/exporters/MMDExporter.js +0 -187
  462. package/examples/js/exporters/OBJExporter.js +0 -260
  463. package/examples/js/exporters/PLYExporter.js +0 -427
  464. package/examples/js/exporters/STLExporter.js +0 -188
  465. package/examples/js/exporters/USDZExporter.js +0 -608
  466. package/examples/js/geometries/BoxLineGeometry.js +0 -59
  467. package/examples/js/geometries/ConvexGeometry.js +0 -53
  468. package/examples/js/geometries/DecalGeometry.js +0 -324
  469. package/examples/js/geometries/LightningStrike.js +0 -861
  470. package/examples/js/geometries/ParametricGeometries.js +0 -216
  471. package/examples/js/geometries/ParametricGeometry.js +0 -121
  472. package/examples/js/geometries/RoundedBoxGeometry.js +0 -142
  473. package/examples/js/geometries/TeapotGeometry.js +0 -335
  474. package/examples/js/geometries/TextGeometry.js +0 -53
  475. package/examples/js/helpers/LightProbeHelper.js +0 -48
  476. package/examples/js/helpers/OctreeHelper.js +0 -76
  477. package/examples/js/helpers/PositionalAudioHelper.js +0 -91
  478. package/examples/js/helpers/RectAreaLightHelper.js +0 -73
  479. package/examples/js/helpers/VertexNormalsHelper.js +0 -74
  480. package/examples/js/helpers/VertexTangentsHelper.js +0 -68
  481. package/examples/js/helpers/ViewHelper.js +0 -281
  482. package/examples/js/interactive/HTMLMesh.js +0 -497
  483. package/examples/js/interactive/InteractiveGroup.js +0 -95
  484. package/examples/js/interactive/SelectionBox.js +0 -195
  485. package/examples/js/interactive/SelectionHelper.js +0 -83
  486. package/examples/js/libs/chevrotain.min.js +0 -3
  487. package/examples/js/libs/draco/draco_decoder.js +0 -52
  488. package/examples/js/libs/draco/draco_decoder.wasm +0 -0
  489. package/examples/js/libs/draco/draco_wasm_wrapper.js +0 -104
  490. package/examples/js/libs/draco/gltf/draco_decoder.js +0 -48
  491. package/examples/js/libs/draco/gltf/draco_decoder.wasm +0 -0
  492. package/examples/js/libs/draco/gltf/draco_wasm_wrapper.js +0 -104
  493. package/examples/js/libs/fflate.min.js +0 -7
  494. package/examples/js/libs/ktx-parse.umd.js +0 -1
  495. package/examples/js/libs/meshopt_decoder.js +0 -188
  496. package/examples/js/libs/opentype.min.js +0 -1
  497. package/examples/js/libs/stats.min.js +0 -5
  498. package/examples/js/lights/LightProbeGenerator.js +0 -221
  499. package/examples/js/lights/RectAreaLightUniformsLib.js +0 -60
  500. package/examples/js/lines/Line2.js +0 -19
  501. package/examples/js/lines/LineGeometry.js +0 -69
  502. package/examples/js/lines/LineMaterial.js +0 -635
  503. package/examples/js/lines/LineSegments2.js +0 -313
  504. package/examples/js/lines/LineSegmentsGeometry.js +0 -198
  505. package/examples/js/lines/Wireframe.js +0 -47
  506. package/examples/js/lines/WireframeGeometry2.js +0 -20
  507. package/examples/js/loaders/3DMLoader.js +0 -1273
  508. package/examples/js/loaders/3MFLoader.js +0 -1306
  509. package/examples/js/loaders/AMFLoader.js +0 -504
  510. package/examples/js/loaders/BVHLoader.js +0 -395
  511. package/examples/js/loaders/BasisTextureLoader.js +0 -706
  512. package/examples/js/loaders/ColladaLoader.js +0 -3690
  513. package/examples/js/loaders/DDSLoader.js +0 -244
  514. package/examples/js/loaders/DRACOLoader.js +0 -511
  515. package/examples/js/loaders/EXRLoader.js +0 -2039
  516. package/examples/js/loaders/FBXLoader.js +0 -3681
  517. package/examples/js/loaders/FontLoader.js +0 -160
  518. package/examples/js/loaders/GCodeLoader.js +0 -255
  519. package/examples/js/loaders/GLTFLoader.js +0 -3862
  520. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -87
  521. package/examples/js/loaders/KMZLoader.js +0 -121
  522. package/examples/js/loaders/KTXLoader.js +0 -159
  523. package/examples/js/loaders/LDrawLoader.js +0 -2263
  524. package/examples/js/loaders/LUT3dlLoader.js +0 -135
  525. package/examples/js/loaders/LUTCubeLoader.js +0 -132
  526. package/examples/js/loaders/LWOLoader.js +0 -901
  527. package/examples/js/loaders/LogLuvLoader.js +0 -715
  528. package/examples/js/loaders/LottieLoader.js +0 -62
  529. package/examples/js/loaders/MD2Loader.js +0 -248
  530. package/examples/js/loaders/MDDLoader.js +0 -91
  531. package/examples/js/loaders/MMDLoader.js +0 -1915
  532. package/examples/js/loaders/MTLLoader.js +0 -472
  533. package/examples/js/loaders/NRRDLoader.js +0 -609
  534. package/examples/js/loaders/OBJLoader.js +0 -789
  535. package/examples/js/loaders/PCDLoader.js +0 -413
  536. package/examples/js/loaders/PDBLoader.js +0 -317
  537. package/examples/js/loaders/PLYLoader.js +0 -576
  538. package/examples/js/loaders/PRWMLoader.js +0 -249
  539. package/examples/js/loaders/PVRLoader.js +0 -218
  540. package/examples/js/loaders/RGBELoader.js +0 -442
  541. package/examples/js/loaders/RGBMLoader.js +0 -1354
  542. package/examples/js/loaders/STLLoader.js +0 -364
  543. package/examples/js/loaders/SVGLoader.js +0 -2783
  544. package/examples/js/loaders/TDSLoader.js +0 -992
  545. package/examples/js/loaders/TGALoader.js +0 -484
  546. package/examples/js/loaders/TIFFLoader.js +0 -30
  547. package/examples/js/loaders/TTFLoader.js +0 -203
  548. package/examples/js/loaders/TiltLoader.js +0 -459
  549. package/examples/js/loaders/VOXLoader.js +0 -240
  550. package/examples/js/loaders/VRMLLoader.js +0 -3140
  551. package/examples/js/loaders/VTKLoader.js +0 -1078
  552. package/examples/js/loaders/XYZLoader.js +0 -89
  553. package/examples/js/loaders/lwo/IFFParser.js +0 -1067
  554. package/examples/js/loaders/lwo/LWO2Parser.js +0 -397
  555. package/examples/js/loaders/lwo/LWO3Parser.js +0 -360
  556. package/examples/js/materials/MeshGouraudMaterial.js +0 -387
  557. package/examples/js/math/Capsule.js +0 -103
  558. package/examples/js/math/ColorConverter.js +0 -33
  559. package/examples/js/math/ConvexHull.js +0 -1154
  560. package/examples/js/math/ImprovedNoise.js +0 -66
  561. package/examples/js/math/Lut.js +0 -164
  562. package/examples/js/math/MeshSurfaceSampler.js +0 -171
  563. package/examples/js/math/OBB.js +0 -382
  564. package/examples/js/math/Octree.js +0 -410
  565. package/examples/js/math/SimplexNoise.js +0 -445
  566. package/examples/js/misc/ConvexObjectBreaker.js +0 -474
  567. package/examples/js/misc/GPUComputationRenderer.js +0 -393
  568. package/examples/js/misc/Gyroscope.js +0 -56
  569. package/examples/js/misc/MD2Character.js +0 -235
  570. package/examples/js/misc/MD2CharacterComplex.js +0 -513
  571. package/examples/js/misc/MorphAnimMesh.js +0 -63
  572. package/examples/js/misc/MorphBlendMesh.js +0 -265
  573. package/examples/js/misc/ProgressiveLightMap.js +0 -335
  574. package/examples/js/misc/RollerCoaster.js +0 -430
  575. package/examples/js/misc/TubePainter.js +0 -167
  576. package/examples/js/misc/Volume.js +0 -437
  577. package/examples/js/misc/VolumeSlice.js +0 -214
  578. package/examples/js/modifiers/CurveModifier.js +0 -309
  579. package/examples/js/modifiers/EdgeSplitModifier.js +0 -228
  580. package/examples/js/modifiers/SimplifyModifier.js +0 -465
  581. package/examples/js/modifiers/TessellateModifier.js +0 -276
  582. package/examples/js/objects/GroundProjectedEnv.js +0 -181
  583. package/examples/js/objects/Lensflare.js +0 -356
  584. package/examples/js/objects/LightningStorm.js +0 -206
  585. package/examples/js/objects/MarchingCubes.js +0 -759
  586. package/examples/js/objects/Reflector.js +0 -216
  587. package/examples/js/objects/ReflectorForSSRPass.js +0 -315
  588. package/examples/js/objects/Refractor.js +0 -283
  589. package/examples/js/objects/ShadowMesh.js +0 -59
  590. package/examples/js/objects/Sky.js +0 -218
  591. package/examples/js/objects/Water.js +0 -292
  592. package/examples/js/objects/Water2.js +0 -307
  593. package/examples/js/physics/AmmoPhysics.js +0 -259
  594. package/examples/js/physics/OimoPhysics.js +0 -217
  595. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +0 -335
  596. package/examples/js/postprocessing/AfterimagePass.js +0 -77
  597. package/examples/js/postprocessing/BloomPass.js +0 -135
  598. package/examples/js/postprocessing/BokehPass.js +0 -120
  599. package/examples/js/postprocessing/ClearPass.js +0 -39
  600. package/examples/js/postprocessing/CubeTexturePass.js +0 -60
  601. package/examples/js/postprocessing/DotScreenPass.js +0 -51
  602. package/examples/js/postprocessing/EffectComposer.js +0 -272
  603. package/examples/js/postprocessing/FilmPass.js +0 -52
  604. package/examples/js/postprocessing/GlitchPass.js +0 -104
  605. package/examples/js/postprocessing/HalftonePass.js +0 -75
  606. package/examples/js/postprocessing/LUTPass.js +0 -171
  607. package/examples/js/postprocessing/MaskPass.js +0 -95
  608. package/examples/js/postprocessing/OutlinePass.js +0 -598
  609. package/examples/js/postprocessing/Pass.js +0 -72
  610. package/examples/js/postprocessing/RenderPass.js +0 -70
  611. package/examples/js/postprocessing/RenderPixelatedPass.js +0 -215
  612. package/examples/js/postprocessing/SAOPass.js +0 -374
  613. package/examples/js/postprocessing/SMAAPass.js +0 -170
  614. package/examples/js/postprocessing/SSAARenderPass.js +0 -156
  615. package/examples/js/postprocessing/SSAOPass.js +0 -365
  616. package/examples/js/postprocessing/SSRPass.js +0 -567
  617. package/examples/js/postprocessing/SavePass.js +0 -59
  618. package/examples/js/postprocessing/ShaderPass.js +0 -64
  619. package/examples/js/postprocessing/TAARenderPass.js +0 -130
  620. package/examples/js/postprocessing/TexturePass.js +0 -49
  621. package/examples/js/postprocessing/UnrealBloomPass.js +0 -375
  622. package/examples/js/renderers/CSS2DRenderer.js +0 -178
  623. package/examples/js/renderers/CSS3DRenderer.js +0 -237
  624. package/examples/js/renderers/Projector.js +0 -818
  625. package/examples/js/renderers/SVGRenderer.js +0 -491
  626. package/examples/js/shaders/ACESFilmicToneMappingShader.js +0 -89
  627. package/examples/js/shaders/AfterimageShader.js +0 -60
  628. package/examples/js/shaders/BasicShader.js +0 -27
  629. package/examples/js/shaders/BleachBypassShader.js +0 -62
  630. package/examples/js/shaders/BlendShader.js +0 -54
  631. package/examples/js/shaders/BokehShader.js +0 -156
  632. package/examples/js/shaders/BokehShader2.js +0 -419
  633. package/examples/js/shaders/BrightnessContrastShader.js +0 -58
  634. package/examples/js/shaders/ColorCorrectionShader.js +0 -52
  635. package/examples/js/shaders/ColorifyShader.js +0 -47
  636. package/examples/js/shaders/ConvolutionShader.js +0 -92
  637. package/examples/js/shaders/CopyShader.js +0 -45
  638. package/examples/js/shaders/DOFMipMapShader.js +0 -60
  639. package/examples/js/shaders/DepthLimitedBlurShader.js +0 -173
  640. package/examples/js/shaders/DigitalGlitch.js +0 -127
  641. package/examples/js/shaders/DotScreenShader.js +0 -72
  642. package/examples/js/shaders/FXAAShader.js +0 -284
  643. package/examples/js/shaders/FilmShader.js +0 -110
  644. package/examples/js/shaders/FocusShader.js +0 -95
  645. package/examples/js/shaders/FreiChenShader.js +0 -93
  646. package/examples/js/shaders/GammaCorrectionShader.js +0 -41
  647. package/examples/js/shaders/GodRaysShader.js +0 -284
  648. package/examples/js/shaders/HalftoneShader.js +0 -336
  649. package/examples/js/shaders/HorizontalBlurShader.js +0 -59
  650. package/examples/js/shaders/HorizontalTiltShiftShader.js +0 -65
  651. package/examples/js/shaders/HueSaturationShader.js +0 -69
  652. package/examples/js/shaders/KaleidoShader.js +0 -60
  653. package/examples/js/shaders/LuminosityHighPassShader.js +0 -67
  654. package/examples/js/shaders/LuminosityShader.js +0 -46
  655. package/examples/js/shaders/MMDToonShader.js +0 -94
  656. package/examples/js/shaders/MirrorShader.js +0 -56
  657. package/examples/js/shaders/NormalMapShader.js +0 -55
  658. package/examples/js/shaders/RGBShiftShader.js +0 -56
  659. package/examples/js/shaders/SAOShader.js +0 -209
  660. package/examples/js/shaders/SMAAShader.js +0 -454
  661. package/examples/js/shaders/SSAOShader.js +0 -295
  662. package/examples/js/shaders/SSRShader.js +0 -381
  663. package/examples/js/shaders/SepiaShader.js +0 -52
  664. package/examples/js/shaders/SobelOperatorShader.js +0 -88
  665. package/examples/js/shaders/SubsurfaceScatteringShader.js +0 -49
  666. package/examples/js/shaders/TechnicolorShader.js +0 -43
  667. package/examples/js/shaders/ToneMapShader.js +0 -84
  668. package/examples/js/shaders/ToonShader.js +0 -335
  669. package/examples/js/shaders/TriangleBlurShader.js +0 -70
  670. package/examples/js/shaders/UnpackDepthRGBAShader.js +0 -47
  671. package/examples/js/shaders/VelocityShader.js +0 -126
  672. package/examples/js/shaders/VerticalBlurShader.js +0 -59
  673. package/examples/js/shaders/VerticalTiltShiftShader.js +0 -65
  674. package/examples/js/shaders/VignetteShader.js +0 -53
  675. package/examples/js/shaders/VolumeShader.js +0 -296
  676. package/examples/js/shaders/WaterRefractionShader.js +0 -84
  677. package/examples/js/textures/FlakesTexture.js +0 -40
  678. package/examples/js/utils/BufferGeometryUtils.js +0 -1160
  679. package/examples/js/utils/CameraUtils.js +0 -71
  680. package/examples/js/utils/GPUStatsPanel.js +0 -125
  681. package/examples/js/utils/GeometryCompressionUtils.js +0 -549
  682. package/examples/js/utils/GeometryUtils.js +0 -168
  683. package/examples/js/utils/LDrawUtils.js +0 -179
  684. package/examples/js/utils/PackedPhongMaterial.js +0 -109
  685. package/examples/js/utils/SceneUtils.js +0 -214
  686. package/examples/js/utils/ShadowMapViewer.js +0 -183
  687. package/examples/js/utils/SkeletonUtils.js +0 -493
  688. package/examples/js/utils/UVsDebug.js +0 -143
  689. package/examples/js/utils/WorkerPool.js +0 -105
  690. package/examples/jsm/libs/OimoPhysics/OimoPhysics.js +0 -37071
  691. package/examples/jsm/libs/OimoPhysics/index.js +0 -43
  692. package/examples/jsm/libs/flow.module.js +0 -4552
  693. package/examples/jsm/libs/tween.module.min.js +0 -3
  694. package/examples/jsm/loaders/BasisTextureLoader.js +0 -790
  695. package/examples/jsm/loaders/IFCLoader.js +0 -2431
  696. package/examples/jsm/loaders/ifc/web-ifc-api.js +0 -47504
  697. package/examples/jsm/loaders/ifc/web-ifc.wasm +0 -0
  698. package/examples/jsm/node-editor/NodeEditor.js +0 -857
  699. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +0 -14
  700. package/examples/jsm/node-editor/accessors/NormalEditor.js +0 -30
  701. package/examples/jsm/node-editor/accessors/PositionEditor.js +0 -30
  702. package/examples/jsm/node-editor/accessors/UVEditor.js +0 -25
  703. package/examples/jsm/node-editor/core/BaseNode.js +0 -96
  704. package/examples/jsm/node-editor/core/DataFile.js +0 -59
  705. package/examples/jsm/node-editor/core/FileEditor.js +0 -20
  706. package/examples/jsm/node-editor/core/FileURLEditor.js +0 -29
  707. package/examples/jsm/node-editor/display/BlendEditor.js +0 -44
  708. package/examples/jsm/node-editor/display/NormalMapEditor.js +0 -49
  709. package/examples/jsm/node-editor/examples/animate-uv.json +0 -1
  710. package/examples/jsm/node-editor/examples/fake-top-light.json +0 -1
  711. package/examples/jsm/node-editor/examples/matcap.json +0 -1
  712. package/examples/jsm/node-editor/examples/oscillator-color.json +0 -1
  713. package/examples/jsm/node-editor/examples/rim.json +0 -1
  714. package/examples/jsm/node-editor/inputs/ColorEditor.js +0 -96
  715. package/examples/jsm/node-editor/inputs/FloatEditor.js +0 -23
  716. package/examples/jsm/node-editor/inputs/SliderEditor.js +0 -67
  717. package/examples/jsm/node-editor/inputs/TextureEditor.js +0 -155
  718. package/examples/jsm/node-editor/inputs/Vector2Editor.js +0 -28
  719. package/examples/jsm/node-editor/inputs/Vector3Editor.js +0 -30
  720. package/examples/jsm/node-editor/inputs/Vector4Editor.js +0 -37
  721. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +0 -84
  722. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +0 -102
  723. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +0 -118
  724. package/examples/jsm/node-editor/math/AngleEditor.js +0 -40
  725. package/examples/jsm/node-editor/math/DotEditor.js +0 -35
  726. package/examples/jsm/node-editor/math/InvertEditor.js +0 -39
  727. package/examples/jsm/node-editor/math/LimiterEditor.js +0 -62
  728. package/examples/jsm/node-editor/math/NormalizeEditor.js +0 -28
  729. package/examples/jsm/node-editor/math/OperatorEditor.js +0 -63
  730. package/examples/jsm/node-editor/math/PowerEditor.js +0 -44
  731. package/examples/jsm/node-editor/math/TrigonometryEditor.js +0 -45
  732. package/examples/jsm/node-editor/procedural/CheckerEditor.js +0 -27
  733. package/examples/jsm/node-editor/scene/MeshEditor.js +0 -102
  734. package/examples/jsm/node-editor/scene/Object3DEditor.js +0 -160
  735. package/examples/jsm/node-editor/scene/PointsEditor.js +0 -99
  736. package/examples/jsm/node-editor/utils/JoinEditor.js +0 -58
  737. package/examples/jsm/node-editor/utils/OscillatorEditor.js +0 -43
  738. package/examples/jsm/node-editor/utils/PreviewEditor.js +0 -170
  739. package/examples/jsm/node-editor/utils/SplitEditor.js +0 -39
  740. package/examples/jsm/node-editor/utils/TimerEditor.js +0 -58
  741. package/examples/jsm/nodes/core/ExpressionNode.js +0 -32
  742. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +0 -22
  743. package/examples/jsm/nodes/lighting/PunctualLightNode.js +0 -68
  744. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +0 -301
  745. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +0 -149
  746. package/examples/jsm/objects/GroundProjectedEnv.js +0 -186
  747. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +0 -36
  748. package/src/renderers/shaders/ShaderChunk/uv2_pars_fragment.glsl.js +0 -7
  749. package/src/renderers/shaders/ShaderChunk/uv2_pars_vertex.glsl.js +0 -10
  750. package/src/renderers/shaders/ShaderChunk/uv2_vertex.glsl.js +0 -7
  751. /package/examples/{js → jsm}/libs/ammo.wasm.js +0 -0
  752. /package/examples/{js → jsm}/libs/ammo.wasm.wasm +0 -0
  753. /package/examples/{js → jsm}/libs/basis/basis_transcoder.js +0 -0
  754. /package/examples/{js → jsm}/libs/basis/basis_transcoder.wasm +0 -0
  755. /package/examples/{js → jsm}/libs/draco/README.md +0 -0
  756. /package/examples/{js → jsm}/libs/draco/draco_encoder.js +0 -0
  757. /package/examples/{js → jsm}/libs/draco/gltf/draco_encoder.js +0 -0
@@ -1,1046 +0,0 @@
1
- ( function () {
2
-
3
- /**
4
- * MMDAnimationHelper handles animation of MMD assets loaded by MMDLoader
5
- * with MMD special features as IK, Grant, and Physics.
6
- *
7
- * Dependencies
8
- * - ammo.js https://github.com/kripken/ammo.js
9
- * - THREE.MMDPhysics
10
- * - THREE.CCDIKSolver
11
- *
12
- * TODO
13
- * - more precise grant skinning support.
14
- */
15
- class MMDAnimationHelper {
16
-
17
- /**
18
- * @param {Object} params - (optional)
19
- * @param {boolean} params.sync - Whether animation durations of added objects are synched. Default is true.
20
- * @param {Number} params.afterglow - Default is 0.0.
21
- * @param {boolean} params.resetPhysicsOnLoop - Default is true.
22
- */
23
- constructor( params = {} ) {
24
-
25
- this.meshes = [];
26
- this.camera = null;
27
- this.cameraTarget = new THREE.Object3D();
28
- this.cameraTarget.name = 'target';
29
- this.audio = null;
30
- this.audioManager = null;
31
- this.objects = new WeakMap();
32
- this.configuration = {
33
- sync: params.sync !== undefined ? params.sync : true,
34
- afterglow: params.afterglow !== undefined ? params.afterglow : 0.0,
35
- resetPhysicsOnLoop: params.resetPhysicsOnLoop !== undefined ? params.resetPhysicsOnLoop : true,
36
- pmxAnimation: params.pmxAnimation !== undefined ? params.pmxAnimation : false
37
- };
38
- this.enabled = {
39
- animation: true,
40
- ik: true,
41
- grant: true,
42
- physics: true,
43
- cameraAnimation: true
44
- };
45
- this.onBeforePhysics = function /* mesh */ () {};
46
-
47
- // experimental
48
- this.sharedPhysics = false;
49
- this.masterPhysics = null;
50
-
51
- }
52
-
53
- /**
54
- * Adds an Three.js Object to helper and setups animation.
55
- * The anmation durations of added objects are synched
56
- * if this.configuration.sync is true.
57
- *
58
- * @param {THREE.SkinnedMesh|THREE.Camera|THREE.Audio} object
59
- * @param {Object} params - (optional)
60
- * @param {THREE.AnimationClip|Array<THREE.AnimationClip>} params.animation - Only for THREE.SkinnedMesh and THREE.Camera. Default is undefined.
61
- * @param {boolean} params.physics - Only for THREE.SkinnedMesh. Default is true.
62
- * @param {Integer} params.warmup - Only for THREE.SkinnedMesh and physics is true. Default is 60.
63
- * @param {Number} params.unitStep - Only for THREE.SkinnedMesh and physics is true. Default is 1 / 65.
64
- * @param {Integer} params.maxStepNum - Only for THREE.SkinnedMesh and physics is true. Default is 3.
65
- * @param {Vector3} params.gravity - Only for THREE.SkinnedMesh and physics is true. Default ( 0, - 9.8 * 10, 0 ).
66
- * @param {Number} params.delayTime - Only for THREE.Audio. Default is 0.0.
67
- * @return {MMDAnimationHelper}
68
- */
69
- add( object, params = {} ) {
70
-
71
- if ( object.isSkinnedMesh ) {
72
-
73
- this._addMesh( object, params );
74
-
75
- } else if ( object.isCamera ) {
76
-
77
- this._setupCamera( object, params );
78
-
79
- } else if ( object.type === 'Audio' ) {
80
-
81
- this._setupAudio( object, params );
82
-
83
- } else {
84
-
85
- throw new Error( 'THREE.MMDAnimationHelper.add: ' + 'accepts only ' + 'THREE.SkinnedMesh or ' + 'THREE.Camera or ' + 'THREE.Audio instance.' );
86
-
87
- }
88
-
89
- if ( this.configuration.sync ) this._syncDuration();
90
- return this;
91
-
92
- }
93
-
94
- /**
95
- * Removes an Three.js Object from helper.
96
- *
97
- * @param {THREE.SkinnedMesh|THREE.Camera|THREE.Audio} object
98
- * @return {MMDAnimationHelper}
99
- */
100
- remove( object ) {
101
-
102
- if ( object.isSkinnedMesh ) {
103
-
104
- this._removeMesh( object );
105
-
106
- } else if ( object.isCamera ) {
107
-
108
- this._clearCamera( object );
109
-
110
- } else if ( object.type === 'Audio' ) {
111
-
112
- this._clearAudio( object );
113
-
114
- } else {
115
-
116
- throw new Error( 'THREE.MMDAnimationHelper.remove: ' + 'accepts only ' + 'THREE.SkinnedMesh or ' + 'THREE.Camera or ' + 'THREE.Audio instance.' );
117
-
118
- }
119
-
120
- if ( this.configuration.sync ) this._syncDuration();
121
- return this;
122
-
123
- }
124
-
125
- /**
126
- * Updates the animation.
127
- *
128
- * @param {Number} delta
129
- * @return {MMDAnimationHelper}
130
- */
131
- update( delta ) {
132
-
133
- if ( this.audioManager !== null ) this.audioManager.control( delta );
134
- for ( let i = 0; i < this.meshes.length; i ++ ) {
135
-
136
- this._animateMesh( this.meshes[ i ], delta );
137
-
138
- }
139
-
140
- if ( this.sharedPhysics ) this._updateSharedPhysics( delta );
141
- if ( this.camera !== null ) this._animateCamera( this.camera, delta );
142
- return this;
143
-
144
- }
145
-
146
- /**
147
- * Changes the pose of SkinnedMesh as VPD specifies.
148
- *
149
- * @param {THREE.SkinnedMesh} mesh
150
- * @param {Object} vpd - VPD content parsed MMDParser
151
- * @param {Object} params - (optional)
152
- * @param {boolean} params.resetPose - Default is true.
153
- * @param {boolean} params.ik - Default is true.
154
- * @param {boolean} params.grant - Default is true.
155
- * @return {MMDAnimationHelper}
156
- */
157
- pose( mesh, vpd, params = {} ) {
158
-
159
- if ( params.resetPose !== false ) mesh.pose();
160
- const bones = mesh.skeleton.bones;
161
- const boneParams = vpd.bones;
162
- const boneNameDictionary = {};
163
- for ( let i = 0, il = bones.length; i < il; i ++ ) {
164
-
165
- boneNameDictionary[ bones[ i ].name ] = i;
166
-
167
- }
168
-
169
- const vector = new THREE.Vector3();
170
- const quaternion = new THREE.Quaternion();
171
- for ( let i = 0, il = boneParams.length; i < il; i ++ ) {
172
-
173
- const boneParam = boneParams[ i ];
174
- const boneIndex = boneNameDictionary[ boneParam.name ];
175
- if ( boneIndex === undefined ) continue;
176
- const bone = bones[ boneIndex ];
177
- bone.position.add( vector.fromArray( boneParam.translation ) );
178
- bone.quaternion.multiply( quaternion.fromArray( boneParam.quaternion ) );
179
-
180
- }
181
-
182
- mesh.updateMatrixWorld( true );
183
-
184
- // PMX animation system special path
185
- if ( this.configuration.pmxAnimation && mesh.geometry.userData.MMD && mesh.geometry.userData.MMD.format === 'pmx' ) {
186
-
187
- const sortedBonesData = this._sortBoneDataArray( mesh.geometry.userData.MMD.bones.slice() );
188
- const ikSolver = params.ik !== false ? this._createCCDIKSolver( mesh ) : null;
189
- const grantSolver = params.grant !== false ? this.createGrantSolver( mesh ) : null;
190
- this._animatePMXMesh( mesh, sortedBonesData, ikSolver, grantSolver );
191
-
192
- } else {
193
-
194
- if ( params.ik !== false ) {
195
-
196
- this._createCCDIKSolver( mesh ).update();
197
-
198
- }
199
-
200
- if ( params.grant !== false ) {
201
-
202
- this.createGrantSolver( mesh ).update();
203
-
204
- }
205
-
206
- }
207
-
208
- return this;
209
-
210
- }
211
-
212
- /**
213
- * Enabes/Disables an animation feature.
214
- *
215
- * @param {string} key
216
- * @param {boolean} enabled
217
- * @return {MMDAnimationHelper}
218
- */
219
- enable( key, enabled ) {
220
-
221
- if ( this.enabled[ key ] === undefined ) {
222
-
223
- throw new Error( 'THREE.MMDAnimationHelper.enable: ' + 'unknown key ' + key );
224
-
225
- }
226
-
227
- this.enabled[ key ] = enabled;
228
- if ( key === 'physics' ) {
229
-
230
- for ( let i = 0, il = this.meshes.length; i < il; i ++ ) {
231
-
232
- this._optimizeIK( this.meshes[ i ], enabled );
233
-
234
- }
235
-
236
- }
237
-
238
- return this;
239
-
240
- }
241
-
242
- /**
243
- * Creates an GrantSolver instance.
244
- *
245
- * @param {THREE.SkinnedMesh} mesh
246
- * @return {GrantSolver}
247
- */
248
- createGrantSolver( mesh ) {
249
-
250
- return new GrantSolver( mesh, mesh.geometry.userData.MMD.grants );
251
-
252
- }
253
-
254
- // private methods
255
-
256
- _addMesh( mesh, params ) {
257
-
258
- if ( this.meshes.indexOf( mesh ) >= 0 ) {
259
-
260
- throw new Error( 'THREE.MMDAnimationHelper._addMesh: ' + 'SkinnedMesh \'' + mesh.name + '\' has already been added.' );
261
-
262
- }
263
-
264
- this.meshes.push( mesh );
265
- this.objects.set( mesh, {
266
- looped: false
267
- } );
268
- this._setupMeshAnimation( mesh, params.animation );
269
- if ( params.physics !== false ) {
270
-
271
- this._setupMeshPhysics( mesh, params );
272
-
273
- }
274
-
275
- return this;
276
-
277
- }
278
- _setupCamera( camera, params ) {
279
-
280
- if ( this.camera === camera ) {
281
-
282
- throw new Error( 'THREE.MMDAnimationHelper._setupCamera: ' + 'Camera \'' + camera.name + '\' has already been set.' );
283
-
284
- }
285
-
286
- if ( this.camera ) this.clearCamera( this.camera );
287
- this.camera = camera;
288
- camera.add( this.cameraTarget );
289
- this.objects.set( camera, {} );
290
- if ( params.animation !== undefined ) {
291
-
292
- this._setupCameraAnimation( camera, params.animation );
293
-
294
- }
295
-
296
- return this;
297
-
298
- }
299
- _setupAudio( audio, params ) {
300
-
301
- if ( this.audio === audio ) {
302
-
303
- throw new Error( 'THREE.MMDAnimationHelper._setupAudio: ' + 'Audio \'' + audio.name + '\' has already been set.' );
304
-
305
- }
306
-
307
- if ( this.audio ) this.clearAudio( this.audio );
308
- this.audio = audio;
309
- this.audioManager = new AudioManager( audio, params );
310
- this.objects.set( this.audioManager, {
311
- duration: this.audioManager.duration
312
- } );
313
- return this;
314
-
315
- }
316
- _removeMesh( mesh ) {
317
-
318
- let found = false;
319
- let writeIndex = 0;
320
- for ( let i = 0, il = this.meshes.length; i < il; i ++ ) {
321
-
322
- if ( this.meshes[ i ] === mesh ) {
323
-
324
- this.objects.delete( mesh );
325
- found = true;
326
- continue;
327
-
328
- }
329
-
330
- this.meshes[ writeIndex ++ ] = this.meshes[ i ];
331
-
332
- }
333
-
334
- if ( ! found ) {
335
-
336
- throw new Error( 'THREE.MMDAnimationHelper._removeMesh: ' + 'SkinnedMesh \'' + mesh.name + '\' has not been added yet.' );
337
-
338
- }
339
-
340
- this.meshes.length = writeIndex;
341
- return this;
342
-
343
- }
344
- _clearCamera( camera ) {
345
-
346
- if ( camera !== this.camera ) {
347
-
348
- throw new Error( 'THREE.MMDAnimationHelper._clearCamera: ' + 'Camera \'' + camera.name + '\' has not been set yet.' );
349
-
350
- }
351
-
352
- this.camera.remove( this.cameraTarget );
353
- this.objects.delete( this.camera );
354
- this.camera = null;
355
- return this;
356
-
357
- }
358
- _clearAudio( audio ) {
359
-
360
- if ( audio !== this.audio ) {
361
-
362
- throw new Error( 'THREE.MMDAnimationHelper._clearAudio: ' + 'Audio \'' + audio.name + '\' has not been set yet.' );
363
-
364
- }
365
-
366
- this.objects.delete( this.audioManager );
367
- this.audio = null;
368
- this.audioManager = null;
369
- return this;
370
-
371
- }
372
- _setupMeshAnimation( mesh, animation ) {
373
-
374
- const objects = this.objects.get( mesh );
375
- if ( animation !== undefined ) {
376
-
377
- const animations = Array.isArray( animation ) ? animation : [ animation ];
378
- objects.mixer = new THREE.AnimationMixer( mesh );
379
- for ( let i = 0, il = animations.length; i < il; i ++ ) {
380
-
381
- objects.mixer.clipAction( animations[ i ] ).play();
382
-
383
- }
384
-
385
- // TODO: find a workaround not to access ._clip looking like a private property
386
- objects.mixer.addEventListener( 'loop', function ( event ) {
387
-
388
- const tracks = event.action._clip.tracks;
389
- if ( tracks.length > 0 && tracks[ 0 ].name.slice( 0, 6 ) !== '.bones' ) return;
390
- objects.looped = true;
391
-
392
- } );
393
-
394
- }
395
-
396
- objects.ikSolver = this._createCCDIKSolver( mesh );
397
- objects.grantSolver = this.createGrantSolver( mesh );
398
- return this;
399
-
400
- }
401
- _setupCameraAnimation( camera, animation ) {
402
-
403
- const animations = Array.isArray( animation ) ? animation : [ animation ];
404
- const objects = this.objects.get( camera );
405
- objects.mixer = new THREE.AnimationMixer( camera );
406
- for ( let i = 0, il = animations.length; i < il; i ++ ) {
407
-
408
- objects.mixer.clipAction( animations[ i ] ).play();
409
-
410
- }
411
-
412
- }
413
- _setupMeshPhysics( mesh, params ) {
414
-
415
- const objects = this.objects.get( mesh );
416
-
417
- // shared physics is experimental
418
-
419
- if ( params.world === undefined && this.sharedPhysics ) {
420
-
421
- const masterPhysics = this._getMasterPhysics();
422
- if ( masterPhysics !== null ) world = masterPhysics.world; // eslint-disable-line no-undef
423
-
424
- }
425
-
426
- objects.physics = this._createMMDPhysics( mesh, params );
427
- if ( objects.mixer && params.animationWarmup !== false ) {
428
-
429
- this._animateMesh( mesh, 0 );
430
- objects.physics.reset();
431
-
432
- }
433
-
434
- objects.physics.warmup( params.warmup !== undefined ? params.warmup : 60 );
435
- this._optimizeIK( mesh, true );
436
-
437
- }
438
- _animateMesh( mesh, delta ) {
439
-
440
- const objects = this.objects.get( mesh );
441
- const mixer = objects.mixer;
442
- const ikSolver = objects.ikSolver;
443
- const grantSolver = objects.grantSolver;
444
- const physics = objects.physics;
445
- const looped = objects.looped;
446
- if ( mixer && this.enabled.animation ) {
447
-
448
- // alternate solution to save/restore bones but less performant?
449
- //mesh.pose();
450
- //this._updatePropertyMixersBuffer( mesh );
451
-
452
- this._restoreBones( mesh );
453
- mixer.update( delta );
454
- this._saveBones( mesh );
455
-
456
- // PMX animation system special path
457
- if ( this.configuration.pmxAnimation && mesh.geometry.userData.MMD && mesh.geometry.userData.MMD.format === 'pmx' ) {
458
-
459
- if ( ! objects.sortedBonesData ) objects.sortedBonesData = this._sortBoneDataArray( mesh.geometry.userData.MMD.bones.slice() );
460
- this._animatePMXMesh( mesh, objects.sortedBonesData, ikSolver && this.enabled.ik ? ikSolver : null, grantSolver && this.enabled.grant ? grantSolver : null );
461
-
462
- } else {
463
-
464
- if ( ikSolver && this.enabled.ik ) {
465
-
466
- mesh.updateMatrixWorld( true );
467
- ikSolver.update();
468
-
469
- }
470
-
471
- if ( grantSolver && this.enabled.grant ) {
472
-
473
- grantSolver.update();
474
-
475
- }
476
-
477
- }
478
-
479
- }
480
-
481
- if ( looped === true && this.enabled.physics ) {
482
-
483
- if ( physics && this.configuration.resetPhysicsOnLoop ) physics.reset();
484
- objects.looped = false;
485
-
486
- }
487
-
488
- if ( physics && this.enabled.physics && ! this.sharedPhysics ) {
489
-
490
- this.onBeforePhysics( mesh );
491
- physics.update( delta );
492
-
493
- }
494
-
495
- }
496
-
497
- // Sort bones in order by 1. transformationClass and 2. bone index.
498
- // In PMX animation system, bone transformations should be processed
499
- // in this order.
500
- _sortBoneDataArray( boneDataArray ) {
501
-
502
- return boneDataArray.sort( function ( a, b ) {
503
-
504
- if ( a.transformationClass !== b.transformationClass ) {
505
-
506
- return a.transformationClass - b.transformationClass;
507
-
508
- } else {
509
-
510
- return a.index - b.index;
511
-
512
- }
513
-
514
- } );
515
-
516
- }
517
-
518
- // PMX Animation system is a bit too complex and doesn't great match to
519
- // Three.js Animation system. This method attempts to simulate it as much as
520
- // possible but doesn't perfectly simulate.
521
- // This method is more costly than the regular one so
522
- // you are recommended to set constructor parameter "pmxAnimation: true"
523
- // only if your PMX model animation doesn't work well.
524
- // If you need better method you would be required to write your own.
525
- _animatePMXMesh( mesh, sortedBonesData, ikSolver, grantSolver ) {
526
-
527
- _quaternionIndex = 0;
528
- _grantResultMap.clear();
529
- for ( let i = 0, il = sortedBonesData.length; i < il; i ++ ) {
530
-
531
- updateOne( mesh, sortedBonesData[ i ].index, ikSolver, grantSolver );
532
-
533
- }
534
-
535
- mesh.updateMatrixWorld( true );
536
- return this;
537
-
538
- }
539
- _animateCamera( camera, delta ) {
540
-
541
- const mixer = this.objects.get( camera ).mixer;
542
- if ( mixer && this.enabled.cameraAnimation ) {
543
-
544
- mixer.update( delta );
545
- camera.updateProjectionMatrix();
546
- camera.up.set( 0, 1, 0 );
547
- camera.up.applyQuaternion( camera.quaternion );
548
- camera.lookAt( this.cameraTarget.position );
549
-
550
- }
551
-
552
- }
553
- _optimizeIK( mesh, physicsEnabled ) {
554
-
555
- const iks = mesh.geometry.userData.MMD.iks;
556
- const bones = mesh.geometry.userData.MMD.bones;
557
- for ( let i = 0, il = iks.length; i < il; i ++ ) {
558
-
559
- const ik = iks[ i ];
560
- const links = ik.links;
561
- for ( let j = 0, jl = links.length; j < jl; j ++ ) {
562
-
563
- const link = links[ j ];
564
- if ( physicsEnabled === true ) {
565
-
566
- // disable IK of the bone the corresponding rigidBody type of which is 1 or 2
567
- // because its rotation will be overriden by physics
568
- link.enabled = bones[ link.index ].rigidBodyType > 0 ? false : true;
569
-
570
- } else {
571
-
572
- link.enabled = true;
573
-
574
- }
575
-
576
- }
577
-
578
- }
579
-
580
- }
581
- _createCCDIKSolver( mesh ) {
582
-
583
- if ( THREE.CCDIKSolver === undefined ) {
584
-
585
- throw new Error( 'THREE.MMDAnimationHelper: Import THREE.CCDIKSolver.' );
586
-
587
- }
588
-
589
- return new THREE.CCDIKSolver( mesh, mesh.geometry.userData.MMD.iks );
590
-
591
- }
592
- _createMMDPhysics( mesh, params ) {
593
-
594
- if ( THREE.MMDPhysics === undefined ) {
595
-
596
- throw new Error( 'THREE.MMDPhysics: Import THREE.MMDPhysics.' );
597
-
598
- }
599
-
600
- return new THREE.MMDPhysics( mesh, mesh.geometry.userData.MMD.rigidBodies, mesh.geometry.userData.MMD.constraints, params );
601
-
602
- }
603
-
604
- /*
605
- * Detects the longest duration and then sets it to them to sync.
606
- * TODO: Not to access private properties ( ._actions and ._clip )
607
- */
608
- _syncDuration() {
609
-
610
- let max = 0.0;
611
- const objects = this.objects;
612
- const meshes = this.meshes;
613
- const camera = this.camera;
614
- const audioManager = this.audioManager;
615
-
616
- // get the longest duration
617
-
618
- for ( let i = 0, il = meshes.length; i < il; i ++ ) {
619
-
620
- const mixer = this.objects.get( meshes[ i ] ).mixer;
621
- if ( mixer === undefined ) continue;
622
- for ( let j = 0; j < mixer._actions.length; j ++ ) {
623
-
624
- const clip = mixer._actions[ j ]._clip;
625
- if ( ! objects.has( clip ) ) {
626
-
627
- objects.set( clip, {
628
- duration: clip.duration
629
- } );
630
-
631
- }
632
-
633
- max = Math.max( max, objects.get( clip ).duration );
634
-
635
- }
636
-
637
- }
638
-
639
- if ( camera !== null ) {
640
-
641
- const mixer = this.objects.get( camera ).mixer;
642
- if ( mixer !== undefined ) {
643
-
644
- for ( let i = 0, il = mixer._actions.length; i < il; i ++ ) {
645
-
646
- const clip = mixer._actions[ i ]._clip;
647
- if ( ! objects.has( clip ) ) {
648
-
649
- objects.set( clip, {
650
- duration: clip.duration
651
- } );
652
-
653
- }
654
-
655
- max = Math.max( max, objects.get( clip ).duration );
656
-
657
- }
658
-
659
- }
660
-
661
- }
662
-
663
- if ( audioManager !== null ) {
664
-
665
- max = Math.max( max, objects.get( audioManager ).duration );
666
-
667
- }
668
-
669
- max += this.configuration.afterglow;
670
-
671
- // update the duration
672
-
673
- for ( let i = 0, il = this.meshes.length; i < il; i ++ ) {
674
-
675
- const mixer = this.objects.get( this.meshes[ i ] ).mixer;
676
- if ( mixer === undefined ) continue;
677
- for ( let j = 0, jl = mixer._actions.length; j < jl; j ++ ) {
678
-
679
- mixer._actions[ j ]._clip.duration = max;
680
-
681
- }
682
-
683
- }
684
-
685
- if ( camera !== null ) {
686
-
687
- const mixer = this.objects.get( camera ).mixer;
688
- if ( mixer !== undefined ) {
689
-
690
- for ( let i = 0, il = mixer._actions.length; i < il; i ++ ) {
691
-
692
- mixer._actions[ i ]._clip.duration = max;
693
-
694
- }
695
-
696
- }
697
-
698
- }
699
-
700
- if ( audioManager !== null ) {
701
-
702
- audioManager.duration = max;
703
-
704
- }
705
-
706
- }
707
-
708
- // workaround
709
-
710
- _updatePropertyMixersBuffer( mesh ) {
711
-
712
- const mixer = this.objects.get( mesh ).mixer;
713
- const propertyMixers = mixer._bindings;
714
- const accuIndex = mixer._accuIndex;
715
- for ( let i = 0, il = propertyMixers.length; i < il; i ++ ) {
716
-
717
- const propertyMixer = propertyMixers[ i ];
718
- const buffer = propertyMixer.buffer;
719
- const stride = propertyMixer.valueSize;
720
- const offset = ( accuIndex + 1 ) * stride;
721
- propertyMixer.binding.getValue( buffer, offset );
722
-
723
- }
724
-
725
- }
726
-
727
- /*
728
- * Avoiding these two issues by restore/save bones before/after mixer animation.
729
- *
730
- * 1. PropertyMixer used by THREE.AnimationMixer holds cache value in .buffer.
731
- * Calculating IK, Grant, and Physics after mixer animation can break
732
- * the cache coherency.
733
- *
734
- * 2. Applying Grant two or more times without reset the posing breaks model.
735
- */
736
- _saveBones( mesh ) {
737
-
738
- const objects = this.objects.get( mesh );
739
- const bones = mesh.skeleton.bones;
740
- let backupBones = objects.backupBones;
741
- if ( backupBones === undefined ) {
742
-
743
- backupBones = new Float32Array( bones.length * 7 );
744
- objects.backupBones = backupBones;
745
-
746
- }
747
-
748
- for ( let i = 0, il = bones.length; i < il; i ++ ) {
749
-
750
- const bone = bones[ i ];
751
- bone.position.toArray( backupBones, i * 7 );
752
- bone.quaternion.toArray( backupBones, i * 7 + 3 );
753
-
754
- }
755
-
756
- }
757
- _restoreBones( mesh ) {
758
-
759
- const objects = this.objects.get( mesh );
760
- const backupBones = objects.backupBones;
761
- if ( backupBones === undefined ) return;
762
- const bones = mesh.skeleton.bones;
763
- for ( let i = 0, il = bones.length; i < il; i ++ ) {
764
-
765
- const bone = bones[ i ];
766
- bone.position.fromArray( backupBones, i * 7 );
767
- bone.quaternion.fromArray( backupBones, i * 7 + 3 );
768
-
769
- }
770
-
771
- }
772
-
773
- // experimental
774
-
775
- _getMasterPhysics() {
776
-
777
- if ( this.masterPhysics !== null ) return this.masterPhysics;
778
- for ( let i = 0, il = this.meshes.length; i < il; i ++ ) {
779
-
780
- const physics = this.meshes[ i ].physics;
781
- if ( physics !== undefined && physics !== null ) {
782
-
783
- this.masterPhysics = physics;
784
- return this.masterPhysics;
785
-
786
- }
787
-
788
- }
789
-
790
- return null;
791
-
792
- }
793
- _updateSharedPhysics( delta ) {
794
-
795
- if ( this.meshes.length === 0 || ! this.enabled.physics || ! this.sharedPhysics ) return;
796
- const physics = this._getMasterPhysics();
797
- if ( physics === null ) return;
798
- for ( let i = 0, il = this.meshes.length; i < il; i ++ ) {
799
-
800
- const p = this.meshes[ i ].physics;
801
- if ( p !== null && p !== undefined ) {
802
-
803
- p.updateRigidBodies();
804
-
805
- }
806
-
807
- }
808
-
809
- physics.stepSimulation( delta );
810
- for ( let i = 0, il = this.meshes.length; i < il; i ++ ) {
811
-
812
- const p = this.meshes[ i ].physics;
813
- if ( p !== null && p !== undefined ) {
814
-
815
- p.updateBones();
816
-
817
- }
818
-
819
- }
820
-
821
- }
822
-
823
- }
824
-
825
- // Keep working quaternions for less GC
826
- const _quaternions = [];
827
- let _quaternionIndex = 0;
828
- function getQuaternion() {
829
-
830
- if ( _quaternionIndex >= _quaternions.length ) {
831
-
832
- _quaternions.push( new THREE.Quaternion() );
833
-
834
- }
835
-
836
- return _quaternions[ _quaternionIndex ++ ];
837
-
838
- }
839
-
840
- // Save rotation whose grant and IK are already applied
841
- // used by grant children
842
- const _grantResultMap = new Map();
843
- function updateOne( mesh, boneIndex, ikSolver, grantSolver ) {
844
-
845
- const bones = mesh.skeleton.bones;
846
- const bonesData = mesh.geometry.userData.MMD.bones;
847
- const boneData = bonesData[ boneIndex ];
848
- const bone = bones[ boneIndex ];
849
-
850
- // Return if already updated by being referred as a grant parent.
851
- if ( _grantResultMap.has( boneIndex ) ) return;
852
- const quaternion = getQuaternion();
853
-
854
- // Initialize grant result here to prevent infinite loop.
855
- // If it's referred before updating with actual result later
856
- // result without applyting IK or grant is gotten
857
- // but better than composing of infinite loop.
858
- _grantResultMap.set( boneIndex, quaternion.copy( bone.quaternion ) );
859
-
860
- // @TODO: Support global grant and grant position
861
- if ( grantSolver && boneData.grant && ! boneData.grant.isLocal && boneData.grant.affectRotation ) {
862
-
863
- const parentIndex = boneData.grant.parentIndex;
864
- const ratio = boneData.grant.ratio;
865
- if ( ! _grantResultMap.has( parentIndex ) ) {
866
-
867
- updateOne( mesh, parentIndex, ikSolver, grantSolver );
868
-
869
- }
870
-
871
- grantSolver.addGrantRotation( bone, _grantResultMap.get( parentIndex ), ratio );
872
-
873
- }
874
-
875
- if ( ikSolver && boneData.ik ) {
876
-
877
- // @TODO: Updating world matrices every time solving an IK bone is
878
- // costly. Optimize if possible.
879
- mesh.updateMatrixWorld( true );
880
- ikSolver.updateOne( boneData.ik );
881
-
882
- // No confident, but it seems the grant results with ik links should be updated?
883
- const links = boneData.ik.links;
884
- for ( let i = 0, il = links.length; i < il; i ++ ) {
885
-
886
- const link = links[ i ];
887
- if ( link.enabled === false ) continue;
888
- const linkIndex = link.index;
889
- if ( _grantResultMap.has( linkIndex ) ) {
890
-
891
- _grantResultMap.set( linkIndex, _grantResultMap.get( linkIndex ).copy( bones[ linkIndex ].quaternion ) );
892
-
893
- }
894
-
895
- }
896
-
897
- }
898
-
899
- // Update with the actual result here
900
- quaternion.copy( bone.quaternion );
901
-
902
- }
903
-
904
- //
905
-
906
- class AudioManager {
907
-
908
- /**
909
- * @param {THREE.Audio} audio
910
- * @param {Object} params - (optional)
911
- * @param {Nuumber} params.delayTime
912
- */
913
- constructor( audio, params = {} ) {
914
-
915
- this.audio = audio;
916
- this.elapsedTime = 0.0;
917
- this.currentTime = 0.0;
918
- this.delayTime = params.delayTime !== undefined ? params.delayTime : 0.0;
919
- this.audioDuration = this.audio.buffer.duration;
920
- this.duration = this.audioDuration + this.delayTime;
921
-
922
- }
923
-
924
- /**
925
- * @param {Number} delta
926
- * @return {AudioManager}
927
- */
928
- control( delta ) {
929
-
930
- this.elapsed += delta;
931
- this.currentTime += delta;
932
- if ( this._shouldStopAudio() ) this.audio.stop();
933
- if ( this._shouldStartAudio() ) this.audio.play();
934
- return this;
935
-
936
- }
937
-
938
- // private methods
939
-
940
- _shouldStartAudio() {
941
-
942
- if ( this.audio.isPlaying ) return false;
943
- while ( this.currentTime >= this.duration ) {
944
-
945
- this.currentTime -= this.duration;
946
-
947
- }
948
-
949
- if ( this.currentTime < this.delayTime ) return false;
950
-
951
- // 'duration' can be bigger than 'audioDuration + delayTime' because of sync configuration
952
- if ( this.currentTime - this.delayTime > this.audioDuration ) return false;
953
- return true;
954
-
955
- }
956
- _shouldStopAudio() {
957
-
958
- return this.audio.isPlaying && this.currentTime >= this.duration;
959
-
960
- }
961
-
962
- }
963
- const _q = new THREE.Quaternion();
964
-
965
- /**
966
- * Solver for Grant (Fuyo in Japanese. I just google translated because
967
- * Fuyo may be MMD specific term and may not be common word in 3D CG terms.)
968
- * Grant propagates a bone's transform to other bones transforms even if
969
- * they are not children.
970
- * @param {THREE.SkinnedMesh} mesh
971
- * @param {Array<Object>} grants
972
- */
973
- class GrantSolver {
974
-
975
- constructor( mesh, grants = [] ) {
976
-
977
- this.mesh = mesh;
978
- this.grants = grants;
979
-
980
- }
981
-
982
- /**
983
- * Solve all the grant bones
984
- * @return {GrantSolver}
985
- */
986
- update() {
987
-
988
- const grants = this.grants;
989
- for ( let i = 0, il = grants.length; i < il; i ++ ) {
990
-
991
- this.updateOne( grants[ i ] );
992
-
993
- }
994
-
995
- return this;
996
-
997
- }
998
-
999
- /**
1000
- * Solve a grant bone
1001
- * @param {Object} grant - grant parameter
1002
- * @return {GrantSolver}
1003
- */
1004
- updateOne( grant ) {
1005
-
1006
- const bones = this.mesh.skeleton.bones;
1007
- const bone = bones[ grant.index ];
1008
- const parentBone = bones[ grant.parentIndex ];
1009
- if ( grant.isLocal ) {
1010
-
1011
- // TODO: implement
1012
- if ( grant.affectPosition ) {}
1013
-
1014
- // TODO: implement
1015
- if ( grant.affectRotation ) {}
1016
-
1017
- } else {
1018
-
1019
- // TODO: implement
1020
- if ( grant.affectPosition ) {}
1021
-
1022
- if ( grant.affectRotation ) {
1023
-
1024
- this.addGrantRotation( bone, parentBone.quaternion, grant.ratio );
1025
-
1026
- }
1027
-
1028
- }
1029
-
1030
- return this;
1031
-
1032
- }
1033
- addGrantRotation( bone, q, ratio ) {
1034
-
1035
- _q.set( 0, 0, 0, 1 );
1036
- _q.slerp( q, ratio );
1037
- bone.quaternion.multiply( _q );
1038
- return this;
1039
-
1040
- }
1041
-
1042
- }
1043
-
1044
- THREE.MMDAnimationHelper = MMDAnimationHelper;
1045
-
1046
- } )();