super-three 0.141.0 → 0.147.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/README.md +9 -9
- package/build/three.cjs +2441 -1569
- package/build/three.js +2441 -1569
- package/build/three.min.js +1 -1
- package/build/three.module.js +2847 -1576
- package/examples/js/animation/AnimationClipCreator.js +0 -8
- package/examples/js/animation/CCDIKSolver.js +50 -67
- package/examples/js/animation/MMDAnimationHelper.js +66 -137
- package/examples/js/animation/MMDPhysics.js +71 -150
- package/examples/js/cameras/CinematicCamera.js +33 -22
- package/examples/js/controls/ArcballControls.js +149 -403
- package/examples/js/controls/DragControls.js +8 -33
- package/examples/js/controls/FirstPersonControls.js +32 -61
- package/examples/js/controls/FlyControls.js +29 -63
- package/examples/js/controls/OrbitControls.js +125 -103
- package/examples/js/controls/PointerLockControls.js +5 -22
- package/examples/js/controls/TrackballControls.js +33 -88
- package/examples/js/controls/TransformControls.js +101 -182
- package/examples/js/csm/CSM.js +4 -39
- package/examples/js/csm/CSMFrustum.js +3 -9
- package/examples/js/csm/CSMHelper.js +24 -4
- package/examples/js/csm/CSMShader.js +2 -6
- package/examples/js/curves/CurveExtras.js +27 -27
- package/examples/js/curves/NURBSCurve.js +4 -16
- package/examples/js/curves/NURBSSurface.js +3 -9
- package/examples/js/curves/NURBSUtils.js +8 -45
- package/examples/js/effects/AnaglyphEffect.js +6 -20
- package/examples/js/effects/AsciiEffect.js +32 -31
- package/examples/js/effects/OutlineEffect.js +30 -54
- package/examples/js/effects/ParallaxBarrierEffect.js +2 -15
- package/examples/js/effects/PeppersGhostEffect.js +14 -41
- package/examples/js/effects/StereoEffect.js +2 -6
- package/examples/js/environments/RoomEnvironment.js +32 -8
- package/examples/js/exporters/ColladaExporter.js +52 -78
- package/examples/js/exporters/DRACOExporter.js +22 -34
- package/examples/js/exporters/EXRExporter.js +15 -18
- package/examples/js/exporters/GLTFExporter.js +168 -345
- package/examples/js/exporters/MMDExporter.js +5 -12
- package/examples/js/exporters/OBJExporter.js +40 -52
- package/examples/js/exporters/PLYExporter.js +50 -57
- package/examples/js/exporters/STLExporter.js +5 -14
- package/examples/js/exporters/USDZExporter.js +119 -27
- package/examples/js/geometries/BoxLineGeometry.js +0 -1
- package/examples/js/geometries/ConvexGeometry.js +12 -7
- package/examples/js/geometries/DecalGeometry.js +53 -20
- package/examples/js/geometries/LightningStrike.js +54 -67
- package/examples/js/geometries/ParametricGeometries.js +8 -7
- package/examples/js/geometries/ParametricGeometry.js +23 -17
- package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
- package/examples/js/geometries/TeapotGeometry.js +54 -50
- package/examples/js/geometries/TextGeometry.js +6 -4
- package/examples/js/helpers/LightProbeHelper.js +1 -2
- package/examples/js/helpers/OctreeHelper.js +22 -20
- package/examples/js/helpers/PositionalAudioHelper.js +8 -6
- package/examples/js/helpers/RectAreaLightHelper.js +6 -7
- package/examples/js/helpers/VertexNormalsHelper.js +15 -13
- package/examples/js/helpers/VertexTangentsHelper.js +15 -9
- package/examples/js/helpers/ViewHelper.js +31 -16
- package/examples/js/interactive/HTMLMesh.js +25 -39
- package/examples/js/interactive/InteractiveGroup.js +9 -14
- package/examples/js/interactive/SelectionBox.js +3 -70
- package/examples/js/interactive/SelectionHelper.js +2 -8
- package/examples/js/libs/ktx-parse.umd.js +1 -0
- package/examples/js/libs/meshopt_decoder.js +98 -32
- package/examples/js/lights/LightProbeGenerator.js +32 -39
- package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
- package/examples/js/lines/LineGeometry.js +3 -5
- package/examples/js/lines/LineMaterial.js +4 -11
- package/examples/js/lines/LineSegments2.js +40 -89
- package/examples/js/lines/LineSegmentsGeometry.js +7 -28
- package/examples/js/lines/Wireframe.js +2 -7
- package/examples/js/lines/WireframeGeometry2.js +3 -1
- package/examples/js/loaders/3DMLoader.js +58 -155
- package/examples/js/loaders/3MFLoader.js +72 -106
- package/examples/js/loaders/AMFLoader.js +0 -25
- package/examples/js/loaders/BVHLoader.js +44 -43
- package/examples/js/loaders/BasisTextureLoader.js +16 -46
- package/examples/js/loaders/ColladaLoader.js +229 -359
- package/examples/js/loaders/DDSLoader.js +24 -25
- package/examples/js/loaders/DRACOLoader.js +30 -90
- package/examples/js/loaders/EXRLoader.js +69 -177
- package/examples/js/loaders/FBXLoader.js +294 -441
- package/examples/js/loaders/FontLoader.js +9 -31
- package/examples/js/loaders/GCodeLoader.js +15 -16
- package/examples/js/loaders/GLTFLoader.js +458 -739
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -17
- package/examples/js/loaders/KMZLoader.js +3 -7
- package/examples/js/loaders/KTXLoader.js +12 -30
- package/examples/js/loaders/LDrawLoader.js +309 -355
- package/examples/js/loaders/LUT3dlLoader.js +7 -11
- package/examples/js/loaders/LUTCubeLoader.js +0 -8
- package/examples/js/loaders/LWOLoader.js +59 -124
- package/examples/js/loaders/LogLuvLoader.js +27 -77
- package/examples/js/loaders/LottieLoader.js +4 -4
- package/examples/js/loaders/MD2Loader.js +26 -27
- package/examples/js/loaders/MDDLoader.js +6 -10
- package/examples/js/loaders/MMDLoader.js +180 -189
- package/examples/js/loaders/MTLLoader.js +18 -47
- package/examples/js/loaders/NRRDLoader.js +44 -84
- package/examples/js/loaders/OBJLoader.js +56 -77
- package/examples/js/loaders/PCDLoader.js +92 -42
- package/examples/js/loaders/PDBLoader.js +17 -13
- package/examples/js/loaders/PLYLoader.js +65 -51
- package/examples/js/loaders/PRWMLoader.js +11 -22
- package/examples/js/loaders/PVRLoader.js +7 -16
- package/examples/js/loaders/RGBELoader.js +36 -61
- package/examples/js/loaders/RGBMLoader.js +26 -87
- package/examples/js/loaders/STLLoader.js +20 -27
- package/examples/js/loaders/SVGLoader.js +365 -236
- package/examples/js/loaders/TDSLoader.js +81 -118
- package/examples/js/loaders/TGALoader.js +39 -41
- package/examples/js/loaders/TIFFLoader.js +30 -0
- package/examples/js/loaders/TTFLoader.js +0 -8
- package/examples/js/loaders/TiltLoader.js +14 -15
- package/examples/js/loaders/VOXLoader.js +8 -16
- package/examples/js/loaders/VRMLLoader.js +266 -354
- package/examples/js/loaders/VTKLoader.js +102 -119
- package/examples/js/loaders/XYZLoader.js +2 -4
- package/examples/js/loaders/lwo/IFFParser.js +55 -136
- package/examples/js/loaders/lwo/LWO2Parser.js +39 -89
- package/examples/js/loaders/lwo/LWO3Parser.js +38 -79
- package/examples/js/materials/MeshGouraudMaterial.js +387 -0
- package/examples/js/math/Capsule.js +0 -17
- package/examples/js/math/ColorConverter.js +3 -53
- package/examples/js/math/ConvexHull.js +185 -141
- package/examples/js/math/ImprovedNoise.js +1 -1
- package/examples/js/math/Lut.js +8 -15
- package/examples/js/math/MeshSurfaceSampler.js +6 -28
- package/examples/js/math/OBB.js +90 -49
- package/examples/js/math/Octree.js +2 -57
- package/examples/js/math/SimplexNoise.js +74 -88
- package/examples/js/misc/ConvexObjectBreaker.js +37 -48
- package/examples/js/misc/GPUComputationRenderer.js +47 -14
- package/examples/js/misc/Gyroscope.js +5 -9
- package/examples/js/misc/MD2Character.js +14 -23
- package/examples/js/misc/MD2CharacterComplex.js +73 -54
- package/examples/js/misc/MorphAnimMesh.js +0 -6
- package/examples/js/misc/MorphBlendMesh.js +3 -30
- package/examples/js/misc/ProgressiveLightMap.js +47 -43
- package/examples/js/misc/RollerCoaster.js +17 -24
- package/examples/js/misc/TubePainter.js +18 -12
- package/examples/js/misc/Volume.js +173 -194
- package/examples/js/misc/VolumeSlice.js +91 -99
- package/examples/js/modifiers/CurveModifier.js +19 -21
- package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
- package/examples/js/modifiers/SimplifyModifier.js +57 -60
- package/examples/js/modifiers/TessellateModifier.js +2 -9
- package/examples/js/objects/GroundProjectedEnv.js +181 -0
- package/examples/js/objects/Lensflare.js +47 -38
- package/examples/js/objects/LightningStorm.js +10 -13
- package/examples/js/objects/MarchingCubes.js +80 -59
- package/examples/js/objects/Reflector.js +31 -22
- package/examples/js/objects/ReflectorForSSRPass.js +20 -25
- package/examples/js/objects/Refractor.js +61 -33
- package/examples/js/objects/ShadowMesh.js +6 -3
- package/examples/js/objects/Sky.js +2 -7
- package/examples/js/objects/Water.js +23 -18
- package/examples/js/objects/Water2.js +20 -19
- package/examples/js/physics/AmmoPhysics.js +23 -20
- package/examples/js/physics/OimoPhysics.js +19 -17
- package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
- package/examples/js/postprocessing/AfterimagePass.js +19 -12
- package/examples/js/postprocessing/BloomPass.js +38 -17
- package/examples/js/postprocessing/BokehPass.js +29 -12
- package/examples/js/postprocessing/ClearPass.js +1 -6
- package/examples/js/postprocessing/CubeTexturePass.js +12 -9
- package/examples/js/postprocessing/DotScreenPass.js +7 -5
- package/examples/js/postprocessing/EffectComposer.js +25 -32
- package/examples/js/postprocessing/FilmPass.js +7 -5
- package/examples/js/postprocessing/GlitchPass.js +10 -11
- package/examples/js/postprocessing/HalftonePass.js +9 -9
- package/examples/js/postprocessing/LUTPass.js +2 -15
- package/examples/js/postprocessing/MaskPass.js +20 -17
- package/examples/js/postprocessing/OutlinePass.js +49 -38
- package/examples/js/postprocessing/Pass.js +11 -14
- package/examples/js/postprocessing/RenderPass.js +3 -7
- package/examples/js/postprocessing/RenderPixelatedPass.js +215 -0
- package/examples/js/postprocessing/SAOPass.js +40 -32
- package/examples/js/postprocessing/SMAAPass.js +34 -17
- package/examples/js/postprocessing/SSAARenderPass.js +14 -14
- package/examples/js/postprocessing/SSAOPass.js +56 -42
- package/examples/js/postprocessing/SSRPass.js +78 -61
- package/examples/js/postprocessing/SavePass.js +14 -6
- package/examples/js/postprocessing/ShaderPass.js +9 -8
- package/examples/js/postprocessing/TAARenderPass.js +11 -9
- package/examples/js/postprocessing/TexturePass.js +7 -4
- package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
- package/examples/js/renderers/CSS2DRenderer.js +4 -23
- package/examples/js/renderers/CSS3DRenderer.js +5 -26
- package/examples/js/renderers/Projector.js +31 -108
- package/examples/js/renderers/SVGRenderer.js +4 -50
- package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
- package/examples/js/shaders/AfterimageShader.js +3 -6
- package/examples/js/shaders/BasicShader.js +3 -6
- package/examples/js/shaders/BleachBypassShader.js +3 -6
- package/examples/js/shaders/BlendShader.js +3 -6
- package/examples/js/shaders/BokehShader.js +3 -6
- package/examples/js/shaders/BokehShader2.js +4 -13
- package/examples/js/shaders/BrightnessContrastShader.js +3 -6
- package/examples/js/shaders/ColorCorrectionShader.js +2 -6
- package/examples/js/shaders/ColorifyShader.js +2 -6
- package/examples/js/shaders/ConvolutionShader.js +5 -10
- package/examples/js/shaders/CopyShader.js +3 -6
- package/examples/js/shaders/DOFMipMapShader.js +3 -6
- package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
- package/examples/js/shaders/DigitalGlitch.js +3 -6
- package/examples/js/shaders/DotScreenShader.js +2 -6
- package/examples/js/shaders/FXAAShader.js +1 -3
- package/examples/js/shaders/FilmShader.js +3 -6
- package/examples/js/shaders/FocusShader.js +3 -6
- package/examples/js/shaders/FreiChenShader.js +2 -6
- package/examples/js/shaders/GammaCorrectionShader.js +3 -6
- package/examples/js/shaders/GodRaysShader.js +11 -24
- package/examples/js/shaders/HalftoneShader.js +3 -6
- package/examples/js/shaders/HorizontalBlurShader.js +3 -6
- package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
- package/examples/js/shaders/HueSaturationShader.js +3 -6
- package/examples/js/shaders/KaleidoShader.js +3 -6
- package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
- package/examples/js/shaders/LuminosityShader.js +4 -7
- package/examples/js/shaders/MMDToonShader.js +2 -4
- package/examples/js/shaders/MirrorShader.js +3 -6
- package/examples/js/shaders/NormalMapShader.js +2 -6
- package/examples/js/shaders/RGBShiftShader.js +3 -6
- package/examples/js/shaders/SAOShader.js +2 -6
- package/examples/js/shaders/SMAAShader.js +6 -18
- package/examples/js/shaders/SSAOShader.js +2 -6
- package/examples/js/shaders/SSRShader.js +6 -18
- package/examples/js/shaders/SepiaShader.js +3 -6
- package/examples/js/shaders/SobelOperatorShader.js +2 -6
- package/examples/js/shaders/TechnicolorShader.js +3 -6
- package/examples/js/shaders/ToneMapShader.js +4 -7
- package/examples/js/shaders/ToonShader.js +8 -24
- package/examples/js/shaders/TriangleBlurShader.js +2 -6
- package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
- package/examples/js/shaders/VelocityShader.js +126 -0
- package/examples/js/shaders/VerticalBlurShader.js +3 -6
- package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
- package/examples/js/shaders/VignetteShader.js +3 -6
- package/examples/js/shaders/VolumeShader.js +2 -6
- package/examples/js/shaders/WaterRefractionShader.js +2 -6
- package/examples/js/textures/FlakesTexture.js +0 -1
- package/examples/js/utils/BufferGeometryUtils.js +237 -171
- package/examples/js/utils/CameraUtils.js +5 -20
- package/examples/js/utils/GPUStatsPanel.js +3 -12
- package/examples/js/utils/GeometryCompressionUtils.js +19 -44
- package/examples/js/utils/GeometryUtils.js +15 -36
- package/examples/js/utils/LDrawUtils.js +8 -11
- package/examples/js/utils/PackedPhongMaterial.js +6 -4
- package/examples/js/utils/SceneUtils.js +109 -14
- package/examples/js/utils/ShadowMapViewer.js +17 -14
- package/examples/js/utils/SkeletonUtils.js +13 -27
- package/examples/js/utils/UVsDebug.js +20 -12
- package/examples/js/utils/WorkerPool.js +1 -11
- package/examples/jsm/animation/CCDIKSolver.js +27 -3
- package/examples/jsm/animation/MMDPhysics.js +28 -22
- package/examples/jsm/capabilities/WebGPU.js +3 -1
- package/examples/jsm/controls/ArcballControls.js +17 -2
- package/examples/jsm/controls/FirstPersonControls.js +20 -27
- package/examples/jsm/controls/FlyControls.js +16 -24
- package/examples/jsm/controls/OrbitControls.js +44 -9
- package/examples/jsm/controls/PointerLockControls.js +0 -7
- package/examples/jsm/controls/TrackballControls.js +14 -5
- package/examples/jsm/controls/TransformControls.js +18 -16
- package/examples/jsm/csm/CSM.js +1 -0
- package/examples/jsm/csm/CSMHelper.js +30 -0
- package/examples/jsm/effects/AnaglyphEffect.js +2 -2
- package/examples/jsm/effects/OutlineEffect.js +4 -25
- package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
- package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
- package/examples/jsm/effects/StereoEffect.js +2 -2
- package/examples/jsm/environments/RoomEnvironment.js +23 -0
- package/examples/jsm/exporters/ColladaExporter.js +4 -13
- package/examples/jsm/exporters/DRACOExporter.js +0 -13
- package/examples/jsm/exporters/GLTFExporter.js +29 -110
- package/examples/jsm/exporters/KTX2Exporter.js +29 -29
- package/examples/jsm/exporters/OBJExporter.js +0 -18
- package/examples/jsm/exporters/PLYExporter.js +14 -22
- package/examples/jsm/exporters/STLExporter.js +1 -9
- package/examples/jsm/exporters/USDZExporter.js +107 -4
- package/examples/jsm/geometries/ConvexGeometry.js +1 -1
- package/examples/jsm/geometries/ParametricGeometry.js +0 -6
- package/examples/jsm/helpers/OctreeHelper.js +22 -8
- package/examples/jsm/helpers/VertexNormalsHelper.js +7 -1
- package/examples/jsm/helpers/VertexTangentsHelper.js +7 -0
- package/examples/jsm/helpers/ViewHelper.js +24 -0
- package/examples/jsm/interactive/HTMLMesh.js +14 -15
- package/examples/jsm/interactive/InteractiveGroup.js +4 -2
- package/examples/jsm/interactive/SelectionHelper.js +5 -3
- package/examples/jsm/libs/flow.module.js +610 -160
- package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
- package/examples/jsm/libs/utif.module.js +1579 -0
- package/examples/jsm/libs/zstddec.module.js +1 -0
- package/examples/jsm/lines/LineSegments2.js +4 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -2
- package/examples/jsm/loaders/ColladaLoader.js +29 -0
- package/examples/jsm/loaders/DRACOLoader.js +2 -28
- package/examples/jsm/loaders/EXRLoader.js +3 -13
- package/examples/jsm/loaders/FBXLoader.js +26 -3
- package/examples/jsm/loaders/FontLoader.js +3 -16
- package/examples/jsm/loaders/GLTFLoader.js +321 -464
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
- package/examples/jsm/loaders/KTX2Loader.js +254 -53
- package/examples/jsm/loaders/LDrawLoader.js +149 -87
- package/examples/jsm/loaders/LottieLoader.js +4 -2
- package/examples/jsm/loaders/MaterialXLoader.js +728 -0
- package/examples/jsm/loaders/OBJLoader.js +6 -14
- package/examples/jsm/loaders/PCDLoader.js +60 -14
- package/examples/jsm/loaders/PLYLoader.js +71 -19
- package/examples/jsm/loaders/RGBELoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +231 -17
- package/examples/jsm/loaders/TIFFLoader.js +36 -0
- package/examples/jsm/loaders/USDZLoader.js +633 -0
- package/examples/jsm/loaders/VRMLLoader.js +36 -26
- package/examples/jsm/loaders/VTKLoader.js +1 -1
- package/examples/jsm/loaders/lwo/LWO2Parser.js +6 -8
- package/examples/jsm/loaders/lwo/LWO3Parser.js +6 -8
- package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
- package/examples/jsm/math/ColorConverter.js +1 -49
- package/examples/jsm/math/ConvexHull.js +4 -4
- package/examples/jsm/math/Octree.js +1 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
- package/examples/jsm/misc/Volume.js +169 -171
- package/examples/jsm/misc/VolumeSlice.js +78 -80
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/node-editor/NodeEditor.js +91 -12
- package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
- package/examples/jsm/node-editor/core/BaseNode.js +10 -3
- package/examples/jsm/node-editor/display/BlendEditor.js +1 -1
- package/examples/jsm/node-editor/display/NormalMapEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/ColorEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/FloatEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/SliderEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/TextureEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector2Editor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector3Editor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector4Editor.js +1 -1
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +7 -10
- package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +1 -1
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +7 -10
- package/examples/jsm/node-editor/math/AngleEditor.js +4 -4
- package/examples/jsm/node-editor/math/DotEditor.js +1 -1
- package/examples/jsm/node-editor/math/InvertEditor.js +3 -3
- package/examples/jsm/node-editor/math/LimiterEditor.js +1 -1
- package/examples/jsm/node-editor/math/NormalizeEditor.js +1 -1
- package/examples/jsm/node-editor/math/OperatorEditor.js +1 -1
- package/examples/jsm/node-editor/math/PowerEditor.js +1 -1
- package/examples/jsm/node-editor/math/TrigonometryEditor.js +1 -1
- package/examples/jsm/node-editor/procedural/CheckerEditor.js +1 -1
- package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
- package/examples/jsm/node-editor/utils/JoinEditor.js +1 -1
- package/examples/jsm/node-editor/utils/OscillatorEditor.js +1 -1
- package/examples/jsm/node-editor/utils/PreviewEditor.js +7 -3
- package/examples/jsm/node-editor/utils/SplitEditor.js +1 -1
- package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
- package/examples/jsm/nodes/Nodes.js +70 -13
- package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +9 -5
- package/examples/jsm/nodes/accessors/NormalNode.js +8 -8
- package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +11 -5
- package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
- package/examples/jsm/nodes/accessors/SkinningNode.js +8 -1
- package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
- package/examples/jsm/nodes/core/AttributeNode.js +32 -9
- package/examples/jsm/nodes/core/CodeNode.js +3 -3
- package/examples/jsm/nodes/core/FunctionCallNode.js +20 -5
- package/examples/jsm/nodes/core/FunctionNode.js +2 -2
- package/examples/jsm/nodes/core/Node.js +15 -13
- package/examples/jsm/nodes/core/NodeBuilder.js +67 -18
- package/examples/jsm/nodes/core/NodeFrame.js +2 -2
- package/examples/jsm/nodes/core/NodeUtils.js +23 -1
- package/examples/jsm/nodes/core/NodeVarying.js +17 -0
- package/examples/jsm/nodes/core/VaryingNode.js +56 -0
- package/examples/jsm/nodes/core/constants.js +13 -13
- package/examples/jsm/nodes/display/BlendModeNode.js +85 -0
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +84 -0
- package/examples/jsm/nodes/display/NormalMapNode.js +19 -12
- package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
- package/examples/jsm/nodes/display/ViewportNode.js +106 -0
- package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +5 -5
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +3 -3
- package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +2 -2
- package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +3 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -7
- package/examples/jsm/nodes/lighting/LightingContextNode.js +4 -4
- package/examples/jsm/nodes/loaders/NodeLoader.js +2 -2
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +33 -0
- package/examples/jsm/nodes/materials/Materials.js +21 -31
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +4 -7
- package/examples/jsm/nodes/materials/NodeMaterial.js +11 -3
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +28 -17
- package/examples/jsm/nodes/materialx/DISCLAIMER.md +199 -0
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
- package/examples/jsm/nodes/materialx/lib/mx_hsv.js +56 -0
- package/examples/jsm/nodes/materialx/lib/mx_noise.js +617 -0
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
- package/examples/jsm/nodes/math/MathNode.js +7 -17
- package/examples/jsm/nodes/math/OperatorNode.js +16 -3
- package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +21 -6
- package/examples/jsm/nodes/procedural/CheckerNode.js +2 -2
- package/examples/jsm/nodes/shadernode/ShaderNode.js +40 -25
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +95 -68
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +49 -6
- package/examples/jsm/nodes/utils/ConvertNode.js +18 -12
- package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
- package/examples/jsm/nodes/utils/JoinNode.js +15 -9
- package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +3 -2
- package/examples/jsm/nodes/utils/OscNode.js +2 -2
- package/examples/jsm/nodes/utils/RemapNode.js +34 -0
- package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
- package/examples/jsm/nodes/utils/SplitNode.js +21 -5
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
- package/examples/jsm/nodes/utils/TimerNode.js +23 -3
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
- package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
- package/examples/jsm/objects/Reflector.js +12 -5
- package/examples/jsm/objects/ReflectorForSSRPass.js +3 -5
- package/examples/jsm/objects/Refractor.js +12 -6
- package/examples/jsm/objects/ShadowMesh.js +8 -2
- package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
- package/examples/jsm/postprocessing/BloomPass.js +22 -3
- package/examples/jsm/postprocessing/BokehPass.js +18 -4
- package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
- package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
- package/examples/jsm/postprocessing/EffectComposer.js +9 -0
- package/examples/jsm/postprocessing/FilmPass.js +8 -0
- package/examples/jsm/postprocessing/GlitchPass.js +13 -1
- package/examples/jsm/postprocessing/HalftonePass.js +8 -0
- package/examples/jsm/postprocessing/OutlinePass.js +25 -3
- package/examples/jsm/postprocessing/Pass.js +2 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
- package/examples/jsm/postprocessing/SAOPass.js +20 -0
- package/examples/jsm/postprocessing/SMAAPass.js +16 -0
- package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
- package/examples/jsm/postprocessing/SavePass.js +17 -1
- package/examples/jsm/postprocessing/ShaderPass.js +8 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
- package/examples/jsm/postprocessing/TexturePass.js +8 -0
- package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
- package/examples/jsm/renderers/CSS2DRenderer.js +2 -2
- package/examples/jsm/renderers/CSS3DRenderer.js +2 -2
- package/examples/jsm/renderers/Projector.js +2 -24
- package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +363 -231
- package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +7 -3
- package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
- package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +68 -3
- package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +6 -0
- package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
- package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +17 -19
- package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +16 -14
- package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +113 -93
- package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +5 -3
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +63 -36
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
- package/examples/jsm/shaders/LuminosityShader.js +1 -1
- package/examples/jsm/shaders/MMDToonShader.js +2 -4
- package/examples/jsm/shaders/ToneMapShader.js +1 -1
- package/examples/jsm/shaders/VelocityShader.js +128 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +176 -43
- package/examples/jsm/utils/GeometryUtils.js +17 -25
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
- package/examples/jsm/utils/SceneUtils.js +117 -12
- package/examples/jsm/webxr/OculusHandModel.js +3 -2
- package/examples/jsm/webxr/OculusHandPointerModel.js +6 -1
- package/examples/jsm/webxr/VRButton.js +1 -7
- package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
- package/package.json +22 -18
- package/src/Three.Legacy.js +262 -36
- package/src/Three.js +4 -2
- package/src/animation/AnimationAction.js +6 -5
- package/src/animation/AnimationClip.js +1 -1
- package/src/animation/AnimationMixer.js +1 -1
- package/src/animation/AnimationUtils.js +204 -199
- package/src/animation/KeyframeTrack.js +1 -1
- package/src/animation/PropertyBinding.js +31 -5
- package/src/audio/AudioContext.js +5 -5
- package/src/cameras/CubeCamera.js +14 -21
- package/src/constants.js +2 -4
- package/src/core/BufferAttribute.js +81 -111
- package/src/core/BufferGeometry.js +3 -41
- package/src/core/InstancedBufferAttribute.js +0 -10
- package/src/core/InstancedBufferGeometry.js +1 -7
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +57 -8
- package/src/core/Object3D.js +22 -5
- package/src/core/Uniform.js +0 -7
- package/src/core/UniformsGroup.js +92 -0
- package/src/extras/DataUtils.js +104 -88
- package/src/extras/Earcut.js +67 -67
- package/src/extras/core/Path.js +1 -0
- package/src/extras/core/ShapePath.js +1 -4
- package/src/extras/curves/CatmullRomCurve3.js +4 -2
- package/src/geometries/BoxGeometry.js +1 -1
- package/src/geometries/CapsuleGeometry.js +1 -1
- package/src/geometries/CircleGeometry.js +1 -1
- package/src/geometries/ConeGeometry.js +1 -1
- package/src/geometries/CylinderGeometry.js +2 -1
- package/src/geometries/DodecahedronGeometry.js +1 -1
- package/src/geometries/EdgesGeometry.js +5 -4
- package/src/geometries/ExtrudeGeometry.js +2 -11
- package/src/geometries/IcosahedronGeometry.js +1 -1
- package/src/geometries/LatheGeometry.js +2 -2
- package/src/geometries/OctahedronGeometry.js +1 -1
- package/src/geometries/PlaneGeometry.js +2 -1
- package/src/geometries/PolyhedronGeometry.js +2 -2
- package/src/geometries/RingGeometry.js +1 -1
- package/src/geometries/ShapeGeometry.js +3 -2
- package/src/geometries/SphereGeometry.js +2 -1
- package/src/geometries/TetrahedronGeometry.js +1 -1
- package/src/geometries/TorusGeometry.js +2 -1
- package/src/geometries/TorusKnotGeometry.js +2 -1
- package/src/geometries/TubeGeometry.js +2 -1
- package/src/geometries/WireframeGeometry.js +1 -0
- package/src/helpers/ArrowHelper.js +9 -0
- package/src/helpers/Box3Helper.js +7 -0
- package/src/helpers/BoxHelper.js +7 -1
- package/src/helpers/CameraHelper.js +97 -38
- package/src/helpers/DirectionalLightHelper.js +6 -1
- package/src/helpers/GridHelper.js +7 -0
- package/src/helpers/HemisphereLightHelper.js +5 -1
- package/src/helpers/PlaneHelper.js +15 -9
- package/src/helpers/PointLightHelper.js +2 -1
- package/src/helpers/PolarGridHelper.js +25 -14
- package/src/helpers/SkeletonHelper.js +7 -0
- package/src/helpers/SpotLightHelper.js +5 -2
- package/src/lights/LightShadow.js +1 -2
- package/src/lights/PointLight.js +2 -2
- package/src/lights/SpotLight.js +4 -2
- package/src/loaders/FileLoader.js +16 -2
- package/src/loaders/LoadingManager.js +1 -1
- package/src/loaders/MaterialLoader.js +49 -7
- package/src/loaders/ObjectLoader.js +9 -42
- package/src/materials/Material.js +2 -34
- package/src/materials/Materials.js +0 -27
- package/src/materials/MeshLambertMaterial.js +28 -1
- package/src/materials/MeshPhysicalMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +3 -7
- package/src/math/Color.js +8 -18
- package/src/math/MathUtils.js +1 -7
- package/src/math/Matrix3.js +54 -25
- package/src/math/Matrix4.js +3 -27
- package/src/math/Quaternion.js +1 -21
- package/src/math/Ray.js +2 -5
- package/src/math/Sphere.js +36 -21
- package/src/math/Vector2.js +4 -24
- package/src/math/Vector3.js +7 -46
- package/src/math/Vector4.js +4 -24
- package/src/objects/InstancedMesh.js +7 -0
- package/src/objects/LOD.js +25 -6
- package/src/renderers/WebGL3DRenderTarget.js +1 -1
- package/src/renderers/WebGLArrayRenderTarget.js +1 -1
- package/src/renderers/WebGLCubeRenderTarget.js +1 -1
- package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
- package/src/renderers/WebGLRenderTarget.js +1 -1
- package/src/renderers/WebGLRenderer.js +119 -69
- package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +12 -12
- package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -5
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +24 -24
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
- package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +113 -99
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +34 -13
- package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +28 -0
- package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +3 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +13 -1
- package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -4
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -4
- package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +7 -2
- package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
- package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +22 -50
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +0 -3
- package/src/renderers/shaders/ShaderLib.js +50 -36
- package/src/renderers/shaders/UniformsLib.js +13 -12
- package/src/renderers/shaders/UniformsUtils.js +29 -0
- package/src/renderers/webgl/WebGLAttributes.js +2 -0
- package/src/renderers/webgl/WebGLBackground.js +17 -9
- package/src/renderers/webgl/WebGLLights.js +37 -17
- package/src/renderers/webgl/WebGLMaterials.js +2 -1
- package/src/renderers/webgl/WebGLMorphtargets.js +0 -20
- package/src/renderers/webgl/WebGLProgram.js +6 -11
- package/src/renderers/webgl/WebGLPrograms.js +30 -26
- package/src/renderers/webgl/WebGLRenderLists.js +5 -4
- package/src/renderers/webgl/WebGLRenderStates.js +5 -4
- package/src/renderers/webgl/WebGLShaderCache.js +9 -6
- package/src/renderers/webgl/WebGLShadowMap.js +13 -16
- package/src/renderers/webgl/WebGLState.js +125 -41
- package/src/renderers/webgl/WebGLTextures.js +94 -39
- package/src/renderers/webgl/WebGLUniforms.js +156 -28
- package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
- package/src/renderers/webgl/WebGLUtils.js +3 -1
- package/src/renderers/webvr/WebVRManager.js +42 -9
- package/src/renderers/webvr/WebVRUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +91 -50
- package/src/renderers/webxr/WebXRManager.js +127 -34
- package/src/scenes/Scene.js +24 -3
- package/src/textures/CompressedArrayTexture.js +18 -0
- package/src/textures/Source.js +1 -1
- package/src/textures/Texture.js +2 -1
- package/src/utils.js +1 -1
- package/examples/js/controls/experimental/CameraControls.js +0 -1048
- package/examples/js/libs/lottie_canvas.js +0 -12751
- package/examples/js/loaders/KTX2Loader.js +0 -558
- package/examples/js/shaders/PixelShader.js +0 -51
- package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
- package/examples/jsm/nodes/accessors/ReflectNode.js +0 -70
- package/examples/jsm/nodes/core/NodeVary.js +0 -14
- package/examples/jsm/nodes/core/VaryNode.js +0 -54
- package/examples/jsm/package.json +0 -3
- package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
- package/examples/jsm/shaders/PixelShader.js +0 -44
- package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
( function () {
|
|
2
2
|
|
|
3
|
+
// This set of controls performs orbiting, dollying (zooming), and panning.
|
|
3
4
|
// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default).
|
|
4
5
|
//
|
|
5
6
|
// Orbit - left mouse / touch: one-finger move
|
|
@@ -15,87 +16,94 @@
|
|
|
15
16
|
const _endEvent = {
|
|
16
17
|
type: 'end'
|
|
17
18
|
};
|
|
18
|
-
|
|
19
19
|
class OrbitControls extends THREE.EventDispatcher {
|
|
20
20
|
|
|
21
21
|
constructor( object, domElement ) {
|
|
22
22
|
|
|
23
23
|
super();
|
|
24
|
-
if ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter "domElement" is now mandatory.' );
|
|
25
|
-
if ( domElement === document ) console.error( 'THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.' );
|
|
26
24
|
this.object = object;
|
|
27
25
|
this.domElement = domElement;
|
|
28
26
|
this.domElement.style.touchAction = 'none'; // disable touch scroll
|
|
29
|
-
// Set to false to disable this control
|
|
30
27
|
|
|
31
|
-
|
|
28
|
+
// Set to false to disable this control
|
|
29
|
+
this.enabled = true;
|
|
32
30
|
|
|
33
|
-
|
|
31
|
+
// "target" sets the location of focus, where the object orbits around
|
|
32
|
+
this.target = new THREE.Vector3();
|
|
34
33
|
|
|
34
|
+
// How far you can dolly in and out ( PerspectiveCamera only )
|
|
35
35
|
this.minDistance = 0;
|
|
36
|
-
this.maxDistance = Infinity;
|
|
36
|
+
this.maxDistance = Infinity;
|
|
37
37
|
|
|
38
|
+
// How far you can zoom in and out ( OrthographicCamera only )
|
|
38
39
|
this.minZoom = 0;
|
|
39
|
-
this.maxZoom = Infinity;
|
|
40
|
-
// Range is 0 to Math.PI radians.
|
|
40
|
+
this.maxZoom = Infinity;
|
|
41
41
|
|
|
42
|
+
// How far you can orbit vertically, upper and lower limits.
|
|
43
|
+
// Range is 0 to Math.PI radians.
|
|
42
44
|
this.minPolarAngle = 0; // radians
|
|
43
|
-
|
|
44
45
|
this.maxPolarAngle = Math.PI; // radians
|
|
46
|
+
|
|
45
47
|
// How far you can orbit horizontally, upper and lower limits.
|
|
46
48
|
// If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )
|
|
47
|
-
|
|
48
49
|
this.minAzimuthAngle = - Infinity; // radians
|
|
49
|
-
|
|
50
50
|
this.maxAzimuthAngle = Infinity; // radians
|
|
51
|
+
|
|
51
52
|
// Set to true to enable damping (inertia)
|
|
52
53
|
// If damping is enabled, you must call controls.update() in your animation loop
|
|
53
|
-
|
|
54
54
|
this.enableDamping = false;
|
|
55
|
-
this.dampingFactor = 0.05;
|
|
56
|
-
// Set to false to disable zooming
|
|
55
|
+
this.dampingFactor = 0.05;
|
|
57
56
|
|
|
57
|
+
// This option actually enables dollying in and out; left as "zoom" for backwards compatibility.
|
|
58
|
+
// Set to false to disable zooming
|
|
58
59
|
this.enableZoom = true;
|
|
59
|
-
this.zoomSpeed = 1.0;
|
|
60
|
+
this.zoomSpeed = 1.0;
|
|
60
61
|
|
|
62
|
+
// Set to false to disable rotating
|
|
61
63
|
this.enableRotate = true;
|
|
62
|
-
this.rotateSpeed = 1.0;
|
|
64
|
+
this.rotateSpeed = 1.0;
|
|
63
65
|
|
|
66
|
+
// Set to false to disable panning
|
|
64
67
|
this.enablePan = true;
|
|
65
68
|
this.panSpeed = 1.0;
|
|
66
69
|
this.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up
|
|
67
|
-
|
|
68
70
|
this.keyPanSpeed = 7.0; // pixels moved per arrow key push
|
|
71
|
+
|
|
69
72
|
// Set to true to automatically rotate around the target
|
|
70
73
|
// If auto-rotate is enabled, you must call controls.update() in your animation loop
|
|
71
|
-
|
|
72
74
|
this.autoRotate = false;
|
|
73
75
|
this.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60
|
|
74
|
-
// The four arrow keys
|
|
75
76
|
|
|
77
|
+
// The four arrow keys
|
|
76
78
|
this.keys = {
|
|
77
79
|
LEFT: 'ArrowLeft',
|
|
78
80
|
UP: 'ArrowUp',
|
|
79
81
|
RIGHT: 'ArrowRight',
|
|
80
82
|
BOTTOM: 'ArrowDown'
|
|
81
|
-
};
|
|
83
|
+
};
|
|
82
84
|
|
|
85
|
+
// Mouse buttons
|
|
83
86
|
this.mouseButtons = {
|
|
84
87
|
LEFT: THREE.MOUSE.ROTATE,
|
|
85
88
|
MIDDLE: THREE.MOUSE.DOLLY,
|
|
86
89
|
RIGHT: THREE.MOUSE.PAN
|
|
87
|
-
};
|
|
90
|
+
};
|
|
88
91
|
|
|
92
|
+
// Touch fingers
|
|
89
93
|
this.touches = {
|
|
90
94
|
ONE: THREE.TOUCH.ROTATE,
|
|
91
95
|
TWO: THREE.TOUCH.DOLLY_PAN
|
|
92
|
-
};
|
|
96
|
+
};
|
|
93
97
|
|
|
98
|
+
// for reset
|
|
94
99
|
this.target0 = this.target.clone();
|
|
95
100
|
this.position0 = this.object.position.clone();
|
|
96
|
-
this.zoom0 = this.object.zoom;
|
|
101
|
+
this.zoom0 = this.object.zoom;
|
|
97
102
|
|
|
98
|
-
|
|
103
|
+
// the target DOM element for key events
|
|
104
|
+
this._domElementKeyEvents = null;
|
|
105
|
+
|
|
106
|
+
//
|
|
99
107
|
// public methods
|
|
100
108
|
//
|
|
101
109
|
|
|
@@ -142,13 +150,14 @@
|
|
|
142
150
|
scope.update();
|
|
143
151
|
state = STATE.NONE;
|
|
144
152
|
|
|
145
|
-
};
|
|
146
|
-
|
|
153
|
+
};
|
|
147
154
|
|
|
155
|
+
// this method is exposed, but perhaps it would be better if we can make it private...
|
|
148
156
|
this.update = function () {
|
|
149
157
|
|
|
150
|
-
const offset = new THREE.Vector3();
|
|
158
|
+
const offset = new THREE.Vector3();
|
|
151
159
|
|
|
160
|
+
// so camera.up is the orbit axis
|
|
152
161
|
const quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) );
|
|
153
162
|
const quatInverse = quat.clone().invert();
|
|
154
163
|
const lastPosition = new THREE.Vector3();
|
|
@@ -157,12 +166,13 @@
|
|
|
157
166
|
return function update() {
|
|
158
167
|
|
|
159
168
|
const position = scope.object.position;
|
|
160
|
-
offset.copy( position ).sub( scope.target );
|
|
169
|
+
offset.copy( position ).sub( scope.target );
|
|
161
170
|
|
|
162
|
-
|
|
171
|
+
// rotate offset to "y-axis-is-up" space
|
|
172
|
+
offset.applyQuaternion( quat );
|
|
163
173
|
|
|
174
|
+
// angle from z-axis around y-axis
|
|
164
175
|
spherical.setFromVector3( offset );
|
|
165
|
-
|
|
166
176
|
if ( scope.autoRotate && state === STATE.NONE ) {
|
|
167
177
|
|
|
168
178
|
rotateLeft( getAutoRotationAngle() );
|
|
@@ -179,17 +189,16 @@
|
|
|
179
189
|
spherical.theta += sphericalDelta.theta;
|
|
180
190
|
spherical.phi += sphericalDelta.phi;
|
|
181
191
|
|
|
182
|
-
}
|
|
192
|
+
}
|
|
183
193
|
|
|
194
|
+
// restrict theta to be between desired limits
|
|
184
195
|
|
|
185
196
|
let min = scope.minAzimuthAngle;
|
|
186
197
|
let max = scope.maxAzimuthAngle;
|
|
187
|
-
|
|
188
198
|
if ( isFinite( min ) && isFinite( max ) ) {
|
|
189
199
|
|
|
190
200
|
if ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;
|
|
191
201
|
if ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;
|
|
192
|
-
|
|
193
202
|
if ( min <= max ) {
|
|
194
203
|
|
|
195
204
|
spherical.theta = Math.max( min, Math.min( max, spherical.theta ) );
|
|
@@ -200,14 +209,17 @@
|
|
|
200
209
|
|
|
201
210
|
}
|
|
202
211
|
|
|
203
|
-
}
|
|
204
|
-
|
|
212
|
+
}
|
|
205
213
|
|
|
214
|
+
// restrict phi to be between desired limits
|
|
206
215
|
spherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );
|
|
207
216
|
spherical.makeSafe();
|
|
208
|
-
spherical.radius *= scale;
|
|
217
|
+
spherical.radius *= scale;
|
|
218
|
+
|
|
219
|
+
// restrict radius to be between desired limits
|
|
220
|
+
spherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) );
|
|
209
221
|
|
|
210
|
-
|
|
222
|
+
// move target to panned location
|
|
211
223
|
|
|
212
224
|
if ( scope.enableDamping === true ) {
|
|
213
225
|
|
|
@@ -219,12 +231,12 @@
|
|
|
219
231
|
|
|
220
232
|
}
|
|
221
233
|
|
|
222
|
-
offset.setFromSpherical( spherical );
|
|
234
|
+
offset.setFromSpherical( spherical );
|
|
223
235
|
|
|
236
|
+
// rotate offset back to "camera-up-vector-is-up" space
|
|
224
237
|
offset.applyQuaternion( quatInverse );
|
|
225
238
|
position.copy( scope.target ).add( offset );
|
|
226
239
|
scope.object.lookAt( scope.target );
|
|
227
|
-
|
|
228
240
|
if ( scope.enableDamping === true ) {
|
|
229
241
|
|
|
230
242
|
sphericalDelta.theta *= 1 - scope.dampingFactor;
|
|
@@ -238,7 +250,9 @@
|
|
|
238
250
|
|
|
239
251
|
}
|
|
240
252
|
|
|
241
|
-
scale = 1;
|
|
253
|
+
scale = 1;
|
|
254
|
+
|
|
255
|
+
// update condition is:
|
|
242
256
|
// min(camera displacement, camera rotation in radians)^2 > EPS
|
|
243
257
|
// using small-angle approximation cos(x/2) = 1 - x^2 / 8
|
|
244
258
|
|
|
@@ -257,7 +271,6 @@
|
|
|
257
271
|
};
|
|
258
272
|
|
|
259
273
|
}();
|
|
260
|
-
|
|
261
274
|
this.dispose = function () {
|
|
262
275
|
|
|
263
276
|
scope.domElement.removeEventListener( 'contextmenu', onContextMenu );
|
|
@@ -266,18 +279,20 @@
|
|
|
266
279
|
scope.domElement.removeEventListener( 'wheel', onMouseWheel );
|
|
267
280
|
scope.domElement.removeEventListener( 'pointermove', onPointerMove );
|
|
268
281
|
scope.domElement.removeEventListener( 'pointerup', onPointerUp );
|
|
269
|
-
|
|
270
282
|
if ( scope._domElementKeyEvents !== null ) {
|
|
271
283
|
|
|
272
284
|
scope._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown );
|
|
273
285
|
|
|
274
|
-
}
|
|
286
|
+
}
|
|
275
287
|
|
|
276
|
-
|
|
288
|
+
//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?
|
|
289
|
+
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
//
|
|
277
293
|
// internals
|
|
278
294
|
//
|
|
279
295
|
|
|
280
|
-
|
|
281
296
|
const scope = this;
|
|
282
297
|
const STATE = {
|
|
283
298
|
NONE: - 1,
|
|
@@ -290,8 +305,9 @@
|
|
|
290
305
|
TOUCH_DOLLY_ROTATE: 6
|
|
291
306
|
};
|
|
292
307
|
let state = STATE.NONE;
|
|
293
|
-
const EPS = 0.000001;
|
|
308
|
+
const EPS = 0.000001;
|
|
294
309
|
|
|
310
|
+
// current position in spherical coordinates
|
|
295
311
|
const spherical = new THREE.Spherical();
|
|
296
312
|
const sphericalDelta = new THREE.Spherical();
|
|
297
313
|
let scale = 1;
|
|
@@ -308,7 +324,6 @@
|
|
|
308
324
|
const dollyDelta = new THREE.Vector2();
|
|
309
325
|
const pointers = [];
|
|
310
326
|
const pointerPositions = {};
|
|
311
|
-
|
|
312
327
|
function getAutoRotationAngle() {
|
|
313
328
|
|
|
314
329
|
return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;
|
|
@@ -339,14 +354,12 @@
|
|
|
339
354
|
return function panLeft( distance, objectMatrix ) {
|
|
340
355
|
|
|
341
356
|
v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix
|
|
342
|
-
|
|
343
357
|
v.multiplyScalar( - distance );
|
|
344
358
|
panOffset.add( v );
|
|
345
359
|
|
|
346
360
|
};
|
|
347
361
|
|
|
348
362
|
}();
|
|
349
|
-
|
|
350
363
|
const panUp = function () {
|
|
351
364
|
|
|
352
365
|
const v = new THREE.Vector3();
|
|
@@ -368,25 +381,26 @@
|
|
|
368
381
|
|
|
369
382
|
};
|
|
370
383
|
|
|
371
|
-
}();
|
|
372
|
-
|
|
384
|
+
}();
|
|
373
385
|
|
|
386
|
+
// deltaX and deltaY are in pixels; right and down are positive
|
|
374
387
|
const pan = function () {
|
|
375
388
|
|
|
376
389
|
const offset = new THREE.Vector3();
|
|
377
390
|
return function pan( deltaX, deltaY ) {
|
|
378
391
|
|
|
379
392
|
const element = scope.domElement;
|
|
380
|
-
|
|
381
393
|
if ( scope.object.isPerspectiveCamera ) {
|
|
382
394
|
|
|
383
395
|
// perspective
|
|
384
396
|
const position = scope.object.position;
|
|
385
397
|
offset.copy( position ).sub( scope.target );
|
|
386
|
-
let targetDistance = offset.length();
|
|
398
|
+
let targetDistance = offset.length();
|
|
387
399
|
|
|
388
|
-
|
|
400
|
+
// half of the fov is center to top of screen
|
|
401
|
+
targetDistance *= Math.tan( scope.object.fov / 2 * Math.PI / 180.0 );
|
|
389
402
|
|
|
403
|
+
// we use only clientHeight here so aspect ratio does not distort speed
|
|
390
404
|
panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );
|
|
391
405
|
panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );
|
|
392
406
|
|
|
@@ -407,7 +421,6 @@
|
|
|
407
421
|
};
|
|
408
422
|
|
|
409
423
|
}();
|
|
410
|
-
|
|
411
424
|
function dollyOut( dollyScale ) {
|
|
412
425
|
|
|
413
426
|
if ( scope.object.isPerspectiveCamera ) {
|
|
@@ -448,11 +461,12 @@
|
|
|
448
461
|
|
|
449
462
|
}
|
|
450
463
|
|
|
451
|
-
}
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
//
|
|
452
467
|
// event callbacks - update the object state
|
|
453
468
|
//
|
|
454
469
|
|
|
455
|
-
|
|
456
470
|
function handleMouseDownRotate( event ) {
|
|
457
471
|
|
|
458
472
|
rotateStart.set( event.clientX, event.clientY );
|
|
@@ -488,7 +502,6 @@
|
|
|
488
502
|
|
|
489
503
|
dollyEnd.set( event.clientX, event.clientY );
|
|
490
504
|
dollyDelta.subVectors( dollyEnd, dollyStart );
|
|
491
|
-
|
|
492
505
|
if ( dollyDelta.y > 0 ) {
|
|
493
506
|
|
|
494
507
|
dollyOut( getZoomScale() );
|
|
@@ -533,26 +546,58 @@
|
|
|
533
546
|
function handleKeyDown( event ) {
|
|
534
547
|
|
|
535
548
|
let needsUpdate = false;
|
|
536
|
-
|
|
537
549
|
switch ( event.code ) {
|
|
538
550
|
|
|
539
551
|
case scope.keys.UP:
|
|
540
|
-
|
|
552
|
+
if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
|
|
553
|
+
|
|
554
|
+
rotateUp( 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );
|
|
555
|
+
|
|
556
|
+
} else {
|
|
557
|
+
|
|
558
|
+
pan( 0, scope.keyPanSpeed );
|
|
559
|
+
|
|
560
|
+
}
|
|
561
|
+
|
|
541
562
|
needsUpdate = true;
|
|
542
563
|
break;
|
|
543
|
-
|
|
544
564
|
case scope.keys.BOTTOM:
|
|
545
|
-
|
|
565
|
+
if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
|
|
566
|
+
|
|
567
|
+
rotateUp( - 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );
|
|
568
|
+
|
|
569
|
+
} else {
|
|
570
|
+
|
|
571
|
+
pan( 0, - scope.keyPanSpeed );
|
|
572
|
+
|
|
573
|
+
}
|
|
574
|
+
|
|
546
575
|
needsUpdate = true;
|
|
547
576
|
break;
|
|
548
|
-
|
|
549
577
|
case scope.keys.LEFT:
|
|
550
|
-
|
|
578
|
+
if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
|
|
579
|
+
|
|
580
|
+
rotateLeft( 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );
|
|
581
|
+
|
|
582
|
+
} else {
|
|
583
|
+
|
|
584
|
+
pan( scope.keyPanSpeed, 0 );
|
|
585
|
+
|
|
586
|
+
}
|
|
587
|
+
|
|
551
588
|
needsUpdate = true;
|
|
552
589
|
break;
|
|
553
|
-
|
|
554
590
|
case scope.keys.RIGHT:
|
|
555
|
-
|
|
591
|
+
if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
|
|
592
|
+
|
|
593
|
+
rotateLeft( - 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight );
|
|
594
|
+
|
|
595
|
+
} else {
|
|
596
|
+
|
|
597
|
+
pan( - scope.keyPanSpeed, 0 );
|
|
598
|
+
|
|
599
|
+
}
|
|
600
|
+
|
|
556
601
|
needsUpdate = true;
|
|
557
602
|
break;
|
|
558
603
|
|
|
@@ -693,26 +738,26 @@
|
|
|
693
738
|
if ( scope.enableZoom ) handleTouchMoveDolly( event );
|
|
694
739
|
if ( scope.enableRotate ) handleTouchMoveRotate( event );
|
|
695
740
|
|
|
696
|
-
}
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
//
|
|
697
744
|
// event handlers - FSM: listen for events and reset state
|
|
698
745
|
//
|
|
699
746
|
|
|
700
|
-
|
|
701
747
|
function onPointerDown( event ) {
|
|
702
748
|
|
|
703
749
|
if ( scope.enabled === false ) return;
|
|
704
|
-
|
|
705
750
|
if ( pointers.length === 0 ) {
|
|
706
751
|
|
|
707
752
|
scope.domElement.setPointerCapture( event.pointerId );
|
|
708
753
|
scope.domElement.addEventListener( 'pointermove', onPointerMove );
|
|
709
754
|
scope.domElement.addEventListener( 'pointerup', onPointerUp );
|
|
710
755
|
|
|
711
|
-
}
|
|
756
|
+
}
|
|
712
757
|
|
|
758
|
+
//
|
|
713
759
|
|
|
714
760
|
addPointer( event );
|
|
715
|
-
|
|
716
761
|
if ( event.pointerType === 'touch' ) {
|
|
717
762
|
|
|
718
763
|
onTouchStart( event );
|
|
@@ -728,7 +773,6 @@
|
|
|
728
773
|
function onPointerMove( event ) {
|
|
729
774
|
|
|
730
775
|
if ( scope.enabled === false ) return;
|
|
731
|
-
|
|
732
776
|
if ( event.pointerType === 'touch' ) {
|
|
733
777
|
|
|
734
778
|
onTouchMove( event );
|
|
@@ -744,7 +788,6 @@
|
|
|
744
788
|
function onPointerUp( event ) {
|
|
745
789
|
|
|
746
790
|
removePointer( event );
|
|
747
|
-
|
|
748
791
|
if ( pointers.length === 0 ) {
|
|
749
792
|
|
|
750
793
|
scope.domElement.releasePointerCapture( event.pointerId );
|
|
@@ -767,21 +810,17 @@
|
|
|
767
810
|
function onMouseDown( event ) {
|
|
768
811
|
|
|
769
812
|
let mouseAction;
|
|
770
|
-
|
|
771
813
|
switch ( event.button ) {
|
|
772
814
|
|
|
773
815
|
case 0:
|
|
774
816
|
mouseAction = scope.mouseButtons.LEFT;
|
|
775
817
|
break;
|
|
776
|
-
|
|
777
818
|
case 1:
|
|
778
819
|
mouseAction = scope.mouseButtons.MIDDLE;
|
|
779
820
|
break;
|
|
780
|
-
|
|
781
821
|
case 2:
|
|
782
822
|
mouseAction = scope.mouseButtons.RIGHT;
|
|
783
823
|
break;
|
|
784
|
-
|
|
785
824
|
default:
|
|
786
825
|
mouseAction = - 1;
|
|
787
826
|
|
|
@@ -794,7 +833,6 @@
|
|
|
794
833
|
handleMouseDownDolly( event );
|
|
795
834
|
state = STATE.DOLLY;
|
|
796
835
|
break;
|
|
797
|
-
|
|
798
836
|
case THREE.MOUSE.ROTATE:
|
|
799
837
|
if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
|
|
800
838
|
|
|
@@ -811,7 +849,6 @@
|
|
|
811
849
|
}
|
|
812
850
|
|
|
813
851
|
break;
|
|
814
|
-
|
|
815
852
|
case THREE.MOUSE.PAN:
|
|
816
853
|
if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
|
|
817
854
|
|
|
@@ -828,7 +865,6 @@
|
|
|
828
865
|
}
|
|
829
866
|
|
|
830
867
|
break;
|
|
831
|
-
|
|
832
868
|
default:
|
|
833
869
|
state = STATE.NONE;
|
|
834
870
|
|
|
@@ -844,20 +880,16 @@
|
|
|
844
880
|
|
|
845
881
|
function onMouseMove( event ) {
|
|
846
882
|
|
|
847
|
-
if ( scope.enabled === false ) return;
|
|
848
|
-
|
|
849
883
|
switch ( state ) {
|
|
850
884
|
|
|
851
885
|
case STATE.ROTATE:
|
|
852
886
|
if ( scope.enableRotate === false ) return;
|
|
853
887
|
handleMouseMoveRotate( event );
|
|
854
888
|
break;
|
|
855
|
-
|
|
856
889
|
case STATE.DOLLY:
|
|
857
890
|
if ( scope.enableZoom === false ) return;
|
|
858
891
|
handleMouseMoveDolly( event );
|
|
859
892
|
break;
|
|
860
|
-
|
|
861
893
|
case STATE.PAN:
|
|
862
894
|
if ( scope.enablePan === false ) return;
|
|
863
895
|
handleMouseMovePan( event );
|
|
@@ -887,7 +919,6 @@
|
|
|
887
919
|
function onTouchStart( event ) {
|
|
888
920
|
|
|
889
921
|
trackPointer( event );
|
|
890
|
-
|
|
891
922
|
switch ( pointers.length ) {
|
|
892
923
|
|
|
893
924
|
case 1:
|
|
@@ -898,20 +929,17 @@
|
|
|
898
929
|
handleTouchStartRotate();
|
|
899
930
|
state = STATE.TOUCH_ROTATE;
|
|
900
931
|
break;
|
|
901
|
-
|
|
902
932
|
case THREE.TOUCH.PAN:
|
|
903
933
|
if ( scope.enablePan === false ) return;
|
|
904
934
|
handleTouchStartPan();
|
|
905
935
|
state = STATE.TOUCH_PAN;
|
|
906
936
|
break;
|
|
907
|
-
|
|
908
937
|
default:
|
|
909
938
|
state = STATE.NONE;
|
|
910
939
|
|
|
911
940
|
}
|
|
912
941
|
|
|
913
942
|
break;
|
|
914
|
-
|
|
915
943
|
case 2:
|
|
916
944
|
switch ( scope.touches.TWO ) {
|
|
917
945
|
|
|
@@ -920,20 +948,17 @@
|
|
|
920
948
|
handleTouchStartDollyPan();
|
|
921
949
|
state = STATE.TOUCH_DOLLY_PAN;
|
|
922
950
|
break;
|
|
923
|
-
|
|
924
951
|
case THREE.TOUCH.DOLLY_ROTATE:
|
|
925
952
|
if ( scope.enableZoom === false && scope.enableRotate === false ) return;
|
|
926
953
|
handleTouchStartDollyRotate();
|
|
927
954
|
state = STATE.TOUCH_DOLLY_ROTATE;
|
|
928
955
|
break;
|
|
929
|
-
|
|
930
956
|
default:
|
|
931
957
|
state = STATE.NONE;
|
|
932
958
|
|
|
933
959
|
}
|
|
934
960
|
|
|
935
961
|
break;
|
|
936
|
-
|
|
937
962
|
default:
|
|
938
963
|
state = STATE.NONE;
|
|
939
964
|
|
|
@@ -950,7 +975,6 @@
|
|
|
950
975
|
function onTouchMove( event ) {
|
|
951
976
|
|
|
952
977
|
trackPointer( event );
|
|
953
|
-
|
|
954
978
|
switch ( state ) {
|
|
955
979
|
|
|
956
980
|
case STATE.TOUCH_ROTATE:
|
|
@@ -958,25 +982,21 @@
|
|
|
958
982
|
handleTouchMoveRotate( event );
|
|
959
983
|
scope.update();
|
|
960
984
|
break;
|
|
961
|
-
|
|
962
985
|
case STATE.TOUCH_PAN:
|
|
963
986
|
if ( scope.enablePan === false ) return;
|
|
964
987
|
handleTouchMovePan( event );
|
|
965
988
|
scope.update();
|
|
966
989
|
break;
|
|
967
|
-
|
|
968
990
|
case STATE.TOUCH_DOLLY_PAN:
|
|
969
991
|
if ( scope.enableZoom === false && scope.enablePan === false ) return;
|
|
970
992
|
handleTouchMoveDollyPan( event );
|
|
971
993
|
scope.update();
|
|
972
994
|
break;
|
|
973
|
-
|
|
974
995
|
case STATE.TOUCH_DOLLY_ROTATE:
|
|
975
996
|
if ( scope.enableZoom === false && scope.enableRotate === false ) return;
|
|
976
997
|
handleTouchMoveDollyRotate( event );
|
|
977
998
|
scope.update();
|
|
978
999
|
break;
|
|
979
|
-
|
|
980
1000
|
default:
|
|
981
1001
|
state = STATE.NONE;
|
|
982
1002
|
|
|
@@ -1000,7 +1020,6 @@
|
|
|
1000
1020
|
function removePointer( event ) {
|
|
1001
1021
|
|
|
1002
1022
|
delete pointerPositions[ event.pointerId ];
|
|
1003
|
-
|
|
1004
1023
|
for ( let i = 0; i < pointers.length; i ++ ) {
|
|
1005
1024
|
|
|
1006
1025
|
if ( pointers[ i ].pointerId == event.pointerId ) {
|
|
@@ -1017,7 +1036,6 @@
|
|
|
1017
1036
|
function trackPointer( event ) {
|
|
1018
1037
|
|
|
1019
1038
|
let position = pointerPositions[ event.pointerId ];
|
|
1020
|
-
|
|
1021
1039
|
if ( position === undefined ) {
|
|
1022
1040
|
|
|
1023
1041
|
position = new THREE.Vector2();
|
|
@@ -1034,21 +1052,26 @@
|
|
|
1034
1052
|
const pointer = event.pointerId === pointers[ 0 ].pointerId ? pointers[ 1 ] : pointers[ 0 ];
|
|
1035
1053
|
return pointerPositions[ pointer.pointerId ];
|
|
1036
1054
|
|
|
1037
|
-
}
|
|
1055
|
+
}
|
|
1038
1056
|
|
|
1057
|
+
//
|
|
1039
1058
|
|
|
1040
1059
|
scope.domElement.addEventListener( 'contextmenu', onContextMenu );
|
|
1041
1060
|
scope.domElement.addEventListener( 'pointerdown', onPointerDown );
|
|
1042
1061
|
scope.domElement.addEventListener( 'pointercancel', onPointerCancel );
|
|
1043
1062
|
scope.domElement.addEventListener( 'wheel', onMouseWheel, {
|
|
1044
1063
|
passive: false
|
|
1045
|
-
} );
|
|
1064
|
+
} );
|
|
1065
|
+
|
|
1066
|
+
// force an update at start
|
|
1046
1067
|
|
|
1047
1068
|
this.update();
|
|
1048
1069
|
|
|
1049
1070
|
}
|
|
1050
1071
|
|
|
1051
|
-
}
|
|
1072
|
+
}
|
|
1073
|
+
|
|
1074
|
+
// This set of controls performs orbiting, dollying (zooming), and panning.
|
|
1052
1075
|
// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default).
|
|
1053
1076
|
// This is very similar to OrbitControls, another set of touch behavior
|
|
1054
1077
|
//
|
|
@@ -1056,7 +1079,6 @@
|
|
|
1056
1079
|
// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish
|
|
1057
1080
|
// Pan - left mouse, or arrow keys / touch: one-finger move
|
|
1058
1081
|
|
|
1059
|
-
|
|
1060
1082
|
class MapControls extends OrbitControls {
|
|
1061
1083
|
|
|
1062
1084
|
constructor( object, domElement ) {
|