super-three 0.144.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 +1 -1
- package/build/three.cjs +735 -387
- package/build/three.js +735 -387
- package/build/three.min.js +1 -1
- package/build/three.module.js +910 -408
- 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 +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 +125 -99
- package/examples/js/controls/PointerLockControls.js +5 -14
- package/examples/js/controls/TrackballControls.js +33 -86
- package/examples/js/controls/TransformControls.js +85 -170
- 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 +141 -317
- 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 +113 -27
- 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 +25 -39
- package/examples/js/interactive/InteractiveGroup.js +9 -14
- 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 +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 +228 -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 +287 -441
- package/examples/js/loaders/FontLoader.js +6 -15
- package/examples/js/loaders/GCodeLoader.js +15 -16
- package/examples/js/loaders/GLTFLoader.js +409 -706
- 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/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 +62 -48
- 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 +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 +26 -16
- 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/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 +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 -8
- 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 +236 -170
- 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 +27 -3
- package/examples/jsm/animation/MMDPhysics.js +25 -0
- package/examples/jsm/capabilities/WebGPU.js +3 -1
- package/examples/jsm/controls/FirstPersonControls.js +20 -20
- package/examples/jsm/controls/FlyControls.js +16 -17
- package/examples/jsm/controls/OrbitControls.js +44 -4
- package/examples/jsm/controls/TrackballControls.js +14 -2
- package/examples/jsm/controls/TransformControls.js +1 -1
- package/examples/jsm/csm/CSM.js +1 -0
- package/examples/jsm/csm/CSMHelper.js +30 -0
- package/examples/jsm/exporters/GLTFExporter.js +0 -79
- package/examples/jsm/exporters/USDZExporter.js +93 -1
- 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 +5 -6
- package/examples/jsm/interactive/InteractiveGroup.js +4 -2
- package/examples/jsm/libs/flow.module.js +610 -160
- package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
- package/examples/jsm/lines/LineSegments2.js +4 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -2
- package/examples/jsm/loaders/ColladaLoader.js +28 -0
- package/examples/jsm/loaders/FBXLoader.js +18 -2
- package/examples/jsm/loaders/GLTFLoader.js +269 -428
- 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 +351 -111
- package/examples/jsm/loaders/VRMLLoader.js +13 -1
- package/examples/jsm/math/ConvexHull.js +4 -4
- package/examples/jsm/math/Octree.js +1 -1
- package/examples/jsm/node-editor/NodeEditor.js +91 -12
- package/examples/jsm/node-editor/core/BaseNode.js +10 -3
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +6 -9
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +6 -9
- package/examples/jsm/node-editor/math/AngleEditor.js +3 -3
- package/examples/jsm/node-editor/math/InvertEditor.js +2 -2
- package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
- package/examples/jsm/node-editor/utils/PreviewEditor.js +4 -0
- package/examples/jsm/nodes/Nodes.js +30 -3
- package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
- package/examples/jsm/nodes/accessors/NormalNode.js +6 -6
- 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 +8 -1
- package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
- package/examples/jsm/nodes/core/AttributeNode.js +31 -8
- package/examples/jsm/nodes/core/Node.js +1 -1
- package/examples/jsm/nodes/core/NodeBuilder.js +55 -6
- 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/BlendModeNode.js +85 -0
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +2 -12
- 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/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/{Disclaimer.md → DISCLAIMER.md} +1 -1
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
- package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_hsv.js +1 -1
- package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_noise.js +13 -3
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
- package/examples/jsm/nodes/math/MathNode.js +5 -5
- package/examples/jsm/nodes/math/OperatorNode.js +16 -3
- package/examples/jsm/nodes/shadernode/ShaderNode.js +35 -20
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +87 -63
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +29 -0
- package/examples/jsm/nodes/utils/ConvertNode.js +15 -14
- 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/OscNode.js +2 -2
- package/examples/jsm/nodes/utils/RemapNode.js +34 -0
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
- package/examples/jsm/nodes/utils/TimerNode.js +21 -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 +21 -1
- 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 +56 -35
- 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 +41 -9
- package/examples/jsm/shaders/MMDToonShader.js +0 -2
- package/examples/jsm/shaders/VelocityShader.js +128 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +174 -42
- package/examples/jsm/utils/SceneUtils.js +129 -4
- package/examples/jsm/webxr/OculusHandModel.js +3 -2
- package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
- package/package.json +13 -13
- package/src/Three.js +1 -0
- package/src/animation/PropertyBinding.js +7 -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/core/InterleavedBufferAttribute.js +4 -4
- package/src/extras/Earcut.js +67 -67
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/ShapeGeometry.js +1 -1
- package/src/helpers/ArrowHelper.js +9 -0
- package/src/helpers/Box3Helper.js +7 -0
- package/src/helpers/BoxHelper.js +7 -1
- package/src/helpers/DirectionalLightHelper.js +5 -1
- package/src/helpers/GridHelper.js +7 -0
- package/src/helpers/HemisphereLightHelper.js +4 -1
- package/src/helpers/PlaneHelper.js +9 -0
- package/src/helpers/PointLightHelper.js +2 -1
- package/src/helpers/PolarGridHelper.js +7 -0
- package/src/helpers/SkeletonHelper.js +7 -0
- package/src/helpers/SpotLightHelper.js +4 -2
- package/src/lights/LightShadow.js +1 -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/materials/MeshPhysicalMaterial.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 +36 -21
- 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/normal_fragment_begin.glsl.js +2 -4
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
- 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/vsm.glsl.js +0 -3
- 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 +78 -41
- package/src/renderers/webgl/WebGLTextures.js +94 -39
- package/src/renderers/webgl/WebGLUniforms.js +152 -24
- package/src/renderers/webgl/WebGLUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +46 -13
- package/src/renderers/webxr/WebXRManager.js +70 -2
- package/src/scenes/Scene.js +8 -0
- package/src/textures/CompressedArrayTexture.js +18 -0
- package/src/textures/Texture.js +2 -1
- 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;
|
|
95
102
|
|
|
96
|
-
|
|
103
|
+
// the target DOM element for key events
|
|
104
|
+
this._domElementKeyEvents = null;
|
|
105
|
+
|
|
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,26 +546,58 @@
|
|
|
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
|
+
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
|
+
|
|
539
562
|
needsUpdate = true;
|
|
540
563
|
break;
|
|
541
|
-
|
|
542
564
|
case scope.keys.BOTTOM:
|
|
543
|
-
|
|
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
|
+
|
|
544
575
|
needsUpdate = true;
|
|
545
576
|
break;
|
|
546
|
-
|
|
547
577
|
case scope.keys.LEFT:
|
|
548
|
-
|
|
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
|
+
|
|
549
588
|
needsUpdate = true;
|
|
550
589
|
break;
|
|
551
|
-
|
|
552
590
|
case scope.keys.RIGHT:
|
|
553
|
-
|
|
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
|
+
|
|
554
601
|
needsUpdate = true;
|
|
555
602
|
break;
|
|
556
603
|
|
|
@@ -691,26 +738,26 @@
|
|
|
691
738
|
if ( scope.enableZoom ) handleTouchMoveDolly( event );
|
|
692
739
|
if ( scope.enableRotate ) handleTouchMoveRotate( event );
|
|
693
740
|
|
|
694
|
-
}
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
//
|
|
695
744
|
// event handlers - FSM: listen for events and reset state
|
|
696
745
|
//
|
|
697
746
|
|
|
698
|
-
|
|
699
747
|
function onPointerDown( event ) {
|
|
700
748
|
|
|
701
749
|
if ( scope.enabled === false ) return;
|
|
702
|
-
|
|
703
750
|
if ( pointers.length === 0 ) {
|
|
704
751
|
|
|
705
752
|
scope.domElement.setPointerCapture( event.pointerId );
|
|
706
753
|
scope.domElement.addEventListener( 'pointermove', onPointerMove );
|
|
707
754
|
scope.domElement.addEventListener( 'pointerup', onPointerUp );
|
|
708
755
|
|
|
709
|
-
}
|
|
756
|
+
}
|
|
710
757
|
|
|
758
|
+
//
|
|
711
759
|
|
|
712
760
|
addPointer( event );
|
|
713
|
-
|
|
714
761
|
if ( event.pointerType === 'touch' ) {
|
|
715
762
|
|
|
716
763
|
onTouchStart( event );
|
|
@@ -726,7 +773,6 @@
|
|
|
726
773
|
function onPointerMove( event ) {
|
|
727
774
|
|
|
728
775
|
if ( scope.enabled === false ) return;
|
|
729
|
-
|
|
730
776
|
if ( event.pointerType === 'touch' ) {
|
|
731
777
|
|
|
732
778
|
onTouchMove( event );
|
|
@@ -742,7 +788,6 @@
|
|
|
742
788
|
function onPointerUp( event ) {
|
|
743
789
|
|
|
744
790
|
removePointer( event );
|
|
745
|
-
|
|
746
791
|
if ( pointers.length === 0 ) {
|
|
747
792
|
|
|
748
793
|
scope.domElement.releasePointerCapture( event.pointerId );
|
|
@@ -765,21 +810,17 @@
|
|
|
765
810
|
function onMouseDown( event ) {
|
|
766
811
|
|
|
767
812
|
let mouseAction;
|
|
768
|
-
|
|
769
813
|
switch ( event.button ) {
|
|
770
814
|
|
|
771
815
|
case 0:
|
|
772
816
|
mouseAction = scope.mouseButtons.LEFT;
|
|
773
817
|
break;
|
|
774
|
-
|
|
775
818
|
case 1:
|
|
776
819
|
mouseAction = scope.mouseButtons.MIDDLE;
|
|
777
820
|
break;
|
|
778
|
-
|
|
779
821
|
case 2:
|
|
780
822
|
mouseAction = scope.mouseButtons.RIGHT;
|
|
781
823
|
break;
|
|
782
|
-
|
|
783
824
|
default:
|
|
784
825
|
mouseAction = - 1;
|
|
785
826
|
|
|
@@ -792,7 +833,6 @@
|
|
|
792
833
|
handleMouseDownDolly( event );
|
|
793
834
|
state = STATE.DOLLY;
|
|
794
835
|
break;
|
|
795
|
-
|
|
796
836
|
case THREE.MOUSE.ROTATE:
|
|
797
837
|
if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
|
|
798
838
|
|
|
@@ -809,7 +849,6 @@
|
|
|
809
849
|
}
|
|
810
850
|
|
|
811
851
|
break;
|
|
812
|
-
|
|
813
852
|
case THREE.MOUSE.PAN:
|
|
814
853
|
if ( event.ctrlKey || event.metaKey || event.shiftKey ) {
|
|
815
854
|
|
|
@@ -826,7 +865,6 @@
|
|
|
826
865
|
}
|
|
827
866
|
|
|
828
867
|
break;
|
|
829
|
-
|
|
830
868
|
default:
|
|
831
869
|
state = STATE.NONE;
|
|
832
870
|
|
|
@@ -848,12 +886,10 @@
|
|
|
848
886
|
if ( scope.enableRotate === false ) return;
|
|
849
887
|
handleMouseMoveRotate( event );
|
|
850
888
|
break;
|
|
851
|
-
|
|
852
889
|
case STATE.DOLLY:
|
|
853
890
|
if ( scope.enableZoom === false ) return;
|
|
854
891
|
handleMouseMoveDolly( event );
|
|
855
892
|
break;
|
|
856
|
-
|
|
857
893
|
case STATE.PAN:
|
|
858
894
|
if ( scope.enablePan === false ) return;
|
|
859
895
|
handleMouseMovePan( event );
|
|
@@ -883,7 +919,6 @@
|
|
|
883
919
|
function onTouchStart( event ) {
|
|
884
920
|
|
|
885
921
|
trackPointer( event );
|
|
886
|
-
|
|
887
922
|
switch ( pointers.length ) {
|
|
888
923
|
|
|
889
924
|
case 1:
|
|
@@ -894,20 +929,17 @@
|
|
|
894
929
|
handleTouchStartRotate();
|
|
895
930
|
state = STATE.TOUCH_ROTATE;
|
|
896
931
|
break;
|
|
897
|
-
|
|
898
932
|
case THREE.TOUCH.PAN:
|
|
899
933
|
if ( scope.enablePan === false ) return;
|
|
900
934
|
handleTouchStartPan();
|
|
901
935
|
state = STATE.TOUCH_PAN;
|
|
902
936
|
break;
|
|
903
|
-
|
|
904
937
|
default:
|
|
905
938
|
state = STATE.NONE;
|
|
906
939
|
|
|
907
940
|
}
|
|
908
941
|
|
|
909
942
|
break;
|
|
910
|
-
|
|
911
943
|
case 2:
|
|
912
944
|
switch ( scope.touches.TWO ) {
|
|
913
945
|
|
|
@@ -916,20 +948,17 @@
|
|
|
916
948
|
handleTouchStartDollyPan();
|
|
917
949
|
state = STATE.TOUCH_DOLLY_PAN;
|
|
918
950
|
break;
|
|
919
|
-
|
|
920
951
|
case THREE.TOUCH.DOLLY_ROTATE:
|
|
921
952
|
if ( scope.enableZoom === false && scope.enableRotate === false ) return;
|
|
922
953
|
handleTouchStartDollyRotate();
|
|
923
954
|
state = STATE.TOUCH_DOLLY_ROTATE;
|
|
924
955
|
break;
|
|
925
|
-
|
|
926
956
|
default:
|
|
927
957
|
state = STATE.NONE;
|
|
928
958
|
|
|
929
959
|
}
|
|
930
960
|
|
|
931
961
|
break;
|
|
932
|
-
|
|
933
962
|
default:
|
|
934
963
|
state = STATE.NONE;
|
|
935
964
|
|
|
@@ -946,7 +975,6 @@
|
|
|
946
975
|
function onTouchMove( event ) {
|
|
947
976
|
|
|
948
977
|
trackPointer( event );
|
|
949
|
-
|
|
950
978
|
switch ( state ) {
|
|
951
979
|
|
|
952
980
|
case STATE.TOUCH_ROTATE:
|
|
@@ -954,25 +982,21 @@
|
|
|
954
982
|
handleTouchMoveRotate( event );
|
|
955
983
|
scope.update();
|
|
956
984
|
break;
|
|
957
|
-
|
|
958
985
|
case STATE.TOUCH_PAN:
|
|
959
986
|
if ( scope.enablePan === false ) return;
|
|
960
987
|
handleTouchMovePan( event );
|
|
961
988
|
scope.update();
|
|
962
989
|
break;
|
|
963
|
-
|
|
964
990
|
case STATE.TOUCH_DOLLY_PAN:
|
|
965
991
|
if ( scope.enableZoom === false && scope.enablePan === false ) return;
|
|
966
992
|
handleTouchMoveDollyPan( event );
|
|
967
993
|
scope.update();
|
|
968
994
|
break;
|
|
969
|
-
|
|
970
995
|
case STATE.TOUCH_DOLLY_ROTATE:
|
|
971
996
|
if ( scope.enableZoom === false && scope.enableRotate === false ) return;
|
|
972
997
|
handleTouchMoveDollyRotate( event );
|
|
973
998
|
scope.update();
|
|
974
999
|
break;
|
|
975
|
-
|
|
976
1000
|
default:
|
|
977
1001
|
state = STATE.NONE;
|
|
978
1002
|
|
|
@@ -996,7 +1020,6 @@
|
|
|
996
1020
|
function removePointer( event ) {
|
|
997
1021
|
|
|
998
1022
|
delete pointerPositions[ event.pointerId ];
|
|
999
|
-
|
|
1000
1023
|
for ( let i = 0; i < pointers.length; i ++ ) {
|
|
1001
1024
|
|
|
1002
1025
|
if ( pointers[ i ].pointerId == event.pointerId ) {
|
|
@@ -1013,7 +1036,6 @@
|
|
|
1013
1036
|
function trackPointer( event ) {
|
|
1014
1037
|
|
|
1015
1038
|
let position = pointerPositions[ event.pointerId ];
|
|
1016
|
-
|
|
1017
1039
|
if ( position === undefined ) {
|
|
1018
1040
|
|
|
1019
1041
|
position = new THREE.Vector2();
|
|
@@ -1030,21 +1052,26 @@
|
|
|
1030
1052
|
const pointer = event.pointerId === pointers[ 0 ].pointerId ? pointers[ 1 ] : pointers[ 0 ];
|
|
1031
1053
|
return pointerPositions[ pointer.pointerId ];
|
|
1032
1054
|
|
|
1033
|
-
}
|
|
1055
|
+
}
|
|
1034
1056
|
|
|
1057
|
+
//
|
|
1035
1058
|
|
|
1036
1059
|
scope.domElement.addEventListener( 'contextmenu', onContextMenu );
|
|
1037
1060
|
scope.domElement.addEventListener( 'pointerdown', onPointerDown );
|
|
1038
1061
|
scope.domElement.addEventListener( 'pointercancel', onPointerCancel );
|
|
1039
1062
|
scope.domElement.addEventListener( 'wheel', onMouseWheel, {
|
|
1040
1063
|
passive: false
|
|
1041
|
-
} );
|
|
1064
|
+
} );
|
|
1065
|
+
|
|
1066
|
+
// force an update at start
|
|
1042
1067
|
|
|
1043
1068
|
this.update();
|
|
1044
1069
|
|
|
1045
1070
|
}
|
|
1046
1071
|
|
|
1047
|
-
}
|
|
1072
|
+
}
|
|
1073
|
+
|
|
1074
|
+
// This set of controls performs orbiting, dollying (zooming), and panning.
|
|
1048
1075
|
// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default).
|
|
1049
1076
|
// This is very similar to OrbitControls, another set of touch behavior
|
|
1050
1077
|
//
|
|
@@ -1052,7 +1079,6 @@
|
|
|
1052
1079
|
// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish
|
|
1053
1080
|
// Pan - left mouse, or arrow keys / touch: one-finger move
|
|
1054
1081
|
|
|
1055
|
-
|
|
1056
1082
|
class MapControls extends OrbitControls {
|
|
1057
1083
|
|
|
1058
1084
|
constructor( object, domElement ) {
|