@plastic-software/three 0.174.0 → 0.175.1
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 +10744 -1476
- package/build/three.core.js +9633 -1096
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +918 -189
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +4 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2658 -1697
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2654 -1709
- 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 +93 -39
- 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 +171 -48
- 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 +71 -29
- 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 +41 -3
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +35 -0
- package/examples/jsm/loaders/DDSLoader.js +24 -0
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +42 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +218 -5
- 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 +86 -18
- 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 +38 -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 +81 -61
- 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 +79 -2
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +108 -72
- package/examples/jsm/misc/VolumeSlice.js +88 -45
- 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 +70 -0
- 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 +131 -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 +266 -133
- 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/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +1 -1
- package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
- package/examples/jsm/tsl/math/Bayer.js +14 -1
- package/examples/jsm/tsl/utils/Raymarching.js +4 -2
- 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 +1 -1
- package/src/Three.TSL.js +3 -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 +168 -18
- 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/AudioAnalyser.js +1 -1
- package/src/audio/AudioListener.js +2 -2
- package/src/audio/PositionalAudio.js +5 -5
- package/src/constants.js +1432 -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/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 +23 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +166 -7
- 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 +16 -1
- package/src/extras/Earcut.js +3 -781
- package/src/extras/ImageUtils.js +3 -2
- package/src/extras/PMREMGenerator.js +22 -17
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +1 -1
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/ConeGeometry.js +2 -2
- package/src/geometries/CylinderGeometry.js +2 -2
- package/src/geometries/ExtrudeGeometry.js +71 -39
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/lights/LightShadow.js +1 -1
- package/src/lights/webgpu/IESSpotLight.js +1 -1
- 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 +4 -6
- 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 +58 -1
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +6 -2
- package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
- package/src/loaders/nodes/NodeObjectLoader.js +3 -3
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +18 -3
- 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 +1 -1
- package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +7 -3
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
- package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
- package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
- package/src/math/Color.js +1 -1
- package/src/math/MathUtils.js +223 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/accessors/BatchNode.js +8 -8
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +1 -1
- package/src/nodes/accessors/InstanceNode.js +5 -5
- package/src/nodes/accessors/InstancedMeshNode.js +1 -1
- package/src/nodes/accessors/MorphNode.js +27 -23
- package/src/nodes/accessors/Normal.js +1 -1
- package/src/nodes/accessors/Object3DNode.js +12 -12
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +46 -37
- package/src/nodes/accessors/StorageBufferNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +25 -5
- package/src/nodes/accessors/TextureSizeNode.js +1 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/CodeNode.js +4 -4
- package/src/nodes/code/ExpressionNode.js +4 -4
- package/src/nodes/code/FunctionCallNode.js +23 -3
- package/src/nodes/code/ScriptableNode.js +4 -4
- package/src/nodes/code/ScriptableValueNode.js +2 -2
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/CacheNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/InputNode.js +2 -2
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +86 -14
- package/src/nodes/core/StackNode.js +5 -5
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +2 -2
- package/src/nodes/core/VarNode.js +2 -8
- package/src/nodes/core/VaryingNode.js +3 -3
- package/src/nodes/display/BlendModes.js +4 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PosterizeNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +3 -3
- package/src/nodes/display/ViewportDepthNode.js +2 -2
- package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
- package/src/nodes/display/ViewportTextureNode.js +4 -4
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +30 -2
- package/src/nodes/lighting/AnalyticLightNode.js +9 -1
- package/src/nodes/lighting/LightsNode.js +3 -3
- package/src/nodes/lighting/ShadowNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +20 -3
- package/src/nodes/math/MathNode.js +83 -78
- package/src/nodes/math/OperatorNode.js +171 -82
- package/src/nodes/pmrem/PMREMNode.js +4 -4
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +115 -12
- package/src/nodes/utils/ArrayElementNode.js +3 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/EquirectUVNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +27 -2
- package/src/nodes/utils/LoopNode.js +58 -28
- package/src/nodes/utils/MaxMipLevelNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -2
- package/src/nodes/utils/RemapNode.js +6 -6
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/src/objects/BatchedMesh.js +4 -4
- package/src/objects/InstancedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Skeleton.js +1 -1
- 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 +617 -79
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Attributes.js +2 -2
- package/src/renderers/common/Backend.js +12 -3
- package/src/renderers/common/Background.js +1 -0
- package/src/renderers/common/Color4.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/PostProcessing.js +2 -0
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderList.js +2 -2
- package/src/renderers/common/RenderObject.js +1 -1
- package/src/renderers/common/RenderObjects.js +2 -2
- package/src/renderers/common/Renderer.js +52 -31
- package/src/renderers/common/XRManager.js +333 -10
- package/src/renderers/common/extras/PMREMGenerator.js +6 -0
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +10 -1
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -1
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +82 -0
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +22 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +8 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +31 -11
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/triplanar_fragment.glsl.js +20 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +52 -7
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +25 -6
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +19 -7
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
- package/src/renderers/shaders/UniformsLib.js +6 -5
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLProgram.js +25 -5
- package/src/renderers/webgl/WebGLPrograms.js +21 -7
- package/src/renderers/webgl/WebGLState.js +9 -9
- package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +128 -87
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
- package/src/renderers/webgpu/WebGPURenderer.js +17 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +173 -1
- package/src/scenes/Scene.js +2 -1
- 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 +59 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +5 -5
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -7,8 +7,28 @@ import {
|
|
|
7
7
|
Vector3
|
|
8
8
|
} from 'three';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Fires when the camera has been transformed by the controls.
|
|
12
|
+
*
|
|
13
|
+
* @event TrackballControls#change
|
|
14
|
+
* @type {Object}
|
|
15
|
+
*/
|
|
10
16
|
const _changeEvent = { type: 'change' };
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Fires when an interaction was initiated.
|
|
20
|
+
*
|
|
21
|
+
* @event TrackballControls#start
|
|
22
|
+
* @type {Object}
|
|
23
|
+
*/
|
|
11
24
|
const _startEvent = { type: 'start' };
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Fires when an interaction has finished.
|
|
28
|
+
*
|
|
29
|
+
* @event TrackballControls#end
|
|
30
|
+
* @type {Object}
|
|
31
|
+
*/
|
|
12
32
|
const _endEvent = { type: 'end' };
|
|
13
33
|
|
|
14
34
|
const _EPS = 0.000001;
|
|
@@ -25,45 +45,168 @@ const _objectUpDirection = new Vector3();
|
|
|
25
45
|
const _objectSidewaysDirection = new Vector3();
|
|
26
46
|
const _moveDirection = new Vector3();
|
|
27
47
|
|
|
48
|
+
/**
|
|
49
|
+
* This class is similar to {@link OrbitControls}. However, it does not maintain a constant camera
|
|
50
|
+
* `up` vector. That means if the camera orbits over the “north” and “south” poles, it does not flip
|
|
51
|
+
* to stay "right side up".
|
|
52
|
+
*
|
|
53
|
+
* @augments Controls
|
|
54
|
+
*/
|
|
28
55
|
class TrackballControls extends Controls {
|
|
29
56
|
|
|
57
|
+
/**
|
|
58
|
+
* Constructs a new controls instance.
|
|
59
|
+
*
|
|
60
|
+
* @param {Object3D} object - The object that is managed by the controls.
|
|
61
|
+
* @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
|
|
62
|
+
*/
|
|
30
63
|
constructor( object, domElement = null ) {
|
|
31
64
|
|
|
32
65
|
super( object, domElement );
|
|
33
66
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
67
|
+
/**
|
|
68
|
+
* Represents the properties of the screen. Automatically set when `handleResize()` is called.
|
|
69
|
+
*
|
|
70
|
+
* @type {Object}
|
|
71
|
+
* @readonly
|
|
72
|
+
*/
|
|
38
73
|
this.screen = { left: 0, top: 0, width: 0, height: 0 };
|
|
39
74
|
|
|
75
|
+
/**
|
|
76
|
+
* The rotation speed.
|
|
77
|
+
*
|
|
78
|
+
* @type {number}
|
|
79
|
+
* @default 1
|
|
80
|
+
*/
|
|
40
81
|
this.rotateSpeed = 1.0;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* The zoom speed.
|
|
85
|
+
*
|
|
86
|
+
* @type {number}
|
|
87
|
+
* @default 1.2
|
|
88
|
+
*/
|
|
41
89
|
this.zoomSpeed = 1.2;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* The pan speed.
|
|
93
|
+
*
|
|
94
|
+
* @type {number}
|
|
95
|
+
* @default 0.3
|
|
96
|
+
*/
|
|
42
97
|
this.panSpeed = 0.3;
|
|
43
98
|
|
|
99
|
+
/**
|
|
100
|
+
* Whether rotation is disabled or not.
|
|
101
|
+
*
|
|
102
|
+
* @type {boolean}
|
|
103
|
+
* @default false
|
|
104
|
+
*/
|
|
44
105
|
this.noRotate = false;
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Whether zooming is disabled or not.
|
|
109
|
+
*
|
|
110
|
+
* @type {boolean}
|
|
111
|
+
* @default false
|
|
112
|
+
*/
|
|
45
113
|
this.noZoom = false;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Whether panning is disabled or not.
|
|
117
|
+
*
|
|
118
|
+
* @type {boolean}
|
|
119
|
+
* @default false
|
|
120
|
+
*/
|
|
46
121
|
this.noPan = false;
|
|
47
122
|
|
|
123
|
+
/**
|
|
124
|
+
* Whether damping is disabled or not.
|
|
125
|
+
*
|
|
126
|
+
* @type {boolean}
|
|
127
|
+
* @default false
|
|
128
|
+
*/
|
|
48
129
|
this.staticMoving = false;
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Defines the intensity of damping. Only considered if `staticMoving` is set to `false`.
|
|
133
|
+
*
|
|
134
|
+
* @type {number}
|
|
135
|
+
* @default 0.2
|
|
136
|
+
*/
|
|
49
137
|
this.dynamicDampingFactor = 0.2;
|
|
50
138
|
|
|
139
|
+
/**
|
|
140
|
+
* How far you can dolly in (perspective camera only).
|
|
141
|
+
*
|
|
142
|
+
* @type {number}
|
|
143
|
+
* @default 0
|
|
144
|
+
*/
|
|
51
145
|
this.minDistance = 0;
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* How far you can dolly out (perspective camera only).
|
|
149
|
+
*
|
|
150
|
+
* @type {number}
|
|
151
|
+
* @default Infinity
|
|
152
|
+
*/
|
|
52
153
|
this.maxDistance = Infinity;
|
|
53
154
|
|
|
155
|
+
/**
|
|
156
|
+
* How far you can zoom in (orthographic camera only).
|
|
157
|
+
*
|
|
158
|
+
* @type {number}
|
|
159
|
+
* @default 0
|
|
160
|
+
*/
|
|
54
161
|
this.minZoom = 0;
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* How far you can zoom out (orthographic camera only).
|
|
165
|
+
*
|
|
166
|
+
* @type {number}
|
|
167
|
+
* @default Infinity
|
|
168
|
+
*/
|
|
55
169
|
this.maxZoom = Infinity;
|
|
56
170
|
|
|
171
|
+
/**
|
|
172
|
+
* This array holds keycodes for controlling interactions.
|
|
173
|
+
*
|
|
174
|
+
* - When the first defined key is pressed, all mouse interactions (left, middle, right) performs orbiting.
|
|
175
|
+
* - When the second defined key is pressed, all mouse interactions (left, middle, right) performs zooming.
|
|
176
|
+
* - When the third defined key is pressed, all mouse interactions (left, middle, right) performs panning.
|
|
177
|
+
*
|
|
178
|
+
* Default is *KeyA, KeyS, KeyD* which represents A, S, D.
|
|
179
|
+
*
|
|
180
|
+
* @type {Array<string>}
|
|
181
|
+
*/
|
|
57
182
|
this.keys = [ 'KeyA' /*A*/, 'KeyS' /*S*/, 'KeyD' /*D*/ ];
|
|
58
183
|
|
|
184
|
+
/**
|
|
185
|
+
* This object contains references to the mouse actions used by the controls.
|
|
186
|
+
*
|
|
187
|
+
* ```js
|
|
188
|
+
* controls.mouseButtons = {
|
|
189
|
+
* LEFT: THREE.MOUSE.ROTATE,
|
|
190
|
+
* MIDDLE: THREE.MOUSE.DOLLY,
|
|
191
|
+
* RIGHT: THREE.MOUSE.PAN
|
|
192
|
+
* }
|
|
193
|
+
* ```
|
|
194
|
+
* @type {Object}
|
|
195
|
+
*/
|
|
59
196
|
this.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };
|
|
60
|
-
this.state = _STATE.NONE;
|
|
61
|
-
this.keyState = _STATE.NONE;
|
|
62
197
|
|
|
198
|
+
/**
|
|
199
|
+
* The focus point of the controls.
|
|
200
|
+
*
|
|
201
|
+
* @type {Vector3}
|
|
202
|
+
*/
|
|
63
203
|
this.target = new Vector3();
|
|
64
204
|
|
|
65
205
|
// internals
|
|
66
206
|
|
|
207
|
+
this.state = _STATE.NONE;
|
|
208
|
+
this.keyState = _STATE.NONE;
|
|
209
|
+
|
|
67
210
|
this._lastPosition = new Vector3();
|
|
68
211
|
this._lastZoom = 1;
|
|
69
212
|
this._touchZoomDistanceStart = 0;
|
|
@@ -114,7 +257,7 @@ class TrackballControls extends Controls {
|
|
|
114
257
|
|
|
115
258
|
if ( domElement !== null ) {
|
|
116
259
|
|
|
117
|
-
this.connect();
|
|
260
|
+
this.connect( domElement );
|
|
118
261
|
|
|
119
262
|
this.handleResize();
|
|
120
263
|
|
|
@@ -125,7 +268,9 @@ class TrackballControls extends Controls {
|
|
|
125
268
|
|
|
126
269
|
}
|
|
127
270
|
|
|
128
|
-
connect() {
|
|
271
|
+
connect( element ) {
|
|
272
|
+
|
|
273
|
+
super.connect( element );
|
|
129
274
|
|
|
130
275
|
window.addEventListener( 'keydown', this._onKeyDown );
|
|
131
276
|
window.addEventListener( 'keyup', this._onKeyUp );
|
|
@@ -161,6 +306,9 @@ class TrackballControls extends Controls {
|
|
|
161
306
|
|
|
162
307
|
}
|
|
163
308
|
|
|
309
|
+
/**
|
|
310
|
+
* Must be called if the application window is resized.
|
|
311
|
+
*/
|
|
164
312
|
handleResize() {
|
|
165
313
|
|
|
166
314
|
const box = this.domElement.getBoundingClientRect();
|
|
@@ -233,6 +381,9 @@ class TrackballControls extends Controls {
|
|
|
233
381
|
|
|
234
382
|
}
|
|
235
383
|
|
|
384
|
+
/**
|
|
385
|
+
* Resets the controls to its initial state.
|
|
386
|
+
*/
|
|
236
387
|
reset() {
|
|
237
388
|
|
|
238
389
|
this.state = _STATE.NONE;
|
|
@@ -32,13 +32,55 @@ const _unit = {
|
|
|
32
32
|
Z: new Vector3( 0, 0, 1 )
|
|
33
33
|
};
|
|
34
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Fires if any type of change (object or property change) is performed. Property changes
|
|
37
|
+
* are separate events you can add event listeners to. The event type is "propertyname-changed".
|
|
38
|
+
*
|
|
39
|
+
* @event TransformControls#change
|
|
40
|
+
* @type {Object}
|
|
41
|
+
*/
|
|
35
42
|
const _changeEvent = { type: 'change' };
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Fires if a pointer (mouse/touch) becomes active.
|
|
46
|
+
*
|
|
47
|
+
* @event TransformControls#mouseDown
|
|
48
|
+
* @type {Object}
|
|
49
|
+
*/
|
|
36
50
|
const _mouseDownEvent = { type: 'mouseDown', mode: null };
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Fires if a pointer (mouse/touch) is no longer active.
|
|
54
|
+
*
|
|
55
|
+
* @event TransformControls#mouseUp
|
|
56
|
+
* @type {Object}
|
|
57
|
+
*/
|
|
37
58
|
const _mouseUpEvent = { type: 'mouseUp', mode: null };
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Fires if the controlled 3D object is changed.
|
|
62
|
+
*
|
|
63
|
+
* @event TransformControls#objectChange
|
|
64
|
+
* @type {Object}
|
|
65
|
+
*/
|
|
38
66
|
const _objectChangeEvent = { type: 'objectChange' };
|
|
39
67
|
|
|
68
|
+
/**
|
|
69
|
+
* This class can be used to transform objects in 3D space by adapting a similar interaction model
|
|
70
|
+
* of DCC tools like Blender. Unlike other controls, it is not intended to transform the scene's camera.
|
|
71
|
+
*
|
|
72
|
+
* `TransformControls` expects that its attached 3D object is part of the scene graph.
|
|
73
|
+
*
|
|
74
|
+
* @augments Controls
|
|
75
|
+
*/
|
|
40
76
|
class TransformControls extends Controls {
|
|
41
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Constructs a new controls instance.
|
|
80
|
+
*
|
|
81
|
+
* @param {Camera} camera - The camera of the rendered scene.
|
|
82
|
+
* @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
|
|
83
|
+
*/
|
|
42
84
|
constructor( camera, domElement = null ) {
|
|
43
85
|
|
|
44
86
|
super( undefined, domElement );
|
|
@@ -96,25 +138,170 @@ class TransformControls extends Controls {
|
|
|
96
138
|
// Setting the defined property will automatically trigger change event
|
|
97
139
|
// Defined properties are passed down to gizmo and plane
|
|
98
140
|
|
|
141
|
+
/**
|
|
142
|
+
* The camera of the rendered scene.
|
|
143
|
+
*
|
|
144
|
+
* @name TransformControls#camera
|
|
145
|
+
* @type {Camera}
|
|
146
|
+
*/
|
|
99
147
|
defineProperty( 'camera', camera );
|
|
100
148
|
defineProperty( 'object', undefined );
|
|
101
149
|
defineProperty( 'enabled', true );
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* The current transformation axis.
|
|
153
|
+
*
|
|
154
|
+
* @name TransformControls#axis
|
|
155
|
+
* @type {string}
|
|
156
|
+
*/
|
|
102
157
|
defineProperty( 'axis', null );
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* The current transformation axis.
|
|
161
|
+
*
|
|
162
|
+
* @name TransformControls#mode
|
|
163
|
+
* @type {('translate'|'rotate'|'scale')}
|
|
164
|
+
* @default 'translate'
|
|
165
|
+
*/
|
|
103
166
|
defineProperty( 'mode', 'translate' );
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* By default, 3D objects are continuously translated. If you set this property to a numeric
|
|
170
|
+
* value (world units), you can define in which steps the 3D object should be translated.
|
|
171
|
+
*
|
|
172
|
+
* @name TransformControls#translationSnap
|
|
173
|
+
* @type {?number}
|
|
174
|
+
* @default null
|
|
175
|
+
*/
|
|
104
176
|
defineProperty( 'translationSnap', null );
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* By default, 3D objects are continuously rotated. If you set this property to a numeric
|
|
180
|
+
* value (radians), you can define in which steps the 3D object should be rotated.
|
|
181
|
+
*
|
|
182
|
+
* @name TransformControls#rotationSnap
|
|
183
|
+
* @type {?number}
|
|
184
|
+
* @default null
|
|
185
|
+
*/
|
|
105
186
|
defineProperty( 'rotationSnap', null );
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* By default, 3D objects are continuously scaled. If you set this property to a numeric
|
|
190
|
+
* value, you can define in which steps the 3D object should be scaled.
|
|
191
|
+
*
|
|
192
|
+
* @name TransformControls#scaleSnap
|
|
193
|
+
* @type {?number}
|
|
194
|
+
* @default null
|
|
195
|
+
*/
|
|
106
196
|
defineProperty( 'scaleSnap', null );
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Defines in which coordinate space transformations should be performed.
|
|
200
|
+
*
|
|
201
|
+
* @name TransformControls#space
|
|
202
|
+
* @type {('world'|'local')}
|
|
203
|
+
* @default 'world'
|
|
204
|
+
*/
|
|
107
205
|
defineProperty( 'space', 'world' );
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* The size of the helper UI (axes/planes).
|
|
209
|
+
*
|
|
210
|
+
* @name TransformControls#size
|
|
211
|
+
* @type {number}
|
|
212
|
+
* @default 1
|
|
213
|
+
*/
|
|
108
214
|
defineProperty( 'size', 1 );
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Whether dragging is currently performed or not.
|
|
218
|
+
*
|
|
219
|
+
* @name TransformControls#dragging
|
|
220
|
+
* @type {boolean}
|
|
221
|
+
* @readonly
|
|
222
|
+
* @default false
|
|
223
|
+
*/
|
|
109
224
|
defineProperty( 'dragging', false );
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Whether the x-axis helper should be visible or not.
|
|
228
|
+
*
|
|
229
|
+
* @name TransformControls#showX
|
|
230
|
+
* @type {boolean}
|
|
231
|
+
* @default true
|
|
232
|
+
*/
|
|
110
233
|
defineProperty( 'showX', true );
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Whether the y-axis helper should be visible or not.
|
|
237
|
+
*
|
|
238
|
+
* @name TransformControls#showY
|
|
239
|
+
* @type {boolean}
|
|
240
|
+
* @default true
|
|
241
|
+
*/
|
|
111
242
|
defineProperty( 'showY', true );
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Whether the z-axis helper should be visible or not.
|
|
246
|
+
*
|
|
247
|
+
* @name TransformControls#showZ
|
|
248
|
+
* @type {boolean}
|
|
249
|
+
* @default true
|
|
250
|
+
*/
|
|
112
251
|
defineProperty( 'showZ', true );
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* The minimum allowed X position during translation.
|
|
255
|
+
*
|
|
256
|
+
* @name TransformControls#minX
|
|
257
|
+
* @type {number}
|
|
258
|
+
* @default -Infinity
|
|
259
|
+
*/
|
|
113
260
|
defineProperty( 'minX', - Infinity );
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* The maximum allowed X position during translation.
|
|
264
|
+
*
|
|
265
|
+
* @name TransformControls#maxX
|
|
266
|
+
* @type {number}
|
|
267
|
+
* @default Infinity
|
|
268
|
+
*/
|
|
114
269
|
defineProperty( 'maxX', Infinity );
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* The minimum allowed y position during translation.
|
|
273
|
+
*
|
|
274
|
+
* @name TransformControls#minY
|
|
275
|
+
* @type {number}
|
|
276
|
+
* @default -Infinity
|
|
277
|
+
*/
|
|
115
278
|
defineProperty( 'minY', - Infinity );
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* The maximum allowed Y position during translation.
|
|
282
|
+
*
|
|
283
|
+
* @name TransformControls#maxY
|
|
284
|
+
* @type {number}
|
|
285
|
+
* @default Infinity
|
|
286
|
+
*/
|
|
116
287
|
defineProperty( 'maxY', Infinity );
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* The minimum allowed z position during translation.
|
|
291
|
+
*
|
|
292
|
+
* @name TransformControls#minZ
|
|
293
|
+
* @type {number}
|
|
294
|
+
* @default -Infinity
|
|
295
|
+
*/
|
|
117
296
|
defineProperty( 'minZ', - Infinity );
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* The maximum allowed Z position during translation.
|
|
300
|
+
*
|
|
301
|
+
* @name TransformControls#maxZ
|
|
302
|
+
* @type {number}
|
|
303
|
+
* @default Infinity
|
|
304
|
+
*/
|
|
118
305
|
defineProperty( 'maxZ', Infinity );
|
|
119
306
|
|
|
120
307
|
// Reusable utility variables
|
|
@@ -171,13 +358,15 @@ class TransformControls extends Controls {
|
|
|
171
358
|
|
|
172
359
|
if ( domElement !== null ) {
|
|
173
360
|
|
|
174
|
-
this.connect();
|
|
361
|
+
this.connect( domElement );
|
|
175
362
|
|
|
176
363
|
}
|
|
177
364
|
|
|
178
365
|
}
|
|
179
366
|
|
|
180
|
-
connect() {
|
|
367
|
+
connect( element ) {
|
|
368
|
+
|
|
369
|
+
super.connect( element );
|
|
181
370
|
|
|
182
371
|
this.domElement.addEventListener( 'pointerdown', this._onPointerDown );
|
|
183
372
|
this.domElement.addEventListener( 'pointermove', this._onPointerHover );
|
|
@@ -198,6 +387,12 @@ class TransformControls extends Controls {
|
|
|
198
387
|
|
|
199
388
|
}
|
|
200
389
|
|
|
390
|
+
/**
|
|
391
|
+
* Returns the visual representation of the controls. Add the helper to your scene to
|
|
392
|
+
* visually transform the attached 3D object.
|
|
393
|
+
*
|
|
394
|
+
* @return {TransformControlsRoot} The helper.
|
|
395
|
+
*/
|
|
201
396
|
getHelper() {
|
|
202
397
|
|
|
203
398
|
return this._root;
|
|
@@ -550,7 +745,12 @@ class TransformControls extends Controls {
|
|
|
550
745
|
|
|
551
746
|
}
|
|
552
747
|
|
|
553
|
-
|
|
748
|
+
/**
|
|
749
|
+
* Sets the 3D object that should be transformed and ensures the controls UI is visible.
|
|
750
|
+
*
|
|
751
|
+
* @param {Object3D} object - The 3D object that should be transformed.
|
|
752
|
+
* @return {TransformControls} A reference to this controls.
|
|
753
|
+
*/
|
|
554
754
|
attach( object ) {
|
|
555
755
|
|
|
556
756
|
this.object = object;
|
|
@@ -560,7 +760,11 @@ class TransformControls extends Controls {
|
|
|
560
760
|
|
|
561
761
|
}
|
|
562
762
|
|
|
563
|
-
|
|
763
|
+
/**
|
|
764
|
+
* Removes the current 3D object from the controls and makes the helper UI invisible.
|
|
765
|
+
*
|
|
766
|
+
* @return {TransformControls} A reference to this controls.
|
|
767
|
+
*/
|
|
564
768
|
detach() {
|
|
565
769
|
|
|
566
770
|
this.object = undefined;
|
|
@@ -572,6 +776,9 @@ class TransformControls extends Controls {
|
|
|
572
776
|
|
|
573
777
|
}
|
|
574
778
|
|
|
779
|
+
/**
|
|
780
|
+
* Resets the object's position, rotation and scale to when the current transform began.
|
|
781
|
+
*/
|
|
575
782
|
reset() {
|
|
576
783
|
|
|
577
784
|
if ( ! this.enabled ) return;
|
|
@@ -591,50 +798,89 @@ class TransformControls extends Controls {
|
|
|
591
798
|
|
|
592
799
|
}
|
|
593
800
|
|
|
801
|
+
/**
|
|
802
|
+
* Returns the raycaster that is used for user interaction. This object is shared between all
|
|
803
|
+
* instances of `TransformControls`.
|
|
804
|
+
*
|
|
805
|
+
* @returns {Raycaster} The internal raycaster.
|
|
806
|
+
*/
|
|
594
807
|
getRaycaster() {
|
|
595
808
|
|
|
596
809
|
return _raycaster;
|
|
597
810
|
|
|
598
811
|
}
|
|
599
812
|
|
|
600
|
-
|
|
601
|
-
|
|
813
|
+
/**
|
|
814
|
+
* Returns the transformation mode.
|
|
815
|
+
*
|
|
816
|
+
* @returns {'translate'|'rotate'|'scale'} The transformation mode.
|
|
817
|
+
*/
|
|
602
818
|
getMode() {
|
|
603
819
|
|
|
604
820
|
return this.mode;
|
|
605
821
|
|
|
606
822
|
}
|
|
607
823
|
|
|
824
|
+
/**
|
|
825
|
+
* Sets the given transformation mode.
|
|
826
|
+
*
|
|
827
|
+
* @param {'translate'|'rotate'|'scale'} mode - The transformation mode to set.
|
|
828
|
+
*/
|
|
608
829
|
setMode( mode ) {
|
|
609
830
|
|
|
610
831
|
this.mode = mode;
|
|
611
832
|
|
|
612
833
|
}
|
|
613
834
|
|
|
835
|
+
/**
|
|
836
|
+
* Sets the translation snap.
|
|
837
|
+
*
|
|
838
|
+
* @param {?number} translationSnap - The translation snap to set.
|
|
839
|
+
*/
|
|
614
840
|
setTranslationSnap( translationSnap ) {
|
|
615
841
|
|
|
616
842
|
this.translationSnap = translationSnap;
|
|
617
843
|
|
|
618
844
|
}
|
|
619
845
|
|
|
846
|
+
/**
|
|
847
|
+
* Sets the rotation snap.
|
|
848
|
+
*
|
|
849
|
+
* @param {?number} rotationSnap - The rotation snap to set.
|
|
850
|
+
*/
|
|
620
851
|
setRotationSnap( rotationSnap ) {
|
|
621
852
|
|
|
622
853
|
this.rotationSnap = rotationSnap;
|
|
623
854
|
|
|
624
855
|
}
|
|
625
856
|
|
|
857
|
+
/**
|
|
858
|
+
* Sets the scale snap.
|
|
859
|
+
*
|
|
860
|
+
* @param {?number} scaleSnap - The scale snap to set.
|
|
861
|
+
*/
|
|
626
862
|
setScaleSnap( scaleSnap ) {
|
|
627
863
|
|
|
628
864
|
this.scaleSnap = scaleSnap;
|
|
629
865
|
|
|
630
866
|
}
|
|
631
867
|
|
|
868
|
+
/**
|
|
869
|
+
* Sets the size of the helper UI.
|
|
870
|
+
*
|
|
871
|
+
* @param {number} size - The size to set.
|
|
872
|
+
*/
|
|
632
873
|
setSize( size ) {
|
|
633
874
|
|
|
634
875
|
this.size = size;
|
|
635
876
|
|
|
636
877
|
}
|
|
637
878
|
|
|
879
|
+
/**
|
|
880
|
+
* Sets the coordinate space in which transformations are applied.
|
|
881
|
+
*
|
|
882
|
+
* @param {'world'|'local'} space - The space to set.
|
|
883
|
+
*/
|
|
638
884
|
setSpace( space ) {
|
|
639
885
|
|
|
640
886
|
this.space = space;
|