super-three 0.179.0 → 0.184.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/LICENSE +1 -1
- package/README.md +3 -4
- package/build/three.cjs +14522 -12207
- package/build/three.core.js +12005 -10954
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +2270 -1005
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +63 -18
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +16573 -7890
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +16533 -7888
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +12 -4
- package/examples/jsm/animation/CCDIKSolver.js +8 -4
- package/examples/jsm/controls/ArcballControls.js +15 -12
- package/examples/jsm/controls/DragControls.js +9 -59
- package/examples/jsm/controls/FirstPersonControls.js +61 -57
- package/examples/jsm/controls/FlyControls.js +5 -1
- package/examples/jsm/controls/MapControls.js +55 -1
- package/examples/jsm/controls/OrbitControls.js +113 -10
- package/examples/jsm/controls/PointerLockControls.js +2 -10
- package/examples/jsm/controls/TrackballControls.js +9 -9
- package/examples/jsm/controls/TransformControls.js +35 -3
- package/examples/jsm/csm/CSM.js +2 -1
- package/examples/jsm/csm/CSMShadowNode.js +6 -2
- package/examples/jsm/effects/AnaglyphEffect.js +102 -7
- package/examples/jsm/effects/AsciiEffect.js +8 -8
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +3 -0
- package/examples/jsm/exporters/DRACOExporter.js +2 -2
- package/examples/jsm/exporters/EXRExporter.js +2 -2
- package/examples/jsm/exporters/GLTFExporter.js +185 -34
- package/examples/jsm/exporters/KTX2Exporter.js +4 -2
- package/examples/jsm/exporters/PLYExporter.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +31 -5
- package/examples/jsm/geometries/DecalGeometry.js +3 -3
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- package/examples/jsm/geometries/TeapotGeometry.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +21 -2
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
- package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
- package/examples/jsm/helpers/ViewHelper.js +110 -13
- package/examples/jsm/inspector/Extension.js +13 -0
- package/examples/jsm/inspector/Inspector.js +542 -0
- package/examples/jsm/inspector/RendererInspector.js +425 -0
- package/examples/jsm/inspector/extensions/extensions.json +6 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
- package/examples/jsm/inspector/tabs/Console.js +238 -0
- package/examples/jsm/inspector/tabs/Memory.js +128 -0
- package/examples/jsm/inspector/tabs/Parameters.js +380 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Settings.js +264 -0
- package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
- package/examples/jsm/inspector/tabs/Viewer.js +268 -0
- package/examples/jsm/inspector/ui/Graph.js +95 -0
- package/examples/jsm/inspector/ui/Item.js +170 -0
- package/examples/jsm/inspector/ui/List.js +75 -0
- package/examples/jsm/inspector/ui/Profiler.js +2072 -0
- package/examples/jsm/inspector/ui/Style.js +1667 -0
- package/examples/jsm/inspector/ui/Tab.js +265 -0
- package/examples/jsm/inspector/ui/Values.js +476 -0
- package/examples/jsm/inspector/ui/utils.js +69 -0
- package/examples/jsm/interaction/InteractionManager.js +226 -0
- package/examples/jsm/interactive/HTMLMesh.js +6 -10
- package/examples/jsm/interactive/InteractiveGroup.js +1 -1
- package/examples/jsm/interactive/SelectionBox.js +30 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
- package/examples/jsm/lighting/DynamicLighting.js +82 -0
- package/examples/jsm/lighting/LightProbeGrid.js +651 -0
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/Line2.js +3 -3
- package/examples/jsm/lines/LineGeometry.js +1 -1
- package/examples/jsm/lines/LineMaterial.js +7 -1
- package/examples/jsm/lines/LineSegments2.js +2 -2
- package/examples/jsm/lines/Wireframe.js +2 -2
- package/examples/jsm/lines/WireframeGeometry2.js +1 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
- package/examples/jsm/loaders/3DMLoader.js +5 -4
- package/examples/jsm/loaders/3MFLoader.js +3 -3
- package/examples/jsm/loaders/AMFLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +27 -4029
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/EXRLoader.js +692 -53
- package/examples/jsm/loaders/FBXLoader.js +237 -39
- package/examples/jsm/loaders/FontLoader.js +23 -5
- package/examples/jsm/loaders/GCodeLoader.js +34 -8
- package/examples/jsm/loaders/GLTFLoader.js +159 -185
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
- package/examples/jsm/loaders/HDRLoader.js +485 -0
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +162 -53
- package/examples/jsm/loaders/KTXLoader.js +2 -2
- package/examples/jsm/loaders/LDrawLoader.js +41 -50
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
- package/examples/jsm/loaders/LWOLoader.js +9 -41
- package/examples/jsm/loaders/MaterialXLoader.js +22 -5
- package/examples/jsm/loaders/NRRDLoader.js +2 -2
- package/examples/jsm/loaders/OBJLoader.js +1 -1
- package/examples/jsm/loaders/PCDLoader.js +4 -2
- package/examples/jsm/loaders/PDBLoader.js +1 -1
- package/examples/jsm/loaders/RGBELoader.js +7 -473
- package/examples/jsm/loaders/SVGLoader.js +4 -4
- package/examples/jsm/loaders/TDSLoader.js +0 -2
- package/examples/jsm/loaders/TGALoader.js +0 -2
- package/examples/jsm/loaders/TTFLoader.js +4 -4
- package/examples/jsm/loaders/USDLoader.js +100 -40
- package/examples/jsm/loaders/UltraHDRLoader.js +287 -162
- package/examples/jsm/loaders/VOXLoader.js +660 -117
- package/examples/jsm/loaders/VRMLLoader.js +79 -2
- package/examples/jsm/loaders/VTKLoader.js +42 -25
- package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
- package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
- package/examples/jsm/loaders/usd/USDAParser.js +450 -363
- package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
- package/examples/jsm/loaders/usd/USDComposer.js +4594 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
- package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/examples/jsm/math/ColorSpaces.js +19 -1
- package/examples/jsm/math/ConvexHull.js +3 -3
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/Octree.js +131 -1
- package/examples/jsm/math/SimplexNoise.js +1 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
- package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
- package/examples/jsm/misc/RollerCoaster.js +42 -4
- package/examples/jsm/misc/TubePainter.js +383 -40
- package/examples/jsm/misc/Volume.js +1 -2
- package/examples/jsm/misc/VolumeSlice.js +0 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/modifiers/TessellateModifier.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +1 -1
- package/examples/jsm/objects/Reflector.js +73 -25
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Sky.js +91 -7
- package/examples/jsm/objects/SkyMesh.js +151 -17
- package/examples/jsm/objects/Water.js +7 -6
- package/examples/jsm/objects/Water2.js +5 -3
- package/examples/jsm/objects/WaterMesh.js +11 -13
- package/examples/jsm/physics/AmmoPhysics.js +12 -7
- package/examples/jsm/physics/JoltPhysics.js +10 -6
- package/examples/jsm/physics/RapierPhysics.js +9 -5
- package/examples/jsm/postprocessing/EffectComposer.js +7 -5
- package/examples/jsm/postprocessing/GlitchPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +1 -1
- package/examples/jsm/postprocessing/OutputPass.js +9 -0
- package/examples/jsm/postprocessing/RenderPass.js +10 -0
- package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
- package/examples/jsm/postprocessing/SSRPass.js +37 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +56 -24
- package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +8 -7
- package/examples/jsm/renderers/Projector.js +246 -28
- package/examples/jsm/renderers/SVGRenderer.js +175 -61
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
- package/examples/jsm/shaders/AfterimageShader.js +1 -1
- package/examples/jsm/shaders/BleachBypassShader.js +1 -1
- package/examples/jsm/shaders/BokehShader.js +1 -1
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/DotScreenShader.js +1 -1
- package/examples/jsm/shaders/FocusShader.js +1 -1
- package/examples/jsm/shaders/GTAOShader.js +21 -8
- package/examples/jsm/shaders/HalftoneShader.js +12 -1
- package/examples/jsm/shaders/KaleidoShader.js +1 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +8 -4
- package/examples/jsm/shaders/SAOShader.js +17 -4
- package/examples/jsm/shaders/SSAOShader.js +11 -1
- package/examples/jsm/shaders/SSRShader.js +7 -6
- package/examples/jsm/shaders/SepiaShader.js +1 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +3 -5
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +44 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +85 -25
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
- package/examples/jsm/transpiler/TSLEncoder.js +52 -10
- package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
- package/examples/jsm/transpiler/WGSLEncoder.js +51 -0
- package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +36 -24
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
- package/examples/jsm/tsl/display/AnamorphicNode.js +40 -5
- package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
- package/examples/jsm/tsl/display/BloomNode.js +23 -9
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +5 -37
- package/examples/jsm/tsl/display/DenoiseNode.js +3 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
- package/examples/jsm/tsl/display/FSR1Node.js +477 -0
- package/examples/jsm/tsl/display/FXAANode.js +2 -2
- package/examples/jsm/tsl/display/GTAONode.js +59 -9
- package/examples/jsm/tsl/display/GaussianBlurNode.js +68 -35
- package/examples/jsm/tsl/display/GodraysNode.js +615 -0
- package/examples/jsm/tsl/display/LensflareNode.js +1 -1
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
- package/examples/jsm/tsl/display/OutlineNode.js +81 -20
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +7 -6
- package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +2 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +638 -0
- package/examples/jsm/tsl/display/SSRNode.js +186 -69
- package/examples/jsm/tsl/display/SSSNode.js +490 -0
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/examples/jsm/tsl/display/SharpenNode.js +283 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
- package/examples/jsm/tsl/display/TAAUNode.js +835 -0
- package/examples/jsm/tsl/display/TRAANode.js +381 -75
- package/examples/jsm/tsl/display/TransitionNode.js +1 -1
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/hashBlur.js +16 -18
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
- package/examples/jsm/tsl/math/Bayer.js +53 -3
- package/examples/jsm/utils/BufferGeometryUtils.js +3 -4
- package/examples/jsm/utils/ColorUtils.js +76 -0
- package/examples/jsm/utils/LDrawUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewer.js +24 -10
- package/examples/jsm/utils/ShadowMapViewerGPU.js +13 -6
- package/examples/jsm/utils/SkeletonUtils.js +14 -8
- package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
- package/examples/jsm/webxr/XRHandModelFactory.js +4 -7
- package/package.json +27 -38
- package/src/Three.Core.js +7 -3
- package/src/Three.TSL.js +61 -16
- package/src/Three.WebGPU.Nodes.js +7 -0
- package/src/Three.WebGPU.js +11 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +12 -2
- package/src/animation/AnimationClip.js +21 -5
- package/src/animation/AnimationMixer.js +9 -3
- package/src/animation/AnimationObjectGroup.js +2 -1
- package/src/animation/AnimationUtils.js +1 -12
- package/src/animation/KeyframeTrack.js +54 -14
- package/src/animation/PropertyBinding.js +12 -11
- package/src/animation/PropertyMixer.js +4 -4
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
- package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
- package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +11 -10
- package/src/audio/AudioContext.js +2 -2
- package/src/audio/AudioListener.js +5 -3
- package/src/audio/PositionalAudio.js +1 -1
- package/src/cameras/Camera.js +32 -2
- package/src/cameras/CubeCamera.js +20 -0
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/cameras/StereoCamera.js +2 -2
- package/src/constants.js +100 -7
- package/src/core/BufferAttribute.js +13 -1
- package/src/core/BufferGeometry.js +24 -12
- package/src/core/Clock.js +7 -0
- package/src/core/EventDispatcher.js +1 -1
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +3 -2
- package/src/core/Object3D.js +55 -6
- package/src/core/Raycaster.js +4 -3
- package/src/core/RenderTarget.js +14 -5
- package/src/extras/Controls.js +5 -4
- package/src/extras/DataUtils.js +2 -1
- package/src/extras/Earcut.js +6 -0
- package/src/extras/ImageUtils.js +2 -2
- package/src/extras/PMREMGenerator.js +259 -57
- package/src/extras/TextureUtils.js +6 -1
- package/src/extras/core/Curve.js +2 -1
- package/src/extras/core/Interpolations.js +7 -1
- package/src/extras/core/ShapePath.js +4 -4
- package/src/extras/curves/CatmullRomCurve3.js +3 -2
- package/src/extras/lib/earcut.js +8 -8
- package/src/geometries/BoxGeometry.js +1 -0
- package/src/geometries/CapsuleGeometry.js +1 -0
- package/src/geometries/CircleGeometry.js +1 -0
- package/src/geometries/ConeGeometry.js +1 -0
- package/src/geometries/CylinderGeometry.js +1 -0
- package/src/geometries/DodecahedronGeometry.js +1 -0
- package/src/geometries/ExtrudeGeometry.js +10 -8
- package/src/geometries/IcosahedronGeometry.js +1 -0
- package/src/geometries/LatheGeometry.js +1 -0
- package/src/geometries/OctahedronGeometry.js +1 -0
- package/src/geometries/PlaneGeometry.js +1 -0
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/RingGeometry.js +1 -0
- package/src/geometries/ShapeGeometry.js +1 -0
- package/src/geometries/SphereGeometry.js +1 -0
- package/src/geometries/TetrahedronGeometry.js +1 -0
- package/src/geometries/TorusGeometry.js +9 -3
- package/src/geometries/TorusKnotGeometry.js +1 -0
- package/src/geometries/TubeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +4 -1
- package/src/helpers/DirectionalLightHelper.js +4 -1
- package/src/helpers/HemisphereLightHelper.js +3 -0
- package/src/helpers/PointLightHelper.js +1 -25
- package/src/helpers/SpotLightHelper.js +3 -0
- package/src/lights/DirectionalLight.js +13 -0
- package/src/lights/HemisphereLight.js +10 -0
- package/src/lights/Light.js +1 -11
- package/src/lights/LightProbe.js +0 -15
- package/src/lights/LightShadow.js +15 -6
- package/src/lights/PointLight.js +15 -0
- package/src/lights/PointLightShadow.js +0 -86
- package/src/lights/SpotLight.js +22 -1
- package/src/lights/webgpu/IESSpotLight.js +2 -1
- package/src/lights/webgpu/ProjectorLight.js +1 -1
- package/src/loaders/AnimationLoader.js +2 -1
- package/src/loaders/AudioLoader.js +13 -2
- package/src/loaders/BufferGeometryLoader.js +2 -2
- package/src/loaders/Cache.js +30 -2
- package/src/loaders/DataTextureLoader.js +6 -4
- package/src/loaders/FileLoader.js +4 -4
- package/src/loaders/ImageBitmapLoader.js +17 -13
- package/src/loaders/ImageLoader.js +1 -1
- package/src/loaders/Loader.js +9 -3
- package/src/loaders/LoadingManager.js +25 -3
- package/src/loaders/MaterialLoader.js +6 -4
- package/src/loaders/ObjectLoader.js +57 -17
- package/src/loaders/TextureLoader.js +1 -1
- package/src/loaders/nodes/NodeLoader.js +5 -4
- package/src/loaders/nodes/NodeObjectLoader.js +18 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +1 -0
- package/src/materials/MeshDepthMaterial.js +1 -0
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +11 -1
- package/src/materials/MeshMatcapMaterial.js +22 -0
- package/src/materials/MeshNormalMaterial.js +1 -0
- package/src/materials/MeshPhongMaterial.js +11 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -1
- package/src/materials/MeshStandardMaterial.js +8 -7
- package/src/materials/MeshToonMaterial.js +2 -1
- package/src/materials/PointsMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +22 -3
- package/src/materials/nodes/Line2NodeMaterial.js +36 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
- package/src/materials/nodes/NodeMaterial.js +95 -35
- package/src/materials/nodes/PointsNodeMaterial.js +81 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +194 -88
- package/src/math/Color.js +6 -5
- package/src/math/ColorManagement.js +9 -3
- package/src/math/Cylindrical.js +1 -1
- package/src/math/Euler.js +2 -1
- package/src/math/Line3.js +6 -5
- package/src/math/MathUtils.js +23 -21
- package/src/math/Matrix2.js +14 -10
- package/src/math/Matrix3.js +15 -11
- package/src/math/Matrix4.js +94 -81
- package/src/math/Plane.js +5 -4
- package/src/math/Quaternion.js +60 -84
- package/src/math/Sphere.js +1 -1
- package/src/math/Spherical.js +1 -1
- package/src/math/Triangle.js +1 -1
- package/src/math/Vector2.js +11 -7
- package/src/math/Vector3.js +15 -13
- package/src/math/Vector4.js +13 -9
- package/src/math/interpolants/BezierInterpolant.js +108 -0
- package/src/nodes/Nodes.js +86 -65
- package/src/nodes/TSL.js +11 -8
- package/src/nodes/accessors/Arrays.js +1 -1
- package/src/nodes/accessors/BatchNode.js +10 -10
- package/src/nodes/accessors/Bitangent.js +5 -5
- package/src/nodes/accessors/BufferAttributeNode.js +107 -15
- package/src/nodes/accessors/BufferNode.js +30 -3
- package/src/nodes/accessors/Camera.js +260 -13
- package/src/nodes/accessors/ClippingNode.js +10 -9
- package/src/nodes/accessors/CubeTextureNode.js +32 -6
- package/src/nodes/accessors/InstanceNode.js +164 -39
- package/src/nodes/accessors/Lights.js +10 -0
- package/src/nodes/accessors/MaterialNode.js +9 -1
- package/src/nodes/accessors/MaterialProperties.js +2 -5
- package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/Normal.js +16 -15
- package/src/nodes/accessors/Object3DNode.js +2 -2
- package/src/nodes/accessors/Position.js +51 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +7 -7
- package/src/nodes/accessors/ReferenceNode.js +11 -10
- package/src/nodes/accessors/RendererReferenceNode.js +1 -2
- package/src/nodes/accessors/SceneProperties.js +47 -0
- package/src/nodes/accessors/SkinningNode.js +27 -26
- package/src/nodes/accessors/StorageBufferNode.js +14 -24
- package/src/nodes/accessors/StorageTextureNode.js +62 -9
- package/src/nodes/accessors/Tangent.js +4 -14
- package/src/nodes/accessors/Texture3DNode.js +41 -31
- package/src/nodes/accessors/TextureNode.js +193 -63
- package/src/nodes/accessors/UniformArrayNode.js +6 -4
- package/src/nodes/accessors/UserDataNode.js +1 -2
- package/src/nodes/accessors/VertexColorNode.js +1 -2
- package/src/nodes/code/FunctionCallNode.js +25 -5
- package/src/nodes/code/FunctionNode.js +25 -3
- package/src/nodes/core/ArrayNode.js +22 -2
- package/src/nodes/core/AssignNode.js +6 -5
- package/src/nodes/core/AttributeNode.js +5 -4
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/ContextNode.js +133 -15
- package/src/nodes/core/IndexNode.js +4 -3
- package/src/nodes/core/InputNode.js +3 -2
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/{CacheNode.js → IsolateNode.js} +41 -8
- package/src/nodes/core/MRTNode.js +48 -2
- package/src/nodes/core/Node.js +264 -46
- package/src/nodes/core/NodeBuilder.js +453 -87
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +31 -23
- package/src/nodes/core/NodeFunction.js +2 -1
- package/src/nodes/core/NodeParser.js +2 -1
- package/src/nodes/core/NodeUniform.js +1 -1
- package/src/nodes/core/NodeUtils.js +25 -97
- package/src/nodes/core/OutputStructNode.js +12 -10
- package/src/nodes/core/ParameterNode.js +34 -3
- package/src/nodes/core/PropertyNode.js +26 -3
- package/src/nodes/core/StackNode.js +99 -23
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +22 -8
- package/src/nodes/core/StructTypeNode.js +13 -18
- package/src/nodes/core/SubBuildNode.js +4 -4
- package/src/nodes/core/UniformGroupNode.js +36 -6
- package/src/nodes/core/UniformNode.js +37 -13
- package/src/nodes/core/VarNode.js +96 -34
- package/src/nodes/core/VaryingNode.js +2 -18
- package/src/nodes/display/BlendModes.js +0 -63
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/ColorAdjustment.js +18 -1
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +4 -8
- package/src/nodes/display/NormalMapNode.js +41 -5
- package/src/nodes/display/PassNode.js +175 -25
- package/src/nodes/display/RenderOutputNode.js +35 -9
- package/src/nodes/display/ScreenNode.js +47 -15
- package/src/nodes/display/ToneMappingNode.js +32 -5
- package/src/nodes/display/ToonOutlinePassNode.js +10 -2
- package/src/nodes/display/ViewportDepthNode.js +52 -4
- package/src/nodes/display/ViewportDepthTextureNode.js +14 -6
- package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
- package/src/nodes/display/ViewportTextureNode.js +72 -14
- package/src/nodes/fog/Fog.js +18 -34
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +2 -1
- package/src/nodes/functions/PhysicalLightingModel.js +128 -46
- package/src/nodes/functions/VolumetricLightingModel.js +5 -5
- package/src/nodes/geometry/RangeNode.js +44 -6
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/BarrierNode.js +9 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +4 -4
- package/src/nodes/gpgpu/ComputeNode.js +76 -38
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -4
- package/src/nodes/lighting/AnalyticLightNode.js +53 -0
- package/src/nodes/lighting/EnvironmentNode.js +34 -9
- package/src/nodes/lighting/LightsNode.js +10 -32
- package/src/nodes/lighting/PointShadowNode.js +167 -148
- package/src/nodes/lighting/ShadowFilterNode.js +55 -65
- package/src/nodes/lighting/ShadowNode.js +189 -44
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +25 -8
- package/src/nodes/math/MathNode.js +98 -57
- package/src/nodes/math/OperatorNode.js +8 -5
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/pmrem/PMREMNode.js +1 -1
- package/src/nodes/pmrem/PMREMUtils.js +111 -2
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLBase.js +6 -3
- package/src/nodes/tsl/TSLCore.js +488 -166
- package/src/nodes/utils/ArrayElementNode.js +14 -1
- package/src/nodes/utils/ConvertNode.js +1 -1
- package/src/nodes/utils/DebugNode.js +14 -13
- package/src/nodes/utils/EventNode.js +67 -2
- package/src/nodes/utils/FlipNode.js +1 -1
- package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
- package/src/nodes/utils/JoinNode.js +7 -4
- package/src/nodes/utils/LoopNode.js +20 -24
- package/src/nodes/utils/MemberNode.js +60 -8
- package/src/nodes/utils/Packing.js +13 -1
- package/src/nodes/utils/PostProcessingUtils.js +60 -1
- package/src/nodes/utils/RTTNode.js +14 -4
- package/src/nodes/utils/ReflectorNode.js +61 -11
- package/src/nodes/utils/Remap.js +48 -0
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SampleNode.js +12 -2
- package/src/nodes/utils/SetNode.js +1 -1
- package/src/nodes/utils/SplitNode.js +12 -1
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/Timer.js +0 -47
- package/src/nodes/utils/UVUtils.js +28 -0
- package/src/objects/BatchedMesh.js +46 -18
- package/src/objects/InstancedMesh.js +30 -3
- package/src/objects/LOD.js +1 -1
- package/src/objects/Line.js +3 -2
- package/src/objects/LineSegments.js +2 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/Skeleton.js +12 -2
- package/src/objects/SkinnedMesh.js +29 -10
- package/src/objects/Sprite.js +4 -3
- package/src/renderers/WebGLRenderer.js +372 -179
- package/src/renderers/common/Animation.js +16 -4
- package/src/renderers/common/Attributes.js +16 -2
- package/src/renderers/common/Backend.js +137 -35
- package/src/renderers/common/Background.js +28 -14
- package/src/renderers/common/BindGroup.js +1 -16
- package/src/renderers/common/Binding.js +11 -0
- package/src/renderers/common/Bindings.js +83 -12
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +40 -0
- package/src/renderers/common/BundleGroup.js +1 -1
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +30 -6
- package/src/renderers/common/ComputePipeline.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +51 -7
- package/src/renderers/common/DataMap.js +1 -1
- package/src/renderers/common/Geometries.js +55 -3
- package/src/renderers/common/Info.js +337 -6
- package/src/renderers/common/InspectorBase.js +151 -0
- package/src/renderers/common/Lighting.js +5 -21
- package/src/renderers/common/Pipelines.js +41 -8
- package/src/renderers/common/PostProcessing.js +9 -226
- package/src/renderers/common/QuadMesh.js +7 -1
- package/src/renderers/common/ReadbackBuffer.js +78 -0
- package/src/renderers/common/RenderBundle.js +3 -1
- package/src/renderers/common/RenderBundles.js +7 -3
- package/src/renderers/common/RenderContext.js +18 -2
- package/src/renderers/common/RenderContexts.js +33 -49
- package/src/renderers/common/RenderList.js +7 -3
- package/src/renderers/common/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +32 -6
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +22 -6
- package/src/renderers/common/RenderPipeline.js +232 -17
- package/src/renderers/common/Renderer.js +927 -335
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +9 -1
- package/src/renderers/common/Sampler.js +52 -14
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/StorageTexture.js +9 -1
- package/src/renderers/common/Textures.js +208 -47
- package/src/renderers/common/TimestampQueryPool.js +70 -6
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +64 -2
- package/src/renderers/common/XRManager.js +79 -51
- package/src/renderers/common/extras/PMREMGenerator.js +176 -79
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +9 -7
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +260 -95
- package/src/renderers/common/nodes/NodeSampler.js +13 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
- package/src/renderers/shaders/DFGLUTData.js +49 -0
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -2
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +8 -12
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +2 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +152 -59
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +221 -190
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +5 -3
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +4 -1
- package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +7 -6
- package/src/renderers/shaders/UniformsLib.js +8 -5
- package/src/renderers/shaders/UniformsUtils.js +52 -9
- package/src/renderers/webgl/WebGLAnimation.js +2 -1
- package/src/renderers/webgl/WebGLBackground.js +15 -15
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLCapabilities.js +11 -5
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLGeometries.js +10 -7
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +24 -13
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +270 -0
- package/src/renderers/webgl/WebGLProgram.js +63 -122
- package/src/renderers/webgl/WebGLPrograms.js +65 -52
- package/src/renderers/webgl/WebGLRenderLists.js +15 -0
- package/src/renderers/webgl/WebGLRenderStates.js +13 -2
- package/src/renderers/webgl/WebGLShadowMap.js +191 -26
- package/src/renderers/webgl/WebGLState.js +79 -40
- package/src/renderers/webgl/WebGLTextures.js +234 -68
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +24 -3
- package/src/renderers/webgl/WebGLUtils.js +8 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +438 -235
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +339 -84
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +229 -11
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +237 -72
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +56 -27
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +8 -3
- package/src/renderers/webgpu/WebGPUBackend.js +403 -253
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +5 -3
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +491 -123
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +108 -34
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +360 -201
- package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
- package/src/renderers/webgpu/utils/WebGPUConstants.js +17 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +111 -54
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +155 -205
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +407 -149
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +36 -13
- package/src/renderers/webgpu/utils/WebGPUUtils.js +55 -13
- package/src/renderers/webxr/WebXRController.js +12 -0
- package/src/renderers/webxr/WebXRManager.js +45 -29
- package/src/textures/CubeDepthTexture.js +76 -0
- package/src/textures/ExternalTexture.js +15 -4
- package/src/textures/HTMLTexture.js +74 -0
- package/src/textures/Source.js +5 -4
- package/src/textures/Texture.js +19 -7
- package/src/textures/VideoTexture.js +2 -3
- package/src/utils.js +344 -3
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
- package/examples/jsm/shaders/GodRaysShader.js +0 -333
- package/src/nodes/accessors/SceneNode.js +0 -144
- package/src/nodes/code/ScriptableNode.js +0 -726
- package/src/nodes/code/ScriptableValueNode.js +0 -253
- package/src/nodes/display/PosterizeNode.js +0 -65
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -30
- package/src/nodes/utils/RemapNode.js +0 -125
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
|
@@ -22,7 +22,7 @@ class FirstPersonControls extends Controls {
|
|
|
22
22
|
* Constructs a new controls instance.
|
|
23
23
|
*
|
|
24
24
|
* @param {Object3D} object - The object that is managed by the controls.
|
|
25
|
-
* @param {?
|
|
25
|
+
* @param {?HTMLElement} domElement - The HTML element used for event listeners.
|
|
26
26
|
*/
|
|
27
27
|
constructor( object, domElement = null ) {
|
|
28
28
|
|
|
@@ -60,14 +60,6 @@ class FirstPersonControls extends Controls {
|
|
|
60
60
|
*/
|
|
61
61
|
this.autoForward = false;
|
|
62
62
|
|
|
63
|
-
/**
|
|
64
|
-
* Whether it's possible to look around or not.
|
|
65
|
-
*
|
|
66
|
-
* @type {boolean}
|
|
67
|
-
* @default true
|
|
68
|
-
*/
|
|
69
|
-
this.activeLook = true;
|
|
70
|
-
|
|
71
63
|
/**
|
|
72
64
|
* Whether or not the camera's height influences the forward movement speed.
|
|
73
65
|
* Use the properties `heightCoef`, `heightMin` and `heightMax` for configuration.
|
|
@@ -141,14 +133,16 @@ class FirstPersonControls extends Controls {
|
|
|
141
133
|
this._pointerX = 0;
|
|
142
134
|
this._pointerY = 0;
|
|
143
135
|
|
|
136
|
+
this._pointerDownX = 0;
|
|
137
|
+
this._pointerDownY = 0;
|
|
138
|
+
|
|
139
|
+
this._pointerCount = 0;
|
|
140
|
+
|
|
144
141
|
this._moveForward = false;
|
|
145
142
|
this._moveBackward = false;
|
|
146
143
|
this._moveLeft = false;
|
|
147
144
|
this._moveRight = false;
|
|
148
145
|
|
|
149
|
-
this._viewHalfX = 0;
|
|
150
|
-
this._viewHalfY = 0;
|
|
151
|
-
|
|
152
146
|
this._lat = 0;
|
|
153
147
|
this._lon = 0;
|
|
154
148
|
|
|
@@ -167,8 +161,6 @@ class FirstPersonControls extends Controls {
|
|
|
167
161
|
|
|
168
162
|
this.connect( domElement );
|
|
169
163
|
|
|
170
|
-
this.handleResize();
|
|
171
|
-
|
|
172
164
|
}
|
|
173
165
|
|
|
174
166
|
this._setOrientation();
|
|
@@ -187,6 +179,8 @@ class FirstPersonControls extends Controls {
|
|
|
187
179
|
this.domElement.addEventListener( 'pointerup', this._onPointerUp );
|
|
188
180
|
this.domElement.addEventListener( 'contextmenu', this._onContextMenu );
|
|
189
181
|
|
|
182
|
+
this.domElement.style.touchAction = 'none'; // Disable touch scroll
|
|
183
|
+
|
|
190
184
|
}
|
|
191
185
|
|
|
192
186
|
disconnect() {
|
|
@@ -194,11 +188,13 @@ class FirstPersonControls extends Controls {
|
|
|
194
188
|
window.removeEventListener( 'keydown', this._onKeyDown );
|
|
195
189
|
window.removeEventListener( 'keyup', this._onKeyUp );
|
|
196
190
|
|
|
197
|
-
this.domElement.removeEventListener( '
|
|
198
|
-
this.domElement.removeEventListener( '
|
|
191
|
+
this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
|
|
192
|
+
this.domElement.removeEventListener( 'pointerdown', this._onPointerDown );
|
|
199
193
|
this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
|
|
200
194
|
this.domElement.removeEventListener( 'contextmenu', this._onContextMenu );
|
|
201
195
|
|
|
196
|
+
this.domElement.style.touchAction = ''; // Restore touch scroll
|
|
197
|
+
|
|
202
198
|
}
|
|
203
199
|
|
|
204
200
|
dispose() {
|
|
@@ -207,25 +203,6 @@ class FirstPersonControls extends Controls {
|
|
|
207
203
|
|
|
208
204
|
}
|
|
209
205
|
|
|
210
|
-
/**
|
|
211
|
-
* Must be called if the application window is resized.
|
|
212
|
-
*/
|
|
213
|
-
handleResize() {
|
|
214
|
-
|
|
215
|
-
if ( this.domElement === document ) {
|
|
216
|
-
|
|
217
|
-
this._viewHalfX = window.innerWidth / 2;
|
|
218
|
-
this._viewHalfY = window.innerHeight / 2;
|
|
219
|
-
|
|
220
|
-
} else {
|
|
221
|
-
|
|
222
|
-
this._viewHalfX = this.domElement.offsetWidth / 2;
|
|
223
|
-
this._viewHalfY = this.domElement.offsetHeight / 2;
|
|
224
|
-
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
}
|
|
228
|
-
|
|
229
206
|
/**
|
|
230
207
|
* Rotates the camera towards the defined target position.
|
|
231
208
|
*
|
|
@@ -282,13 +259,7 @@ class FirstPersonControls extends Controls {
|
|
|
282
259
|
if ( this._moveUp ) this.object.translateY( actualMoveSpeed );
|
|
283
260
|
if ( this._moveDown ) this.object.translateY( - actualMoveSpeed );
|
|
284
261
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
if ( ! this.activeLook ) {
|
|
288
|
-
|
|
289
|
-
actualLookSpeed = 0;
|
|
290
|
-
|
|
291
|
-
}
|
|
262
|
+
const actualLookSpeed = delta * this.lookSpeed;
|
|
292
263
|
|
|
293
264
|
let verticalLookRatio = 1;
|
|
294
265
|
|
|
@@ -298,8 +269,12 @@ class FirstPersonControls extends Controls {
|
|
|
298
269
|
|
|
299
270
|
}
|
|
300
271
|
|
|
301
|
-
|
|
302
|
-
|
|
272
|
+
if ( this.mouseDragOn ) {
|
|
273
|
+
|
|
274
|
+
this._lon -= this._pointerX * actualLookSpeed;
|
|
275
|
+
if ( this.lookVertical ) this._lat -= this._pointerY * actualLookSpeed * verticalLookRatio;
|
|
276
|
+
|
|
277
|
+
}
|
|
303
278
|
|
|
304
279
|
this._lat = Math.max( - 85, Math.min( 85, this._lat ) );
|
|
305
280
|
|
|
@@ -332,6 +307,15 @@ class FirstPersonControls extends Controls {
|
|
|
332
307
|
|
|
333
308
|
}
|
|
334
309
|
|
|
310
|
+
/**
|
|
311
|
+
* @deprecated, r184. This method is no longer needed.
|
|
312
|
+
*/
|
|
313
|
+
handleResize() {
|
|
314
|
+
|
|
315
|
+
console.warn( 'THREE.FirstPersonControls: handleResize() has been removed.' );
|
|
316
|
+
|
|
317
|
+
}
|
|
318
|
+
|
|
335
319
|
}
|
|
336
320
|
|
|
337
321
|
function onPointerDown( event ) {
|
|
@@ -342,7 +326,16 @@ function onPointerDown( event ) {
|
|
|
342
326
|
|
|
343
327
|
}
|
|
344
328
|
|
|
345
|
-
|
|
329
|
+
this.domElement.setPointerCapture( event.pointerId );
|
|
330
|
+
|
|
331
|
+
this._pointerCount ++;
|
|
332
|
+
|
|
333
|
+
if ( event.pointerType === 'touch' ) {
|
|
334
|
+
|
|
335
|
+
this._moveForward = this._pointerCount === 1;
|
|
336
|
+
this._moveBackward = this._pointerCount >= 2;
|
|
337
|
+
|
|
338
|
+
} else {
|
|
346
339
|
|
|
347
340
|
switch ( event.button ) {
|
|
348
341
|
|
|
@@ -353,13 +346,28 @@ function onPointerDown( event ) {
|
|
|
353
346
|
|
|
354
347
|
}
|
|
355
348
|
|
|
349
|
+
this._pointerDownX = event.pageX;
|
|
350
|
+
this._pointerDownY = event.pageY;
|
|
351
|
+
|
|
352
|
+
this._pointerX = 0;
|
|
353
|
+
this._pointerY = 0;
|
|
354
|
+
|
|
356
355
|
this.mouseDragOn = true;
|
|
357
356
|
|
|
358
357
|
}
|
|
359
358
|
|
|
360
359
|
function onPointerUp( event ) {
|
|
361
360
|
|
|
362
|
-
|
|
361
|
+
this.domElement.releasePointerCapture( event.pointerId );
|
|
362
|
+
|
|
363
|
+
this._pointerCount --;
|
|
364
|
+
|
|
365
|
+
if ( event.pointerType === 'touch' ) {
|
|
366
|
+
|
|
367
|
+
this._moveForward = this._pointerCount === 1;
|
|
368
|
+
this._moveBackward = false;
|
|
369
|
+
|
|
370
|
+
} else {
|
|
363
371
|
|
|
364
372
|
switch ( event.button ) {
|
|
365
373
|
|
|
@@ -370,23 +378,19 @@ function onPointerUp( event ) {
|
|
|
370
378
|
|
|
371
379
|
}
|
|
372
380
|
|
|
373
|
-
this.
|
|
381
|
+
this._pointerX = 0;
|
|
382
|
+
this._pointerY = 0;
|
|
383
|
+
|
|
384
|
+
if ( this._pointerCount === 0 ) this.mouseDragOn = false;
|
|
374
385
|
|
|
375
386
|
}
|
|
376
387
|
|
|
377
388
|
function onPointerMove( event ) {
|
|
378
389
|
|
|
379
|
-
if ( this.
|
|
390
|
+
if ( this.mouseDragOn === false ) return;
|
|
380
391
|
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
} else {
|
|
385
|
-
|
|
386
|
-
this._pointerX = event.pageX - this.domElement.offsetLeft - this._viewHalfX;
|
|
387
|
-
this._pointerY = event.pageY - this.domElement.offsetTop - this._viewHalfY;
|
|
388
|
-
|
|
389
|
-
}
|
|
392
|
+
this._pointerX = event.pageX - this._pointerDownX;
|
|
393
|
+
this._pointerY = event.pageY - this._pointerDownY;
|
|
390
394
|
|
|
391
395
|
}
|
|
392
396
|
|
|
@@ -29,7 +29,7 @@ class FlyControls extends Controls {
|
|
|
29
29
|
* Constructs a new controls instance.
|
|
30
30
|
*
|
|
31
31
|
* @param {Object3D} object - The object that is managed by the controls.
|
|
32
|
-
* @param {?
|
|
32
|
+
* @param {?HTMLElement} domElement - The HTML element used for event listeners.
|
|
33
33
|
*/
|
|
34
34
|
constructor( object, domElement = null ) {
|
|
35
35
|
|
|
@@ -109,6 +109,8 @@ class FlyControls extends Controls {
|
|
|
109
109
|
this.domElement.addEventListener( 'pointercancel', this._onPointerCancel );
|
|
110
110
|
this.domElement.addEventListener( 'contextmenu', this._onContextMenu );
|
|
111
111
|
|
|
112
|
+
this.domElement.style.touchAction = 'none'; // Disable touch scroll
|
|
113
|
+
|
|
112
114
|
}
|
|
113
115
|
|
|
114
116
|
disconnect() {
|
|
@@ -122,6 +124,8 @@ class FlyControls extends Controls {
|
|
|
122
124
|
this.domElement.removeEventListener( 'pointercancel', this._onPointerCancel );
|
|
123
125
|
this.domElement.removeEventListener( 'contextmenu', this._onContextMenu );
|
|
124
126
|
|
|
127
|
+
this.domElement.style.touchAction = ''; // Restore touch scroll
|
|
128
|
+
|
|
125
129
|
}
|
|
126
130
|
|
|
127
131
|
dispose() {
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import { MOUSE, TOUCH } from 'three';
|
|
1
|
+
import { MOUSE, TOUCH, Plane, Raycaster, Vector2, Vector3 } from 'three';
|
|
2
2
|
|
|
3
3
|
import { OrbitControls } from './OrbitControls.js';
|
|
4
4
|
|
|
5
|
+
const _plane = new Plane();
|
|
6
|
+
const _raycaster = new Raycaster();
|
|
7
|
+
const _mouse = new Vector2();
|
|
8
|
+
const _panCurrent = new Vector3();
|
|
9
|
+
|
|
5
10
|
/**
|
|
6
11
|
* This class is intended for transforming a camera over a map from bird's eye perspective.
|
|
7
12
|
* The class shares its implementation with {@link OrbitControls} but uses a specific preset
|
|
@@ -55,6 +60,55 @@ class MapControls extends OrbitControls {
|
|
|
55
60
|
*/
|
|
56
61
|
this.touches = { ONE: TOUCH.PAN, TWO: TOUCH.DOLLY_ROTATE };
|
|
57
62
|
|
|
63
|
+
this._panWorldStart = new Vector3();
|
|
64
|
+
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
_handleMouseDownPan( event ) {
|
|
68
|
+
|
|
69
|
+
super._handleMouseDownPan( event );
|
|
70
|
+
|
|
71
|
+
this._panOffset.set( 0, 0, 0 );
|
|
72
|
+
|
|
73
|
+
if ( this.screenSpacePanning === true ) return;
|
|
74
|
+
|
|
75
|
+
_plane.setFromNormalAndCoplanarPoint( this.object.up, this.target );
|
|
76
|
+
|
|
77
|
+
const element = this.domElement;
|
|
78
|
+
const rect = element.getBoundingClientRect();
|
|
79
|
+
_mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1;
|
|
80
|
+
_mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1;
|
|
81
|
+
|
|
82
|
+
_raycaster.setFromCamera( _mouse, this.object );
|
|
83
|
+
_raycaster.ray.intersectPlane( _plane, this._panWorldStart );
|
|
84
|
+
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
_handleMouseMovePan( event ) {
|
|
88
|
+
|
|
89
|
+
if ( this.screenSpacePanning === true ) {
|
|
90
|
+
|
|
91
|
+
super._handleMouseMovePan( event );
|
|
92
|
+
return;
|
|
93
|
+
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const element = this.domElement;
|
|
97
|
+
const rect = element.getBoundingClientRect();
|
|
98
|
+
_mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1;
|
|
99
|
+
_mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1;
|
|
100
|
+
|
|
101
|
+
_raycaster.setFromCamera( _mouse, this.object );
|
|
102
|
+
|
|
103
|
+
if ( _raycaster.ray.intersectPlane( _plane, _panCurrent ) ) {
|
|
104
|
+
|
|
105
|
+
_panCurrent.sub( this._panWorldStart );
|
|
106
|
+
this._panOffset.copy( _panCurrent ).negate();
|
|
107
|
+
|
|
108
|
+
this.update();
|
|
109
|
+
|
|
110
|
+
}
|
|
111
|
+
|
|
58
112
|
}
|
|
59
113
|
|
|
60
114
|
}
|
|
@@ -91,7 +91,7 @@ class OrbitControls extends Controls {
|
|
|
91
91
|
* Constructs a new controls instance.
|
|
92
92
|
*
|
|
93
93
|
* @param {Object3D} object - The object that is managed by the controls.
|
|
94
|
-
* @param {?
|
|
94
|
+
* @param {?HTMLElement} domElement - The HTML element used for event listeners.
|
|
95
95
|
*/
|
|
96
96
|
constructor( object, domElement = null ) {
|
|
97
97
|
|
|
@@ -391,6 +391,8 @@ class OrbitControls extends Controls {
|
|
|
391
391
|
*/
|
|
392
392
|
this.zoom0 = this.object.zoom;
|
|
393
393
|
|
|
394
|
+
this._cursorStyle = 'auto';
|
|
395
|
+
|
|
394
396
|
// the target DOM element for key events
|
|
395
397
|
this._domElementKeyEvents = null;
|
|
396
398
|
|
|
@@ -462,6 +464,34 @@ class OrbitControls extends Controls {
|
|
|
462
464
|
|
|
463
465
|
}
|
|
464
466
|
|
|
467
|
+
/**
|
|
468
|
+
* Defines the visual representation of the cursor.
|
|
469
|
+
*
|
|
470
|
+
* @type {('auto'|'grab')}
|
|
471
|
+
* @default 'auto'
|
|
472
|
+
*/
|
|
473
|
+
set cursorStyle( type ) {
|
|
474
|
+
|
|
475
|
+
this._cursorStyle = type;
|
|
476
|
+
|
|
477
|
+
if ( type === 'grab' ) {
|
|
478
|
+
|
|
479
|
+
this.domElement.style.cursor = 'grab';
|
|
480
|
+
|
|
481
|
+
} else {
|
|
482
|
+
|
|
483
|
+
this.domElement.style.cursor = 'auto';
|
|
484
|
+
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
get cursorStyle() {
|
|
490
|
+
|
|
491
|
+
return this._cursorStyle;
|
|
492
|
+
|
|
493
|
+
}
|
|
494
|
+
|
|
465
495
|
connect( element ) {
|
|
466
496
|
|
|
467
497
|
super.connect( element );
|
|
@@ -475,15 +505,15 @@ class OrbitControls extends Controls {
|
|
|
475
505
|
const document = this.domElement.getRootNode(); // offscreen canvas compatibility
|
|
476
506
|
document.addEventListener( 'keydown', this._interceptControlDown, { passive: true, capture: true } );
|
|
477
507
|
|
|
478
|
-
this.domElement.style.touchAction = 'none'; //
|
|
508
|
+
this.domElement.style.touchAction = 'none'; // Disable touch scroll
|
|
479
509
|
|
|
480
510
|
}
|
|
481
511
|
|
|
482
512
|
disconnect() {
|
|
483
513
|
|
|
484
514
|
this.domElement.removeEventListener( 'pointerdown', this._onPointerDown );
|
|
485
|
-
this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
|
|
486
|
-
this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
|
|
515
|
+
this.domElement.ownerDocument.removeEventListener( 'pointermove', this._onPointerMove );
|
|
516
|
+
this.domElement.ownerDocument.removeEventListener( 'pointerup', this._onPointerUp );
|
|
487
517
|
this.domElement.removeEventListener( 'pointercancel', this._onPointerUp );
|
|
488
518
|
|
|
489
519
|
this.domElement.removeEventListener( 'wheel', this._onMouseWheel );
|
|
@@ -494,7 +524,7 @@ class OrbitControls extends Controls {
|
|
|
494
524
|
const document = this.domElement.getRootNode(); // offscreen canvas compatibility
|
|
495
525
|
document.removeEventListener( 'keydown', this._interceptControlDown, { capture: true } );
|
|
496
526
|
|
|
497
|
-
this.domElement.style.touchAction = '
|
|
527
|
+
this.domElement.style.touchAction = ''; // Restore touch scroll
|
|
498
528
|
|
|
499
529
|
}
|
|
500
530
|
|
|
@@ -541,7 +571,7 @@ class OrbitControls extends Controls {
|
|
|
541
571
|
* Adds key event listeners to the given DOM element.
|
|
542
572
|
* `window` is a recommended argument for using this method.
|
|
543
573
|
*
|
|
544
|
-
* @param {
|
|
574
|
+
* @param {HTMLElement} domElement - The DOM element
|
|
545
575
|
*/
|
|
546
576
|
listenToKeyEvents( domElement ) {
|
|
547
577
|
|
|
@@ -594,6 +624,67 @@ class OrbitControls extends Controls {
|
|
|
594
624
|
|
|
595
625
|
}
|
|
596
626
|
|
|
627
|
+
/**
|
|
628
|
+
* Programmatically pan the camera.
|
|
629
|
+
*
|
|
630
|
+
* @param {number} deltaX - The horizontal pan amount in pixels.
|
|
631
|
+
* @param {number} deltaY - The vertical pan amount in pixels.
|
|
632
|
+
*/
|
|
633
|
+
pan( deltaX, deltaY ) {
|
|
634
|
+
|
|
635
|
+
this._pan( deltaX, deltaY );
|
|
636
|
+
this.update();
|
|
637
|
+
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
/**
|
|
641
|
+
* Programmatically dolly in (zoom in for perspective camera).
|
|
642
|
+
*
|
|
643
|
+
* @param {number} dollyScale - The dolly scale factor.
|
|
644
|
+
*/
|
|
645
|
+
dollyIn( dollyScale ) {
|
|
646
|
+
|
|
647
|
+
this._dollyIn( dollyScale );
|
|
648
|
+
this.update();
|
|
649
|
+
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
/**
|
|
653
|
+
* Programmatically dolly out (zoom out for perspective camera).
|
|
654
|
+
*
|
|
655
|
+
* @param {number} dollyScale - The dolly scale factor.
|
|
656
|
+
*/
|
|
657
|
+
dollyOut( dollyScale ) {
|
|
658
|
+
|
|
659
|
+
this._dollyOut( dollyScale );
|
|
660
|
+
this.update();
|
|
661
|
+
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
/**
|
|
665
|
+
* Programmatically rotate the camera left (around the vertical axis).
|
|
666
|
+
*
|
|
667
|
+
* @param {number} angle - The rotation angle in radians.
|
|
668
|
+
*/
|
|
669
|
+
rotateLeft( angle ) {
|
|
670
|
+
|
|
671
|
+
this._rotateLeft( angle );
|
|
672
|
+
this.update();
|
|
673
|
+
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
/**
|
|
677
|
+
* Programmatically rotate the camera up (around the horizontal axis).
|
|
678
|
+
*
|
|
679
|
+
* @param {number} angle - The rotation angle in radians.
|
|
680
|
+
*/
|
|
681
|
+
rotateUp( angle ) {
|
|
682
|
+
|
|
683
|
+
this._rotateUp( angle );
|
|
684
|
+
this.update();
|
|
685
|
+
|
|
686
|
+
}
|
|
687
|
+
|
|
597
688
|
update( deltaTime = null ) {
|
|
598
689
|
|
|
599
690
|
const position = this.object.position;
|
|
@@ -1458,8 +1549,8 @@ function onPointerDown( event ) {
|
|
|
1458
1549
|
|
|
1459
1550
|
this.domElement.setPointerCapture( event.pointerId );
|
|
1460
1551
|
|
|
1461
|
-
this.domElement.addEventListener( 'pointermove', this._onPointerMove );
|
|
1462
|
-
this.domElement.addEventListener( 'pointerup', this._onPointerUp );
|
|
1552
|
+
this.domElement.ownerDocument.addEventListener( 'pointermove', this._onPointerMove );
|
|
1553
|
+
this.domElement.ownerDocument.addEventListener( 'pointerup', this._onPointerUp );
|
|
1463
1554
|
|
|
1464
1555
|
}
|
|
1465
1556
|
|
|
@@ -1481,6 +1572,12 @@ function onPointerDown( event ) {
|
|
|
1481
1572
|
|
|
1482
1573
|
}
|
|
1483
1574
|
|
|
1575
|
+
if ( this._cursorStyle === 'grab' ) {
|
|
1576
|
+
|
|
1577
|
+
this.domElement.style.cursor = 'grabbing';
|
|
1578
|
+
|
|
1579
|
+
}
|
|
1580
|
+
|
|
1484
1581
|
}
|
|
1485
1582
|
|
|
1486
1583
|
function onPointerMove( event ) {
|
|
@@ -1509,13 +1606,19 @@ function onPointerUp( event ) {
|
|
|
1509
1606
|
|
|
1510
1607
|
this.domElement.releasePointerCapture( event.pointerId );
|
|
1511
1608
|
|
|
1512
|
-
this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
|
|
1513
|
-
this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
|
|
1609
|
+
this.domElement.ownerDocument.removeEventListener( 'pointermove', this._onPointerMove );
|
|
1610
|
+
this.domElement.ownerDocument.removeEventListener( 'pointerup', this._onPointerUp );
|
|
1514
1611
|
|
|
1515
1612
|
this.dispatchEvent( _endEvent );
|
|
1516
1613
|
|
|
1517
1614
|
this.state = _STATE.NONE;
|
|
1518
1615
|
|
|
1616
|
+
if ( this._cursorStyle === 'grab' ) {
|
|
1617
|
+
|
|
1618
|
+
this.domElement.style.cursor = 'grab';
|
|
1619
|
+
|
|
1620
|
+
}
|
|
1621
|
+
|
|
1519
1622
|
break;
|
|
1520
1623
|
|
|
1521
1624
|
case 1:
|
|
@@ -35,7 +35,7 @@ const _MOUSE_SENSITIVITY = 0.002;
|
|
|
35
35
|
const _PI_2 = Math.PI / 2;
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
|
-
* The implementation of this class is based on the [Pointer Lock API]
|
|
38
|
+
* The implementation of this class is based on the [Pointer Lock API](https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API).
|
|
39
39
|
* `PointerLockControls` is a perfect choice for first person 3D games.
|
|
40
40
|
*
|
|
41
41
|
* ```js
|
|
@@ -64,7 +64,7 @@ class PointerLockControls extends Controls {
|
|
|
64
64
|
* Constructs a new controls instance.
|
|
65
65
|
*
|
|
66
66
|
* @param {Camera} camera - The camera that is managed by the controls.
|
|
67
|
-
* @param {?
|
|
67
|
+
* @param {?HTMLElement} domElement - The HTML element used for event listeners.
|
|
68
68
|
*/
|
|
69
69
|
constructor( camera, domElement = null ) {
|
|
70
70
|
|
|
@@ -141,14 +141,6 @@ class PointerLockControls extends Controls {
|
|
|
141
141
|
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
-
getObject() {
|
|
145
|
-
|
|
146
|
-
console.warn( 'THREE.PointerLockControls: getObject() has been deprecated. Use controls.object instead.' ); // @deprecated r169
|
|
147
|
-
|
|
148
|
-
return this.object;
|
|
149
|
-
|
|
150
|
-
}
|
|
151
|
-
|
|
152
144
|
/**
|
|
153
145
|
* Returns the look direction of the camera.
|
|
154
146
|
*
|
|
@@ -59,7 +59,7 @@ class TrackballControls extends Controls {
|
|
|
59
59
|
* Constructs a new controls instance.
|
|
60
60
|
*
|
|
61
61
|
* @param {Object3D} object - The object that is managed by the controls.
|
|
62
|
-
* @param {?
|
|
62
|
+
* @param {?HTMLElement} domElement - The HTML element used for event listeners.
|
|
63
63
|
*/
|
|
64
64
|
constructor( object, domElement = null ) {
|
|
65
65
|
|
|
@@ -281,7 +281,7 @@ class TrackballControls extends Controls {
|
|
|
281
281
|
this.domElement.addEventListener( 'wheel', this._onMouseWheel, { passive: false } );
|
|
282
282
|
this.domElement.addEventListener( 'contextmenu', this._onContextMenu );
|
|
283
283
|
|
|
284
|
-
this.domElement.style.touchAction = 'none'; //
|
|
284
|
+
this.domElement.style.touchAction = 'none'; // Disable touch scroll
|
|
285
285
|
|
|
286
286
|
}
|
|
287
287
|
|
|
@@ -291,13 +291,13 @@ class TrackballControls extends Controls {
|
|
|
291
291
|
window.removeEventListener( 'keyup', this._onKeyUp );
|
|
292
292
|
|
|
293
293
|
this.domElement.removeEventListener( 'pointerdown', this._onPointerDown );
|
|
294
|
-
this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
|
|
295
|
-
this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
|
|
294
|
+
this.domElement.ownerDocument.removeEventListener( 'pointermove', this._onPointerMove );
|
|
295
|
+
this.domElement.ownerDocument.removeEventListener( 'pointerup', this._onPointerUp );
|
|
296
296
|
this.domElement.removeEventListener( 'pointercancel', this._onPointerCancel );
|
|
297
297
|
this.domElement.removeEventListener( 'wheel', this._onMouseWheel );
|
|
298
298
|
this.domElement.removeEventListener( 'contextmenu', this._onContextMenu );
|
|
299
299
|
|
|
300
|
-
this.domElement.style.touchAction = '
|
|
300
|
+
this.domElement.style.touchAction = ''; // Restore touch scroll
|
|
301
301
|
|
|
302
302
|
}
|
|
303
303
|
|
|
@@ -660,8 +660,8 @@ function onPointerDown( event ) {
|
|
|
660
660
|
|
|
661
661
|
this.domElement.setPointerCapture( event.pointerId );
|
|
662
662
|
|
|
663
|
-
this.domElement.addEventListener( 'pointermove', this._onPointerMove );
|
|
664
|
-
this.domElement.addEventListener( 'pointerup', this._onPointerUp );
|
|
663
|
+
this.domElement.ownerDocument.addEventListener( 'pointermove', this._onPointerMove );
|
|
664
|
+
this.domElement.ownerDocument.addEventListener( 'pointerup', this._onPointerUp );
|
|
665
665
|
|
|
666
666
|
}
|
|
667
667
|
|
|
@@ -719,8 +719,8 @@ function onPointerUp( event ) {
|
|
|
719
719
|
|
|
720
720
|
this.domElement.releasePointerCapture( event.pointerId );
|
|
721
721
|
|
|
722
|
-
this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
|
|
723
|
-
this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
|
|
722
|
+
this.domElement.ownerDocument.removeEventListener( 'pointermove', this._onPointerMove );
|
|
723
|
+
this.domElement.ownerDocument.removeEventListener( 'pointerup', this._onPointerUp );
|
|
724
724
|
|
|
725
725
|
}
|
|
726
726
|
|
|
@@ -80,7 +80,7 @@ class TransformControls extends Controls {
|
|
|
80
80
|
* Constructs a new controls instance.
|
|
81
81
|
*
|
|
82
82
|
* @param {Camera} camera - The camera of the rendered scene.
|
|
83
|
-
* @param {?
|
|
83
|
+
* @param {?HTMLElement} domElement - The HTML element used for event listeners.
|
|
84
84
|
*/
|
|
85
85
|
constructor( camera, domElement = null ) {
|
|
86
86
|
|
|
@@ -251,6 +251,33 @@ class TransformControls extends Controls {
|
|
|
251
251
|
*/
|
|
252
252
|
defineProperty( 'showZ', true );
|
|
253
253
|
|
|
254
|
+
/**
|
|
255
|
+
* Whether the xy-plane helper should be visible or not.
|
|
256
|
+
*
|
|
257
|
+
* @name TransformControls#showXY
|
|
258
|
+
* @type {boolean}
|
|
259
|
+
* @default true
|
|
260
|
+
*/
|
|
261
|
+
defineProperty( 'showXY', true );
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Whether the yz-plane helper should be visible or not.
|
|
265
|
+
*
|
|
266
|
+
* @name TransformControls#showYZ
|
|
267
|
+
* @type {boolean}
|
|
268
|
+
* @default true
|
|
269
|
+
*/
|
|
270
|
+
defineProperty( 'showYZ', true );
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Whether the xz-axis helper should be visible or not.
|
|
274
|
+
*
|
|
275
|
+
* @name TransformControls#showXZ
|
|
276
|
+
* @type {boolean}
|
|
277
|
+
* @default true
|
|
278
|
+
*/
|
|
279
|
+
defineProperty( 'showXZ', true );
|
|
280
|
+
|
|
254
281
|
/**
|
|
255
282
|
* The minimum allowed X position during translation.
|
|
256
283
|
*
|
|
@@ -373,7 +400,7 @@ class TransformControls extends Controls {
|
|
|
373
400
|
this.domElement.addEventListener( 'pointermove', this._onPointerHover );
|
|
374
401
|
this.domElement.addEventListener( 'pointerup', this._onPointerUp );
|
|
375
402
|
|
|
376
|
-
this.domElement.style.touchAction = 'none'; //
|
|
403
|
+
this.domElement.style.touchAction = 'none'; // Disable touch scroll
|
|
377
404
|
|
|
378
405
|
}
|
|
379
406
|
|
|
@@ -384,7 +411,7 @@ class TransformControls extends Controls {
|
|
|
384
411
|
this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
|
|
385
412
|
this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
|
|
386
413
|
|
|
387
|
-
this.domElement.style.touchAction = '
|
|
414
|
+
this.domElement.style.touchAction = ''; // Restore touch scroll
|
|
388
415
|
|
|
389
416
|
}
|
|
390
417
|
|
|
@@ -1784,6 +1811,11 @@ class TransformControlsGizmo extends Object3D {
|
|
|
1784
1811
|
handle.visible = handle.visible && ( handle.name.indexOf( 'Z' ) === - 1 || this.showZ );
|
|
1785
1812
|
handle.visible = handle.visible && ( handle.name.indexOf( 'E' ) === - 1 || ( this.showX && this.showY && this.showZ ) );
|
|
1786
1813
|
|
|
1814
|
+
// Hide disabled plane helpers
|
|
1815
|
+
handle.visible = handle.visible && ( handle.name.indexOf( 'XY' ) === - 1 || this.showXY );
|
|
1816
|
+
handle.visible = handle.visible && ( handle.name.indexOf( 'YZ' ) === - 1 || this.showYZ );
|
|
1817
|
+
handle.visible = handle.visible && ( handle.name.indexOf( 'XZ' ) === - 1 || this.showXZ );
|
|
1818
|
+
|
|
1787
1819
|
// highlight selected axis
|
|
1788
1820
|
|
|
1789
1821
|
handle.material._color = handle.material._color || handle.material.color.clone();
|
package/examples/jsm/csm/CSM.js
CHANGED
|
@@ -13,6 +13,7 @@ import { CSMShader } from './CSMShader.js';
|
|
|
13
13
|
const _cameraToLightMatrix = new Matrix4();
|
|
14
14
|
const _lightSpaceFrustum = new CSMFrustum( { webGL: true } );
|
|
15
15
|
const _center = new Vector3();
|
|
16
|
+
const _origin = new Vector3();
|
|
16
17
|
const _bbox = new Box3();
|
|
17
18
|
const _uniformArray = [];
|
|
18
19
|
const _logArray = [];
|
|
@@ -367,7 +368,7 @@ export class CSM {
|
|
|
367
368
|
|
|
368
369
|
// for each frustum we need to find its min-max box aligned with the light orientation
|
|
369
370
|
// the position in _lightOrientationMatrix does not matter, as we transform there and back
|
|
370
|
-
_lightOrientationMatrix.lookAt(
|
|
371
|
+
_lightOrientationMatrix.lookAt( _origin, this.lightDirection, _up );
|
|
371
372
|
_lightOrientationMatrixInverse.copy( _lightOrientationMatrix ).invert();
|
|
372
373
|
|
|
373
374
|
for ( let i = 0; i < frustums.length; i ++ ) {
|