@plastic-software/three 0.174.0 → 0.175.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 +10655 -1446
- package/build/three.core.js +9626 -1094
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +834 -157
- 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 +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/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 +53 -0
- 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/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 +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
|
@@ -31,18 +31,79 @@ const STATE = {
|
|
|
31
31
|
ROTATE: 1
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
+
/**
|
|
35
|
+
* This class can be used to provide a drag'n'drop interaction.
|
|
36
|
+
*
|
|
37
|
+
* ```js
|
|
38
|
+
* const controls = new DragControls( objects, camera, renderer.domElement );
|
|
39
|
+
*
|
|
40
|
+
* // add event listener to highlight dragged objects
|
|
41
|
+
* controls.addEventListener( 'dragstart', function ( event ) {
|
|
42
|
+
*
|
|
43
|
+
* event.object.material.emissive.set( 0xaaaaaa );
|
|
44
|
+
*
|
|
45
|
+
* } );
|
|
46
|
+
*
|
|
47
|
+
* controls.addEventListener( 'dragend', function ( event ) {
|
|
48
|
+
*
|
|
49
|
+
* event.object.material.emissive.set( 0x000000 );
|
|
50
|
+
*
|
|
51
|
+
* } );
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* @augments Controls
|
|
55
|
+
*/
|
|
34
56
|
class DragControls extends Controls {
|
|
35
57
|
|
|
58
|
+
/**
|
|
59
|
+
* Constructs a new controls instance.
|
|
60
|
+
*
|
|
61
|
+
* @param {Array<Object3D>} objects - An array of draggable 3D objects.
|
|
62
|
+
* @param {Camera} camera - The camera of the rendered scene.
|
|
63
|
+
* @param {?HTMLDOMElement} [domElement=null] - The HTML DOM element used for event listeners.
|
|
64
|
+
*/
|
|
36
65
|
constructor( objects, camera, domElement = null ) {
|
|
37
66
|
|
|
38
67
|
super( camera, domElement );
|
|
39
68
|
|
|
69
|
+
/**
|
|
70
|
+
* An array of draggable 3D objects.
|
|
71
|
+
*
|
|
72
|
+
* @type {Array<Object3D>}
|
|
73
|
+
*/
|
|
40
74
|
this.objects = objects;
|
|
41
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Whether children of draggable objects can be dragged independently from their parent.
|
|
78
|
+
*
|
|
79
|
+
* @type {boolean}
|
|
80
|
+
* @default true
|
|
81
|
+
*/
|
|
42
82
|
this.recursive = true;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* This option only works if the `objects` array contains a single draggable group object.
|
|
86
|
+
* If set to `true`, the controls does not transform individual objects but the entire group.
|
|
87
|
+
*
|
|
88
|
+
* @type {boolean}
|
|
89
|
+
* @default false
|
|
90
|
+
*/
|
|
43
91
|
this.transformGroup = false;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* The speed at which the object will rotate when dragged in `rotate` mode.
|
|
95
|
+
* The higher the number the faster the rotation.
|
|
96
|
+
*
|
|
97
|
+
* @type {number}
|
|
98
|
+
* @default 1
|
|
99
|
+
*/
|
|
44
100
|
this.rotateSpeed = 1;
|
|
45
101
|
|
|
102
|
+
/**
|
|
103
|
+
* The raycaster used for detecting 3D objects.
|
|
104
|
+
*
|
|
105
|
+
* @type {Raycaster}
|
|
106
|
+
*/
|
|
46
107
|
this.raycaster = new Raycaster();
|
|
47
108
|
|
|
48
109
|
// interaction
|
|
@@ -61,13 +122,15 @@ class DragControls extends Controls {
|
|
|
61
122
|
|
|
62
123
|
if ( domElement !== null ) {
|
|
63
124
|
|
|
64
|
-
this.connect();
|
|
125
|
+
this.connect( domElement );
|
|
65
126
|
|
|
66
127
|
}
|
|
67
128
|
|
|
68
129
|
}
|
|
69
130
|
|
|
70
|
-
connect() {
|
|
131
|
+
connect( element ) {
|
|
132
|
+
|
|
133
|
+
super.connect( element );
|
|
71
134
|
|
|
72
135
|
this.domElement.addEventListener( 'pointermove', this._onPointerMove );
|
|
73
136
|
this.domElement.addEventListener( 'pointerdown', this._onPointerDown );
|
|
@@ -407,4 +470,32 @@ function findGroup( obj, group = null ) {
|
|
|
407
470
|
|
|
408
471
|
}
|
|
409
472
|
|
|
473
|
+
/**
|
|
474
|
+
* Fires when the user drags a 3D object.
|
|
475
|
+
*
|
|
476
|
+
* @event DragControls#drag
|
|
477
|
+
* @type {Object}
|
|
478
|
+
*/
|
|
479
|
+
|
|
480
|
+
/**
|
|
481
|
+
* Fires when the user has finished dragging a 3D object.
|
|
482
|
+
*
|
|
483
|
+
* @event DragControls#dragend
|
|
484
|
+
* @type {Object}
|
|
485
|
+
*/
|
|
486
|
+
|
|
487
|
+
/**
|
|
488
|
+
* Fires when the pointer is moved onto a 3D object, or onto one of its children.
|
|
489
|
+
*
|
|
490
|
+
* @event DragControls#hoveron
|
|
491
|
+
* @type {Object}
|
|
492
|
+
*/
|
|
493
|
+
|
|
494
|
+
/**
|
|
495
|
+
* Fires when the pointer is moved out of a 3D object.
|
|
496
|
+
*
|
|
497
|
+
* @event DragControls#hoveroff
|
|
498
|
+
* @type {Object}
|
|
499
|
+
*/
|
|
500
|
+
|
|
410
501
|
export { DragControls };
|
|
@@ -10,31 +10,127 @@ const _spherical = new Spherical();
|
|
|
10
10
|
const _target = new Vector3();
|
|
11
11
|
const _targetPosition = new Vector3();
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* This class is an alternative implementation of {@link FlyControls}.
|
|
15
|
+
*
|
|
16
|
+
* @augments Controls
|
|
17
|
+
*/
|
|
13
18
|
class FirstPersonControls extends Controls {
|
|
14
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new controls instance.
|
|
22
|
+
*
|
|
23
|
+
* @param {Object3D} object - The object that is managed by the controls.
|
|
24
|
+
* @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
|
|
25
|
+
*/
|
|
15
26
|
constructor( object, domElement = null ) {
|
|
16
27
|
|
|
17
28
|
super( object, domElement );
|
|
18
29
|
|
|
19
|
-
|
|
20
|
-
|
|
30
|
+
/**
|
|
31
|
+
* The movement speed.
|
|
32
|
+
*
|
|
33
|
+
* @type {number}
|
|
34
|
+
* @default 1
|
|
35
|
+
*/
|
|
21
36
|
this.movementSpeed = 1.0;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* The look around speed.
|
|
40
|
+
*
|
|
41
|
+
* @type {number}
|
|
42
|
+
* @default 0.005
|
|
43
|
+
*/
|
|
22
44
|
this.lookSpeed = 0.005;
|
|
23
45
|
|
|
46
|
+
/**
|
|
47
|
+
* Whether it's possible to vertically look around or not.
|
|
48
|
+
*
|
|
49
|
+
* @type {boolean}
|
|
50
|
+
* @default true
|
|
51
|
+
*/
|
|
24
52
|
this.lookVertical = true;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Whether the camera is automatically moved forward or not.
|
|
56
|
+
*
|
|
57
|
+
* @type {boolean}
|
|
58
|
+
* @default false
|
|
59
|
+
*/
|
|
25
60
|
this.autoForward = false;
|
|
26
61
|
|
|
62
|
+
/**
|
|
63
|
+
* Whether it's possible to look around or not.
|
|
64
|
+
*
|
|
65
|
+
* @type {boolean}
|
|
66
|
+
* @default true
|
|
67
|
+
*/
|
|
27
68
|
this.activeLook = true;
|
|
28
69
|
|
|
70
|
+
/**
|
|
71
|
+
* Whether or not the camera's height influences the forward movement speed.
|
|
72
|
+
* Use the properties `heightCoef`, `heightMin` and `heightMax` for configuration.
|
|
73
|
+
*
|
|
74
|
+
* @type {boolean}
|
|
75
|
+
* @default false
|
|
76
|
+
*/
|
|
29
77
|
this.heightSpeed = false;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Determines how much faster the camera moves when it's y-component is near `heightMax`.
|
|
81
|
+
*
|
|
82
|
+
* @type {number}
|
|
83
|
+
* @default 1
|
|
84
|
+
*/
|
|
30
85
|
this.heightCoef = 1.0;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Lower camera height limit used for movement speed adjustment.
|
|
89
|
+
*
|
|
90
|
+
* @type {number}
|
|
91
|
+
* @default 0
|
|
92
|
+
*/
|
|
31
93
|
this.heightMin = 0.0;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Upper camera height limit used for movement speed adjustment.
|
|
97
|
+
*
|
|
98
|
+
* @type {number}
|
|
99
|
+
* @default 1
|
|
100
|
+
*/
|
|
32
101
|
this.heightMax = 1.0;
|
|
33
102
|
|
|
103
|
+
/**
|
|
104
|
+
* Whether or not looking around is vertically constrained by `verticalMin` and `verticalMax`.
|
|
105
|
+
*
|
|
106
|
+
* @type {boolean}
|
|
107
|
+
* @default false
|
|
108
|
+
*/
|
|
34
109
|
this.constrainVertical = false;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* How far you can vertically look around, lower limit. Range is `0` to `Math.PI` in radians.
|
|
113
|
+
*
|
|
114
|
+
* @type {number}
|
|
115
|
+
* @default 0
|
|
116
|
+
*/
|
|
35
117
|
this.verticalMin = 0;
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* How far you can vertically look around, upper limit. Range is `0` to `Math.PI` in radians.
|
|
121
|
+
*
|
|
122
|
+
* @type {number}
|
|
123
|
+
* @default 0
|
|
124
|
+
*/
|
|
36
125
|
this.verticalMax = Math.PI;
|
|
37
126
|
|
|
127
|
+
/**
|
|
128
|
+
* Whether the mouse is pressed down or not.
|
|
129
|
+
*
|
|
130
|
+
* @type {boolean}
|
|
131
|
+
* @readonly
|
|
132
|
+
* @default false
|
|
133
|
+
*/
|
|
38
134
|
this.mouseDragOn = false;
|
|
39
135
|
|
|
40
136
|
// internals
|
|
@@ -68,7 +164,7 @@ class FirstPersonControls extends Controls {
|
|
|
68
164
|
|
|
69
165
|
if ( domElement !== null ) {
|
|
70
166
|
|
|
71
|
-
this.connect();
|
|
167
|
+
this.connect( domElement );
|
|
72
168
|
|
|
73
169
|
this.handleResize();
|
|
74
170
|
|
|
@@ -78,7 +174,9 @@ class FirstPersonControls extends Controls {
|
|
|
78
174
|
|
|
79
175
|
}
|
|
80
176
|
|
|
81
|
-
connect() {
|
|
177
|
+
connect( element ) {
|
|
178
|
+
|
|
179
|
+
super.connect( element );
|
|
82
180
|
|
|
83
181
|
window.addEventListener( 'keydown', this._onKeyDown );
|
|
84
182
|
window.addEventListener( 'keyup', this._onKeyUp );
|
|
@@ -108,6 +206,9 @@ class FirstPersonControls extends Controls {
|
|
|
108
206
|
|
|
109
207
|
}
|
|
110
208
|
|
|
209
|
+
/**
|
|
210
|
+
* Must be called if the application window is resized.
|
|
211
|
+
*/
|
|
111
212
|
handleResize() {
|
|
112
213
|
|
|
113
214
|
if ( this.domElement === document ) {
|
|
@@ -124,6 +225,14 @@ class FirstPersonControls extends Controls {
|
|
|
124
225
|
|
|
125
226
|
}
|
|
126
227
|
|
|
228
|
+
/**
|
|
229
|
+
* Rotates the camera towards the defined target position.
|
|
230
|
+
*
|
|
231
|
+
* @param {number|Vector3} x - The x coordinate of the target position or alternatively a vector representing the target position.
|
|
232
|
+
* @param {number} y - The y coordinate of the target position.
|
|
233
|
+
* @param {number} z - The z coordinate of the target position.
|
|
234
|
+
* @return {FirstPersonControls} A reference to this controls.
|
|
235
|
+
*/
|
|
127
236
|
lookAt( x, y, z ) {
|
|
128
237
|
|
|
129
238
|
if ( x.isVector3 ) {
|
|
@@ -4,21 +4,66 @@ import {
|
|
|
4
4
|
Vector3
|
|
5
5
|
} from 'three';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Fires when the camera has been transformed by the controls.
|
|
9
|
+
*
|
|
10
|
+
* @event FlyControls#change
|
|
11
|
+
* @type {Object}
|
|
12
|
+
*/
|
|
7
13
|
const _changeEvent = { type: 'change' };
|
|
8
14
|
|
|
9
15
|
const _EPS = 0.000001;
|
|
10
16
|
const _tmpQuaternion = new Quaternion();
|
|
11
17
|
|
|
18
|
+
/**
|
|
19
|
+
* This class enables a navigation similar to fly modes in DCC tools like Blender.
|
|
20
|
+
* You can arbitrarily transform the camera in 3D space without any limitations
|
|
21
|
+
* (e.g. focus on a specific target).
|
|
22
|
+
*
|
|
23
|
+
* @augments Controls
|
|
24
|
+
*/
|
|
12
25
|
class FlyControls extends Controls {
|
|
13
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Constructs a new controls instance.
|
|
29
|
+
*
|
|
30
|
+
* @param {Object3D} object - The object that is managed by the controls.
|
|
31
|
+
* @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
|
|
32
|
+
*/
|
|
14
33
|
constructor( object, domElement = null ) {
|
|
15
34
|
|
|
16
35
|
super( object, domElement );
|
|
17
36
|
|
|
37
|
+
/**
|
|
38
|
+
* The movement speed.
|
|
39
|
+
*
|
|
40
|
+
* @type {number}
|
|
41
|
+
* @default 1
|
|
42
|
+
*/
|
|
18
43
|
this.movementSpeed = 1.0;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* The rotation speed.
|
|
47
|
+
*
|
|
48
|
+
* @type {number}
|
|
49
|
+
* @default 0.005
|
|
50
|
+
*/
|
|
19
51
|
this.rollSpeed = 0.005;
|
|
20
52
|
|
|
53
|
+
/**
|
|
54
|
+
* If set to `true`, you can only look around by performing a drag interaction.
|
|
55
|
+
*
|
|
56
|
+
* @type {boolean}
|
|
57
|
+
* @default false
|
|
58
|
+
*/
|
|
21
59
|
this.dragToLook = false;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* If set to `true`, the camera automatically moves forward (and does not stop) when initially translated.
|
|
63
|
+
*
|
|
64
|
+
* @type {boolean}
|
|
65
|
+
* @default false
|
|
66
|
+
*/
|
|
22
67
|
this.autoForward = false;
|
|
23
68
|
|
|
24
69
|
// internals
|
|
@@ -44,13 +89,15 @@ class FlyControls extends Controls {
|
|
|
44
89
|
|
|
45
90
|
if ( domElement !== null ) {
|
|
46
91
|
|
|
47
|
-
this.connect();
|
|
92
|
+
this.connect( domElement );
|
|
48
93
|
|
|
49
94
|
}
|
|
50
95
|
|
|
51
96
|
}
|
|
52
97
|
|
|
53
|
-
connect() {
|
|
98
|
+
connect( element ) {
|
|
99
|
+
|
|
100
|
+
super.connect( element );
|
|
54
101
|
|
|
55
102
|
window.addEventListener( 'keydown', this._onKeyDown );
|
|
56
103
|
window.addEventListener( 'keyup', this._onKeyUp );
|
|
@@ -2,23 +2,56 @@ import { MOUSE, TOUCH } from 'three';
|
|
|
2
2
|
|
|
3
3
|
import { OrbitControls } from './OrbitControls.js';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
/**
|
|
6
|
+
* This class is intended for transforming a camera over a map from bird's eye perspective.
|
|
7
|
+
* The class shares its implementation with {@link OrbitControls} but uses a specific preset
|
|
8
|
+
* for mouse/touch interaction and disables screen space panning by default.
|
|
9
|
+
*
|
|
10
|
+
* - Orbit: Right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate.
|
|
11
|
+
* - Zoom: Middle mouse, or mousewheel / touch: two-finger spread or squish.
|
|
12
|
+
* - Pan: Left mouse, or arrow keys / touch: one-finger move.
|
|
13
|
+
*
|
|
14
|
+
* @augments OrbitControls
|
|
15
|
+
*/
|
|
12
16
|
class MapControls extends OrbitControls {
|
|
13
17
|
|
|
14
18
|
constructor( object, domElement ) {
|
|
15
19
|
|
|
16
20
|
super( object, domElement );
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Overwritten and set to `false` to pan orthogonal to world-space direction `camera.up`.
|
|
24
|
+
*
|
|
25
|
+
* @type {boolean}
|
|
26
|
+
* @default false
|
|
27
|
+
*/
|
|
28
|
+
this.screenSpacePanning = false;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* This object contains references to the mouse actions used by the controls.
|
|
32
|
+
*
|
|
33
|
+
* ```js
|
|
34
|
+
* controls.mouseButtons = {
|
|
35
|
+
* LEFT: THREE.MOUSE.PAN,
|
|
36
|
+
* MIDDLE: THREE.MOUSE.DOLLY,
|
|
37
|
+
* RIGHT: THREE.MOUSE.ROTATE
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
|
+
* @type {Object}
|
|
41
|
+
*/
|
|
20
42
|
this.mouseButtons = { LEFT: MOUSE.PAN, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.ROTATE };
|
|
21
43
|
|
|
44
|
+
/**
|
|
45
|
+
* This object contains references to the touch actions used by the controls.
|
|
46
|
+
*
|
|
47
|
+
* ```js
|
|
48
|
+
* controls.mouseButtons = {
|
|
49
|
+
* ONE: THREE.TOUCH.PAN,
|
|
50
|
+
* TWO: THREE.TOUCH.DOLLY_ROTATE
|
|
51
|
+
* }
|
|
52
|
+
* ```
|
|
53
|
+
* @type {Object}
|
|
54
|
+
*/
|
|
22
55
|
this.touches = { ONE: TOUCH.PAN, TWO: TOUCH.DOLLY_ROTATE };
|
|
23
56
|
|
|
24
57
|
}
|