super-three 0.173.5 → 0.176.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/build/three.cjs +21993 -1359
- package/build/three.core.js +21129 -1188
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +835 -142
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +19493 -17617
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19477 -17617
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +144 -42
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +194 -71
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +74 -30
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +51 -5
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +36 -1
- package/examples/jsm/loaders/DDSLoader.js +25 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +71 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +222 -9
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +87 -19
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +56 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +90 -70
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +105 -13
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +109 -73
- package/examples/jsm/misc/VolumeSlice.js +91 -48
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +75 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +134 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +268 -134
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/AST.js +10 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
- package/examples/jsm/transpiler/TSLEncoder.js +83 -15
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
- package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
- package/examples/jsm/tsl/display/BleachBypass.js +1 -2
- package/examples/jsm/tsl/display/BloomNode.js +15 -16
- package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
- package/examples/jsm/tsl/display/FXAANode.js +2 -3
- package/examples/jsm/tsl/display/FilmNode.js +9 -8
- package/examples/jsm/tsl/display/GTAONode.js +11 -12
- package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
- package/examples/jsm/tsl/display/LensflareNode.js +15 -16
- package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
- package/examples/jsm/tsl/display/MotionBlur.js +1 -2
- package/examples/jsm/tsl/display/OutlineNode.js +7 -8
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
- package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
- package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
- package/examples/jsm/tsl/display/SMAANode.js +13 -7
- package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
- package/examples/jsm/tsl/display/SSRNode.js +6 -7
- package/examples/jsm/tsl/display/Sepia.js +1 -2
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
- package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
- package/examples/jsm/tsl/display/TransitionNode.js +4 -5
- package/examples/jsm/tsl/display/hashBlur.js +1 -2
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
- package/examples/jsm/tsl/math/Bayer.js +31 -0
- package/examples/jsm/tsl/utils/Raymarching.js +67 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +3 -4
- package/src/Three.TSL.js +7 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +169 -19
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/Audio.js +339 -0
- 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 +28 -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 +163 -40
- package/src/cameras/StereoCamera.js +46 -0
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/EventDispatcher.js +44 -2
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +593 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +170 -11
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +88 -1
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +13 -780
- package/src/extras/ImageUtils.js +20 -2
- package/src/extras/PMREMGenerator.js +41 -25
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +95 -15
- package/src/extras/core/Curve.js +150 -50
- 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 +63 -0
- 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/extras/lib/earcut.js +685 -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 +39 -0
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +28 -0
- package/src/geometries/ExtrudeGeometry.js +112 -28
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +40 -0
- 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 +45 -5
- 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 +22 -0
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +130 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +13 -9
- package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
- package/src/loaders/nodes/NodeObjectLoader.js +12 -12
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +481 -4
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +14 -14
- package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
- package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
- package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
- package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
- package/src/materials/nodes/NodeMaterial.js +66 -47
- package/src/materials/nodes/PointsNodeMaterial.js +6 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
- package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
- package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
- package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- 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 +94 -0
- package/src/math/MathUtils.js +405 -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 +262 -6
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +70 -8
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +388 -2
- package/src/math/Vector3.js +541 -4
- package/src/math/Vector4.js +393 -0
- 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 +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/AccessorsUtils.js +4 -2
- package/src/nodes/accessors/Arrays.js +6 -6
- package/src/nodes/accessors/BatchNode.js +10 -11
- package/src/nodes/accessors/Bitangent.js +6 -2
- package/src/nodes/accessors/BufferAttributeNode.js +33 -31
- package/src/nodes/accessors/BufferNode.js +12 -13
- package/src/nodes/accessors/BuiltinNode.js +7 -8
- package/src/nodes/accessors/Camera.js +9 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +17 -19
- package/src/nodes/accessors/InstanceNode.js +10 -11
- package/src/nodes/accessors/InstancedMeshNode.js +3 -4
- package/src/nodes/accessors/Lights.js +12 -15
- package/src/nodes/accessors/MaterialNode.js +45 -9
- package/src/nodes/accessors/MaterialProperties.js +51 -2
- package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
- package/src/nodes/accessors/ModelNode.js +20 -3
- package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
- package/src/nodes/accessors/MorphNode.js +29 -26
- package/src/nodes/accessors/Normal.js +11 -3
- package/src/nodes/accessors/Object3DNode.js +51 -16
- package/src/nodes/accessors/PointUVNode.js +2 -3
- package/src/nodes/accessors/Position.js +8 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
- package/src/nodes/accessors/ReferenceNode.js +31 -31
- package/src/nodes/accessors/ReflectVector.js +4 -2
- package/src/nodes/accessors/RendererReferenceNode.js +9 -10
- package/src/nodes/accessors/SceneNode.js +5 -4
- package/src/nodes/accessors/SkinningNode.js +53 -44
- package/src/nodes/accessors/StorageBufferNode.js +24 -24
- package/src/nodes/accessors/StorageTextureNode.js +17 -17
- package/src/nodes/accessors/Tangent.js +6 -2
- package/src/nodes/accessors/Texture3DNode.js +11 -12
- package/src/nodes/accessors/TextureBicubic.js +2 -3
- package/src/nodes/accessors/TextureNode.js +68 -47
- package/src/nodes/accessors/TextureSizeNode.js +5 -6
- package/src/nodes/accessors/UV.js +2 -3
- package/src/nodes/accessors/UniformArrayNode.js +24 -24
- package/src/nodes/accessors/UserDataNode.js +11 -12
- package/src/nodes/accessors/VelocityNode.js +4 -5
- package/src/nodes/accessors/VertexColorNode.js +7 -8
- package/src/nodes/code/CodeNode.js +15 -13
- package/src/nodes/code/ExpressionNode.js +8 -9
- package/src/nodes/code/FunctionCallNode.js +29 -9
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/code/ScriptableNode.js +27 -28
- package/src/nodes/code/ScriptableValueNode.js +11 -12
- package/src/nodes/core/ArrayNode.js +29 -12
- package/src/nodes/core/AssignNode.js +4 -5
- package/src/nodes/core/AttributeNode.js +8 -9
- package/src/nodes/core/BypassNode.js +3 -4
- package/src/nodes/core/CacheNode.js +5 -6
- package/src/nodes/core/ConstNode.js +4 -4
- package/src/nodes/core/ContextNode.js +9 -9
- package/src/nodes/core/IndexNode.js +8 -4
- package/src/nodes/core/InputNode.js +7 -7
- package/src/nodes/core/LightingModel.js +17 -17
- package/src/nodes/core/MRTNode.js +9 -10
- package/src/nodes/core/Node.js +49 -37
- package/src/nodes/core/NodeAttribute.js +7 -7
- package/src/nodes/core/NodeBuilder.js +248 -175
- package/src/nodes/core/NodeCache.js +4 -4
- package/src/nodes/core/NodeCode.js +6 -6
- package/src/nodes/core/NodeFrame.js +10 -10
- package/src/nodes/core/NodeFunction.js +8 -8
- package/src/nodes/core/NodeFunctionInput.js +8 -8
- package/src/nodes/core/NodeParser.js +1 -1
- package/src/nodes/core/NodeUniform.js +7 -7
- package/src/nodes/core/NodeUtils.js +22 -24
- package/src/nodes/core/NodeVar.js +9 -9
- package/src/nodes/core/NodeVarying.js +4 -4
- package/src/nodes/core/OutputStructNode.js +2 -3
- package/src/nodes/core/ParameterNode.js +6 -7
- package/src/nodes/core/PropertyNode.js +41 -13
- package/src/nodes/core/StackNode.js +11 -12
- package/src/nodes/core/StructNode.js +2 -3
- package/src/nodes/core/StructTypeNode.js +10 -6
- package/src/nodes/core/TempNode.js +3 -3
- package/src/nodes/core/UniformGroupNode.js +15 -12
- package/src/nodes/core/UniformNode.js +9 -10
- package/src/nodes/core/VarNode.js +14 -18
- package/src/nodes/core/VaryingNode.js +10 -10
- package/src/nodes/core/constants.js +0 -2
- package/src/nodes/display/BlendModes.js +21 -14
- package/src/nodes/display/BumpMapNode.js +5 -6
- package/src/nodes/display/ColorAdjustment.js +13 -9
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +15 -12
- package/src/nodes/display/FrontFacingNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +5 -6
- package/src/nodes/display/PassNode.js +122 -35
- package/src/nodes/display/PosterizeNode.js +2 -3
- package/src/nodes/display/RenderOutputNode.js +8 -9
- package/src/nodes/display/ScreenNode.js +16 -7
- package/src/nodes/display/ToneMappingFunctions.js +12 -8
- package/src/nodes/display/ToneMappingNode.js +8 -8
- package/src/nodes/display/ToonOutlinePassNode.js +3 -4
- package/src/nodes/display/ViewportDepthNode.js +15 -7
- package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
- package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
- package/src/nodes/display/ViewportTextureNode.js +16 -16
- package/src/nodes/fog/Fog.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BasicLightingModel.js +5 -8
- package/src/nodes/functions/PhongLightingModel.js +6 -8
- package/src/nodes/functions/PhysicalLightingModel.js +40 -42
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/ToonLightingModel.js +5 -6
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
- package/src/nodes/geometry/RangeNode.js +4 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
- package/src/nodes/gpgpu/BarrierNode.js +6 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
- package/src/nodes/gpgpu/ComputeNode.js +43 -16
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
- package/src/nodes/lighting/AONode.js +2 -2
- package/src/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +50 -9
- package/src/nodes/lighting/BasicLightMapNode.js +2 -2
- package/src/nodes/lighting/DirectionalLightNode.js +3 -12
- package/src/nodes/lighting/EnvironmentNode.js +5 -8
- package/src/nodes/lighting/HemisphereLightNode.js +1 -1
- package/src/nodes/lighting/LightProbeNode.js +1 -1
- package/src/nodes/lighting/LightUtils.js +1 -5
- package/src/nodes/lighting/LightingContextNode.js +10 -10
- package/src/nodes/lighting/LightingNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +68 -25
- package/src/nodes/lighting/PointLightNode.js +12 -27
- package/src/nodes/lighting/PointShadowNode.js +5 -6
- package/src/nodes/lighting/RectAreaLightNode.js +5 -10
- package/src/nodes/lighting/ShadowBaseNode.js +8 -9
- package/src/nodes/lighting/ShadowNode.js +28 -15
- package/src/nodes/lighting/SpotLightNode.js +8 -19
- package/src/nodes/math/ConditionalNode.js +26 -9
- package/src/nodes/math/Hash.js +2 -3
- package/src/nodes/math/MathNode.js +217 -150
- package/src/nodes/math/MathUtils.js +8 -6
- package/src/nodes/math/OperatorNode.js +198 -89
- package/src/nodes/math/TriNoise3D.js +2 -3
- package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
- package/src/nodes/parsers/GLSLNodeParser.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +61 -37
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +2 -3
- package/src/nodes/shapes/Shapes.js +2 -3
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +117 -19
- package/src/nodes/utils/ArrayElementNode.js +5 -3
- package/src/nodes/utils/ConvertNode.js +3 -3
- package/src/nodes/utils/CubeMapNode.js +7 -8
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/Discard.js +5 -5
- package/src/nodes/utils/EquirectUVNode.js +3 -4
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
- package/src/nodes/utils/JoinNode.js +29 -4
- package/src/nodes/utils/LoopNode.js +67 -35
- package/src/nodes/utils/MatcapUVNode.js +1 -2
- package/src/nodes/utils/MaxMipLevelNode.js +4 -5
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Oscillators.js +8 -6
- package/src/nodes/utils/Packing.js +4 -4
- package/src/nodes/utils/PostProcessingUtils.js +6 -5
- package/src/nodes/utils/RTTNode.js +19 -19
- package/src/nodes/utils/ReflectorNode.js +35 -25
- package/src/nodes/utils/RemapNode.js +9 -9
- package/src/nodes/utils/RotateNode.js +3 -4
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +5 -5
- package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
- package/src/nodes/utils/SpriteUtils.js +5 -6
- package/src/nodes/utils/StorageArrayElementNode.js +3 -4
- package/src/nodes/utils/Timer.js +9 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
- package/src/nodes/utils/UVUtils.js +4 -4
- package/src/nodes/utils/ViewportUtils.js +3 -4
- package/src/objects/BatchedMesh.js +319 -32
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +4 -4
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +82 -0
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +75 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +105 -0
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +622 -83
- package/src/renderers/common/Animation.js +6 -6
- package/src/renderers/common/Attributes.js +3 -3
- package/src/renderers/common/Backend.js +40 -31
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/BindGroup.js +5 -5
- package/src/renderers/common/Binding.js +4 -4
- package/src/renderers/common/Bindings.js +10 -0
- package/src/renderers/common/Buffer.js +5 -5
- package/src/renderers/common/BufferUtils.js +7 -9
- package/src/renderers/common/BundleGroup.js +6 -6
- package/src/renderers/common/ChainMap.js +3 -3
- package/src/renderers/common/ClippingContext.js +8 -8
- package/src/renderers/common/Color4.js +8 -8
- package/src/renderers/common/ComputePipeline.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +2 -2
- package/src/renderers/common/Geometries.js +6 -6
- package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
- package/src/renderers/common/Info.js +17 -17
- package/src/renderers/common/Pipeline.js +3 -3
- package/src/renderers/common/Pipelines.js +12 -12
- package/src/renderers/common/PostProcessing.js +13 -1
- package/src/renderers/common/ProgrammableStage.js +11 -11
- package/src/renderers/common/QuadMesh.js +5 -3
- package/src/renderers/common/RenderContext.js +24 -24
- package/src/renderers/common/RenderContexts.js +4 -4
- package/src/renderers/common/RenderList.js +16 -16
- package/src/renderers/common/RenderObject.js +27 -27
- package/src/renderers/common/RenderObjects.js +4 -4
- package/src/renderers/common/RenderPipeline.js +1 -1
- package/src/renderers/common/Renderer.js +272 -200
- package/src/renderers/common/RendererUtils.js +0 -2
- package/src/renderers/common/SampledTexture.js +20 -20
- package/src/renderers/common/Sampler.js +5 -5
- package/src/renderers/common/StorageBuffer.js +2 -2
- package/src/renderers/common/StorageBufferAttribute.js +4 -4
- package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
- package/src/renderers/common/StorageTexture.js +6 -6
- package/src/renderers/common/Textures.js +6 -6
- package/src/renderers/common/TimestampQueryPool.js +66 -7
- package/src/renderers/common/Uniform.js +26 -26
- package/src/renderers/common/UniformBuffer.js +2 -2
- package/src/renderers/common/UniformsGroup.js +18 -18
- package/src/renderers/common/XRManager.js +369 -54
- package/src/renderers/common/XRRenderTarget.js +5 -5
- package/src/renderers/common/extras/PMREMGenerator.js +62 -37
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
- package/src/renderers/common/nodes/NodeLibrary.js +13 -13
- package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
- package/src/renderers/common/nodes/NodeSampler.js +1 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniform.js +9 -9
- package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +13 -13
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +19 -19
- package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
- package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
- package/src/renderers/webgpu/WebGPUBackend.js +200 -119
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
- package/src/renderers/webgpu/WebGPURenderer.js +19 -13
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +185 -9
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +61 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +362 -3
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
package/src/core/Object3D.js
CHANGED
|
@@ -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
|
|
|
90
|
+
/**
|
|
91
|
+
* The UUID of the 3D object.
|
|
92
|
+
*
|
|
93
|
+
* @type {string}
|
|
94
|
+
* @readonly
|
|
95
|
+
*/
|
|
41
96
|
this.uuid = generateUUID();
|
|
42
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,268 @@ 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
|
+
* Custom depth material to be used when rendering to the depth map. Can only be used
|
|
335
|
+
* in context of meshes. When shadow-casting with a {@link DirectionalLight} or {@link SpotLight},
|
|
336
|
+
* if you are modifying vertex positions in the vertex shader you must specify a custom depth
|
|
337
|
+
* material for proper shadows.
|
|
338
|
+
*
|
|
339
|
+
* Only relevant in context of {@link WebGLRenderer}.
|
|
340
|
+
*
|
|
341
|
+
* @type {(Material|undefined)}
|
|
342
|
+
* @default undefined
|
|
343
|
+
*/
|
|
344
|
+
this.customDepthMaterial = undefined;
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Same as {@link Object3D#customDepthMaterial}, but used with {@link PointLight}.
|
|
348
|
+
*
|
|
349
|
+
* Only relevant in context of {@link WebGLRenderer}.
|
|
350
|
+
*
|
|
351
|
+
* @type {(Material|undefined)}
|
|
352
|
+
* @default undefined
|
|
353
|
+
*/
|
|
354
|
+
this.customDistanceMaterial = undefined;
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* An object that can be used to store custom data about the 3D object. It
|
|
358
|
+
* should not hold references to functions as these will not be cloned.
|
|
359
|
+
*
|
|
360
|
+
* @type {Object}
|
|
361
|
+
*/
|
|
119
362
|
this.userData = {};
|
|
120
363
|
|
|
121
364
|
}
|
|
122
365
|
|
|
366
|
+
/**
|
|
367
|
+
* A callback that is executed immediately before a 3D object is rendered to a shadow map.
|
|
368
|
+
*
|
|
369
|
+
* @param {Renderer|WebGLRenderer} renderer - The renderer.
|
|
370
|
+
* @param {Object3D} object - The 3D object.
|
|
371
|
+
* @param {Camera} camera - The camera that is used to render the scene.
|
|
372
|
+
* @param {Camera} shadowCamera - The shadow camera.
|
|
373
|
+
* @param {BufferGeometry} geometry - The 3D object's geometry.
|
|
374
|
+
* @param {Material} depthMaterial - The depth material.
|
|
375
|
+
* @param {Object} group - The geometry group data.
|
|
376
|
+
*/
|
|
123
377
|
onBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}
|
|
124
378
|
|
|
379
|
+
/**
|
|
380
|
+
* A callback that is executed immediately after a 3D object is rendered to a shadow map.
|
|
381
|
+
*
|
|
382
|
+
* @param {Renderer|WebGLRenderer} renderer - The renderer.
|
|
383
|
+
* @param {Object3D} object - The 3D object.
|
|
384
|
+
* @param {Camera} camera - The camera that is used to render the scene.
|
|
385
|
+
* @param {Camera} shadowCamera - The shadow camera.
|
|
386
|
+
* @param {BufferGeometry} geometry - The 3D object's geometry.
|
|
387
|
+
* @param {Material} depthMaterial - The depth material.
|
|
388
|
+
* @param {Object} group - The geometry group data.
|
|
389
|
+
*/
|
|
125
390
|
onAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}
|
|
126
391
|
|
|
392
|
+
/**
|
|
393
|
+
* A callback that is executed immediately before a 3D object is rendered.
|
|
394
|
+
*
|
|
395
|
+
* @param {Renderer|WebGLRenderer} renderer - The renderer.
|
|
396
|
+
* @param {Object3D} object - The 3D object.
|
|
397
|
+
* @param {Camera} camera - The camera that is used to render the scene.
|
|
398
|
+
* @param {BufferGeometry} geometry - The 3D object's geometry.
|
|
399
|
+
* @param {Material} material - The 3D object's material.
|
|
400
|
+
* @param {Object} group - The geometry group data.
|
|
401
|
+
*/
|
|
127
402
|
onBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}
|
|
128
403
|
|
|
404
|
+
/**
|
|
405
|
+
* A callback that is executed immediately after a 3D object is rendered.
|
|
406
|
+
*
|
|
407
|
+
* @param {Renderer|WebGLRenderer} renderer - The renderer.
|
|
408
|
+
* @param {Object3D} object - The 3D object.
|
|
409
|
+
* @param {Camera} camera - The camera that is used to render the scene.
|
|
410
|
+
* @param {BufferGeometry} geometry - The 3D object's geometry.
|
|
411
|
+
* @param {Material} material - The 3D object's material.
|
|
412
|
+
* @param {Object} group - The geometry group data.
|
|
413
|
+
*/
|
|
129
414
|
onAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}
|
|
130
415
|
|
|
416
|
+
/**
|
|
417
|
+
* Applies the given transformation matrix to the object and updates the object's position,
|
|
418
|
+
* rotation and scale.
|
|
419
|
+
*
|
|
420
|
+
* @param {Matrix4} matrix - The transformation matrix.
|
|
421
|
+
*/
|
|
131
422
|
applyMatrix4( matrix ) {
|
|
132
423
|
|
|
133
424
|
if ( this.matrixAutoUpdate ) this.updateMatrix();
|
|
@@ -138,6 +429,12 @@ class Object3D extends EventDispatcher {
|
|
|
138
429
|
|
|
139
430
|
}
|
|
140
431
|
|
|
432
|
+
/**
|
|
433
|
+
* Applies a rotation represented by given the quaternion to the 3D object.
|
|
434
|
+
*
|
|
435
|
+
* @param {Quaternion} q - The quaternion.
|
|
436
|
+
* @return {Object3D} A reference to this instance.
|
|
437
|
+
*/
|
|
141
438
|
applyQuaternion( q ) {
|
|
142
439
|
|
|
143
440
|
this.quaternion.premultiply( q );
|
|
@@ -146,6 +443,12 @@ class Object3D extends EventDispatcher {
|
|
|
146
443
|
|
|
147
444
|
}
|
|
148
445
|
|
|
446
|
+
/**
|
|
447
|
+
* Sets the given rotation represented as an axis/angle couple to the 3D object.
|
|
448
|
+
*
|
|
449
|
+
* @param {Vector3} axis - The (normalized) axis vector.
|
|
450
|
+
* @param {number} angle - The angle in radians.
|
|
451
|
+
*/
|
|
149
452
|
setRotationFromAxisAngle( axis, angle ) {
|
|
150
453
|
|
|
151
454
|
// assumes axis is normalized
|
|
@@ -154,12 +457,23 @@ class Object3D extends EventDispatcher {
|
|
|
154
457
|
|
|
155
458
|
}
|
|
156
459
|
|
|
460
|
+
/**
|
|
461
|
+
* Sets the given rotation represented as Euler angles to the 3D object.
|
|
462
|
+
*
|
|
463
|
+
* @param {Euler} euler - The Euler angles.
|
|
464
|
+
*/
|
|
157
465
|
setRotationFromEuler( euler ) {
|
|
158
466
|
|
|
159
467
|
this.quaternion.setFromEuler( euler, true );
|
|
160
468
|
|
|
161
469
|
}
|
|
162
470
|
|
|
471
|
+
/**
|
|
472
|
+
* Sets the given rotation represented as rotation matrix to the 3D object.
|
|
473
|
+
*
|
|
474
|
+
* @param {Matrix4} m - Although a 4x4 matrix is expected, the upper 3x3 portion must be
|
|
475
|
+
* a pure rotation matrix (i.e, unscaled).
|
|
476
|
+
*/
|
|
163
477
|
setRotationFromMatrix( m ) {
|
|
164
478
|
|
|
165
479
|
// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)
|
|
@@ -168,6 +482,11 @@ class Object3D extends EventDispatcher {
|
|
|
168
482
|
|
|
169
483
|
}
|
|
170
484
|
|
|
485
|
+
/**
|
|
486
|
+
* Sets the given rotation represented as a Quaternion to the 3D object.
|
|
487
|
+
*
|
|
488
|
+
* @param {Quaternion} q - The Quaternion
|
|
489
|
+
*/
|
|
171
490
|
setRotationFromQuaternion( q ) {
|
|
172
491
|
|
|
173
492
|
// assumes q is normalized
|
|
@@ -176,6 +495,13 @@ class Object3D extends EventDispatcher {
|
|
|
176
495
|
|
|
177
496
|
}
|
|
178
497
|
|
|
498
|
+
/**
|
|
499
|
+
* Rotates the 3D object along an axis in local space.
|
|
500
|
+
*
|
|
501
|
+
* @param {Vector3} axis - The (normalized) axis vector.
|
|
502
|
+
* @param {number} angle - The angle in radians.
|
|
503
|
+
* @return {Object3D} A reference to this instance.
|
|
504
|
+
*/
|
|
179
505
|
rotateOnAxis( axis, angle ) {
|
|
180
506
|
|
|
181
507
|
// rotate object on axis in object space
|
|
@@ -189,6 +515,13 @@ class Object3D extends EventDispatcher {
|
|
|
189
515
|
|
|
190
516
|
}
|
|
191
517
|
|
|
518
|
+
/**
|
|
519
|
+
* Rotates the 3D object along an axis in world space.
|
|
520
|
+
*
|
|
521
|
+
* @param {Vector3} axis - The (normalized) axis vector.
|
|
522
|
+
* @param {number} angle - The angle in radians.
|
|
523
|
+
* @return {Object3D} A reference to this instance.
|
|
524
|
+
*/
|
|
192
525
|
rotateOnWorldAxis( axis, angle ) {
|
|
193
526
|
|
|
194
527
|
// rotate object on axis in world space
|
|
@@ -203,24 +536,49 @@ class Object3D extends EventDispatcher {
|
|
|
203
536
|
|
|
204
537
|
}
|
|
205
538
|
|
|
539
|
+
/**
|
|
540
|
+
* Rotates the 3D object around its X axis in local space.
|
|
541
|
+
*
|
|
542
|
+
* @param {number} angle - The angle in radians.
|
|
543
|
+
* @return {Object3D} A reference to this instance.
|
|
544
|
+
*/
|
|
206
545
|
rotateX( angle ) {
|
|
207
546
|
|
|
208
547
|
return this.rotateOnAxis( _xAxis, angle );
|
|
209
548
|
|
|
210
549
|
}
|
|
211
550
|
|
|
551
|
+
/**
|
|
552
|
+
* Rotates the 3D object around its Y axis in local space.
|
|
553
|
+
*
|
|
554
|
+
* @param {number} angle - The angle in radians.
|
|
555
|
+
* @return {Object3D} A reference to this instance.
|
|
556
|
+
*/
|
|
212
557
|
rotateY( angle ) {
|
|
213
558
|
|
|
214
559
|
return this.rotateOnAxis( _yAxis, angle );
|
|
215
560
|
|
|
216
561
|
}
|
|
217
562
|
|
|
563
|
+
/**
|
|
564
|
+
* Rotates the 3D object around its Z axis in local space.
|
|
565
|
+
*
|
|
566
|
+
* @param {number} angle - The angle in radians.
|
|
567
|
+
* @return {Object3D} A reference to this instance.
|
|
568
|
+
*/
|
|
218
569
|
rotateZ( angle ) {
|
|
219
570
|
|
|
220
571
|
return this.rotateOnAxis( _zAxis, angle );
|
|
221
572
|
|
|
222
573
|
}
|
|
223
574
|
|
|
575
|
+
/**
|
|
576
|
+
* Translate the 3D object by a distance along the given axis in local space.
|
|
577
|
+
*
|
|
578
|
+
* @param {Vector3} axis - The (normalized) axis vector.
|
|
579
|
+
* @param {number} distance - The distance in world units.
|
|
580
|
+
* @return {Object3D} A reference to this instance.
|
|
581
|
+
*/
|
|
224
582
|
translateOnAxis( axis, distance ) {
|
|
225
583
|
|
|
226
584
|
// translate object by distance along axis in object space
|
|
@@ -234,24 +592,48 @@ class Object3D extends EventDispatcher {
|
|
|
234
592
|
|
|
235
593
|
}
|
|
236
594
|
|
|
595
|
+
/**
|
|
596
|
+
* Translate the 3D object by a distance along its X-axis in local space.
|
|
597
|
+
*
|
|
598
|
+
* @param {number} distance - The distance in world units.
|
|
599
|
+
* @return {Object3D} A reference to this instance.
|
|
600
|
+
*/
|
|
237
601
|
translateX( distance ) {
|
|
238
602
|
|
|
239
603
|
return this.translateOnAxis( _xAxis, distance );
|
|
240
604
|
|
|
241
605
|
}
|
|
242
606
|
|
|
607
|
+
/**
|
|
608
|
+
* Translate the 3D object by a distance along its Y-axis in local space.
|
|
609
|
+
*
|
|
610
|
+
* @param {number} distance - The distance in world units.
|
|
611
|
+
* @return {Object3D} A reference to this instance.
|
|
612
|
+
*/
|
|
243
613
|
translateY( distance ) {
|
|
244
614
|
|
|
245
615
|
return this.translateOnAxis( _yAxis, distance );
|
|
246
616
|
|
|
247
617
|
}
|
|
248
618
|
|
|
619
|
+
/**
|
|
620
|
+
* Translate the 3D object by a distance along its Z-axis in local space.
|
|
621
|
+
*
|
|
622
|
+
* @param {number} distance - The distance in world units.
|
|
623
|
+
* @return {Object3D} A reference to this instance.
|
|
624
|
+
*/
|
|
249
625
|
translateZ( distance ) {
|
|
250
626
|
|
|
251
627
|
return this.translateOnAxis( _zAxis, distance );
|
|
252
628
|
|
|
253
629
|
}
|
|
254
630
|
|
|
631
|
+
/**
|
|
632
|
+
* Converts the given vector from this 3D object's local space to world space.
|
|
633
|
+
*
|
|
634
|
+
* @param {Vector3} vector - The vector to convert.
|
|
635
|
+
* @return {Vector3} The converted vector.
|
|
636
|
+
*/
|
|
255
637
|
localToWorld( vector ) {
|
|
256
638
|
|
|
257
639
|
this.updateWorldMatrix( true, false );
|
|
@@ -260,6 +642,12 @@ class Object3D extends EventDispatcher {
|
|
|
260
642
|
|
|
261
643
|
}
|
|
262
644
|
|
|
645
|
+
/**
|
|
646
|
+
* Converts the given vector from this 3D object's word space to local space.
|
|
647
|
+
*
|
|
648
|
+
* @param {Vector3} vector - The vector to convert.
|
|
649
|
+
* @return {Vector3} The converted vector.
|
|
650
|
+
*/
|
|
263
651
|
worldToLocal( vector ) {
|
|
264
652
|
|
|
265
653
|
this.updateWorldMatrix( true, false );
|
|
@@ -268,6 +656,15 @@ class Object3D extends EventDispatcher {
|
|
|
268
656
|
|
|
269
657
|
}
|
|
270
658
|
|
|
659
|
+
/**
|
|
660
|
+
* Rotates the object to face a point in world space.
|
|
661
|
+
*
|
|
662
|
+
* This method does not support objects having non-uniformly-scaled parent(s).
|
|
663
|
+
*
|
|
664
|
+
* @param {number|Vector3} x - The x coordinate in world space. Alternatively, a vector representing a position in world space
|
|
665
|
+
* @param {number} [y] - The y coordinate in world space.
|
|
666
|
+
* @param {number} [z] - The z coordinate in world space.
|
|
667
|
+
*/
|
|
271
668
|
lookAt( x, y, z ) {
|
|
272
669
|
|
|
273
670
|
// This method does not support objects having non-uniformly-scaled parent(s)
|
|
@@ -310,6 +707,16 @@ class Object3D extends EventDispatcher {
|
|
|
310
707
|
|
|
311
708
|
}
|
|
312
709
|
|
|
710
|
+
/**
|
|
711
|
+
* Adds the given 3D object as a child to this 3D object. An arbitrary number of
|
|
712
|
+
* objects may be added. Any current parent on an object passed in here will be
|
|
713
|
+
* removed, since an object can have at most one parent.
|
|
714
|
+
*
|
|
715
|
+
* @fires Object3D#added
|
|
716
|
+
* @fires Object3D#childadded
|
|
717
|
+
* @param {Object3D} object - The 3D object to add.
|
|
718
|
+
* @return {Object3D} A reference to this instance.
|
|
719
|
+
*/
|
|
313
720
|
add( object ) {
|
|
314
721
|
|
|
315
722
|
if ( arguments.length > 1 ) {
|
|
@@ -353,6 +760,15 @@ class Object3D extends EventDispatcher {
|
|
|
353
760
|
|
|
354
761
|
}
|
|
355
762
|
|
|
763
|
+
/**
|
|
764
|
+
* Removes the given 3D object as child from this 3D object.
|
|
765
|
+
* An arbitrary number of objects may be removed.
|
|
766
|
+
*
|
|
767
|
+
* @fires Object3D#removed
|
|
768
|
+
* @fires Object3D#childremoved
|
|
769
|
+
* @param {Object3D} object - The 3D object to remove.
|
|
770
|
+
* @return {Object3D} A reference to this instance.
|
|
771
|
+
*/
|
|
356
772
|
remove( object ) {
|
|
357
773
|
|
|
358
774
|
if ( arguments.length > 1 ) {
|
|
@@ -386,6 +802,13 @@ class Object3D extends EventDispatcher {
|
|
|
386
802
|
|
|
387
803
|
}
|
|
388
804
|
|
|
805
|
+
/**
|
|
806
|
+
* Removes this 3D object from its current parent.
|
|
807
|
+
*
|
|
808
|
+
* @fires Object3D#removed
|
|
809
|
+
* @fires Object3D#childremoved
|
|
810
|
+
* @return {Object3D} A reference to this instance.
|
|
811
|
+
*/
|
|
389
812
|
removeFromParent() {
|
|
390
813
|
|
|
391
814
|
const parent = this.parent;
|
|
@@ -400,12 +823,28 @@ class Object3D extends EventDispatcher {
|
|
|
400
823
|
|
|
401
824
|
}
|
|
402
825
|
|
|
826
|
+
/**
|
|
827
|
+
* Removes all child objects.
|
|
828
|
+
*
|
|
829
|
+
* @fires Object3D#removed
|
|
830
|
+
* @fires Object3D#childremoved
|
|
831
|
+
* @return {Object3D} A reference to this instance.
|
|
832
|
+
*/
|
|
403
833
|
clear() {
|
|
404
834
|
|
|
405
835
|
return this.remove( ... this.children );
|
|
406
836
|
|
|
407
837
|
}
|
|
408
838
|
|
|
839
|
+
/**
|
|
840
|
+
* Adds the given 3D object as a child of this 3D object, while maintaining the object's world
|
|
841
|
+
* transform. This method does not support scene graphs having non-uniformly-scaled nodes(s).
|
|
842
|
+
*
|
|
843
|
+
* @fires Object3D#added
|
|
844
|
+
* @fires Object3D#childadded
|
|
845
|
+
* @param {Object3D} object - The 3D object to attach.
|
|
846
|
+
* @return {Object3D} A reference to this instance.
|
|
847
|
+
*/
|
|
409
848
|
attach( object ) {
|
|
410
849
|
|
|
411
850
|
// adds object as a child of this, while maintaining the object's world transform
|
|
@@ -442,18 +881,40 @@ class Object3D extends EventDispatcher {
|
|
|
442
881
|
|
|
443
882
|
}
|
|
444
883
|
|
|
884
|
+
/**
|
|
885
|
+
* Searches through the 3D object and its children, starting with the 3D object
|
|
886
|
+
* itself, and returns the first with a matching ID.
|
|
887
|
+
*
|
|
888
|
+
* @param {number} id - The id.
|
|
889
|
+
* @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.
|
|
890
|
+
*/
|
|
445
891
|
getObjectById( id ) {
|
|
446
892
|
|
|
447
893
|
return this.getObjectByProperty( 'id', id );
|
|
448
894
|
|
|
449
895
|
}
|
|
450
896
|
|
|
897
|
+
/**
|
|
898
|
+
* Searches through the 3D object and its children, starting with the 3D object
|
|
899
|
+
* itself, and returns the first with a matching name.
|
|
900
|
+
*
|
|
901
|
+
* @param {string} name - The name.
|
|
902
|
+
* @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.
|
|
903
|
+
*/
|
|
451
904
|
getObjectByName( name ) {
|
|
452
905
|
|
|
453
906
|
return this.getObjectByProperty( 'name', name );
|
|
454
907
|
|
|
455
908
|
}
|
|
456
909
|
|
|
910
|
+
/**
|
|
911
|
+
* Searches through the 3D object and its children, starting with the 3D object
|
|
912
|
+
* itself, and returns the first with a matching property value.
|
|
913
|
+
*
|
|
914
|
+
* @param {string} name - The name of the property.
|
|
915
|
+
* @param {any} value - The value.
|
|
916
|
+
* @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.
|
|
917
|
+
*/
|
|
457
918
|
getObjectByProperty( name, value ) {
|
|
458
919
|
|
|
459
920
|
if ( this[ name ] === value ) return this;
|
|
@@ -475,6 +936,15 @@ class Object3D extends EventDispatcher {
|
|
|
475
936
|
|
|
476
937
|
}
|
|
477
938
|
|
|
939
|
+
/**
|
|
940
|
+
* Searches through the 3D object and its children, starting with the 3D object
|
|
941
|
+
* itself, and returns all 3D objects with a matching property value.
|
|
942
|
+
*
|
|
943
|
+
* @param {string} name - The name of the property.
|
|
944
|
+
* @param {any} value - The value.
|
|
945
|
+
* @param {Array<Object3D>} result - The method stores the result in this array.
|
|
946
|
+
* @return {Array<Object3D>} The found 3D objects.
|
|
947
|
+
*/
|
|
478
948
|
getObjectsByProperty( name, value, result = [] ) {
|
|
479
949
|
|
|
480
950
|
if ( this[ name ] === value ) result.push( this );
|
|
@@ -491,6 +961,12 @@ class Object3D extends EventDispatcher {
|
|
|
491
961
|
|
|
492
962
|
}
|
|
493
963
|
|
|
964
|
+
/**
|
|
965
|
+
* Returns a vector representing the position of the 3D object in world space.
|
|
966
|
+
*
|
|
967
|
+
* @param {Vector3} target - The target vector the result is stored to.
|
|
968
|
+
* @return {Vector3} The 3D object's position in world space.
|
|
969
|
+
*/
|
|
494
970
|
getWorldPosition( target ) {
|
|
495
971
|
|
|
496
972
|
this.updateWorldMatrix( true, false );
|
|
@@ -499,6 +975,12 @@ class Object3D extends EventDispatcher {
|
|
|
499
975
|
|
|
500
976
|
}
|
|
501
977
|
|
|
978
|
+
/**
|
|
979
|
+
* Returns a Quaternion representing the position of the 3D object in world space.
|
|
980
|
+
*
|
|
981
|
+
* @param {Quaternion} target - The target Quaternion the result is stored to.
|
|
982
|
+
* @return {Quaternion} The 3D object's rotation in world space.
|
|
983
|
+
*/
|
|
502
984
|
getWorldQuaternion( target ) {
|
|
503
985
|
|
|
504
986
|
this.updateWorldMatrix( true, false );
|
|
@@ -509,6 +991,12 @@ class Object3D extends EventDispatcher {
|
|
|
509
991
|
|
|
510
992
|
}
|
|
511
993
|
|
|
994
|
+
/**
|
|
995
|
+
* Returns a vector representing the scale of the 3D object in world space.
|
|
996
|
+
*
|
|
997
|
+
* @param {Vector3} target - The target vector the result is stored to.
|
|
998
|
+
* @return {Vector3} The 3D object's scale in world space.
|
|
999
|
+
*/
|
|
512
1000
|
getWorldScale( target ) {
|
|
513
1001
|
|
|
514
1002
|
this.updateWorldMatrix( true, false );
|
|
@@ -519,6 +1007,12 @@ class Object3D extends EventDispatcher {
|
|
|
519
1007
|
|
|
520
1008
|
}
|
|
521
1009
|
|
|
1010
|
+
/**
|
|
1011
|
+
* Returns a vector representing the ("look") direction of the 3D object in world space.
|
|
1012
|
+
*
|
|
1013
|
+
* @param {Vector3} target - The target vector the result is stored to.
|
|
1014
|
+
* @return {Vector3} The 3D object's direction in world space.
|
|
1015
|
+
*/
|
|
522
1016
|
getWorldDirection( target ) {
|
|
523
1017
|
|
|
524
1018
|
this.updateWorldMatrix( true, false );
|
|
@@ -529,8 +1023,24 @@ class Object3D extends EventDispatcher {
|
|
|
529
1023
|
|
|
530
1024
|
}
|
|
531
1025
|
|
|
1026
|
+
/**
|
|
1027
|
+
* Abstract method to get intersections between a casted ray and this
|
|
1028
|
+
* 3D object. Renderable 3D objects such as {@link Mesh}, {@link Line} or {@link Points}
|
|
1029
|
+
* implement this method in order to use raycasting.
|
|
1030
|
+
*
|
|
1031
|
+
* @abstract
|
|
1032
|
+
* @param {Raycaster} raycaster - The raycaster.
|
|
1033
|
+
* @param {Array<Object>} intersects - An array holding the result of the method.
|
|
1034
|
+
*/
|
|
532
1035
|
raycast( /* raycaster, intersects */ ) {}
|
|
533
1036
|
|
|
1037
|
+
/**
|
|
1038
|
+
* Executes the callback on this 3D object and all descendants.
|
|
1039
|
+
*
|
|
1040
|
+
* Note: Modifying the scene graph inside the callback is discouraged.
|
|
1041
|
+
*
|
|
1042
|
+
* @param {Function} callback - A callback function that allows to process the current 3D object.
|
|
1043
|
+
*/
|
|
534
1044
|
traverse( callback ) {
|
|
535
1045
|
|
|
536
1046
|
callback( this );
|
|
@@ -545,6 +1055,14 @@ class Object3D extends EventDispatcher {
|
|
|
545
1055
|
|
|
546
1056
|
}
|
|
547
1057
|
|
|
1058
|
+
/**
|
|
1059
|
+
* Like {@link Object3D#traverse}, but the callback will only be executed for visible 3D objects.
|
|
1060
|
+
* Descendants of invisible 3D objects are not traversed.
|
|
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
|
+
*/
|
|
548
1066
|
traverseVisible( callback ) {
|
|
549
1067
|
|
|
550
1068
|
if ( this.visible === false ) return;
|
|
@@ -561,6 +1079,13 @@ class Object3D extends EventDispatcher {
|
|
|
561
1079
|
|
|
562
1080
|
}
|
|
563
1081
|
|
|
1082
|
+
/**
|
|
1083
|
+
* Like {@link Object3D#traverse}, but the callback will only be executed for all ancestors.
|
|
1084
|
+
*
|
|
1085
|
+
* Note: Modifying the scene graph inside the callback is discouraged.
|
|
1086
|
+
*
|
|
1087
|
+
* @param {Function} callback - A callback function that allows to process the current 3D object.
|
|
1088
|
+
*/
|
|
564
1089
|
traverseAncestors( callback ) {
|
|
565
1090
|
|
|
566
1091
|
const parent = this.parent;
|
|
@@ -575,6 +1100,10 @@ class Object3D extends EventDispatcher {
|
|
|
575
1100
|
|
|
576
1101
|
}
|
|
577
1102
|
|
|
1103
|
+
/**
|
|
1104
|
+
* Updates the transformation matrix in local space by computing it from the current
|
|
1105
|
+
* position, rotation and scale values.
|
|
1106
|
+
*/
|
|
578
1107
|
updateMatrix() {
|
|
579
1108
|
|
|
580
1109
|
this.matrix.compose( this.position, this.quaternion, this.scale );
|
|
@@ -583,6 +1112,17 @@ class Object3D extends EventDispatcher {
|
|
|
583
1112
|
|
|
584
1113
|
}
|
|
585
1114
|
|
|
1115
|
+
/**
|
|
1116
|
+
* Updates the transformation matrix in world space of this 3D objects and its descendants.
|
|
1117
|
+
*
|
|
1118
|
+
* To ensure correct results, this method also recomputes the 3D object's transformation matrix in
|
|
1119
|
+
* local space. The computation of the local and world matrix can be controlled with the
|
|
1120
|
+
* {@link Object3D#matrixAutoUpdate} and {@link Object3D#matrixWorldAutoUpdate} flags which are both
|
|
1121
|
+
* `true` by default. Set these flags to `false` if you need more control over the update matrix process.
|
|
1122
|
+
*
|
|
1123
|
+
* @param {boolean} [force=false] - When set to `true`, a recomputation of world matrices is forced even
|
|
1124
|
+
* when {@link Object3D#matrixWorldAutoUpdate} is set to `false`.
|
|
1125
|
+
*/
|
|
586
1126
|
updateMatrixWorld( force ) {
|
|
587
1127
|
|
|
588
1128
|
if ( this.matrixAutoUpdate ) this.updateMatrix();
|
|
@@ -623,6 +1163,13 @@ class Object3D extends EventDispatcher {
|
|
|
623
1163
|
|
|
624
1164
|
}
|
|
625
1165
|
|
|
1166
|
+
/**
|
|
1167
|
+
* An alternative version of {@link Object3D#updateMatrixWorld} with more control over the
|
|
1168
|
+
* update of ancestor and descendant nodes.
|
|
1169
|
+
*
|
|
1170
|
+
* @param {boolean} [updateParents=false] Whether ancestor nodes should be updated or not.
|
|
1171
|
+
* @param {boolean} [updateChildren=false] Whether descendant nodes should be updated or not.
|
|
1172
|
+
*/
|
|
626
1173
|
updateWorldMatrix( updateParents, updateChildren ) {
|
|
627
1174
|
|
|
628
1175
|
const parent = this.parent;
|
|
@@ -667,6 +1214,13 @@ class Object3D extends EventDispatcher {
|
|
|
667
1214
|
|
|
668
1215
|
}
|
|
669
1216
|
|
|
1217
|
+
/**
|
|
1218
|
+
* Serializes the 3D object into JSON.
|
|
1219
|
+
*
|
|
1220
|
+
* @param {?(Object|string)} meta - An optional value holding meta information about the serialization.
|
|
1221
|
+
* @return {Object} A JSON object representing the serialized 3D object.
|
|
1222
|
+
* @see {@link ObjectLoader#parse}
|
|
1223
|
+
*/
|
|
670
1224
|
toJSON( meta ) {
|
|
671
1225
|
|
|
672
1226
|
// meta is a string when called from JSON.stringify
|
|
@@ -962,12 +1516,25 @@ class Object3D extends EventDispatcher {
|
|
|
962
1516
|
|
|
963
1517
|
}
|
|
964
1518
|
|
|
1519
|
+
/**
|
|
1520
|
+
* Returns a new 3D object with copied values from this instance.
|
|
1521
|
+
*
|
|
1522
|
+
* @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are also cloned.
|
|
1523
|
+
* @return {Object3D} A clone of this instance.
|
|
1524
|
+
*/
|
|
965
1525
|
clone( recursive ) {
|
|
966
1526
|
|
|
967
1527
|
return new this.constructor().copy( this, recursive );
|
|
968
1528
|
|
|
969
1529
|
}
|
|
970
1530
|
|
|
1531
|
+
/**
|
|
1532
|
+
* Copies the values of the given 3D object to this instance.
|
|
1533
|
+
*
|
|
1534
|
+
* @param {Object3D} source - The 3D object to copy.
|
|
1535
|
+
* @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are cloned.
|
|
1536
|
+
* @return {Object3D} A reference to this instance.
|
|
1537
|
+
*/
|
|
971
1538
|
copy( source, recursive = true ) {
|
|
972
1539
|
|
|
973
1540
|
this.name = source.name;
|
|
@@ -1017,8 +1584,34 @@ class Object3D extends EventDispatcher {
|
|
|
1017
1584
|
|
|
1018
1585
|
}
|
|
1019
1586
|
|
|
1587
|
+
/**
|
|
1588
|
+
* The default up direction for objects, also used as the default
|
|
1589
|
+
* position for {@link DirectionalLight} and {@link HemisphereLight}.
|
|
1590
|
+
*
|
|
1591
|
+
* @static
|
|
1592
|
+
* @type {Vector3}
|
|
1593
|
+
* @default (0,1,0)
|
|
1594
|
+
*/
|
|
1020
1595
|
Object3D.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 );
|
|
1596
|
+
|
|
1597
|
+
/**
|
|
1598
|
+
* The default setting for {@link Object3D#matrixAutoUpdate} for
|
|
1599
|
+
* newly created 3D objects.
|
|
1600
|
+
*
|
|
1601
|
+
* @static
|
|
1602
|
+
* @type {boolean}
|
|
1603
|
+
* @default true
|
|
1604
|
+
*/
|
|
1021
1605
|
Object3D.DEFAULT_MATRIX_AUTO_UPDATE = true;
|
|
1606
|
+
|
|
1607
|
+
/**
|
|
1608
|
+
* The default setting for {@link Object3D#matrixWorldAutoUpdate} for
|
|
1609
|
+
* newly created 3D objects.
|
|
1610
|
+
*
|
|
1611
|
+
* @static
|
|
1612
|
+
* @type {boolean}
|
|
1613
|
+
* @default true
|
|
1614
|
+
*/
|
|
1022
1615
|
Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;
|
|
1023
1616
|
|
|
1024
1617
|
export { Object3D };
|