@plastic-software/three 0.167.3 → 0.174.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.
- package/LICENSE +1 -1
- package/README.md +1 -1
- package/build/three.cjs +36277 -24023
- package/build/three.core.js +48830 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +10175 -46743
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +550 -0
- package/build/three.tsl.min.js +6 -0
- package/build/three.webgpu.js +44348 -50670
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +70301 -0
- package/build/three.webgpu.nodes.min.js +6 -0
- package/examples/jsm/Addons.js +3 -15
- package/examples/jsm/animation/AnimationClipCreator.js +1 -1
- package/examples/jsm/animation/CCDIKSolver.js +61 -11
- package/examples/jsm/capabilities/WebGL.js +27 -21
- package/examples/jsm/capabilities/WebGPU.js +1 -10
- package/examples/jsm/controls/ArcballControls.js +262 -231
- package/examples/jsm/controls/DragControls.js +1 -1
- package/examples/jsm/controls/FirstPersonControls.js +175 -163
- package/examples/jsm/controls/FlyControls.js +194 -188
- package/examples/jsm/controls/OrbitControls.js +801 -777
- package/examples/jsm/controls/PointerLockControls.js +26 -20
- package/examples/jsm/controls/TrackballControls.js +469 -448
- package/examples/jsm/controls/TransformControls.js +119 -68
- package/examples/jsm/csm/CSM.js +2 -2
- package/examples/jsm/csm/CSMFrustum.js +7 -4
- package/examples/jsm/csm/CSMHelper.js +2 -0
- package/examples/jsm/csm/CSMShadowNode.js +442 -0
- package/examples/jsm/curves/NURBSCurve.js +33 -2
- package/examples/jsm/curves/NURBSUtils.js +3 -0
- package/examples/jsm/effects/AnaglyphEffect.js +6 -13
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
- package/examples/jsm/effects/StereoEffect.js +6 -1
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +19 -11
- package/examples/jsm/exporters/GLTFExporter.js +181 -109
- package/examples/jsm/exporters/KTX2Exporter.js +54 -23
- package/examples/jsm/exporters/OBJExporter.js +5 -1
- package/examples/jsm/exporters/PLYExporter.js +11 -9
- package/examples/jsm/exporters/USDZExporter.js +50 -11
- package/examples/jsm/geometries/DecalGeometry.js +73 -21
- package/examples/jsm/geometries/TextGeometry.js +1 -12
- package/examples/jsm/helpers/LightProbeHelper.js +43 -44
- package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +185 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/interactive/HTMLMesh.js +1 -0
- package/examples/jsm/interactive/InteractiveGroup.js +108 -51
- package/examples/jsm/interactive/SelectionHelper.js +3 -1
- package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
- package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +18 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -12
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/LineGeometry.js +25 -0
- package/examples/jsm/lines/LineMaterial.js +0 -1
- package/examples/jsm/lines/LineSegmentsGeometry.js +2 -0
- package/examples/jsm/lines/webgpu/Line2.js +2 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +16 -21
- package/examples/jsm/lines/webgpu/Wireframe.js +57 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -0
- package/examples/jsm/loaders/3MFLoader.js +104 -2
- package/examples/jsm/loaders/BVHLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +15 -12
- package/examples/jsm/loaders/DDSLoader.js +42 -0
- package/examples/jsm/loaders/DRACOLoader.js +3 -1
- package/examples/jsm/loaders/FBXLoader.js +71 -22
- package/examples/jsm/loaders/GCodeLoader.js +4 -2
- package/examples/jsm/loaders/GLTFLoader.js +29 -14
- package/examples/jsm/loaders/KTX2Loader.js +160 -58
- package/examples/jsm/loaders/KTXLoader.js +4 -4
- package/examples/jsm/loaders/LDrawLoader.js +22 -136
- package/examples/jsm/loaders/LottieLoader.js +2 -1
- package/examples/jsm/loaders/MTLLoader.js +27 -7
- package/examples/jsm/loaders/MaterialXLoader.js +40 -14
- package/examples/jsm/loaders/NRRDLoader.js +1 -1
- package/examples/jsm/loaders/OBJLoader.js +5 -3
- package/examples/jsm/loaders/PCDLoader.js +14 -13
- package/examples/jsm/loaders/PDBLoader.js +3 -2
- package/examples/jsm/loaders/PLYLoader.js +15 -12
- package/examples/jsm/loaders/PVRLoader.js +1 -1
- package/examples/jsm/loaders/STLLoader.js +3 -2
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +17 -18
- package/examples/jsm/loaders/VRMLLoader.js +17 -17
- package/examples/jsm/loaders/VTKLoader.js +4 -3
- package/examples/jsm/loaders/XYZLoader.js +3 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +143 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +114 -0
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/ColorSpaces.js +76 -0
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/OBB.js +17 -0
- package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
- package/examples/jsm/misc/ProgressiveLightMap.js +54 -41
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +294 -0
- package/examples/jsm/misc/Timer.js +27 -12
- package/examples/jsm/misc/Volume.js +28 -18
- package/examples/jsm/misc/VolumeSlice.js +19 -16
- package/examples/jsm/modifiers/CurveModifier.js +10 -8
- package/examples/jsm/modifiers/CurveModifierGPU.js +235 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +4 -4
- package/examples/jsm/objects/LensflareMesh.js +324 -0
- package/examples/jsm/objects/Reflector.js +5 -2
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +14 -14
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/objects/Water2Mesh.js +11 -9
- package/examples/jsm/objects/WaterMesh.js +38 -33
- package/examples/jsm/physics/JoltPhysics.js +8 -8
- package/examples/jsm/physics/RapierPhysics.js +5 -5
- package/examples/jsm/postprocessing/AfterimagePass.js +14 -3
- package/examples/jsm/postprocessing/BloomPass.js +2 -2
- package/examples/jsm/postprocessing/EffectComposer.js +1 -2
- package/examples/jsm/postprocessing/OutlinePass.js +37 -51
- package/examples/jsm/postprocessing/OutputPass.js +2 -0
- package/examples/jsm/postprocessing/SAOPass.js +1 -2
- package/examples/jsm/postprocessing/SMAAPass.js +1 -3
- package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
- package/examples/jsm/postprocessing/SSAOPass.js +2 -4
- package/examples/jsm/postprocessing/SSRPass.js +8 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
- package/examples/jsm/renderers/CSS2DRenderer.js +6 -3
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -4
- package/examples/jsm/renderers/SVGRenderer.js +6 -4
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/FXAAShader.js +225 -224
- package/examples/jsm/shaders/GodRaysShader.js +3 -3
- package/examples/jsm/shaders/OutputShader.js +6 -2
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +12 -2
- package/examples/jsm/transpiler/GLSLDecoder.js +77 -31
- package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
- package/examples/jsm/transpiler/TSLEncoder.js +96 -21
- package/examples/jsm/tsl/display/AfterImageNode.js +243 -0
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +106 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +257 -0
- package/{src/nodes/display/BleachBypassNode.js → examples/jsm/tsl/display/BleachBypass.js} +11 -6
- package/{src/nodes → examples/jsm/tsl}/display/BloomNode.js +252 -67
- package/examples/jsm/tsl/display/DenoiseNode.js +332 -0
- package/{src/nodes → examples/jsm/tsl}/display/DepthOfFieldNode.js +92 -14
- package/examples/jsm/tsl/display/DotScreenNode.js +103 -0
- package/examples/jsm/tsl/display/FXAANode.js +364 -0
- package/examples/jsm/tsl/display/FilmNode.js +100 -0
- package/examples/jsm/tsl/display/GTAONode.js +521 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +393 -0
- package/examples/jsm/tsl/display/LensflareNode.js +278 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +108 -0
- package/examples/jsm/tsl/display/MotionBlur.js +33 -0
- package/examples/jsm/tsl/display/OutlineNode.js +750 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +88 -0
- package/{src/nodes → examples/jsm/tsl}/display/PixelationPassNode.js +160 -28
- package/examples/jsm/tsl/display/RGBShiftNode.js +95 -0
- package/examples/jsm/tsl/display/SMAANode.js +767 -0
- package/examples/jsm/tsl/display/SSAAPassNode.js +357 -0
- package/examples/jsm/tsl/display/SSRNode.js +538 -0
- package/examples/jsm/tsl/display/Sepia.js +24 -0
- package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +66 -20
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +184 -0
- package/examples/jsm/tsl/display/StereoPassNode.js +119 -0
- package/examples/jsm/tsl/display/TRAAPassNode.js +451 -0
- package/examples/jsm/tsl/display/TransitionNode.js +140 -0
- package/examples/jsm/tsl/display/hashBlur.js +34 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +395 -0
- package/examples/jsm/tsl/math/Bayer.js +18 -0
- package/examples/jsm/tsl/utils/Raymarching.js +65 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -2
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryCompressionUtils.js +38 -123
- package/examples/jsm/utils/GeometryUtils.js +22 -19
- package/examples/jsm/utils/SceneOptimizer.js +410 -0
- package/examples/jsm/utils/SceneUtils.js +2 -2
- package/examples/jsm/utils/ShadowMapViewer.js +3 -8
- package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
- package/examples/jsm/utils/SkeletonUtils.js +84 -66
- package/examples/jsm/utils/UVsDebug.js +1 -1
- package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +1 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +64 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +21 -21
- package/examples/jsm/webxr/Text2D.js +6 -6
- package/examples/jsm/webxr/XRControllerModelFactory.js +7 -2
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +14 -9
- package/src/Three.Core.js +182 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +543 -0
- package/src/Three.WebGPU.Nodes.js +23 -0
- package/src/Three.WebGPU.js +13 -184
- package/src/Three.js +1 -176
- package/src/animation/AnimationClip.js +2 -2
- package/src/animation/AnimationObjectGroup.js +2 -2
- package/src/animation/AnimationUtils.js +1 -1
- package/src/animation/PropertyBinding.js +2 -2
- package/src/audio/Audio.js +379 -2
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +29 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +173 -34
- package/src/cameras/StereoCamera.js +48 -2
- package/src/constants.js +6 -6
- package/src/core/BufferAttribute.js +4 -9
- package/src/core/BufferGeometry.js +48 -8
- package/src/core/Clock.js +1 -1
- package/src/core/EventDispatcher.js +52 -8
- package/src/core/InterleavedBuffer.js +4 -13
- package/src/core/Object3D.js +573 -3
- package/src/core/RenderTarget.js +22 -4
- package/src/core/RenderTarget3D.js +22 -0
- package/src/core/RenderTargetArray.js +22 -0
- package/src/extras/Controls.js +104 -0
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +18 -7
- package/src/extras/ImageUtils.js +18 -11
- package/src/extras/PMREMGenerator.js +40 -9
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +96 -10
- package/src/extras/core/Curve.js +153 -53
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +66 -3
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +50 -4
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +30 -2
- package/src/geometries/ExtrudeGeometry.js +52 -0
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +43 -3
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +61 -18
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +24 -2
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/Loader.js +132 -0
- package/src/loaders/MaterialLoader.js +7 -1
- package/src/loaders/nodes/NodeLoader.js +189 -0
- package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
- package/src/loaders/nodes/NodeObjectLoader.js +151 -0
- package/src/materials/LineDashedMaterial.js +0 -1
- package/src/materials/Material.js +469 -7
- package/src/materials/MeshPhongMaterial.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -2
- package/src/materials/MeshStandardMaterial.js +2 -2
- package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +192 -82
- package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
- package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
- package/src/materials/nodes/MeshBasicNodeMaterial.js +133 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
- package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +517 -0
- package/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
- package/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
- package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
- package/src/materials/nodes/NodeMaterial.js +1180 -0
- package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -2
- package/src/materials/nodes/PointsNodeMaterial.js +153 -0
- package/src/materials/nodes/ShadowNodeMaterial.js +67 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +198 -0
- package/src/materials/nodes/VolumeNodeMaterial.js +72 -0
- package/src/materials/nodes/manager/NodeMaterialObserver.js +509 -0
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/ColorManagement.js +143 -102
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +96 -2
- package/src/math/MathUtils.js +182 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +265 -9
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +73 -11
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +230 -2
- package/src/math/Vector2.js +396 -10
- package/src/math/Vector3.js +550 -13
- package/src/math/Vector4.js +415 -9
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +84 -166
- package/src/nodes/TSL.js +167 -0
- package/src/nodes/accessors/AccessorsUtils.js +39 -10
- package/src/nodes/accessors/Arrays.js +68 -0
- package/src/nodes/accessors/BatchNode.js +93 -26
- package/src/nodes/accessors/Bitangent.js +54 -0
- package/src/nodes/accessors/BufferAttributeNode.js +189 -11
- package/src/nodes/accessors/BufferNode.js +70 -5
- package/src/nodes/accessors/BuiltinNode.js +63 -0
- package/src/nodes/accessors/Camera.js +129 -0
- package/src/nodes/accessors/ClippingNode.js +152 -43
- package/src/nodes/accessors/CubeTextureNode.js +76 -13
- package/src/nodes/accessors/InstanceNode.js +118 -35
- package/src/nodes/accessors/InstancedMeshNode.js +50 -0
- package/src/nodes/accessors/Lights.js +129 -0
- package/src/nodes/accessors/MaterialNode.js +394 -58
- package/src/nodes/accessors/MaterialProperties.js +57 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +60 -18
- package/src/nodes/accessors/ModelNode.js +159 -12
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -36
- package/src/nodes/accessors/MorphNode.js +60 -13
- package/src/nodes/accessors/Normal.js +156 -0
- package/src/nodes/accessors/Object3DNode.js +154 -35
- package/src/nodes/accessors/PointUVNode.js +35 -6
- package/src/nodes/accessors/Position.js +64 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +357 -0
- package/src/nodes/accessors/ReferenceNode.js +243 -6
- package/src/nodes/accessors/ReflectVector.js +36 -0
- package/src/nodes/accessors/RendererReferenceNode.js +57 -7
- package/src/nodes/accessors/SceneNode.js +98 -6
- package/src/nodes/accessors/SkinningNode.js +214 -21
- package/src/nodes/accessors/StorageBufferNode.js +288 -28
- package/src/nodes/accessors/StorageTextureNode.js +139 -12
- package/src/nodes/accessors/Tangent.js +62 -0
- package/src/nodes/accessors/Texture3DNode.js +98 -12
- package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +14 -34
- package/src/nodes/accessors/TextureNode.js +347 -34
- package/src/nodes/accessors/TextureSizeNode.js +51 -9
- package/src/nodes/accessors/UV.js +11 -0
- package/src/nodes/accessors/UniformArrayNode.js +241 -32
- package/src/nodes/accessors/UserDataNode.js +55 -7
- package/src/nodes/accessors/VelocityNode.js +223 -0
- package/src/nodes/accessors/VertexColorNode.js +45 -6
- package/src/nodes/code/CodeNode.js +108 -8
- package/src/nodes/code/ExpressionNode.js +38 -7
- package/src/nodes/code/FunctionCallNode.js +62 -11
- package/src/nodes/code/FunctionNode.js +54 -24
- package/src/nodes/code/ScriptableNode.js +241 -17
- package/src/nodes/code/ScriptableValueNode.js +93 -8
- package/src/nodes/core/ArrayNode.js +142 -0
- package/src/nodes/core/AssignNode.js +60 -12
- package/src/nodes/core/AttributeNode.js +55 -22
- package/src/nodes/core/BypassNode.js +59 -11
- package/src/nodes/core/CacheNode.js +64 -10
- package/src/nodes/core/ConstNode.js +38 -3
- package/src/nodes/core/ContextNode.js +87 -12
- package/src/nodes/core/IndexNode.js +102 -10
- package/src/nodes/core/InputNode.js +55 -3
- package/src/nodes/core/LightingModel.js +65 -5
- package/src/nodes/core/MRTNode.js +81 -7
- package/src/nodes/core/Node.js +368 -50
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1317 -83
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeFrame.js +123 -2
- package/src/nodes/core/NodeFunction.js +46 -0
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +11 -0
- package/src/nodes/core/NodeUniform.js +52 -0
- package/src/nodes/core/NodeUtils.js +226 -6
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +61 -17
- package/src/nodes/core/ParameterNode.js +34 -4
- package/src/nodes/core/PropertyNode.js +296 -32
- package/src/nodes/core/StackNode.js +108 -8
- package/src/nodes/core/StructNode.js +120 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +116 -9
- package/src/nodes/core/TempNode.js +37 -7
- package/src/nodes/core/UniformGroupNode.js +98 -17
- package/src/nodes/core/UniformNode.js +72 -4
- package/src/nodes/core/VarNode.js +170 -13
- package/src/nodes/core/VaryingNode.js +109 -8
- package/src/nodes/core/constants.js +40 -0
- package/src/nodes/display/BlendModes.js +193 -0
- package/src/nodes/display/BumpMapNode.js +47 -10
- package/src/nodes/display/ColorAdjustment.js +141 -0
- package/src/nodes/display/ColorSpaceFunctions.js +54 -0
- package/src/nodes/display/ColorSpaceNode.js +147 -68
- package/src/nodes/display/FrontFacingNode.js +39 -6
- package/src/nodes/display/NormalMapNode.js +55 -13
- package/src/nodes/display/PassNode.js +420 -19
- package/src/nodes/display/PosterizeNode.js +40 -7
- package/src/nodes/display/RenderOutputNode.js +81 -13
- package/src/nodes/display/ScreenNode.js +286 -0
- package/src/nodes/display/ToneMappingFunctions.js +242 -0
- package/src/nodes/display/ToneMappingNode.js +68 -175
- package/src/nodes/display/ToonOutlinePassNode.js +183 -0
- package/src/nodes/display/ViewportDepthNode.js +210 -36
- package/src/nodes/display/ViewportDepthTextureNode.js +32 -9
- package/src/nodes/display/ViewportSharedTextureNode.js +32 -9
- package/src/nodes/display/ViewportTextureNode.js +68 -11
- package/src/nodes/fog/Fog.js +113 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
- package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
- package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +50 -6
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +27 -6
- package/src/nodes/functions/PhongLightingModel.js +38 -8
- package/src/nodes/functions/PhysicalLightingModel.js +215 -51
- package/src/nodes/functions/ShadowMaskModel.js +24 -1
- package/src/nodes/functions/ToonLightingModel.js +24 -5
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
- package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
- package/src/nodes/functions/material/getRoughness.js +2 -2
- package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
- package/src/nodes/geometry/RangeNode.js +62 -7
- package/src/nodes/gpgpu/AtomicFunctionNode.js +280 -0
- package/src/nodes/gpgpu/BarrierNode.js +89 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
- package/src/nodes/gpgpu/ComputeNode.js +124 -9
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +208 -0
- package/src/nodes/lighting/AONode.js +24 -3
- package/src/nodes/lighting/AmbientLightNode.js +16 -8
- package/src/nodes/lighting/AnalyticLightNode.js +151 -231
- package/src/nodes/lighting/BasicEnvironmentNode.js +25 -3
- package/src/nodes/lighting/BasicLightMapNode.js +25 -5
- package/src/nodes/lighting/DirectionalLightNode.js +19 -20
- package/src/nodes/lighting/EnvironmentNode.js +34 -17
- package/src/nodes/lighting/HemisphereLightNode.js +42 -11
- package/src/nodes/lighting/IESSpotLightNode.js +18 -9
- package/src/nodes/lighting/IrradianceNode.js +23 -3
- package/src/nodes/lighting/LightProbeNode.js +29 -36
- package/src/nodes/lighting/LightUtils.js +12 -4
- package/src/nodes/lighting/LightingContextNode.js +70 -21
- package/src/nodes/lighting/LightingNode.js +22 -9
- package/src/nodes/lighting/LightsNode.js +309 -86
- package/src/nodes/lighting/PointLightNode.js +66 -32
- package/src/nodes/lighting/PointShadowNode.js +306 -0
- package/src/nodes/lighting/RectAreaLightNode.js +61 -25
- package/src/nodes/lighting/ShadowBaseNode.js +92 -0
- package/src/nodes/lighting/ShadowNode.js +812 -0
- package/src/nodes/lighting/SpotLightNode.js +73 -31
- package/src/nodes/materialx/MaterialXNodes.js +2 -2
- package/src/nodes/materialx/lib/mx_hsv.js +27 -22
- package/src/nodes/materialx/lib/mx_noise.js +70 -70
- package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
- package/src/nodes/math/ConditionalNode.js +230 -0
- package/src/nodes/math/Hash.js +21 -0
- package/src/nodes/math/MathNode.js +812 -131
- package/src/nodes/math/MathUtils.js +47 -8
- package/src/nodes/math/OperatorNode.js +410 -66
- package/src/nodes/math/TriNoise3D.js +32 -32
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +188 -28
- package/src/nodes/pmrem/PMREMUtils.js +24 -24
- package/src/nodes/procedural/Checker.js +22 -0
- package/src/nodes/shapes/Shapes.js +32 -0
- package/src/nodes/tsl/TSLBase.js +31 -0
- package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +114 -98
- package/src/nodes/utils/ArrayElementNode.js +45 -5
- package/src/nodes/utils/ConvertNode.js +39 -4
- package/src/nodes/utils/CubeMapNode.js +88 -8
- package/src/nodes/utils/Discard.js +24 -0
- package/src/nodes/utils/EquirectUVNode.js +39 -7
- package/src/nodes/utils/FlipNode.js +106 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +61 -6
- package/src/nodes/utils/JoinNode.js +31 -3
- package/src/nodes/utils/LoopNode.js +95 -9
- package/src/nodes/utils/MatcapUVNode.js +27 -8
- package/src/nodes/utils/MaxMipLevelNode.js +57 -6
- package/src/nodes/utils/MemberNode.js +68 -0
- package/src/nodes/utils/Oscillators.js +41 -0
- package/src/nodes/utils/Packing.js +21 -0
- package/src/nodes/utils/PostProcessingUtils.js +95 -0
- package/src/nodes/utils/RTTNode.js +141 -9
- package/src/nodes/utils/ReflectorNode.js +295 -21
- package/src/nodes/utils/RemapNode.js +93 -10
- package/src/nodes/utils/RotateNode.js +48 -13
- package/src/nodes/utils/SetNode.js +50 -4
- package/src/nodes/utils/SplitNode.js +62 -6
- package/src/nodes/utils/SpriteSheetUVNode.js +56 -7
- package/src/nodes/utils/SpriteUtils.js +21 -5
- package/src/nodes/utils/StorageArrayElementNode.js +64 -12
- package/src/nodes/utils/Timer.js +73 -0
- package/src/nodes/utils/TriplanarTexturesNode.js +96 -10
- package/src/nodes/utils/UVUtils.js +27 -9
- package/src/nodes/utils/ViewportUtils.js +16 -4
- package/src/objects/BatchedMesh.js +808 -281
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +68 -0
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +120 -5
- package/src/objects/Line.js +89 -6
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +82 -23
- package/src/objects/Points.js +62 -0
- package/src/objects/Skeleton.js +107 -2
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGLRenderer.js +274 -157
- package/src/renderers/common/Animation.js +109 -12
- package/src/renderers/common/Attributes.js +40 -0
- package/src/renderers/common/Backend.js +504 -44
- package/src/renderers/common/Background.js +67 -9
- package/src/renderers/common/BindGroup.js +45 -1
- package/src/renderers/common/Binding.js +35 -0
- package/src/renderers/common/Bindings.js +136 -19
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BufferUtils.js +25 -0
- package/src/renderers/common/BundleGroup.js +83 -0
- package/src/renderers/common/ChainMap.js +45 -6
- package/src/renderers/common/ClippingContext.js +175 -80
- package/src/renderers/common/Color4.js +40 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/Constants.js +2 -1
- package/src/renderers/common/CubeRenderTarget.js +22 -3
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +111 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
- package/src/renderers/common/Info.js +78 -35
- package/src/renderers/common/Lighting.js +73 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +112 -11
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +56 -5
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +39 -10
- package/src/renderers/common/RenderContext.js +205 -7
- package/src/renderers/common/RenderContexts.js +59 -6
- package/src/renderers/common/RenderList.js +230 -21
- package/src/renderers/common/RenderLists.js +45 -6
- package/src/renderers/common/RenderObject.js +552 -41
- package/src/renderers/common/RenderObjects.js +118 -9
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1537 -239
- package/src/renderers/common/RendererUtils.js +191 -0
- package/src/renderers/common/SampledTexture.js +132 -3
- package/src/renderers/common/Sampler.js +30 -0
- package/src/renderers/common/StorageBuffer.js +24 -0
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +38 -0
- package/src/renderers/common/Textures.js +142 -32
- package/src/renderers/common/TimestampQueryPool.js +98 -0
- package/src/renderers/common/Uniform.js +225 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +157 -6
- package/src/renderers/common/XRManager.js +1185 -0
- package/src/renderers/common/XRRenderTarget.js +74 -0
- package/src/renderers/common/extras/PMREMGenerator.js +211 -53
- package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
- package/src/renderers/common/nodes/NodeLibrary.js +194 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +92 -4
- package/src/renderers/common/nodes/NodeSampler.js +28 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +37 -3
- package/src/renderers/common/nodes/NodeUniform.js +285 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/common/nodes/Nodes.js +390 -70
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/shaders/ShaderLib/points.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
- package/src/renderers/webgl/WebGLAttributes.js +45 -14
- package/src/renderers/webgl/WebGLBackground.js +24 -1
- package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLCapabilities.js +2 -0
- package/src/renderers/webgl/WebGLGeometries.js +0 -28
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLProgram.js +27 -29
- package/src/renderers/webgl/WebGLPrograms.js +24 -16
- package/src/renderers/webgl/WebGLState.js +68 -11
- package/src/renderers/webgl/WebGLTextures.js +49 -10
- package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +419 -14
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
- package/src/renderers/webgpu/WebGPUBackend.js +816 -236
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
- package/src/renderers/webgpu/WebGPURenderer.js +45 -6
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +54 -32
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +87 -0
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/DepthTexture.js +2 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +368 -5
- package/src/textures/VideoFrameTexture.js +35 -0
- package/src/utils.js +33 -1
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
- package/examples/jsm/animation/MMDPhysics.js +0 -1406
- package/examples/jsm/cameras/CinematicCamera.js +0 -208
- package/examples/jsm/controls/Controls.js +0 -32
- package/examples/jsm/exporters/MMDExporter.js +0 -217
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
- package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/LogLuvLoader.js +0 -606
- package/examples/jsm/loaders/MMDLoader.js +0 -2295
- package/examples/jsm/loaders/TiltLoader.js +0 -520
- package/examples/jsm/objects/InstancedPoints.js +0 -21
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/examples/jsm/utils/GPUStatsPanel.js +0 -95
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
- package/src/nodes/accessors/BitangentNode.js +0 -13
- package/src/nodes/accessors/CameraNode.js +0 -19
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
- package/src/nodes/accessors/NormalNode.js +0 -14
- package/src/nodes/accessors/PositionNode.js +0 -10
- package/src/nodes/accessors/ReflectVectorNode.js +0 -10
- package/src/nodes/accessors/TangentNode.js +0 -23
- package/src/nodes/accessors/UVNode.js +0 -3
- package/src/nodes/core/NodeKeywords.js +0 -80
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/display/AfterImageNode.js +0 -152
- package/src/nodes/display/AnamorphicNode.js +0 -145
- package/src/nodes/display/BlendModeNode.js +0 -128
- package/src/nodes/display/ColorAdjustmentNode.js +0 -104
- package/src/nodes/display/DenoiseNode.js +0 -198
- package/src/nodes/display/DotScreenNode.js +0 -75
- package/src/nodes/display/FXAANode.js +0 -327
- package/src/nodes/display/FilmNode.js +0 -52
- package/src/nodes/display/GTAONode.js +0 -324
- package/src/nodes/display/GaussianBlurNode.js +0 -207
- package/src/nodes/display/Lut3DNode.js +0 -53
- package/src/nodes/display/RGBShiftNode.js +0 -49
- package/src/nodes/display/SepiaNode.js +0 -18
- package/src/nodes/display/TransitionNode.js +0 -76
- package/src/nodes/display/ViewportNode.js +0 -137
- package/src/nodes/fog/FogExp2Node.js +0 -34
- package/src/nodes/fog/FogNode.js +0 -48
- package/src/nodes/fog/FogRangeNode.js +0 -35
- package/src/nodes/lighting/LightNode.js +0 -57
- package/src/nodes/loaders/NodeLoader.js +0 -110
- package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
- package/src/nodes/loaders/NodeObjectLoader.js +0 -71
- package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
- package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
- package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
- package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
- package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
- package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
- package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
- package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
- package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
- package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
- package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
- package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
- package/src/nodes/materials/NodeMaterial.js +0 -680
- package/src/nodes/materials/PointsNodeMaterial.js +0 -39
- package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
- package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
- package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
- package/src/nodes/math/CondNode.js +0 -139
- package/src/nodes/math/HashNode.js +0 -34
- package/src/nodes/procedural/CheckerNode.js +0 -42
- package/src/nodes/utils/DiscardNode.js +0 -28
- package/src/nodes/utils/OscNode.js +0 -81
- package/src/nodes/utils/PackingNode.js +0 -55
- package/src/nodes/utils/TimerNode.js +0 -94
package/src/math/Quaternion.js
CHANGED
|
@@ -1,9 +1,39 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { clamp } from './MathUtils.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Class for representing a Quaternion. Quaternions are used in three.js to represent rotations.
|
|
5
|
+
*
|
|
6
|
+
* Iterating through a vector instance will yield its components `(x, y, z, w)` in
|
|
7
|
+
* the corresponding order.
|
|
8
|
+
*
|
|
9
|
+
* Note that three.js expects Quaternions to be normalized.
|
|
10
|
+
* ```js
|
|
11
|
+
* const quaternion = new THREE.Quaternion();
|
|
12
|
+
* quaternion.setFromAxisAngle( new THREE.Vector3( 0, 1, 0 ), Math.PI / 2 );
|
|
13
|
+
*
|
|
14
|
+
* const vector = new THREE.Vector3( 1, 0, 0 );
|
|
15
|
+
* vector.applyQuaternion( quaternion );
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
3
18
|
class Quaternion {
|
|
4
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new quaternion.
|
|
22
|
+
*
|
|
23
|
+
* @param {number} [x=0] - The x value of this quaternion.
|
|
24
|
+
* @param {number} [y=0] - The y value of this quaternion.
|
|
25
|
+
* @param {number} [z=0] - The z value of this quaternion.
|
|
26
|
+
* @param {number} [w=1] - The w value of this quaternion.
|
|
27
|
+
*/
|
|
5
28
|
constructor( x = 0, y = 0, z = 0, w = 1 ) {
|
|
6
29
|
|
|
30
|
+
/**
|
|
31
|
+
* This flag can be used for type testing.
|
|
32
|
+
*
|
|
33
|
+
* @type {boolean}
|
|
34
|
+
* @readonly
|
|
35
|
+
* @default true
|
|
36
|
+
*/
|
|
7
37
|
this.isQuaternion = true;
|
|
8
38
|
|
|
9
39
|
this._x = x;
|
|
@@ -13,6 +43,19 @@ class Quaternion {
|
|
|
13
43
|
|
|
14
44
|
}
|
|
15
45
|
|
|
46
|
+
/**
|
|
47
|
+
* Interpolates between two quaternions via SLERP. This implementation assumes the
|
|
48
|
+
* quaternion data are managed in flat arrays.
|
|
49
|
+
*
|
|
50
|
+
* @param {Array<number>} dst - The destination array.
|
|
51
|
+
* @param {number} dstOffset - An offset into the destination array.
|
|
52
|
+
* @param {Array<number>} src0 - The source array of the first quaternion.
|
|
53
|
+
* @param {number} srcOffset0 - An offset into the first source array.
|
|
54
|
+
* @param {Array<number>} src1 - The source array of the second quaternion.
|
|
55
|
+
* @param {number} srcOffset1 - An offset into the second source array.
|
|
56
|
+
* @param {number} t - The interpolation factor in the range `[0,1]`.
|
|
57
|
+
* @see {@link Quaternion#slerp}
|
|
58
|
+
*/
|
|
16
59
|
static slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {
|
|
17
60
|
|
|
18
61
|
// fuzz-free, array-based Quaternion SLERP operation
|
|
@@ -93,6 +136,19 @@ class Quaternion {
|
|
|
93
136
|
|
|
94
137
|
}
|
|
95
138
|
|
|
139
|
+
/**
|
|
140
|
+
* Multiplies two quaternions. This implementation assumes the quaternion data are managed
|
|
141
|
+
* in flat arrays.
|
|
142
|
+
*
|
|
143
|
+
* @param {Array<number>} dst - The destination array.
|
|
144
|
+
* @param {number} dstOffset - An offset into the destination array.
|
|
145
|
+
* @param {Array<number>} src0 - The source array of the first quaternion.
|
|
146
|
+
* @param {number} srcOffset0 - An offset into the first source array.
|
|
147
|
+
* @param {Array<number>} src1 - The source array of the second quaternion.
|
|
148
|
+
* @param {number} srcOffset1 - An offset into the second source array.
|
|
149
|
+
* @return {Array<number>} The destination array.
|
|
150
|
+
* @see {@link Quaternion#multiplyQuaternions}.
|
|
151
|
+
*/
|
|
96
152
|
static multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {
|
|
97
153
|
|
|
98
154
|
const x0 = src0[ srcOffset0 ];
|
|
@@ -114,6 +170,12 @@ class Quaternion {
|
|
|
114
170
|
|
|
115
171
|
}
|
|
116
172
|
|
|
173
|
+
/**
|
|
174
|
+
* The x value of this quaternion.
|
|
175
|
+
*
|
|
176
|
+
* @type {number}
|
|
177
|
+
* @default 0
|
|
178
|
+
*/
|
|
117
179
|
get x() {
|
|
118
180
|
|
|
119
181
|
return this._x;
|
|
@@ -127,6 +189,12 @@ class Quaternion {
|
|
|
127
189
|
|
|
128
190
|
}
|
|
129
191
|
|
|
192
|
+
/**
|
|
193
|
+
* The y value of this quaternion.
|
|
194
|
+
*
|
|
195
|
+
* @type {number}
|
|
196
|
+
* @default 0
|
|
197
|
+
*/
|
|
130
198
|
get y() {
|
|
131
199
|
|
|
132
200
|
return this._y;
|
|
@@ -140,6 +208,12 @@ class Quaternion {
|
|
|
140
208
|
|
|
141
209
|
}
|
|
142
210
|
|
|
211
|
+
/**
|
|
212
|
+
* The z value of this quaternion.
|
|
213
|
+
*
|
|
214
|
+
* @type {number}
|
|
215
|
+
* @default 0
|
|
216
|
+
*/
|
|
143
217
|
get z() {
|
|
144
218
|
|
|
145
219
|
return this._z;
|
|
@@ -153,6 +227,12 @@ class Quaternion {
|
|
|
153
227
|
|
|
154
228
|
}
|
|
155
229
|
|
|
230
|
+
/**
|
|
231
|
+
* The w value of this quaternion.
|
|
232
|
+
*
|
|
233
|
+
* @type {number}
|
|
234
|
+
* @default 1
|
|
235
|
+
*/
|
|
156
236
|
get w() {
|
|
157
237
|
|
|
158
238
|
return this._w;
|
|
@@ -166,6 +246,15 @@ class Quaternion {
|
|
|
166
246
|
|
|
167
247
|
}
|
|
168
248
|
|
|
249
|
+
/**
|
|
250
|
+
* Sets the quaternion components.
|
|
251
|
+
*
|
|
252
|
+
* @param {number} x - The x value of this quaternion.
|
|
253
|
+
* @param {number} y - The y value of this quaternion.
|
|
254
|
+
* @param {number} z - The z value of this quaternion.
|
|
255
|
+
* @param {number} w - The w value of this quaternion.
|
|
256
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
257
|
+
*/
|
|
169
258
|
set( x, y, z, w ) {
|
|
170
259
|
|
|
171
260
|
this._x = x;
|
|
@@ -179,12 +268,23 @@ class Quaternion {
|
|
|
179
268
|
|
|
180
269
|
}
|
|
181
270
|
|
|
271
|
+
/**
|
|
272
|
+
* Returns a new quaternion with copied values from this instance.
|
|
273
|
+
*
|
|
274
|
+
* @return {Quaternion} A clone of this instance.
|
|
275
|
+
*/
|
|
182
276
|
clone() {
|
|
183
277
|
|
|
184
278
|
return new this.constructor( this._x, this._y, this._z, this._w );
|
|
185
279
|
|
|
186
280
|
}
|
|
187
281
|
|
|
282
|
+
/**
|
|
283
|
+
* Copies the values of the given quaternion to this instance.
|
|
284
|
+
*
|
|
285
|
+
* @param {Quaternion} quaternion - The quaternion to copy.
|
|
286
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
287
|
+
*/
|
|
188
288
|
copy( quaternion ) {
|
|
189
289
|
|
|
190
290
|
this._x = quaternion.x;
|
|
@@ -198,6 +298,14 @@ class Quaternion {
|
|
|
198
298
|
|
|
199
299
|
}
|
|
200
300
|
|
|
301
|
+
/**
|
|
302
|
+
* Sets this quaternion from the rotation specified by the given
|
|
303
|
+
* Euler angles.
|
|
304
|
+
*
|
|
305
|
+
* @param {Euler} euler - The Euler angles.
|
|
306
|
+
* @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not.
|
|
307
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
308
|
+
*/
|
|
201
309
|
setFromEuler( euler, update = true ) {
|
|
202
310
|
|
|
203
311
|
const x = euler._x, y = euler._y, z = euler._z, order = euler._order;
|
|
@@ -272,12 +380,17 @@ class Quaternion {
|
|
|
272
380
|
|
|
273
381
|
}
|
|
274
382
|
|
|
383
|
+
/**
|
|
384
|
+
* Sets this quaternion from the given axis and angle.
|
|
385
|
+
*
|
|
386
|
+
* @param {Vector3} axis - The normalized axis.
|
|
387
|
+
* @param {number} angle - The angle in radians.
|
|
388
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
389
|
+
*/
|
|
275
390
|
setFromAxisAngle( axis, angle ) {
|
|
276
391
|
|
|
277
392
|
// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm
|
|
278
393
|
|
|
279
|
-
// assumes axis is normalized
|
|
280
|
-
|
|
281
394
|
const halfAngle = angle / 2, s = Math.sin( halfAngle );
|
|
282
395
|
|
|
283
396
|
this._x = axis.x * s;
|
|
@@ -291,6 +404,12 @@ class Quaternion {
|
|
|
291
404
|
|
|
292
405
|
}
|
|
293
406
|
|
|
407
|
+
/**
|
|
408
|
+
* Sets this quaternion from the given rotation matrix.
|
|
409
|
+
*
|
|
410
|
+
* @param {Matrix4} m - A 4x4 matrix of which the upper 3x3 of matrix is a pure rotation matrix (i.e. unscaled).
|
|
411
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
412
|
+
*/
|
|
294
413
|
setFromRotationMatrix( m ) {
|
|
295
414
|
|
|
296
415
|
// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm
|
|
@@ -349,6 +468,14 @@ class Quaternion {
|
|
|
349
468
|
|
|
350
469
|
}
|
|
351
470
|
|
|
471
|
+
/**
|
|
472
|
+
* Sets this quaternion to the rotation required to rotate the direction vector
|
|
473
|
+
* `vFrom` to the direction vector `vTo`.
|
|
474
|
+
*
|
|
475
|
+
* @param {Vector3} vFrom - The first (normalized) direction vector.
|
|
476
|
+
* @param {Vector3} vTo - The second (normalized) direction vector.
|
|
477
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
478
|
+
*/
|
|
352
479
|
setFromUnitVectors( vFrom, vTo ) {
|
|
353
480
|
|
|
354
481
|
// assumes direction vectors vFrom and vTo are normalized
|
|
@@ -392,12 +519,26 @@ class Quaternion {
|
|
|
392
519
|
|
|
393
520
|
}
|
|
394
521
|
|
|
522
|
+
/**
|
|
523
|
+
* Returns the angle between this quaternion and the given one in radians.
|
|
524
|
+
*
|
|
525
|
+
* @param {Quaternion} q - The quaternion to compute the angle with.
|
|
526
|
+
* @return {number} The angle in radians.
|
|
527
|
+
*/
|
|
395
528
|
angleTo( q ) {
|
|
396
529
|
|
|
397
|
-
return 2 * Math.acos( Math.abs(
|
|
530
|
+
return 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );
|
|
398
531
|
|
|
399
532
|
}
|
|
400
533
|
|
|
534
|
+
/**
|
|
535
|
+
* Rotates this quaternion by a given angular step to the given quaternion.
|
|
536
|
+
* The method ensures that the final quaternion will not overshoot `q`.
|
|
537
|
+
*
|
|
538
|
+
* @param {Quaternion} q - The target quaternion.
|
|
539
|
+
* @param {number} step - The angular step in radians.
|
|
540
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
541
|
+
*/
|
|
401
542
|
rotateTowards( q, step ) {
|
|
402
543
|
|
|
403
544
|
const angle = this.angleTo( q );
|
|
@@ -412,20 +553,37 @@ class Quaternion {
|
|
|
412
553
|
|
|
413
554
|
}
|
|
414
555
|
|
|
556
|
+
/**
|
|
557
|
+
* Sets this quaternion to the identity quaternion; that is, to the
|
|
558
|
+
* quaternion that represents "no rotation".
|
|
559
|
+
*
|
|
560
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
561
|
+
*/
|
|
415
562
|
identity() {
|
|
416
563
|
|
|
417
564
|
return this.set( 0, 0, 0, 1 );
|
|
418
565
|
|
|
419
566
|
}
|
|
420
567
|
|
|
568
|
+
/**
|
|
569
|
+
* Inverts this quaternion via {@link Quaternion#conjugate}. The
|
|
570
|
+
* quaternion is assumed to have unit length.
|
|
571
|
+
*
|
|
572
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
573
|
+
*/
|
|
421
574
|
invert() {
|
|
422
575
|
|
|
423
|
-
// quaternion is assumed to have unit length
|
|
424
|
-
|
|
425
576
|
return this.conjugate();
|
|
426
577
|
|
|
427
578
|
}
|
|
428
579
|
|
|
580
|
+
/**
|
|
581
|
+
* Returns the rotational conjugate of this quaternion. The conjugate of a
|
|
582
|
+
* quaternion represents the same rotation in the opposite direction about
|
|
583
|
+
* the rotational axis.
|
|
584
|
+
*
|
|
585
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
586
|
+
*/
|
|
429
587
|
conjugate() {
|
|
430
588
|
|
|
431
589
|
this._x *= - 1;
|
|
@@ -438,24 +596,50 @@ class Quaternion {
|
|
|
438
596
|
|
|
439
597
|
}
|
|
440
598
|
|
|
599
|
+
/**
|
|
600
|
+
* Calculates the dot product of this quaternion and the given one.
|
|
601
|
+
*
|
|
602
|
+
* @param {Quaternion} v - The quaternion to compute the dot product with.
|
|
603
|
+
* @return {number} The result of the dot product.
|
|
604
|
+
*/
|
|
441
605
|
dot( v ) {
|
|
442
606
|
|
|
443
607
|
return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;
|
|
444
608
|
|
|
445
609
|
}
|
|
446
610
|
|
|
611
|
+
/**
|
|
612
|
+
* Computes the squared Euclidean length (straight-line length) of this quaternion,
|
|
613
|
+
* considered as a 4 dimensional vector. This can be useful if you are comparing the
|
|
614
|
+
* lengths of two quaternions, as this is a slightly more efficient calculation than
|
|
615
|
+
* {@link Quaternion#length}.
|
|
616
|
+
*
|
|
617
|
+
* @return {number} The squared Euclidean length.
|
|
618
|
+
*/
|
|
447
619
|
lengthSq() {
|
|
448
620
|
|
|
449
621
|
return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;
|
|
450
622
|
|
|
451
623
|
}
|
|
452
624
|
|
|
625
|
+
/**
|
|
626
|
+
* Computes the Euclidean length (straight-line length) of this quaternion,
|
|
627
|
+
* considered as a 4 dimensional vector.
|
|
628
|
+
*
|
|
629
|
+
* @return {number} The Euclidean length.
|
|
630
|
+
*/
|
|
453
631
|
length() {
|
|
454
632
|
|
|
455
633
|
return Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );
|
|
456
634
|
|
|
457
635
|
}
|
|
458
636
|
|
|
637
|
+
/**
|
|
638
|
+
* Normalizes this quaternion - that is, calculated the quaternion that performs
|
|
639
|
+
* the same rotation as this one, but has a length equal to `1`.
|
|
640
|
+
*
|
|
641
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
642
|
+
*/
|
|
459
643
|
normalize() {
|
|
460
644
|
|
|
461
645
|
let l = this.length();
|
|
@@ -484,18 +668,37 @@ class Quaternion {
|
|
|
484
668
|
|
|
485
669
|
}
|
|
486
670
|
|
|
671
|
+
/**
|
|
672
|
+
* Multiplies this quaternion by the given one.
|
|
673
|
+
*
|
|
674
|
+
* @param {Quaternion} q - The quaternion.
|
|
675
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
676
|
+
*/
|
|
487
677
|
multiply( q ) {
|
|
488
678
|
|
|
489
679
|
return this.multiplyQuaternions( this, q );
|
|
490
680
|
|
|
491
681
|
}
|
|
492
682
|
|
|
683
|
+
/**
|
|
684
|
+
* Pre-multiplies this quaternion by the given one.
|
|
685
|
+
*
|
|
686
|
+
* @param {Quaternion} q - The quaternion.
|
|
687
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
688
|
+
*/
|
|
493
689
|
premultiply( q ) {
|
|
494
690
|
|
|
495
691
|
return this.multiplyQuaternions( q, this );
|
|
496
692
|
|
|
497
693
|
}
|
|
498
694
|
|
|
695
|
+
/**
|
|
696
|
+
* Multiplies the given quaternions and stores the result in this instance.
|
|
697
|
+
*
|
|
698
|
+
* @param {Quaternion} a - The first quaternion.
|
|
699
|
+
* @param {Quaternion} b - The second quaternion.
|
|
700
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
701
|
+
*/
|
|
499
702
|
multiplyQuaternions( a, b ) {
|
|
500
703
|
|
|
501
704
|
// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm
|
|
@@ -514,6 +717,13 @@ class Quaternion {
|
|
|
514
717
|
|
|
515
718
|
}
|
|
516
719
|
|
|
720
|
+
/**
|
|
721
|
+
* Performs a spherical linear interpolation between quaternions.
|
|
722
|
+
*
|
|
723
|
+
* @param {Quaternion} qb - The target quaternion.
|
|
724
|
+
* @param {number} t - The interpolation factor in the closed interval `[0, 1]`.
|
|
725
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
726
|
+
*/
|
|
517
727
|
slerp( qb, t ) {
|
|
518
728
|
|
|
519
729
|
if ( t === 0 ) return this;
|
|
@@ -583,16 +793,28 @@ class Quaternion {
|
|
|
583
793
|
|
|
584
794
|
}
|
|
585
795
|
|
|
796
|
+
/**
|
|
797
|
+
* Performs a spherical linear interpolation between the given quaternions
|
|
798
|
+
* and stores the result in this quaternion.
|
|
799
|
+
*
|
|
800
|
+
* @param {Quaternion} qa - The source quaternion.
|
|
801
|
+
* @param {Quaternion} qb - The target quaternion.
|
|
802
|
+
* @param {number} t - The interpolation factor in the closed interval `[0, 1]`.
|
|
803
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
804
|
+
*/
|
|
586
805
|
slerpQuaternions( qa, qb, t ) {
|
|
587
806
|
|
|
588
807
|
return this.copy( qa ).slerp( qb, t );
|
|
589
808
|
|
|
590
809
|
}
|
|
591
810
|
|
|
811
|
+
/**
|
|
812
|
+
* Sets this quaternion to a uniformly random, normalized quaternion.
|
|
813
|
+
*
|
|
814
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
815
|
+
*/
|
|
592
816
|
random() {
|
|
593
817
|
|
|
594
|
-
// sets this quaternion to a uniform random unit quaternnion
|
|
595
|
-
|
|
596
818
|
// Ken Shoemake
|
|
597
819
|
// Uniform random rotations
|
|
598
820
|
// D. Kirk, editor, Graphics Gems III, pages 124-132. Academic Press, New York, 1992.
|
|
@@ -613,12 +835,25 @@ class Quaternion {
|
|
|
613
835
|
|
|
614
836
|
}
|
|
615
837
|
|
|
838
|
+
/**
|
|
839
|
+
* Returns `true` if this quaternion is equal with the given one.
|
|
840
|
+
*
|
|
841
|
+
* @param {Quaternion} quaternion - The quaternion to test for equality.
|
|
842
|
+
* @return {boolean} Whether this quaternion is equal with the given one.
|
|
843
|
+
*/
|
|
616
844
|
equals( quaternion ) {
|
|
617
845
|
|
|
618
846
|
return ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );
|
|
619
847
|
|
|
620
848
|
}
|
|
621
849
|
|
|
850
|
+
/**
|
|
851
|
+
* Sets this quaternion's components from the given array.
|
|
852
|
+
*
|
|
853
|
+
* @param {Array<number>} array - An array holding the quaternion component values.
|
|
854
|
+
* @param {number} [offset=0] - The offset into the array.
|
|
855
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
856
|
+
*/
|
|
622
857
|
fromArray( array, offset = 0 ) {
|
|
623
858
|
|
|
624
859
|
this._x = array[ offset ];
|
|
@@ -632,6 +867,14 @@ class Quaternion {
|
|
|
632
867
|
|
|
633
868
|
}
|
|
634
869
|
|
|
870
|
+
/**
|
|
871
|
+
* Writes the components of this quaternion to the given array. If no array is provided,
|
|
872
|
+
* the method returns a new instance.
|
|
873
|
+
*
|
|
874
|
+
* @param {Array<number>} [array=[]] - The target array holding the quaternion components.
|
|
875
|
+
* @param {number} [offset=0] - Index of the first element in the array.
|
|
876
|
+
* @return {Array<number>} The quaternion components.
|
|
877
|
+
*/
|
|
635
878
|
toArray( array = [], offset = 0 ) {
|
|
636
879
|
|
|
637
880
|
array[ offset ] = this._x;
|
|
@@ -643,6 +886,13 @@ class Quaternion {
|
|
|
643
886
|
|
|
644
887
|
}
|
|
645
888
|
|
|
889
|
+
/**
|
|
890
|
+
* Sets the components of this quaternion from the given buffer attribute.
|
|
891
|
+
*
|
|
892
|
+
* @param {BufferAttribute} attribute - The buffer attribute holding quaternion data.
|
|
893
|
+
* @param {number} index - The index into the attribute.
|
|
894
|
+
* @return {Quaternion} A reference to this quaternion.
|
|
895
|
+
*/
|
|
646
896
|
fromBufferAttribute( attribute, index ) {
|
|
647
897
|
|
|
648
898
|
this._x = attribute.getX( index );
|
|
@@ -656,6 +906,12 @@ class Quaternion {
|
|
|
656
906
|
|
|
657
907
|
}
|
|
658
908
|
|
|
909
|
+
/**
|
|
910
|
+
* This methods defines the serialization result of this class. Returns the
|
|
911
|
+
* numerical elements of this quaternion in an array of format `[x, y, z, w]`.
|
|
912
|
+
*
|
|
913
|
+
* @return {Array<number>} The serialized quaternion.
|
|
914
|
+
*/
|
|
659
915
|
toJSON() {
|
|
660
916
|
|
|
661
917
|
return this.toArray();
|