@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/core/Object3D.js
CHANGED
|
@@ -5,7 +5,7 @@ import { EventDispatcher } from './EventDispatcher.js';
|
|
|
5
5
|
import { Euler } from '../math/Euler.js';
|
|
6
6
|
import { Layers } from './Layers.js';
|
|
7
7
|
import { Matrix3 } from '../math/Matrix3.js';
|
|
8
|
-
import
|
|
8
|
+
import { generateUUID } from '../math/MathUtils.js';
|
|
9
9
|
|
|
10
10
|
let _object3DId = 0;
|
|
11
11
|
|
|
@@ -22,30 +22,118 @@ const _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );
|
|
|
22
22
|
const _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );
|
|
23
23
|
const _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );
|
|
24
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Fires when the object has been added to its parent object.
|
|
27
|
+
*
|
|
28
|
+
* @event Object3D#added
|
|
29
|
+
* @type {Object}
|
|
30
|
+
*/
|
|
25
31
|
const _addedEvent = { type: 'added' };
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Fires when the object has been removed from its parent object.
|
|
35
|
+
*
|
|
36
|
+
* @event Object3D#removed
|
|
37
|
+
* @type {Object}
|
|
38
|
+
*/
|
|
26
39
|
const _removedEvent = { type: 'removed' };
|
|
27
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Fires when a new child object has been added.
|
|
43
|
+
*
|
|
44
|
+
* @event Object3D#childadded
|
|
45
|
+
* @type {Object}
|
|
46
|
+
*/
|
|
28
47
|
const _childaddedEvent = { type: 'childadded', child: null };
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Fires when a new child object has been added.
|
|
51
|
+
*
|
|
52
|
+
* @event Object3D#childremoved
|
|
53
|
+
* @type {Object}
|
|
54
|
+
*/
|
|
29
55
|
const _childremovedEvent = { type: 'childremoved', child: null };
|
|
30
56
|
|
|
57
|
+
/**
|
|
58
|
+
* This is the base class for most objects in three.js and provides a set of
|
|
59
|
+
* properties and methods for manipulating objects in 3D space.
|
|
60
|
+
*
|
|
61
|
+
* @augments EventDispatcher
|
|
62
|
+
*/
|
|
31
63
|
class Object3D extends EventDispatcher {
|
|
32
64
|
|
|
65
|
+
/**
|
|
66
|
+
* Constructs a new 3D object.
|
|
67
|
+
*/
|
|
33
68
|
constructor() {
|
|
34
69
|
|
|
35
70
|
super();
|
|
36
71
|
|
|
72
|
+
/**
|
|
73
|
+
* This flag can be used for type testing.
|
|
74
|
+
*
|
|
75
|
+
* @type {boolean}
|
|
76
|
+
* @readonly
|
|
77
|
+
* @default true
|
|
78
|
+
*/
|
|
37
79
|
this.isObject3D = true;
|
|
38
80
|
|
|
81
|
+
/**
|
|
82
|
+
* The ID of the 3D object.
|
|
83
|
+
*
|
|
84
|
+
* @name Object3D#id
|
|
85
|
+
* @type {number}
|
|
86
|
+
* @readonly
|
|
87
|
+
*/
|
|
39
88
|
Object.defineProperty( this, 'id', { value: _object3DId ++ } );
|
|
40
89
|
|
|
41
|
-
|
|
42
|
-
|
|
90
|
+
/**
|
|
91
|
+
* The UUID of the 3D object.
|
|
92
|
+
*
|
|
93
|
+
* @type {string}
|
|
94
|
+
* @readonly
|
|
95
|
+
*/
|
|
96
|
+
this.uuid = generateUUID();
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* The name of the 3D object.
|
|
100
|
+
*
|
|
101
|
+
* @type {string}
|
|
102
|
+
*/
|
|
43
103
|
this.name = '';
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* The type property is used for detecting the object type
|
|
107
|
+
* in context of serialization/deserialization.
|
|
108
|
+
*
|
|
109
|
+
* @type {string}
|
|
110
|
+
* @readonly
|
|
111
|
+
*/
|
|
44
112
|
this.type = 'Object3D';
|
|
45
113
|
|
|
114
|
+
/**
|
|
115
|
+
* A reference to the parent object.
|
|
116
|
+
*
|
|
117
|
+
* @type {?Object3D}
|
|
118
|
+
* @default null
|
|
119
|
+
*/
|
|
46
120
|
this.parent = null;
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* An array holding the child 3D objects of this instance.
|
|
124
|
+
*
|
|
125
|
+
* @type {Array<Object3D>}
|
|
126
|
+
*/
|
|
47
127
|
this.children = [];
|
|
48
128
|
|
|
129
|
+
/**
|
|
130
|
+
* Defines the `up` direction of the 3D object which influences
|
|
131
|
+
* the orientation via methods like {@link Object3D#lookAt}.
|
|
132
|
+
*
|
|
133
|
+
* The default values for all 3D objects is defined by `Object3D.DEFAULT_UP`.
|
|
134
|
+
*
|
|
135
|
+
* @type {Vector3}
|
|
136
|
+
*/
|
|
49
137
|
this.up = Object3D.DEFAULT_UP.clone();
|
|
50
138
|
|
|
51
139
|
const position = new Vector3();
|
|
@@ -69,65 +157,245 @@ class Object3D extends EventDispatcher {
|
|
|
69
157
|
quaternion._onChange( onQuaternionChange );
|
|
70
158
|
|
|
71
159
|
Object.defineProperties( this, {
|
|
160
|
+
/**
|
|
161
|
+
* Represents the object's local position.
|
|
162
|
+
*
|
|
163
|
+
* @name Object3D#position
|
|
164
|
+
* @type {Vector3}
|
|
165
|
+
* @default (0,0,0)
|
|
166
|
+
*/
|
|
72
167
|
position: {
|
|
73
168
|
configurable: true,
|
|
74
169
|
enumerable: true,
|
|
75
170
|
value: position
|
|
76
171
|
},
|
|
172
|
+
/**
|
|
173
|
+
* Represents the object's local rotation as Euler angles, in radians.
|
|
174
|
+
*
|
|
175
|
+
* @name Object3D#rotation
|
|
176
|
+
* @type {Euler}
|
|
177
|
+
* @default (0,0,0)
|
|
178
|
+
*/
|
|
77
179
|
rotation: {
|
|
78
180
|
configurable: true,
|
|
79
181
|
enumerable: true,
|
|
80
182
|
value: rotation
|
|
81
183
|
},
|
|
184
|
+
/**
|
|
185
|
+
* Represents the object's local rotation as Quaternions.
|
|
186
|
+
*
|
|
187
|
+
* @name Object3D#quaternion
|
|
188
|
+
* @type {Quaternion}
|
|
189
|
+
*/
|
|
82
190
|
quaternion: {
|
|
83
191
|
configurable: true,
|
|
84
192
|
enumerable: true,
|
|
85
193
|
value: quaternion
|
|
86
194
|
},
|
|
195
|
+
/**
|
|
196
|
+
* Represents the object's local scale.
|
|
197
|
+
*
|
|
198
|
+
* @name Object3D#scale
|
|
199
|
+
* @type {Vector3}
|
|
200
|
+
* @default (1,1,1)
|
|
201
|
+
*/
|
|
87
202
|
scale: {
|
|
88
203
|
configurable: true,
|
|
89
204
|
enumerable: true,
|
|
90
205
|
value: scale
|
|
91
206
|
},
|
|
207
|
+
/**
|
|
208
|
+
* Represents the object's model-view matrix.
|
|
209
|
+
*
|
|
210
|
+
* @name Object3D#modelViewMatrix
|
|
211
|
+
* @type {Matrix4}
|
|
212
|
+
*/
|
|
92
213
|
modelViewMatrix: {
|
|
93
214
|
value: new Matrix4()
|
|
94
215
|
},
|
|
216
|
+
/**
|
|
217
|
+
* Represents the object's normal matrix.
|
|
218
|
+
*
|
|
219
|
+
* @name Object3D#normalMatrix
|
|
220
|
+
* @type {Matrix3}
|
|
221
|
+
*/
|
|
95
222
|
normalMatrix: {
|
|
96
223
|
value: new Matrix3()
|
|
97
224
|
}
|
|
98
225
|
} );
|
|
99
226
|
|
|
227
|
+
/**
|
|
228
|
+
* Represents the object's transformation matrix in local space.
|
|
229
|
+
*
|
|
230
|
+
* @type {Matrix4}
|
|
231
|
+
*/
|
|
100
232
|
this.matrix = new Matrix4();
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Represents the object's transformation matrix in world space.
|
|
236
|
+
* If the 3D object has no parent, then it's identical to the local transformation matrix
|
|
237
|
+
*
|
|
238
|
+
* @type {Matrix4}
|
|
239
|
+
*/
|
|
101
240
|
this.matrixWorld = new Matrix4();
|
|
102
241
|
|
|
242
|
+
/**
|
|
243
|
+
* When set to `true`, the engine automatically computes the local matrix from position,
|
|
244
|
+
* rotation and scale every frame.
|
|
245
|
+
*
|
|
246
|
+
* The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_AUTO_UPDATE`.
|
|
247
|
+
*
|
|
248
|
+
* @type {boolean}
|
|
249
|
+
* @default true
|
|
250
|
+
*/
|
|
103
251
|
this.matrixAutoUpdate = Object3D.DEFAULT_MATRIX_AUTO_UPDATE;
|
|
104
252
|
|
|
253
|
+
/**
|
|
254
|
+
* When set to `true`, the engine automatically computes the world matrix from the current local
|
|
255
|
+
* matrix and the object's transformation hierarchy.
|
|
256
|
+
*
|
|
257
|
+
* The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE`.
|
|
258
|
+
*
|
|
259
|
+
* @type {boolean}
|
|
260
|
+
* @default true
|
|
261
|
+
*/
|
|
105
262
|
this.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; // checked by the renderer
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* When set to `true`, it calculates the world matrix in that frame and resets this property
|
|
266
|
+
* to `false`.
|
|
267
|
+
*
|
|
268
|
+
* @type {boolean}
|
|
269
|
+
* @default false
|
|
270
|
+
*/
|
|
106
271
|
this.matrixWorldNeedsUpdate = false;
|
|
107
272
|
|
|
273
|
+
/**
|
|
274
|
+
* The layer membership of the 3D object. The 3D object is only visible if it has
|
|
275
|
+
* at least one layer in common with the camera in use. This property can also be
|
|
276
|
+
* used to filter out unwanted objects in ray-intersection tests when using {@link Raycaster}.
|
|
277
|
+
*
|
|
278
|
+
* @type {Layers}
|
|
279
|
+
*/
|
|
108
280
|
this.layers = new Layers();
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* When set to `true`, the 3D object gets rendered.
|
|
284
|
+
*
|
|
285
|
+
* @type {boolean}
|
|
286
|
+
* @default true
|
|
287
|
+
*/
|
|
109
288
|
this.visible = true;
|
|
110
289
|
|
|
290
|
+
/**
|
|
291
|
+
* When set to `true`, the 3D object gets rendered into shadow maps.
|
|
292
|
+
*
|
|
293
|
+
* @type {boolean}
|
|
294
|
+
* @default false
|
|
295
|
+
*/
|
|
111
296
|
this.castShadow = false;
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* When set to `true`, the 3D object is affected by shadows in the scene.
|
|
300
|
+
*
|
|
301
|
+
* @type {boolean}
|
|
302
|
+
* @default false
|
|
303
|
+
*/
|
|
112
304
|
this.receiveShadow = false;
|
|
113
305
|
|
|
306
|
+
/**
|
|
307
|
+
* When set to `true`, the 3D object is honored by view frustum culling.
|
|
308
|
+
*
|
|
309
|
+
* @type {boolean}
|
|
310
|
+
* @default true
|
|
311
|
+
*/
|
|
114
312
|
this.frustumCulled = true;
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* This value allows the default rendering order of scene graph objects to be
|
|
316
|
+
* overridden although opaque and transparent objects remain sorted independently.
|
|
317
|
+
* When this property is set for an instance of {@link Group},all descendants
|
|
318
|
+
* objects will be sorted and rendered together. Sorting is from lowest to highest
|
|
319
|
+
* render order.
|
|
320
|
+
*
|
|
321
|
+
* @type {number}
|
|
322
|
+
* @default 0
|
|
323
|
+
*/
|
|
115
324
|
this.renderOrder = 0;
|
|
116
325
|
|
|
326
|
+
/**
|
|
327
|
+
* An array holding the animation clips of the 3D object.
|
|
328
|
+
*
|
|
329
|
+
* @type {Array<AnimationClip>}
|
|
330
|
+
*/
|
|
117
331
|
this.animations = [];
|
|
118
332
|
|
|
333
|
+
/**
|
|
334
|
+
* An object that can be used to store custom data about the 3D object. It
|
|
335
|
+
* should not hold references to functions as these will not be cloned.
|
|
336
|
+
*
|
|
337
|
+
* @type {Object}
|
|
338
|
+
*/
|
|
119
339
|
this.userData = {};
|
|
120
340
|
|
|
121
341
|
}
|
|
122
342
|
|
|
343
|
+
/**
|
|
344
|
+
* A callback that is executed immediately before a 3D object is rendered to a shadow map.
|
|
345
|
+
*
|
|
346
|
+
* @param {Renderer|WebGLRenderer} renderer - The renderer.
|
|
347
|
+
* @param {Object3D} object - The 3D object.
|
|
348
|
+
* @param {Camera} camera - The camera that is used to render the scene.
|
|
349
|
+
* @param {Camera} shadowCamera - The shadow camera.
|
|
350
|
+
* @param {BufferGeometry} geometry - The 3D object's geometry.
|
|
351
|
+
* @param {Material} depthMaterial - The depth material.
|
|
352
|
+
* @param {Object} group - The geometry group data.
|
|
353
|
+
*/
|
|
123
354
|
onBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}
|
|
124
355
|
|
|
356
|
+
/**
|
|
357
|
+
* A callback that is executed immediately after a 3D object is rendered to a shadow map.
|
|
358
|
+
*
|
|
359
|
+
* @param {Renderer|WebGLRenderer} renderer - The renderer.
|
|
360
|
+
* @param {Object3D} object - The 3D object.
|
|
361
|
+
* @param {Camera} camera - The camera that is used to render the scene.
|
|
362
|
+
* @param {Camera} shadowCamera - The shadow camera.
|
|
363
|
+
* @param {BufferGeometry} geometry - The 3D object's geometry.
|
|
364
|
+
* @param {Material} depthMaterial - The depth material.
|
|
365
|
+
* @param {Object} group - The geometry group data.
|
|
366
|
+
*/
|
|
125
367
|
onAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}
|
|
126
368
|
|
|
369
|
+
/**
|
|
370
|
+
* A callback that is executed immediately before a 3D object is rendered.
|
|
371
|
+
*
|
|
372
|
+
* @param {Renderer|WebGLRenderer} renderer - The renderer.
|
|
373
|
+
* @param {Object3D} object - The 3D object.
|
|
374
|
+
* @param {Camera} camera - The camera that is used to render the scene.
|
|
375
|
+
* @param {BufferGeometry} geometry - The 3D object's geometry.
|
|
376
|
+
* @param {Material} material - The 3D object's material.
|
|
377
|
+
* @param {Object} group - The geometry group data.
|
|
378
|
+
*/
|
|
127
379
|
onBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}
|
|
128
380
|
|
|
381
|
+
/**
|
|
382
|
+
* A callback that is executed immediately after a 3D object is rendered.
|
|
383
|
+
*
|
|
384
|
+
* @param {Renderer|WebGLRenderer} renderer - The renderer.
|
|
385
|
+
* @param {Object3D} object - The 3D object.
|
|
386
|
+
* @param {Camera} camera - The camera that is used to render the scene.
|
|
387
|
+
* @param {BufferGeometry} geometry - The 3D object's geometry.
|
|
388
|
+
* @param {Material} material - The 3D object's material.
|
|
389
|
+
* @param {Object} group - The geometry group data.
|
|
390
|
+
*/
|
|
129
391
|
onAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}
|
|
130
392
|
|
|
393
|
+
/**
|
|
394
|
+
* Applies the given transformation matrix to the object and updates the object's position,
|
|
395
|
+
* rotation and scale.
|
|
396
|
+
*
|
|
397
|
+
* @param {Matrix4} matrix - The transformation matrix.
|
|
398
|
+
*/
|
|
131
399
|
applyMatrix4( matrix ) {
|
|
132
400
|
|
|
133
401
|
if ( this.matrixAutoUpdate ) this.updateMatrix();
|
|
@@ -138,6 +406,12 @@ class Object3D extends EventDispatcher {
|
|
|
138
406
|
|
|
139
407
|
}
|
|
140
408
|
|
|
409
|
+
/**
|
|
410
|
+
* Applies a rotation represented by given the quaternion to the 3D object.
|
|
411
|
+
*
|
|
412
|
+
* @param {Quaternion} q - The quaternion.
|
|
413
|
+
* @return {Object3D} A reference to this instance.
|
|
414
|
+
*/
|
|
141
415
|
applyQuaternion( q ) {
|
|
142
416
|
|
|
143
417
|
this.quaternion.premultiply( q );
|
|
@@ -146,6 +420,12 @@ class Object3D extends EventDispatcher {
|
|
|
146
420
|
|
|
147
421
|
}
|
|
148
422
|
|
|
423
|
+
/**
|
|
424
|
+
* Sets the given rotation represented as an axis/angle couple to the 3D object.
|
|
425
|
+
*
|
|
426
|
+
* @param {Vector3} axis - The (normalized) axis vector.
|
|
427
|
+
* @param {number} angle - The angle in radians.
|
|
428
|
+
*/
|
|
149
429
|
setRotationFromAxisAngle( axis, angle ) {
|
|
150
430
|
|
|
151
431
|
// assumes axis is normalized
|
|
@@ -154,12 +434,23 @@ class Object3D extends EventDispatcher {
|
|
|
154
434
|
|
|
155
435
|
}
|
|
156
436
|
|
|
437
|
+
/**
|
|
438
|
+
* Sets the given rotation represented as Euler angles to the 3D object.
|
|
439
|
+
*
|
|
440
|
+
* @param {Euler} euler - The Euler angles.
|
|
441
|
+
*/
|
|
157
442
|
setRotationFromEuler( euler ) {
|
|
158
443
|
|
|
159
444
|
this.quaternion.setFromEuler( euler, true );
|
|
160
445
|
|
|
161
446
|
}
|
|
162
447
|
|
|
448
|
+
/**
|
|
449
|
+
* Sets the given rotation represented as rotation matrix to the 3D object.
|
|
450
|
+
*
|
|
451
|
+
* @param {Matrix4} m - Although a 4x4 matrix is expected, the upper 3x3 portion must be
|
|
452
|
+
* a pure rotation matrix (i.e, unscaled).
|
|
453
|
+
*/
|
|
163
454
|
setRotationFromMatrix( m ) {
|
|
164
455
|
|
|
165
456
|
// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)
|
|
@@ -168,6 +459,11 @@ class Object3D extends EventDispatcher {
|
|
|
168
459
|
|
|
169
460
|
}
|
|
170
461
|
|
|
462
|
+
/**
|
|
463
|
+
* Sets the given rotation represented as a Quaternion to the 3D object.
|
|
464
|
+
*
|
|
465
|
+
* @param {Quaternion} q - The Quaternion
|
|
466
|
+
*/
|
|
171
467
|
setRotationFromQuaternion( q ) {
|
|
172
468
|
|
|
173
469
|
// assumes q is normalized
|
|
@@ -176,6 +472,13 @@ class Object3D extends EventDispatcher {
|
|
|
176
472
|
|
|
177
473
|
}
|
|
178
474
|
|
|
475
|
+
/**
|
|
476
|
+
* Rotates the 3D object along an axis in local space.
|
|
477
|
+
*
|
|
478
|
+
* @param {Vector3} axis - The (normalized) axis vector.
|
|
479
|
+
* @param {number} angle - The angle in radians.
|
|
480
|
+
* @return {Object3D} A reference to this instance.
|
|
481
|
+
*/
|
|
179
482
|
rotateOnAxis( axis, angle ) {
|
|
180
483
|
|
|
181
484
|
// rotate object on axis in object space
|
|
@@ -189,6 +492,13 @@ class Object3D extends EventDispatcher {
|
|
|
189
492
|
|
|
190
493
|
}
|
|
191
494
|
|
|
495
|
+
/**
|
|
496
|
+
* Rotates the 3D object along an axis in world space.
|
|
497
|
+
*
|
|
498
|
+
* @param {Vector3} axis - The (normalized) axis vector.
|
|
499
|
+
* @param {number} angle - The angle in radians.
|
|
500
|
+
* @return {Object3D} A reference to this instance.
|
|
501
|
+
*/
|
|
192
502
|
rotateOnWorldAxis( axis, angle ) {
|
|
193
503
|
|
|
194
504
|
// rotate object on axis in world space
|
|
@@ -203,24 +513,49 @@ class Object3D extends EventDispatcher {
|
|
|
203
513
|
|
|
204
514
|
}
|
|
205
515
|
|
|
516
|
+
/**
|
|
517
|
+
* Rotates the 3D object around its X axis in local space.
|
|
518
|
+
*
|
|
519
|
+
* @param {number} angle - The angle in radians.
|
|
520
|
+
* @return {Object3D} A reference to this instance.
|
|
521
|
+
*/
|
|
206
522
|
rotateX( angle ) {
|
|
207
523
|
|
|
208
524
|
return this.rotateOnAxis( _xAxis, angle );
|
|
209
525
|
|
|
210
526
|
}
|
|
211
527
|
|
|
528
|
+
/**
|
|
529
|
+
* Rotates the 3D object around its Y axis in local space.
|
|
530
|
+
*
|
|
531
|
+
* @param {number} angle - The angle in radians.
|
|
532
|
+
* @return {Object3D} A reference to this instance.
|
|
533
|
+
*/
|
|
212
534
|
rotateY( angle ) {
|
|
213
535
|
|
|
214
536
|
return this.rotateOnAxis( _yAxis, angle );
|
|
215
537
|
|
|
216
538
|
}
|
|
217
539
|
|
|
540
|
+
/**
|
|
541
|
+
* Rotates the 3D object around its Z axis in local space.
|
|
542
|
+
*
|
|
543
|
+
* @param {number} angle - The angle in radians.
|
|
544
|
+
* @return {Object3D} A reference to this instance.
|
|
545
|
+
*/
|
|
218
546
|
rotateZ( angle ) {
|
|
219
547
|
|
|
220
548
|
return this.rotateOnAxis( _zAxis, angle );
|
|
221
549
|
|
|
222
550
|
}
|
|
223
551
|
|
|
552
|
+
/**
|
|
553
|
+
* Translate the 3D object by a distance along the given axis in local space.
|
|
554
|
+
*
|
|
555
|
+
* @param {Vector3} axis - The (normalized) axis vector.
|
|
556
|
+
* @param {number} distance - The distance in world units.
|
|
557
|
+
* @return {Object3D} A reference to this instance.
|
|
558
|
+
*/
|
|
224
559
|
translateOnAxis( axis, distance ) {
|
|
225
560
|
|
|
226
561
|
// translate object by distance along axis in object space
|
|
@@ -234,24 +569,48 @@ class Object3D extends EventDispatcher {
|
|
|
234
569
|
|
|
235
570
|
}
|
|
236
571
|
|
|
572
|
+
/**
|
|
573
|
+
* Translate the 3D object by a distance along its X-axis in local space.
|
|
574
|
+
*
|
|
575
|
+
* @param {number} distance - The distance in world units.
|
|
576
|
+
* @return {Object3D} A reference to this instance.
|
|
577
|
+
*/
|
|
237
578
|
translateX( distance ) {
|
|
238
579
|
|
|
239
580
|
return this.translateOnAxis( _xAxis, distance );
|
|
240
581
|
|
|
241
582
|
}
|
|
242
583
|
|
|
584
|
+
/**
|
|
585
|
+
* Translate the 3D object by a distance along its Y-axis in local space.
|
|
586
|
+
*
|
|
587
|
+
* @param {number} distance - The distance in world units.
|
|
588
|
+
* @return {Object3D} A reference to this instance.
|
|
589
|
+
*/
|
|
243
590
|
translateY( distance ) {
|
|
244
591
|
|
|
245
592
|
return this.translateOnAxis( _yAxis, distance );
|
|
246
593
|
|
|
247
594
|
}
|
|
248
595
|
|
|
596
|
+
/**
|
|
597
|
+
* Translate the 3D object by a distance along its Z-axis in local space.
|
|
598
|
+
*
|
|
599
|
+
* @param {number} distance - The distance in world units.
|
|
600
|
+
* @return {Object3D} A reference to this instance.
|
|
601
|
+
*/
|
|
249
602
|
translateZ( distance ) {
|
|
250
603
|
|
|
251
604
|
return this.translateOnAxis( _zAxis, distance );
|
|
252
605
|
|
|
253
606
|
}
|
|
254
607
|
|
|
608
|
+
/**
|
|
609
|
+
* Converts the given vector from this 3D object's local space to world space.
|
|
610
|
+
*
|
|
611
|
+
* @param {Vector3} vector - The vector to convert.
|
|
612
|
+
* @return {Vector3} The converted vector.
|
|
613
|
+
*/
|
|
255
614
|
localToWorld( vector ) {
|
|
256
615
|
|
|
257
616
|
this.updateWorldMatrix( true, false );
|
|
@@ -260,6 +619,12 @@ class Object3D extends EventDispatcher {
|
|
|
260
619
|
|
|
261
620
|
}
|
|
262
621
|
|
|
622
|
+
/**
|
|
623
|
+
* Converts the given vector from this 3D object's word space to local space.
|
|
624
|
+
*
|
|
625
|
+
* @param {Vector3} vector - The vector to convert.
|
|
626
|
+
* @return {Vector3} The converted vector.
|
|
627
|
+
*/
|
|
263
628
|
worldToLocal( vector ) {
|
|
264
629
|
|
|
265
630
|
this.updateWorldMatrix( true, false );
|
|
@@ -268,6 +633,15 @@ class Object3D extends EventDispatcher {
|
|
|
268
633
|
|
|
269
634
|
}
|
|
270
635
|
|
|
636
|
+
/**
|
|
637
|
+
* Rotates the object to face a point in world space.
|
|
638
|
+
*
|
|
639
|
+
* This method does not support objects having non-uniformly-scaled parent(s).
|
|
640
|
+
*
|
|
641
|
+
* @param {number|Vector3} x - The x coordinate in world space. Alternatively, a vector representing a position in world space
|
|
642
|
+
* @param {number} [y] - The y coordinate in world space.
|
|
643
|
+
* @param {number} [z] - The z coordinate in world space.
|
|
644
|
+
*/
|
|
271
645
|
lookAt( x, y, z ) {
|
|
272
646
|
|
|
273
647
|
// This method does not support objects having non-uniformly-scaled parent(s)
|
|
@@ -310,6 +684,16 @@ class Object3D extends EventDispatcher {
|
|
|
310
684
|
|
|
311
685
|
}
|
|
312
686
|
|
|
687
|
+
/**
|
|
688
|
+
* Adds the given 3D object as a child to this 3D object. An arbitrary number of
|
|
689
|
+
* objects may be added. Any current parent on an object passed in here will be
|
|
690
|
+
* removed, since an object can have at most one parent.
|
|
691
|
+
*
|
|
692
|
+
* @fires Object3D#added
|
|
693
|
+
* @fires Object3D#childadded
|
|
694
|
+
* @param {Object3D} object - The 3D object to add.
|
|
695
|
+
* @return {Object3D} A reference to this instance.
|
|
696
|
+
*/
|
|
313
697
|
add( object ) {
|
|
314
698
|
|
|
315
699
|
if ( arguments.length > 1 ) {
|
|
@@ -353,6 +737,15 @@ class Object3D extends EventDispatcher {
|
|
|
353
737
|
|
|
354
738
|
}
|
|
355
739
|
|
|
740
|
+
/**
|
|
741
|
+
* Removes the given 3D object as child from this 3D object.
|
|
742
|
+
* An arbitrary number of objects may be removed.
|
|
743
|
+
*
|
|
744
|
+
* @fires Object3D#removed
|
|
745
|
+
* @fires Object3D#childremoved
|
|
746
|
+
* @param {Object3D} object - The 3D object to remove.
|
|
747
|
+
* @return {Object3D} A reference to this instance.
|
|
748
|
+
*/
|
|
356
749
|
remove( object ) {
|
|
357
750
|
|
|
358
751
|
if ( arguments.length > 1 ) {
|
|
@@ -386,6 +779,13 @@ class Object3D extends EventDispatcher {
|
|
|
386
779
|
|
|
387
780
|
}
|
|
388
781
|
|
|
782
|
+
/**
|
|
783
|
+
* Removes this 3D object from its current parent.
|
|
784
|
+
*
|
|
785
|
+
* @fires Object3D#removed
|
|
786
|
+
* @fires Object3D#childremoved
|
|
787
|
+
* @return {Object3D} A reference to this instance.
|
|
788
|
+
*/
|
|
389
789
|
removeFromParent() {
|
|
390
790
|
|
|
391
791
|
const parent = this.parent;
|
|
@@ -400,12 +800,28 @@ class Object3D extends EventDispatcher {
|
|
|
400
800
|
|
|
401
801
|
}
|
|
402
802
|
|
|
803
|
+
/**
|
|
804
|
+
* Removes all child objects.
|
|
805
|
+
*
|
|
806
|
+
* @fires Object3D#removed
|
|
807
|
+
* @fires Object3D#childremoved
|
|
808
|
+
* @return {Object3D} A reference to this instance.
|
|
809
|
+
*/
|
|
403
810
|
clear() {
|
|
404
811
|
|
|
405
812
|
return this.remove( ... this.children );
|
|
406
813
|
|
|
407
814
|
}
|
|
408
815
|
|
|
816
|
+
/**
|
|
817
|
+
* Adds the given 3D object as a child of this 3D object, while maintaining the object's world
|
|
818
|
+
* transform. This method does not support scene graphs having non-uniformly-scaled nodes(s).
|
|
819
|
+
*
|
|
820
|
+
* @fires Object3D#added
|
|
821
|
+
* @fires Object3D#childadded
|
|
822
|
+
* @param {Object3D} object - The 3D object to attach.
|
|
823
|
+
* @return {Object3D} A reference to this instance.
|
|
824
|
+
*/
|
|
409
825
|
attach( object ) {
|
|
410
826
|
|
|
411
827
|
// adds object as a child of this, while maintaining the object's world transform
|
|
@@ -442,18 +858,40 @@ class Object3D extends EventDispatcher {
|
|
|
442
858
|
|
|
443
859
|
}
|
|
444
860
|
|
|
861
|
+
/**
|
|
862
|
+
* Searches through the 3D object and its children, starting with the 3D object
|
|
863
|
+
* itself, and returns the first with a matching ID.
|
|
864
|
+
*
|
|
865
|
+
* @param {number} id - The id.
|
|
866
|
+
* @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.
|
|
867
|
+
*/
|
|
445
868
|
getObjectById( id ) {
|
|
446
869
|
|
|
447
870
|
return this.getObjectByProperty( 'id', id );
|
|
448
871
|
|
|
449
872
|
}
|
|
450
873
|
|
|
874
|
+
/**
|
|
875
|
+
* Searches through the 3D object and its children, starting with the 3D object
|
|
876
|
+
* itself, and returns the first with a matching name.
|
|
877
|
+
*
|
|
878
|
+
* @param {string} name - The name.
|
|
879
|
+
* @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.
|
|
880
|
+
*/
|
|
451
881
|
getObjectByName( name ) {
|
|
452
882
|
|
|
453
883
|
return this.getObjectByProperty( 'name', name );
|
|
454
884
|
|
|
455
885
|
}
|
|
456
886
|
|
|
887
|
+
/**
|
|
888
|
+
* Searches through the 3D object and its children, starting with the 3D object
|
|
889
|
+
* itself, and returns the first with a matching property value.
|
|
890
|
+
*
|
|
891
|
+
* @param {string} name - The name of the property.
|
|
892
|
+
* @param {any} value - The value.
|
|
893
|
+
* @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.
|
|
894
|
+
*/
|
|
457
895
|
getObjectByProperty( name, value ) {
|
|
458
896
|
|
|
459
897
|
if ( this[ name ] === value ) return this;
|
|
@@ -475,6 +913,15 @@ class Object3D extends EventDispatcher {
|
|
|
475
913
|
|
|
476
914
|
}
|
|
477
915
|
|
|
916
|
+
/**
|
|
917
|
+
* Searches through the 3D object and its children, starting with the 3D object
|
|
918
|
+
* itself, and returns all 3D objects with a matching property value.
|
|
919
|
+
*
|
|
920
|
+
* @param {string} name - The name of the property.
|
|
921
|
+
* @param {any} value - The value.
|
|
922
|
+
* @param {Array<Object3D>} result - The method stores the result in this array.
|
|
923
|
+
* @return {Array<Object3D>} The found 3D objects.
|
|
924
|
+
*/
|
|
478
925
|
getObjectsByProperty( name, value, result = [] ) {
|
|
479
926
|
|
|
480
927
|
if ( this[ name ] === value ) result.push( this );
|
|
@@ -491,6 +938,12 @@ class Object3D extends EventDispatcher {
|
|
|
491
938
|
|
|
492
939
|
}
|
|
493
940
|
|
|
941
|
+
/**
|
|
942
|
+
* Returns a vector representing the position of the 3D object in world space.
|
|
943
|
+
*
|
|
944
|
+
* @param {Vector3} target - The target vector the result is stored to.
|
|
945
|
+
* @return {Vector3} The 3D object's position in world space.
|
|
946
|
+
*/
|
|
494
947
|
getWorldPosition( target ) {
|
|
495
948
|
|
|
496
949
|
this.updateWorldMatrix( true, false );
|
|
@@ -499,6 +952,12 @@ class Object3D extends EventDispatcher {
|
|
|
499
952
|
|
|
500
953
|
}
|
|
501
954
|
|
|
955
|
+
/**
|
|
956
|
+
* Returns a Quaternion representing the position of the 3D object in world space.
|
|
957
|
+
*
|
|
958
|
+
* @param {Quaternion} target - The target Quaternion the result is stored to.
|
|
959
|
+
* @return {Quaternion} The 3D object's rotation in world space.
|
|
960
|
+
*/
|
|
502
961
|
getWorldQuaternion( target ) {
|
|
503
962
|
|
|
504
963
|
this.updateWorldMatrix( true, false );
|
|
@@ -509,6 +968,12 @@ class Object3D extends EventDispatcher {
|
|
|
509
968
|
|
|
510
969
|
}
|
|
511
970
|
|
|
971
|
+
/**
|
|
972
|
+
* Returns a vector representing the scale of the 3D object in world space.
|
|
973
|
+
*
|
|
974
|
+
* @param {Vector3} target - The target vector the result is stored to.
|
|
975
|
+
* @return {Vector3} The 3D object's scale in world space.
|
|
976
|
+
*/
|
|
512
977
|
getWorldScale( target ) {
|
|
513
978
|
|
|
514
979
|
this.updateWorldMatrix( true, false );
|
|
@@ -519,6 +984,12 @@ class Object3D extends EventDispatcher {
|
|
|
519
984
|
|
|
520
985
|
}
|
|
521
986
|
|
|
987
|
+
/**
|
|
988
|
+
* Returns a vector representing the ("look") direction of the 3D object in world space.
|
|
989
|
+
*
|
|
990
|
+
* @param {Vector3} target - The target vector the result is stored to.
|
|
991
|
+
* @return {Vector3} The 3D object's direction in world space.
|
|
992
|
+
*/
|
|
522
993
|
getWorldDirection( target ) {
|
|
523
994
|
|
|
524
995
|
this.updateWorldMatrix( true, false );
|
|
@@ -529,8 +1000,24 @@ class Object3D extends EventDispatcher {
|
|
|
529
1000
|
|
|
530
1001
|
}
|
|
531
1002
|
|
|
1003
|
+
/**
|
|
1004
|
+
* Abstract method to get intersections between a casted ray and this
|
|
1005
|
+
* 3D object. Renderable 3D objects such as {@link Mesh}, {@link Line} or {@link Points}
|
|
1006
|
+
* implement this method in order to use raycasting.
|
|
1007
|
+
*
|
|
1008
|
+
* @abstract
|
|
1009
|
+
* @param {Raycaster} raycaster - The raycaster.
|
|
1010
|
+
* @param {Array<Object>} intersects - An array holding the result of the method.
|
|
1011
|
+
*/
|
|
532
1012
|
raycast( /* raycaster, intersects */ ) {}
|
|
533
1013
|
|
|
1014
|
+
/**
|
|
1015
|
+
* Executes the callback on this 3D object and all descendants.
|
|
1016
|
+
*
|
|
1017
|
+
* Note: Modifying the scene graph inside the callback is discouraged.
|
|
1018
|
+
*
|
|
1019
|
+
* @param {Function} callback - A callback function that allows to process the current 3D object.
|
|
1020
|
+
*/
|
|
534
1021
|
traverse( callback ) {
|
|
535
1022
|
|
|
536
1023
|
callback( this );
|
|
@@ -545,6 +1032,14 @@ class Object3D extends EventDispatcher {
|
|
|
545
1032
|
|
|
546
1033
|
}
|
|
547
1034
|
|
|
1035
|
+
/**
|
|
1036
|
+
* Like {@link Object3D#traverse}, but the callback will only be executed for visible 3D objects.
|
|
1037
|
+
* Descendants of invisible 3D objects are not traversed.
|
|
1038
|
+
*
|
|
1039
|
+
* Note: Modifying the scene graph inside the callback is discouraged.
|
|
1040
|
+
*
|
|
1041
|
+
* @param {Function} callback - A callback function that allows to process the current 3D object.
|
|
1042
|
+
*/
|
|
548
1043
|
traverseVisible( callback ) {
|
|
549
1044
|
|
|
550
1045
|
if ( this.visible === false ) return;
|
|
@@ -561,6 +1056,13 @@ class Object3D extends EventDispatcher {
|
|
|
561
1056
|
|
|
562
1057
|
}
|
|
563
1058
|
|
|
1059
|
+
/**
|
|
1060
|
+
* Like {@link Object3D#traverse}, but the callback will only be executed for all ancestors.
|
|
1061
|
+
*
|
|
1062
|
+
* Note: Modifying the scene graph inside the callback is discouraged.
|
|
1063
|
+
*
|
|
1064
|
+
* @param {Function} callback - A callback function that allows to process the current 3D object.
|
|
1065
|
+
*/
|
|
564
1066
|
traverseAncestors( callback ) {
|
|
565
1067
|
|
|
566
1068
|
const parent = this.parent;
|
|
@@ -575,6 +1077,10 @@ class Object3D extends EventDispatcher {
|
|
|
575
1077
|
|
|
576
1078
|
}
|
|
577
1079
|
|
|
1080
|
+
/**
|
|
1081
|
+
* Updates the transformation matrix in local space by computing it from the current
|
|
1082
|
+
* position, rotation and scale values.
|
|
1083
|
+
*/
|
|
578
1084
|
updateMatrix() {
|
|
579
1085
|
|
|
580
1086
|
this.matrix.compose( this.position, this.quaternion, this.scale );
|
|
@@ -583,6 +1089,17 @@ class Object3D extends EventDispatcher {
|
|
|
583
1089
|
|
|
584
1090
|
}
|
|
585
1091
|
|
|
1092
|
+
/**
|
|
1093
|
+
* Updates the transformation matrix in world space of this 3D objects and its descendants.
|
|
1094
|
+
*
|
|
1095
|
+
* To ensure correct results, this method also recomputes the 3D object's transformation matrix in
|
|
1096
|
+
* local space. The computation of the local and world matrix can be controlled with the
|
|
1097
|
+
* {@link Object3D#matrixAutoUpdate} and {@link Object3D#matrixWorldAutoUpdate} flags which are both
|
|
1098
|
+
* `true` by default. Set these flags to `false` if you need more control over the update matrix process.
|
|
1099
|
+
*
|
|
1100
|
+
* @param {boolean} [force=false] - When set to `true`, a recomputation of world matrices is forced even
|
|
1101
|
+
* when {@link Object3D#matrixWorldAutoUpdate} is set to `false`.
|
|
1102
|
+
*/
|
|
586
1103
|
updateMatrixWorld( force ) {
|
|
587
1104
|
|
|
588
1105
|
if ( this.matrixAutoUpdate ) this.updateMatrix();
|
|
@@ -623,6 +1140,13 @@ class Object3D extends EventDispatcher {
|
|
|
623
1140
|
|
|
624
1141
|
}
|
|
625
1142
|
|
|
1143
|
+
/**
|
|
1144
|
+
* An alternative version of {@link Object3D#updateMatrixWorld} with more control over the
|
|
1145
|
+
* update of ancestor and descendant nodes.
|
|
1146
|
+
*
|
|
1147
|
+
* @param {boolean} [updateParents=false] Whether ancestor nodes should be updated or not.
|
|
1148
|
+
* @param {boolean} [updateChildren=false] Whether descendant nodes should be updated or not.
|
|
1149
|
+
*/
|
|
626
1150
|
updateWorldMatrix( updateParents, updateChildren ) {
|
|
627
1151
|
|
|
628
1152
|
const parent = this.parent;
|
|
@@ -667,6 +1191,13 @@ class Object3D extends EventDispatcher {
|
|
|
667
1191
|
|
|
668
1192
|
}
|
|
669
1193
|
|
|
1194
|
+
/**
|
|
1195
|
+
* Serializes the 3D object into JSON.
|
|
1196
|
+
*
|
|
1197
|
+
* @param {?(Object|string)} meta - An optional value holding meta information about the serialization.
|
|
1198
|
+
* @return {Object} A JSON object representing the serialized 3D object.
|
|
1199
|
+
* @see {@link ObjectLoader#parse}
|
|
1200
|
+
*/
|
|
670
1201
|
toJSON( meta ) {
|
|
671
1202
|
|
|
672
1203
|
// meta is a string when called from JSON.stringify
|
|
@@ -962,12 +1493,25 @@ class Object3D extends EventDispatcher {
|
|
|
962
1493
|
|
|
963
1494
|
}
|
|
964
1495
|
|
|
1496
|
+
/**
|
|
1497
|
+
* Returns a new 3D object with copied values from this instance.
|
|
1498
|
+
*
|
|
1499
|
+
* @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are also cloned.
|
|
1500
|
+
* @return {Object3D} A clone of this instance.
|
|
1501
|
+
*/
|
|
965
1502
|
clone( recursive ) {
|
|
966
1503
|
|
|
967
1504
|
return new this.constructor().copy( this, recursive );
|
|
968
1505
|
|
|
969
1506
|
}
|
|
970
1507
|
|
|
1508
|
+
/**
|
|
1509
|
+
* Copies the values of the given 3D object to this instance.
|
|
1510
|
+
*
|
|
1511
|
+
* @param {Object3D} source - The 3D object to copy.
|
|
1512
|
+
* @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are cloned.
|
|
1513
|
+
* @return {Object3D} A reference to this instance.
|
|
1514
|
+
*/
|
|
971
1515
|
copy( source, recursive = true ) {
|
|
972
1516
|
|
|
973
1517
|
this.name = source.name;
|
|
@@ -1017,8 +1561,34 @@ class Object3D extends EventDispatcher {
|
|
|
1017
1561
|
|
|
1018
1562
|
}
|
|
1019
1563
|
|
|
1564
|
+
/**
|
|
1565
|
+
* The default up direction for objects, also used as the default
|
|
1566
|
+
* position for {@link DirectionalLight} and {@link HemisphereLight}.
|
|
1567
|
+
*
|
|
1568
|
+
* @static
|
|
1569
|
+
* @type {Vector3}
|
|
1570
|
+
* @default (0,1,0)
|
|
1571
|
+
*/
|
|
1020
1572
|
Object3D.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 );
|
|
1573
|
+
|
|
1574
|
+
/**
|
|
1575
|
+
* The default setting for {@link Object3D#matrixAutoUpdate} for
|
|
1576
|
+
* newly created 3D objects.
|
|
1577
|
+
*
|
|
1578
|
+
* @static
|
|
1579
|
+
* @type {boolean}
|
|
1580
|
+
* @default true
|
|
1581
|
+
*/
|
|
1021
1582
|
Object3D.DEFAULT_MATRIX_AUTO_UPDATE = true;
|
|
1583
|
+
|
|
1584
|
+
/**
|
|
1585
|
+
* The default setting for {@link Object3D#matrixWorldAutoUpdate} for
|
|
1586
|
+
* newly created 3D objects.
|
|
1587
|
+
*
|
|
1588
|
+
* @static
|
|
1589
|
+
* @type {boolean}
|
|
1590
|
+
* @default true
|
|
1591
|
+
*/
|
|
1022
1592
|
Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;
|
|
1023
1593
|
|
|
1024
1594
|
export { Object3D };
|