@needle-tools/three 0.145.4 → 0.146.2
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 +1 -1
- package/build/three.cjs +32586 -35951
- package/build/three.js +32600 -35965
- package/build/three.min.js +6 -7
- package/build/three.module.js +1547 -1154
- package/examples/js/animation/AnimationClipCreator.js +0 -8
- package/examples/js/animation/CCDIKSolver.js +49 -66
- package/examples/js/animation/MMDAnimationHelper.js +66 -137
- package/examples/js/animation/MMDPhysics.js +70 -134
- package/examples/js/cameras/CinematicCamera.js +33 -22
- package/examples/js/controls/ArcballControls.js +138 -405
- package/examples/js/controls/DragControls.js +8 -33
- package/examples/js/controls/FirstPersonControls.js +32 -54
- package/examples/js/controls/FlyControls.js +29 -55
- package/examples/js/controls/OrbitControls.js +85 -95
- package/examples/js/controls/PointerLockControls.js +5 -14
- package/examples/js/controls/TrackballControls.js +33 -86
- package/examples/js/controls/TransformControls.js +84 -169
- 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 +4 -18
- package/examples/js/effects/AsciiEffect.js +32 -31
- package/examples/js/effects/OutlineEffect.js +26 -30
- package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
- package/examples/js/effects/PeppersGhostEffect.js +12 -39
- package/examples/js/effects/StereoEffect.js +0 -4
- package/examples/js/environments/RoomEnvironment.js +12 -10
- package/examples/js/exporters/ColladaExporter.js +48 -65
- package/examples/js/exporters/DRACOExporter.js +22 -22
- package/examples/js/exporters/EXRExporter.js +15 -18
- package/examples/js/exporters/GLTFExporter.js +143 -261
- package/examples/js/exporters/MMDExporter.js +5 -12
- package/examples/js/exporters/OBJExporter.js +42 -33
- package/examples/js/exporters/PLYExporter.js +38 -33
- package/examples/js/exporters/STLExporter.js +5 -7
- package/examples/js/exporters/USDZExporter.js +110 -25
- package/examples/js/geometries/BoxLineGeometry.js +0 -1
- package/examples/js/geometries/ConvexGeometry.js +11 -6
- 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 +25 -12
- 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 +22 -33
- package/examples/js/interactive/InteractiveGroup.js +6 -12
- package/examples/js/interactive/SelectionBox.js +3 -70
- package/examples/js/interactive/SelectionHelper.js +0 -8
- 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 +38 -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 +201 -359
- package/examples/js/loaders/DDSLoader.js +24 -25
- package/examples/js/loaders/DRACOLoader.js +29 -66
- package/examples/js/loaders/EXRLoader.js +67 -164
- package/examples/js/loaders/FBXLoader.js +286 -441
- package/examples/js/loaders/FontLoader.js +6 -15
- package/examples/js/loaders/GCodeLoader.js +15 -16
- package/examples/js/loaders/GLTFLoader.js +354 -405
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
- package/examples/js/loaders/KMZLoader.js +3 -7
- package/examples/js/loaders/KTXLoader.js +12 -30
- package/examples/js/loaders/LDrawLoader.js +178 -289
- 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/MaterialXLoader.js +392 -0
- package/examples/js/loaders/NRRDLoader.js +44 -84
- package/examples/js/loaders/OBJLoader.js +50 -65
- package/examples/js/loaders/PCDLoader.js +34 -29
- package/examples/js/loaders/PDBLoader.js +17 -13
- package/examples/js/loaders/PLYLoader.js +9 -39
- 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 +361 -233
- package/examples/js/loaders/TDSLoader.js +81 -118
- package/examples/js/loaders/TGALoader.js +39 -41
- package/examples/js/loaders/TIFFLoader.js +0 -1
- 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 +243 -340
- package/examples/js/loaders/VTKLoader.js +101 -118
- package/examples/js/loaders/XYZLoader.js +2 -4
- package/examples/js/loaders/lwo/IFFParser.js +55 -136
- package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
- package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
- package/examples/js/materials/MeshGouraudMaterial.js +15 -13
- package/examples/js/math/Capsule.js +0 -17
- package/examples/js/math/ColorConverter.js +3 -3
- package/examples/js/math/ConvexHull.js +183 -139
- 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 +14 -18
- 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 +16 -45
- package/examples/js/misc/VolumeSlice.js +14 -24
- package/examples/js/modifiers/CurveModifier.js +19 -21
- package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
- package/examples/js/modifiers/SimplifyModifier.js +56 -59
- package/examples/js/modifiers/TessellateModifier.js +2 -9
- package/examples/js/objects/GroundProjectedEnv.js +2 -14
- 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 +22 -20
- package/examples/js/objects/ReflectorForSSRPass.js +19 -23
- package/examples/js/objects/Refractor.js +52 -30
- package/examples/js/objects/ShadowMesh.js +1 -2
- 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 +45 -36
- package/examples/js/postprocessing/Pass.js +11 -14
- package/examples/js/postprocessing/RenderPass.js +3 -7
- 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 +2 -21
- package/examples/js/renderers/CSS3DRenderer.js +3 -24
- package/examples/js/renderers/Projector.js +29 -85
- 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 +3 -6
- package/examples/js/shaders/MMDToonShader.js +2 -6
- 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 +3 -6
- 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 +234 -168
- 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 +13 -18
- package/examples/js/utils/LDrawUtils.js +8 -11
- package/examples/js/utils/PackedPhongMaterial.js +6 -4
- package/examples/js/utils/SceneUtils.js +117 -6
- 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 +1 -1
- package/examples/jsm/capabilities/WebGPU.js +3 -1
- package/examples/jsm/controls/OrbitControls.js +44 -4
- package/examples/jsm/exporters/GLTFExporter.js +17 -131
- package/examples/jsm/exporters/USDZExporter.js +75 -19
- package/examples/jsm/interactive/HTMLMesh.js +2 -0
- package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -2
- package/examples/jsm/loaders/ColladaLoader.js +28 -0
- package/examples/jsm/loaders/FBXLoader.js +16 -2
- package/examples/jsm/loaders/GLTFLoader.js +204 -377
- package/examples/jsm/loaders/KTX2Loader.js +68 -29
- package/examples/jsm/loaders/LDrawLoader.js +14 -13
- package/examples/jsm/loaders/LottieLoader.js +4 -2
- package/examples/jsm/loaders/MaterialXLoader.js +728 -0
- package/examples/jsm/loaders/PCDLoader.js +1 -1
- package/examples/jsm/loaders/PLYLoader.js +68 -16
- package/examples/jsm/loaders/SVGLoader.js +227 -14
- package/examples/jsm/loaders/USDZLoader.js +31 -16
- package/examples/jsm/nodes/Nodes.js +14 -2
- package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
- package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
- package/examples/jsm/nodes/accessors/SkinningNode.js +1 -1
- package/examples/jsm/nodes/core/Node.js +1 -1
- package/examples/jsm/nodes/core/NodeBuilder.js +36 -4
- package/examples/jsm/nodes/core/NodeFrame.js +2 -2
- package/examples/jsm/nodes/core/NodeVarying.js +7 -4
- package/examples/jsm/nodes/core/VaryingNode.js +6 -4
- package/examples/jsm/nodes/core/constants.js +13 -13
- package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
- package/examples/jsm/nodes/display/ViewportNode.js +106 -0
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
- package/examples/jsm/nodes/materials/Materials.js +9 -7
- package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +6 -2
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
- package/examples/jsm/nodes/math/MathNode.js +5 -0
- package/examples/jsm/nodes/math/OperatorNode.js +6 -1
- package/examples/jsm/nodes/shadernode/ShaderNode.js +26 -13
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +2 -0
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +18 -0
- package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
- package/examples/jsm/nodes/utils/JoinNode.js +8 -2
- package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
- package/examples/jsm/nodes/utils/TimerNode.js +1 -1
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
- 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 +10 -0
- 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/webgl/nodes/WebGLNodeBuilder.js +39 -16
- 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 +36 -7
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +35 -5
- package/examples/jsm/shaders/MMDToonShader.js +0 -2
- package/examples/jsm/shaders/VelocityShader.js +128 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +130 -6
- package/examples/jsm/utils/SceneUtils.js +129 -4
- package/examples/jsm/utils/TextureUtils.js +85 -0
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +6 -3
- package/package.json +11 -12
- package/src/Three.js +1 -0
- package/src/audio/AudioContext.js +5 -5
- package/src/cameras/CubeCamera.js +14 -14
- package/src/constants.js +1 -1
- package/src/core/InstancedBufferGeometry.js +1 -7
- package/src/extras/Earcut.js +67 -67
- package/src/helpers/DirectionalLightHelper.js +5 -1
- package/src/helpers/HemisphereLightHelper.js +4 -1
- package/src/helpers/PointLightHelper.js +2 -1
- package/src/helpers/SpotLightHelper.js +4 -2
- package/src/lights/PointLight.js +2 -2
- package/src/lights/SpotLight.js +2 -2
- package/src/loaders/FileLoader.js +4 -1
- package/src/loaders/ObjectLoader.js +5 -1
- package/src/materials/Material.js +1 -1
- package/src/math/Color.js +5 -5
- package/src/math/Matrix3.js +53 -18
- package/src/math/Ray.js +2 -5
- package/src/math/Sphere.js +19 -26
- 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 +36 -62
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk.js +3 -0
- 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.js +20 -6
- package/src/renderers/shaders/UniformsLib.js +1 -1
- package/src/renderers/shaders/UniformsUtils.js +15 -0
- package/src/renderers/webgl/WebGLAttributes.js +2 -0
- package/src/renderers/webgl/WebGLBackground.js +15 -7
- package/src/renderers/webgl/WebGLLights.js +0 -4
- package/src/renderers/webgl/WebGLMaterials.js +2 -1
- package/src/renderers/webgl/WebGLShadowMap.js +3 -1
- package/src/renderers/webgl/WebGLState.js +31 -1
- package/src/renderers/webgl/WebGLTextures.js +71 -18
- package/src/renderers/webgl/WebGLUniforms.js +116 -20
- package/src/renderers/webgl/WebGLUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +46 -13
- package/src/renderers/webxr/WebXRManager.js +85 -3
- package/src/scenes/Scene.js +8 -0
- package/src/textures/CompressedArrayTexture.js +18 -0
- package/examples/js/libs/lottie_canvas.js +0 -12751
- package/examples/js/shaders/PixelShader.js +0 -51
- package/examples/jsm/shaders/PixelShader.js +0 -44
|
@@ -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,7 +16,6 @@
|
|
|
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 ) {
|
|
@@ -24,76 +24,86 @@
|
|
|
24
24
|
this.object = object;
|
|
25
25
|
this.domElement = domElement;
|
|
26
26
|
this.domElement.style.touchAction = 'none'; // disable touch scroll
|
|
27
|
-
// Set to false to disable this control
|
|
28
27
|
|
|
29
|
-
|
|
28
|
+
// Set to false to disable this control
|
|
29
|
+
this.enabled = true;
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
// "target" sets the location of focus, where the object orbits around
|
|
32
|
+
this.target = new THREE.Vector3();
|
|
32
33
|
|
|
34
|
+
// How far you can dolly in and out ( PerspectiveCamera only )
|
|
33
35
|
this.minDistance = 0;
|
|
34
|
-
this.maxDistance = Infinity;
|
|
36
|
+
this.maxDistance = Infinity;
|
|
35
37
|
|
|
38
|
+
// How far you can zoom in and out ( OrthographicCamera only )
|
|
36
39
|
this.minZoom = 0;
|
|
37
|
-
this.maxZoom = Infinity;
|
|
38
|
-
// Range is 0 to Math.PI radians.
|
|
40
|
+
this.maxZoom = Infinity;
|
|
39
41
|
|
|
42
|
+
// How far you can orbit vertically, upper and lower limits.
|
|
43
|
+
// Range is 0 to Math.PI radians.
|
|
40
44
|
this.minPolarAngle = 0; // radians
|
|
41
|
-
|
|
42
45
|
this.maxPolarAngle = Math.PI; // radians
|
|
46
|
+
|
|
43
47
|
// How far you can orbit horizontally, upper and lower limits.
|
|
44
48
|
// If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )
|
|
45
|
-
|
|
46
49
|
this.minAzimuthAngle = - Infinity; // radians
|
|
47
|
-
|
|
48
50
|
this.maxAzimuthAngle = Infinity; // radians
|
|
51
|
+
|
|
49
52
|
// Set to true to enable damping (inertia)
|
|
50
53
|
// If damping is enabled, you must call controls.update() in your animation loop
|
|
51
|
-
|
|
52
54
|
this.enableDamping = false;
|
|
53
|
-
this.dampingFactor = 0.05;
|
|
54
|
-
// Set to false to disable zooming
|
|
55
|
+
this.dampingFactor = 0.05;
|
|
55
56
|
|
|
57
|
+
// This option actually enables dollying in and out; left as "zoom" for backwards compatibility.
|
|
58
|
+
// Set to false to disable zooming
|
|
56
59
|
this.enableZoom = true;
|
|
57
|
-
this.zoomSpeed = 1.0;
|
|
60
|
+
this.zoomSpeed = 1.0;
|
|
58
61
|
|
|
62
|
+
// Set to false to disable rotating
|
|
59
63
|
this.enableRotate = true;
|
|
60
|
-
this.rotateSpeed = 1.0;
|
|
64
|
+
this.rotateSpeed = 1.0;
|
|
61
65
|
|
|
66
|
+
// Set to false to disable panning
|
|
62
67
|
this.enablePan = true;
|
|
63
68
|
this.panSpeed = 1.0;
|
|
64
69
|
this.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up
|
|
65
|
-
|
|
66
70
|
this.keyPanSpeed = 7.0; // pixels moved per arrow key push
|
|
71
|
+
|
|
67
72
|
// Set to true to automatically rotate around the target
|
|
68
73
|
// If auto-rotate is enabled, you must call controls.update() in your animation loop
|
|
69
|
-
|
|
70
74
|
this.autoRotate = false;
|
|
71
75
|
this.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60
|
|
72
|
-
// The four arrow keys
|
|
73
76
|
|
|
77
|
+
// The four arrow keys
|
|
74
78
|
this.keys = {
|
|
75
79
|
LEFT: 'ArrowLeft',
|
|
76
80
|
UP: 'ArrowUp',
|
|
77
81
|
RIGHT: 'ArrowRight',
|
|
78
82
|
BOTTOM: 'ArrowDown'
|
|
79
|
-
};
|
|
83
|
+
};
|
|
80
84
|
|
|
85
|
+
// Mouse buttons
|
|
81
86
|
this.mouseButtons = {
|
|
82
87
|
LEFT: THREE.MOUSE.ROTATE,
|
|
83
88
|
MIDDLE: THREE.MOUSE.DOLLY,
|
|
84
89
|
RIGHT: THREE.MOUSE.PAN
|
|
85
|
-
};
|
|
90
|
+
};
|
|
86
91
|
|
|
92
|
+
// Touch fingers
|
|
87
93
|
this.touches = {
|
|
88
94
|
ONE: THREE.TOUCH.ROTATE,
|
|
89
95
|
TWO: THREE.TOUCH.DOLLY_PAN
|
|
90
|
-
};
|
|
96
|
+
};
|
|
91
97
|
|
|
98
|
+
// for reset
|
|
92
99
|
this.target0 = this.target.clone();
|
|
93
100
|
this.position0 = this.object.position.clone();
|
|
94
|
-
this.zoom0 = this.object.zoom;
|
|
101
|
+
this.zoom0 = this.object.zoom;
|
|
102
|
+
|
|
103
|
+
// the target DOM element for key events
|
|
104
|
+
this._domElementKeyEvents = null;
|
|
95
105
|
|
|
96
|
-
|
|
106
|
+
//
|
|
97
107
|
// public methods
|
|
98
108
|
//
|
|
99
109
|
|
|
@@ -140,13 +150,14 @@
|
|
|
140
150
|
scope.update();
|
|
141
151
|
state = STATE.NONE;
|
|
142
152
|
|
|
143
|
-
};
|
|
144
|
-
|
|
153
|
+
};
|
|
145
154
|
|
|
155
|
+
// this method is exposed, but perhaps it would be better if we can make it private...
|
|
146
156
|
this.update = function () {
|
|
147
157
|
|
|
148
|
-
const offset = new THREE.Vector3();
|
|
158
|
+
const offset = new THREE.Vector3();
|
|
149
159
|
|
|
160
|
+
// so camera.up is the orbit axis
|
|
150
161
|
const quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) );
|
|
151
162
|
const quatInverse = quat.clone().invert();
|
|
152
163
|
const lastPosition = new THREE.Vector3();
|
|
@@ -155,12 +166,13 @@
|
|
|
155
166
|
return function update() {
|
|
156
167
|
|
|
157
168
|
const position = scope.object.position;
|
|
158
|
-
offset.copy( position ).sub( scope.target );
|
|
169
|
+
offset.copy( position ).sub( scope.target );
|
|
159
170
|
|
|
160
|
-
|
|
171
|
+
// rotate offset to "y-axis-is-up" space
|
|
172
|
+
offset.applyQuaternion( quat );
|
|
161
173
|
|
|
174
|
+
// angle from z-axis around y-axis
|
|
162
175
|
spherical.setFromVector3( offset );
|
|
163
|
-
|
|
164
176
|
if ( scope.autoRotate && state === STATE.NONE ) {
|
|
165
177
|
|
|
166
178
|
rotateLeft( getAutoRotationAngle() );
|
|
@@ -177,17 +189,16 @@
|
|
|
177
189
|
spherical.theta += sphericalDelta.theta;
|
|
178
190
|
spherical.phi += sphericalDelta.phi;
|
|
179
191
|
|
|
180
|
-
}
|
|
192
|
+
}
|
|
181
193
|
|
|
194
|
+
// restrict theta to be between desired limits
|
|
182
195
|
|
|
183
196
|
let min = scope.minAzimuthAngle;
|
|
184
197
|
let max = scope.maxAzimuthAngle;
|
|
185
|
-
|
|
186
198
|
if ( isFinite( min ) && isFinite( max ) ) {
|
|
187
199
|
|
|
188
200
|
if ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;
|
|
189
201
|
if ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;
|
|
190
|
-
|
|
191
202
|
if ( min <= max ) {
|
|
192
203
|
|
|
193
204
|
spherical.theta = Math.max( min, Math.min( max, spherical.theta ) );
|
|
@@ -198,14 +209,17 @@
|
|
|
198
209
|
|
|
199
210
|
}
|
|
200
211
|
|
|
201
|
-
}
|
|
202
|
-
|
|
212
|
+
}
|
|
203
213
|
|
|
214
|
+
// restrict phi to be between desired limits
|
|
204
215
|
spherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );
|
|
205
216
|
spherical.makeSafe();
|
|
206
|
-
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 ) );
|
|
207
221
|
|
|
208
|
-
|
|
222
|
+
// move target to panned location
|
|
209
223
|
|
|
210
224
|
if ( scope.enableDamping === true ) {
|
|
211
225
|
|
|
@@ -217,12 +231,12 @@
|
|
|
217
231
|
|
|
218
232
|
}
|
|
219
233
|
|
|
220
|
-
offset.setFromSpherical( spherical );
|
|
234
|
+
offset.setFromSpherical( spherical );
|
|
221
235
|
|
|
236
|
+
// rotate offset back to "camera-up-vector-is-up" space
|
|
222
237
|
offset.applyQuaternion( quatInverse );
|
|
223
238
|
position.copy( scope.target ).add( offset );
|
|
224
239
|
scope.object.lookAt( scope.target );
|
|
225
|
-
|
|
226
240
|
if ( scope.enableDamping === true ) {
|
|
227
241
|
|
|
228
242
|
sphericalDelta.theta *= 1 - scope.dampingFactor;
|
|
@@ -236,7 +250,9 @@
|
|
|
236
250
|
|
|
237
251
|
}
|
|
238
252
|
|
|
239
|
-
scale = 1;
|
|
253
|
+
scale = 1;
|
|
254
|
+
|
|
255
|
+
// update condition is:
|
|
240
256
|
// min(camera displacement, camera rotation in radians)^2 > EPS
|
|
241
257
|
// using small-angle approximation cos(x/2) = 1 - x^2 / 8
|
|
242
258
|
|
|
@@ -255,7 +271,6 @@
|
|
|
255
271
|
};
|
|
256
272
|
|
|
257
273
|
}();
|
|
258
|
-
|
|
259
274
|
this.dispose = function () {
|
|
260
275
|
|
|
261
276
|
scope.domElement.removeEventListener( 'contextmenu', onContextMenu );
|
|
@@ -264,18 +279,20 @@
|
|
|
264
279
|
scope.domElement.removeEventListener( 'wheel', onMouseWheel );
|
|
265
280
|
scope.domElement.removeEventListener( 'pointermove', onPointerMove );
|
|
266
281
|
scope.domElement.removeEventListener( 'pointerup', onPointerUp );
|
|
267
|
-
|
|
268
282
|
if ( scope._domElementKeyEvents !== null ) {
|
|
269
283
|
|
|
270
284
|
scope._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown );
|
|
271
285
|
|
|
272
|
-
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?
|
|
289
|
+
|
|
290
|
+
};
|
|
273
291
|
|
|
274
|
-
|
|
292
|
+
//
|
|
275
293
|
// internals
|
|
276
294
|
//
|
|
277
295
|
|
|
278
|
-
|
|
279
296
|
const scope = this;
|
|
280
297
|
const STATE = {
|
|
281
298
|
NONE: - 1,
|
|
@@ -288,8 +305,9 @@
|
|
|
288
305
|
TOUCH_DOLLY_ROTATE: 6
|
|
289
306
|
};
|
|
290
307
|
let state = STATE.NONE;
|
|
291
|
-
const EPS = 0.000001;
|
|
308
|
+
const EPS = 0.000001;
|
|
292
309
|
|
|
310
|
+
// current position in spherical coordinates
|
|
293
311
|
const spherical = new THREE.Spherical();
|
|
294
312
|
const sphericalDelta = new THREE.Spherical();
|
|
295
313
|
let scale = 1;
|
|
@@ -306,7 +324,6 @@
|
|
|
306
324
|
const dollyDelta = new THREE.Vector2();
|
|
307
325
|
const pointers = [];
|
|
308
326
|
const pointerPositions = {};
|
|
309
|
-
|
|
310
327
|
function getAutoRotationAngle() {
|
|
311
328
|
|
|
312
329
|
return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;
|
|
@@ -337,14 +354,12 @@
|
|
|
337
354
|
return function panLeft( distance, objectMatrix ) {
|
|
338
355
|
|
|
339
356
|
v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix
|
|
340
|
-
|
|
341
357
|
v.multiplyScalar( - distance );
|
|
342
358
|
panOffset.add( v );
|
|
343
359
|
|
|
344
360
|
};
|
|
345
361
|
|
|
346
362
|
}();
|
|
347
|
-
|
|
348
363
|
const panUp = function () {
|
|
349
364
|
|
|
350
365
|
const v = new THREE.Vector3();
|
|
@@ -366,25 +381,26 @@
|
|
|
366
381
|
|
|
367
382
|
};
|
|
368
383
|
|
|
369
|
-
}();
|
|
370
|
-
|
|
384
|
+
}();
|
|
371
385
|
|
|
386
|
+
// deltaX and deltaY are in pixels; right and down are positive
|
|
372
387
|
const pan = function () {
|
|
373
388
|
|
|
374
389
|
const offset = new THREE.Vector3();
|
|
375
390
|
return function pan( deltaX, deltaY ) {
|
|
376
391
|
|
|
377
392
|
const element = scope.domElement;
|
|
378
|
-
|
|
379
393
|
if ( scope.object.isPerspectiveCamera ) {
|
|
380
394
|
|
|
381
395
|
// perspective
|
|
382
396
|
const position = scope.object.position;
|
|
383
397
|
offset.copy( position ).sub( scope.target );
|
|
384
|
-
let targetDistance = offset.length();
|
|
398
|
+
let targetDistance = offset.length();
|
|
385
399
|
|
|
386
|
-
|
|
400
|
+
// half of the fov is center to top of screen
|
|
401
|
+
targetDistance *= Math.tan( scope.object.fov / 2 * Math.PI / 180.0 );
|
|
387
402
|
|
|
403
|
+
// we use only clientHeight here so aspect ratio does not distort speed
|
|
388
404
|
panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );
|
|
389
405
|
panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );
|
|
390
406
|
|
|
@@ -405,7 +421,6 @@
|
|
|
405
421
|
};
|
|
406
422
|
|
|
407
423
|
}();
|
|
408
|
-
|
|
409
424
|
function dollyOut( dollyScale ) {
|
|
410
425
|
|
|
411
426
|
if ( scope.object.isPerspectiveCamera ) {
|
|
@@ -446,11 +461,12 @@
|
|
|
446
461
|
|
|
447
462
|
}
|
|
448
463
|
|
|
449
|
-
}
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
//
|
|
450
467
|
// event callbacks - update the object state
|
|
451
468
|
//
|
|
452
469
|
|
|
453
|
-
|
|
454
470
|
function handleMouseDownRotate( event ) {
|
|
455
471
|
|
|
456
472
|
rotateStart.set( event.clientX, event.clientY );
|
|
@@ -486,7 +502,6 @@
|
|
|
486
502
|
|
|
487
503
|
dollyEnd.set( event.clientX, event.clientY );
|
|
488
504
|
dollyDelta.subVectors( dollyEnd, dollyStart );
|
|
489
|
-
|
|
490
505
|
if ( dollyDelta.y > 0 ) {
|
|
491
506
|
|
|
492
507
|
dollyOut( getZoomScale() );
|
|
@@ -531,24 +546,20 @@
|
|
|
531
546
|
function handleKeyDown( event ) {
|
|
532
547
|
|
|
533
548
|
let needsUpdate = false;
|
|
534
|
-
|
|
535
549
|
switch ( event.code ) {
|
|
536
550
|
|
|
537
551
|
case scope.keys.UP:
|
|
538
552
|
pan( 0, scope.keyPanSpeed );
|
|
539
553
|
needsUpdate = true;
|
|
540
554
|
break;
|
|
541
|
-
|
|
542
555
|
case scope.keys.BOTTOM:
|
|
543
556
|
pan( 0, - scope.keyPanSpeed );
|
|
544
557
|
needsUpdate = true;
|
|
545
558
|
break;
|
|
546
|
-
|
|
547
559
|
case scope.keys.LEFT:
|
|
548
560
|
pan( scope.keyPanSpeed, 0 );
|
|
549
561
|
needsUpdate = true;
|
|
550
562
|
break;
|
|
551
|
-
|
|
552
563
|
case scope.keys.RIGHT:
|
|
553
564
|
pan( - scope.keyPanSpeed, 0 );
|
|
554
565
|
needsUpdate = true;
|
|
@@ -691,26 +702,26 @@
|
|
|
691
702
|
if ( scope.enableZoom ) handleTouchMoveDolly( event );
|
|
692
703
|
if ( scope.enableRotate ) handleTouchMoveRotate( event );
|
|
693
704
|
|
|
694
|
-
}
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
//
|
|
695
708
|
// event handlers - FSM: listen for events and reset state
|
|
696
709
|
//
|
|
697
710
|
|
|
698
|
-
|
|
699
711
|
function onPointerDown( event ) {
|
|
700
712
|
|
|
701
713
|
if ( scope.enabled === false ) return;
|
|
702
|
-
|
|
703
714
|
if ( pointers.length === 0 ) {
|
|
704
715
|
|
|
705
716
|
scope.domElement.setPointerCapture( event.pointerId );
|
|
706
717
|
scope.domElement.addEventListener( 'pointermove', onPointerMove );
|
|
707
718
|
scope.domElement.addEventListener( 'pointerup', onPointerUp );
|
|
708
719
|
|
|
709
|
-
}
|
|
720
|
+
}
|
|
710
721
|
|
|
722
|
+
//
|
|
711
723
|
|
|
712
724
|
addPointer( event );
|
|
713
|
-
|
|
714
725
|
if ( event.pointerType === 'touch' ) {
|
|
715
726
|
|
|
716
727
|
onTouchStart( event );
|
|
@@ -726,7 +737,6 @@
|
|
|
726
737
|
function onPointerMove( event ) {
|
|
727
738
|
|
|
728
739
|
if ( scope.enabled === false ) return;
|
|
729
|
-
|
|
730
740
|
if ( event.pointerType === 'touch' ) {
|
|
731
741
|
|
|
732
742
|
onTouchMove( event );
|
|
@@ -742,7 +752,6 @@
|
|
|
742
752
|
function onPointerUp( event ) {
|
|
743
753
|
|
|
744
754
|
removePointer( event );
|
|
745
|
-
|
|
746
755
|
if ( pointers.length === 0 ) {
|
|
747
756
|
|
|
748
757
|
scope.domElement.releasePointerCapture( event.pointerId );
|
|
@@ -765,21 +774,17 @@
|
|
|
765
774
|
function onMouseDown( event ) {
|
|
766
775
|
|
|
767
776
|
let mouseAction;
|
|
768
|
-
|
|
769
777
|
switch ( event.button ) {
|
|
770
778
|
|
|
771
779
|
case 0:
|
|
772
780
|
mouseAction = scope.mouseButtons.LEFT;
|
|
773
781
|
break;
|
|
774
|
-
|
|
775
782
|
case 1:
|
|
776
783
|
mouseAction = scope.mouseButtons.MIDDLE;
|
|
777
784
|
break;
|
|
778
|
-
|
|
779
785
|
case 2:
|
|
780
786
|
mouseAction = scope.mouseButtons.RIGHT;
|
|
781
787
|
break;
|
|
782
|
-
|
|
783
788
|
default:
|
|
784
789
|
mouseAction = - 1;
|
|
785
790
|
|
|
@@ -792,7 +797,6 @@
|
|
|
792
797
|
handleMouseDownDolly( event );
|
|
793
798
|
state = STATE.DOLLY;
|
|
794
799
|
break;
|
|
795
|
-
|
|
796
800
|
case THREE.MOUSE.ROTATE:
|
|
797
801
|
if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
|
|
798
802
|
|
|
@@ -809,7 +813,6 @@
|
|
|
809
813
|
}
|
|
810
814
|
|
|
811
815
|
break;
|
|
812
|
-
|
|
813
816
|
case THREE.MOUSE.PAN:
|
|
814
817
|
if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
|
|
815
818
|
|
|
@@ -826,7 +829,6 @@
|
|
|
826
829
|
}
|
|
827
830
|
|
|
828
831
|
break;
|
|
829
|
-
|
|
830
832
|
default:
|
|
831
833
|
state = STATE.NONE;
|
|
832
834
|
|
|
@@ -848,12 +850,10 @@
|
|
|
848
850
|
if ( scope.enableRotate === false ) return;
|
|
849
851
|
handleMouseMoveRotate( event );
|
|
850
852
|
break;
|
|
851
|
-
|
|
852
853
|
case STATE.DOLLY:
|
|
853
854
|
if ( scope.enableZoom === false ) return;
|
|
854
855
|
handleMouseMoveDolly( event );
|
|
855
856
|
break;
|
|
856
|
-
|
|
857
857
|
case STATE.PAN:
|
|
858
858
|
if ( scope.enablePan === false ) return;
|
|
859
859
|
handleMouseMovePan( event );
|
|
@@ -883,7 +883,6 @@
|
|
|
883
883
|
function onTouchStart( event ) {
|
|
884
884
|
|
|
885
885
|
trackPointer( event );
|
|
886
|
-
|
|
887
886
|
switch ( pointers.length ) {
|
|
888
887
|
|
|
889
888
|
case 1:
|
|
@@ -894,20 +893,17 @@
|
|
|
894
893
|
handleTouchStartRotate();
|
|
895
894
|
state = STATE.TOUCH_ROTATE;
|
|
896
895
|
break;
|
|
897
|
-
|
|
898
896
|
case THREE.TOUCH.PAN:
|
|
899
897
|
if ( scope.enablePan === false ) return;
|
|
900
898
|
handleTouchStartPan();
|
|
901
899
|
state = STATE.TOUCH_PAN;
|
|
902
900
|
break;
|
|
903
|
-
|
|
904
901
|
default:
|
|
905
902
|
state = STATE.NONE;
|
|
906
903
|
|
|
907
904
|
}
|
|
908
905
|
|
|
909
906
|
break;
|
|
910
|
-
|
|
911
907
|
case 2:
|
|
912
908
|
switch ( scope.touches.TWO ) {
|
|
913
909
|
|
|
@@ -916,20 +912,17 @@
|
|
|
916
912
|
handleTouchStartDollyPan();
|
|
917
913
|
state = STATE.TOUCH_DOLLY_PAN;
|
|
918
914
|
break;
|
|
919
|
-
|
|
920
915
|
case THREE.TOUCH.DOLLY_ROTATE:
|
|
921
916
|
if ( scope.enableZoom === false && scope.enableRotate === false ) return;
|
|
922
917
|
handleTouchStartDollyRotate();
|
|
923
918
|
state = STATE.TOUCH_DOLLY_ROTATE;
|
|
924
919
|
break;
|
|
925
|
-
|
|
926
920
|
default:
|
|
927
921
|
state = STATE.NONE;
|
|
928
922
|
|
|
929
923
|
}
|
|
930
924
|
|
|
931
925
|
break;
|
|
932
|
-
|
|
933
926
|
default:
|
|
934
927
|
state = STATE.NONE;
|
|
935
928
|
|
|
@@ -946,7 +939,6 @@
|
|
|
946
939
|
function onTouchMove( event ) {
|
|
947
940
|
|
|
948
941
|
trackPointer( event );
|
|
949
|
-
|
|
950
942
|
switch ( state ) {
|
|
951
943
|
|
|
952
944
|
case STATE.TOUCH_ROTATE:
|
|
@@ -954,25 +946,21 @@
|
|
|
954
946
|
handleTouchMoveRotate( event );
|
|
955
947
|
scope.update();
|
|
956
948
|
break;
|
|
957
|
-
|
|
958
949
|
case STATE.TOUCH_PAN:
|
|
959
950
|
if ( scope.enablePan === false ) return;
|
|
960
951
|
handleTouchMovePan( event );
|
|
961
952
|
scope.update();
|
|
962
953
|
break;
|
|
963
|
-
|
|
964
954
|
case STATE.TOUCH_DOLLY_PAN:
|
|
965
955
|
if ( scope.enableZoom === false && scope.enablePan === false ) return;
|
|
966
956
|
handleTouchMoveDollyPan( event );
|
|
967
957
|
scope.update();
|
|
968
958
|
break;
|
|
969
|
-
|
|
970
959
|
case STATE.TOUCH_DOLLY_ROTATE:
|
|
971
960
|
if ( scope.enableZoom === false && scope.enableRotate === false ) return;
|
|
972
961
|
handleTouchMoveDollyRotate( event );
|
|
973
962
|
scope.update();
|
|
974
963
|
break;
|
|
975
|
-
|
|
976
964
|
default:
|
|
977
965
|
state = STATE.NONE;
|
|
978
966
|
|
|
@@ -996,7 +984,6 @@
|
|
|
996
984
|
function removePointer( event ) {
|
|
997
985
|
|
|
998
986
|
delete pointerPositions[ event.pointerId ];
|
|
999
|
-
|
|
1000
987
|
for ( let i = 0; i < pointers.length; i ++ ) {
|
|
1001
988
|
|
|
1002
989
|
if ( pointers[ i ].pointerId == event.pointerId ) {
|
|
@@ -1013,7 +1000,6 @@
|
|
|
1013
1000
|
function trackPointer( event ) {
|
|
1014
1001
|
|
|
1015
1002
|
let position = pointerPositions[ event.pointerId ];
|
|
1016
|
-
|
|
1017
1003
|
if ( position === undefined ) {
|
|
1018
1004
|
|
|
1019
1005
|
position = new THREE.Vector2();
|
|
@@ -1030,21 +1016,26 @@
|
|
|
1030
1016
|
const pointer = event.pointerId === pointers[ 0 ].pointerId ? pointers[ 1 ] : pointers[ 0 ];
|
|
1031
1017
|
return pointerPositions[ pointer.pointerId ];
|
|
1032
1018
|
|
|
1033
|
-
}
|
|
1019
|
+
}
|
|
1034
1020
|
|
|
1021
|
+
//
|
|
1035
1022
|
|
|
1036
1023
|
scope.domElement.addEventListener( 'contextmenu', onContextMenu );
|
|
1037
1024
|
scope.domElement.addEventListener( 'pointerdown', onPointerDown );
|
|
1038
1025
|
scope.domElement.addEventListener( 'pointercancel', onPointerCancel );
|
|
1039
1026
|
scope.domElement.addEventListener( 'wheel', onMouseWheel, {
|
|
1040
1027
|
passive: false
|
|
1041
|
-
} );
|
|
1028
|
+
} );
|
|
1029
|
+
|
|
1030
|
+
// force an update at start
|
|
1042
1031
|
|
|
1043
1032
|
this.update();
|
|
1044
1033
|
|
|
1045
1034
|
}
|
|
1046
1035
|
|
|
1047
|
-
}
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
// This set of controls performs orbiting, dollying (zooming), and panning.
|
|
1048
1039
|
// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default).
|
|
1049
1040
|
// This is very similar to OrbitControls, another set of touch behavior
|
|
1050
1041
|
//
|
|
@@ -1052,7 +1043,6 @@
|
|
|
1052
1043
|
// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish
|
|
1053
1044
|
// Pan - left mouse, or arrow keys / touch: one-finger move
|
|
1054
1045
|
|
|
1055
|
-
|
|
1056
1046
|
class MapControls extends OrbitControls {
|
|
1057
1047
|
|
|
1058
1048
|
constructor( object, domElement ) {
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
( function () {
|
|
2
2
|
|
|
3
3
|
const _euler = new THREE.Euler( 0, 0, 0, 'YXZ' );
|
|
4
|
-
|
|
5
4
|
const _vector = new THREE.Vector3();
|
|
6
|
-
|
|
7
5
|
const _changeEvent = {
|
|
8
6
|
type: 'change'
|
|
9
7
|
};
|
|
@@ -13,33 +11,28 @@
|
|
|
13
11
|
const _unlockEvent = {
|
|
14
12
|
type: 'unlock'
|
|
15
13
|
};
|
|
16
|
-
|
|
17
14
|
const _PI_2 = Math.PI / 2;
|
|
18
|
-
|
|
19
15
|
class PointerLockControls extends THREE.EventDispatcher {
|
|
20
16
|
|
|
21
17
|
constructor( camera, domElement ) {
|
|
22
18
|
|
|
23
19
|
super();
|
|
24
20
|
this.domElement = domElement;
|
|
25
|
-
this.isLocked = false;
|
|
26
|
-
// Range is 0 to Math.PI radians
|
|
21
|
+
this.isLocked = false;
|
|
27
22
|
|
|
23
|
+
// Set to constrain the pitch of the camera
|
|
24
|
+
// Range is 0 to Math.PI radians
|
|
28
25
|
this.minPolarAngle = 0; // radians
|
|
29
|
-
|
|
30
26
|
this.maxPolarAngle = Math.PI; // radians
|
|
31
27
|
|
|
32
28
|
this.pointerSpeed = 1.0;
|
|
33
29
|
const scope = this;
|
|
34
|
-
|
|
35
30
|
function onMouseMove( event ) {
|
|
36
31
|
|
|
37
32
|
if ( scope.isLocked === false ) return;
|
|
38
33
|
const movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
|
|
39
34
|
const movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;
|
|
40
|
-
|
|
41
35
|
_euler.setFromQuaternion( camera.quaternion );
|
|
42
|
-
|
|
43
36
|
_euler.y -= movementX * 0.002 * scope.pointerSpeed;
|
|
44
37
|
_euler.x -= movementY * 0.002 * scope.pointerSpeed;
|
|
45
38
|
_euler.x = Math.max( _PI_2 - scope.maxPolarAngle, Math.min( _PI_2 - scope.minPolarAngle, _euler.x ) );
|
|
@@ -95,6 +88,7 @@
|
|
|
95
88
|
this.getObject = function () {
|
|
96
89
|
|
|
97
90
|
// retaining this method for backward compatibility
|
|
91
|
+
|
|
98
92
|
return camera;
|
|
99
93
|
|
|
100
94
|
};
|
|
@@ -109,15 +103,13 @@
|
|
|
109
103
|
};
|
|
110
104
|
|
|
111
105
|
}();
|
|
112
|
-
|
|
113
106
|
this.moveForward = function ( distance ) {
|
|
114
107
|
|
|
115
108
|
// move forward parallel to the xz-plane
|
|
116
109
|
// assumes camera.up is y-up
|
|
117
|
-
_vector.setFromMatrixColumn( camera.matrix, 0 );
|
|
118
110
|
|
|
111
|
+
_vector.setFromMatrixColumn( camera.matrix, 0 );
|
|
119
112
|
_vector.crossVectors( camera.up, _vector );
|
|
120
|
-
|
|
121
113
|
camera.position.addScaledVector( _vector, distance );
|
|
122
114
|
|
|
123
115
|
};
|
|
@@ -125,7 +117,6 @@
|
|
|
125
117
|
this.moveRight = function ( distance ) {
|
|
126
118
|
|
|
127
119
|
_vector.setFromMatrixColumn( camera.matrix, 0 );
|
|
128
|
-
|
|
129
120
|
camera.position.addScaledVector( _vector, distance );
|
|
130
121
|
|
|
131
122
|
};
|