@plastic-software/three 0.174.0 → 0.175.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +10655 -1446
- package/build/three.core.js +9626 -1094
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +834 -157
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +4 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2658 -1697
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2654 -1709
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +93 -39
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +171 -48
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +71 -29
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +41 -3
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +35 -0
- package/examples/jsm/loaders/DDSLoader.js +24 -0
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +42 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +218 -5
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +86 -18
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +38 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +81 -61
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +79 -2
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +108 -72
- package/examples/jsm/misc/VolumeSlice.js +88 -45
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +70 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +131 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +266 -133
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +1 -1
- package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
- package/examples/jsm/tsl/math/Bayer.js +14 -1
- package/examples/jsm/tsl/utils/Raymarching.js +4 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +1 -1
- package/src/Three.TSL.js +3 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +168 -18
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/AudioAnalyser.js +1 -1
- package/src/audio/AudioListener.js +2 -2
- package/src/audio/PositionalAudio.js +5 -5
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +23 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +166 -7
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +16 -1
- package/src/extras/Earcut.js +3 -781
- package/src/extras/ImageUtils.js +3 -2
- package/src/extras/PMREMGenerator.js +22 -17
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +1 -1
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/ConeGeometry.js +2 -2
- package/src/geometries/CylinderGeometry.js +2 -2
- package/src/geometries/ExtrudeGeometry.js +71 -39
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/lights/LightShadow.js +1 -1
- package/src/lights/webgpu/IESSpotLight.js +1 -1
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +4 -6
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +6 -2
- package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
- package/src/loaders/nodes/NodeObjectLoader.js +3 -3
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +1 -1
- package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +7 -3
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
- package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
- package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
- package/src/math/Color.js +1 -1
- package/src/math/MathUtils.js +223 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/accessors/BatchNode.js +8 -8
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +1 -1
- package/src/nodes/accessors/InstanceNode.js +5 -5
- package/src/nodes/accessors/InstancedMeshNode.js +1 -1
- package/src/nodes/accessors/MorphNode.js +27 -23
- package/src/nodes/accessors/Normal.js +1 -1
- package/src/nodes/accessors/Object3DNode.js +12 -12
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +46 -37
- package/src/nodes/accessors/StorageBufferNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +25 -5
- package/src/nodes/accessors/TextureSizeNode.js +1 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/CodeNode.js +4 -4
- package/src/nodes/code/ExpressionNode.js +4 -4
- package/src/nodes/code/FunctionCallNode.js +23 -3
- package/src/nodes/code/ScriptableNode.js +4 -4
- package/src/nodes/code/ScriptableValueNode.js +2 -2
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/CacheNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/InputNode.js +2 -2
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +86 -14
- package/src/nodes/core/StackNode.js +5 -5
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +2 -2
- package/src/nodes/core/VarNode.js +2 -8
- package/src/nodes/core/VaryingNode.js +3 -3
- package/src/nodes/display/BlendModes.js +4 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PosterizeNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +3 -3
- package/src/nodes/display/ViewportDepthNode.js +2 -2
- package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
- package/src/nodes/display/ViewportTextureNode.js +4 -4
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +30 -2
- package/src/nodes/lighting/AnalyticLightNode.js +9 -1
- package/src/nodes/lighting/LightsNode.js +3 -3
- package/src/nodes/lighting/ShadowNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +20 -3
- package/src/nodes/math/MathNode.js +83 -78
- package/src/nodes/math/OperatorNode.js +171 -82
- package/src/nodes/pmrem/PMREMNode.js +4 -4
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +115 -12
- package/src/nodes/utils/ArrayElementNode.js +3 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/EquirectUVNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +27 -2
- package/src/nodes/utils/LoopNode.js +58 -28
- package/src/nodes/utils/MaxMipLevelNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -2
- package/src/nodes/utils/RemapNode.js +6 -6
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/src/objects/BatchedMesh.js +4 -4
- package/src/objects/InstancedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Skeleton.js +1 -1
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +617 -79
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Attributes.js +2 -2
- package/src/renderers/common/Backend.js +12 -3
- package/src/renderers/common/Background.js +1 -0
- package/src/renderers/common/Color4.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/PostProcessing.js +2 -0
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderList.js +2 -2
- package/src/renderers/common/RenderObject.js +1 -1
- package/src/renderers/common/RenderObjects.js +2 -2
- package/src/renderers/common/Renderer.js +52 -31
- package/src/renderers/common/XRManager.js +333 -10
- package/src/renderers/common/extras/PMREMGenerator.js +6 -0
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +9 -9
- package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +128 -87
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
- package/src/renderers/webgpu/WebGPURenderer.js +17 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +173 -1
- package/src/scenes/Scene.js +2 -1
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +59 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +5 -5
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -1,25 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Creates extruded geometry from a path shape.
|
|
3
|
-
*
|
|
4
|
-
* parameters = {
|
|
5
|
-
*
|
|
6
|
-
* curveSegments: <int>, // number of points on the curves
|
|
7
|
-
* steps: <int>, // number of points for z-side extrusions / used for subdividing segments of extrude spline too
|
|
8
|
-
* depth: <float>, // Depth to extrude the shape
|
|
9
|
-
*
|
|
10
|
-
* bevelEnabled: <bool>, // turn on bevel
|
|
11
|
-
* bevelThickness: <float>, // how deep into the original shape bevel goes
|
|
12
|
-
* bevelSize: <float>, // how far from shape outline (including bevelOffset) is bevel
|
|
13
|
-
* bevelOffset: <float>, // how far from shape outline does bevel start
|
|
14
|
-
* bevelSegments: <int>, // number of bevel layers
|
|
15
|
-
*
|
|
16
|
-
* extrudePath: <THREE.Curve> // curve to extrude shape along
|
|
17
|
-
*
|
|
18
|
-
* UVGenerator: <Object> // object that provides UV generator functions
|
|
19
|
-
*
|
|
20
|
-
* }
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
1
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
24
2
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
25
3
|
import * as Curves from '../extras/curves/Curves.js';
|
|
@@ -55,17 +33,7 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
55
33
|
* Constructs a new extrude geometry.
|
|
56
34
|
*
|
|
57
35
|
* @param {Shape|Array<Shape>} [shapes] - A shape or an array of shapes.
|
|
58
|
-
* @param {
|
|
59
|
-
* @param {number} [options.curveSegments=12] - Number of points on the curves.
|
|
60
|
-
* @param {number} [options.steps=1] - Number of points used for subdividing segments along the depth of the extruded spline.
|
|
61
|
-
* @param {number} [options.depth=1] - Depth to extrude the shape.
|
|
62
|
-
* @param {boolean} [options.bevelEnabled=true] - Whether to beveling to the shape or not.
|
|
63
|
-
* @param {number} [options.bevelThickness=0.2] - How deep into the original shape the bevel goes.
|
|
64
|
-
* @param {number} [options.bevelSize=bevelThickness-0.1] - Distance from the shape outline that the bevel extends.
|
|
65
|
-
* @param {number} [options.bevelOffset=0] - Distance from the shape outline that the bevel starts.
|
|
66
|
-
* @param {number} [options.bevelSegments=3] - Number of bevel layers.
|
|
67
|
-
* @param {Curve} [options.extrudePath=3] - A 3D spline path along which the shape should be extruded. Bevels not supported for path extrusion.
|
|
68
|
-
* @param {Object} [options.UVGenerator] - An object that provides UV generator functions for custom UV generation.
|
|
36
|
+
* @param {ExtrudeGeometry~Options} [options] - The extrude settings.
|
|
69
37
|
*/
|
|
70
38
|
constructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {
|
|
71
39
|
|
|
@@ -194,14 +162,53 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
194
162
|
|
|
195
163
|
}
|
|
196
164
|
|
|
165
|
+
/**Merges index-adjacent points that are within a threshold distance of each other. Array is modified in-place. Threshold distance is empirical, and scaled based on the magnitude of point coordinates.
|
|
166
|
+
* @param {Array<Vector2>} points
|
|
167
|
+
*/
|
|
168
|
+
function mergeOverlappingPoints( points ) {
|
|
169
|
+
|
|
170
|
+
const THRESHOLD = 1e-10;
|
|
171
|
+
const THRESHOLD_SQ = THRESHOLD * THRESHOLD;
|
|
172
|
+
let prevPos = points[ 0 ];
|
|
173
|
+
for ( let i = 1; i <= points.length; i ++ ) {
|
|
174
|
+
|
|
175
|
+
const currentIndex = i % points.length;
|
|
176
|
+
const currentPos = points[ currentIndex ];
|
|
177
|
+
const dx = currentPos.x - prevPos.x;
|
|
178
|
+
const dy = currentPos.y - prevPos.y;
|
|
179
|
+
const distSq = dx * dx + dy * dy;
|
|
180
|
+
|
|
181
|
+
const scalingFactorSqrt = Math.max(
|
|
182
|
+
Math.abs( currentPos.x ),
|
|
183
|
+
Math.abs( currentPos.y ),
|
|
184
|
+
Math.abs( prevPos.x ),
|
|
185
|
+
Math.abs( prevPos.y )
|
|
186
|
+
);
|
|
187
|
+
const thesholdSqScaled = THRESHOLD_SQ * scalingFactorSqrt * scalingFactorSqrt;
|
|
188
|
+
if ( distSq <= thesholdSqScaled ) {
|
|
189
|
+
|
|
190
|
+
points.splice( currentIndex, 1 );
|
|
191
|
+
i --;
|
|
192
|
+
continue;
|
|
197
193
|
|
|
198
|
-
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
prevPos = currentPos;
|
|
197
|
+
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
mergeOverlappingPoints( vertices );
|
|
203
|
+
holes.forEach( mergeOverlappingPoints );
|
|
204
|
+
|
|
205
|
+
const numHoles = holes.length;
|
|
199
206
|
|
|
200
207
|
/* Vertices */
|
|
201
208
|
|
|
202
209
|
const contour = vertices; // vertices has all points but contour has only points of circumference
|
|
203
210
|
|
|
204
|
-
for ( let h = 0
|
|
211
|
+
for ( let h = 0; h < numHoles; h ++ ) {
|
|
205
212
|
|
|
206
213
|
const ahole = holes[ h ];
|
|
207
214
|
|
|
@@ -218,7 +225,7 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
218
225
|
|
|
219
226
|
}
|
|
220
227
|
|
|
221
|
-
const vlen = vertices.length
|
|
228
|
+
const vlen = vertices.length;
|
|
222
229
|
|
|
223
230
|
|
|
224
231
|
// Find directions for point movement
|
|
@@ -365,7 +372,7 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
365
372
|
const holesMovements = [];
|
|
366
373
|
let oneHoleMovements, verticesMovements = contourMovements.concat();
|
|
367
374
|
|
|
368
|
-
for ( let h = 0, hl =
|
|
375
|
+
for ( let h = 0, hl = numHoles; h < hl; h ++ ) {
|
|
369
376
|
|
|
370
377
|
const ahole = holes[ h ];
|
|
371
378
|
|
|
@@ -386,6 +393,8 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
386
393
|
|
|
387
394
|
}
|
|
388
395
|
|
|
396
|
+
const contractedContourVertices = [];
|
|
397
|
+
const expandedHoleVertices = [];
|
|
389
398
|
|
|
390
399
|
// Loop bevelSegments, 1 for the front, 1 for the back
|
|
391
400
|
|
|
@@ -404,28 +413,36 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
404
413
|
const vert = scalePt2( contour[ i ], contourMovements[ i ], bs );
|
|
405
414
|
|
|
406
415
|
v( vert.x, vert.y, - z );
|
|
416
|
+
if ( t == 0 ) contractedContourVertices.push( vert );
|
|
407
417
|
|
|
408
418
|
}
|
|
409
419
|
|
|
410
420
|
// expand holes
|
|
411
421
|
|
|
412
|
-
for ( let h = 0, hl =
|
|
422
|
+
for ( let h = 0, hl = numHoles; h < hl; h ++ ) {
|
|
413
423
|
|
|
414
424
|
const ahole = holes[ h ];
|
|
415
425
|
oneHoleMovements = holesMovements[ h ];
|
|
416
|
-
|
|
426
|
+
const oneHoleVertices = [];
|
|
417
427
|
for ( let i = 0, il = ahole.length; i < il; i ++ ) {
|
|
418
428
|
|
|
419
429
|
const vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );
|
|
420
430
|
|
|
421
431
|
v( vert.x, vert.y, - z );
|
|
432
|
+
if ( t == 0 ) oneHoleVertices.push( vert );
|
|
422
433
|
|
|
423
434
|
}
|
|
424
435
|
|
|
436
|
+
if ( t == 0 ) expandedHoleVertices.push( oneHoleVertices );
|
|
437
|
+
|
|
425
438
|
}
|
|
426
439
|
|
|
427
440
|
}
|
|
428
441
|
|
|
442
|
+
const faces = ShapeUtils.triangulateShape( contractedContourVertices, expandedHoleVertices );
|
|
443
|
+
|
|
444
|
+
const flen = faces.length;
|
|
445
|
+
|
|
429
446
|
const bs = bevelSize + bevelOffset;
|
|
430
447
|
|
|
431
448
|
// Back facing vertices
|
|
@@ -862,5 +879,20 @@ function toJSON( shapes, options, data ) {
|
|
|
862
879
|
|
|
863
880
|
}
|
|
864
881
|
|
|
882
|
+
/**
|
|
883
|
+
* Represents the `options` type of the geometry's constructor.
|
|
884
|
+
*
|
|
885
|
+
* @typedef {Object} ExtrudeGeometry~Options
|
|
886
|
+
* @property {number} [curveSegments=12] - Number of points on the curves.
|
|
887
|
+
* @property {number} [steps=1] - Number of points used for subdividing segments along the depth of the extruded spline.
|
|
888
|
+
* @property {number} [depth=1] - Depth to extrude the shape.
|
|
889
|
+
* @property {boolean} [bevelEnabled=true] - Whether to beveling to the shape or not.
|
|
890
|
+
* @property {number} [bevelThickness=0.2] - How deep into the original shape the bevel goes.
|
|
891
|
+
* @property {number} [bevelSize=bevelThickness-0.1] - Distance from the shape outline that the bevel extends.
|
|
892
|
+
* @property {number} [bevelOffset=0] - Distance from the shape outline that the bevel starts.
|
|
893
|
+
* @property {number} [bevelSegments=3] - Number of bevel layers.
|
|
894
|
+
* @property {?Curve} [extrudePath=null] - A 3D spline path along which the shape should be extruded. Bevels not supported for path extrusion.
|
|
895
|
+
* @property {Object} [UVGenerator] - An object that provides UV generator functions for custom UV generation.
|
|
896
|
+
**/
|
|
865
897
|
|
|
866
898
|
export { ExtrudeGeometry };
|
|
@@ -25,7 +25,7 @@ class LatheGeometry extends BufferGeometry {
|
|
|
25
25
|
/**
|
|
26
26
|
* Constructs a new lathe geometry.
|
|
27
27
|
*
|
|
28
|
-
* @param {Array<Vector2>} [points] - An array of points in 2D space. The x-coordinate of each point
|
|
28
|
+
* @param {Array<Vector2|Vector3>} [points] - An array of points in 2D space. The x-coordinate of each point
|
|
29
29
|
* must be greater than zero.
|
|
30
30
|
* @param {number} [segments=12] - The number of circumference segments to generate.
|
|
31
31
|
* @param {number} [phiStart=0] - The starting angle in radians.
|
|
@@ -10,7 +10,7 @@ const _lookTarget = /*@__PURE__*/ new Vector3();
|
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Abstract base class for light shadow classes. These classes
|
|
13
|
-
* represent the shadow configuration for different
|
|
13
|
+
* represent the shadow configuration for different light types.
|
|
14
14
|
*
|
|
15
15
|
* @abstract
|
|
16
16
|
*/
|
|
@@ -2,14 +2,39 @@ import { AnimationClip } from '../animation/AnimationClip.js';
|
|
|
2
2
|
import { FileLoader } from './FileLoader.js';
|
|
3
3
|
import { Loader } from './Loader.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Class for loading animation clips in the JSON format. The files are internally
|
|
7
|
+
* loaded via {@link FileLoader}.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const loader = new THREE.AnimationLoader();
|
|
11
|
+
* const animations = await loader.loadAsync( 'animations/animation.js' );
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @augments Loader
|
|
15
|
+
*/
|
|
5
16
|
class AnimationLoader extends Loader {
|
|
6
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new animation loader.
|
|
20
|
+
*
|
|
21
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
22
|
+
*/
|
|
7
23
|
constructor( manager ) {
|
|
8
24
|
|
|
9
25
|
super( manager );
|
|
10
26
|
|
|
11
27
|
}
|
|
12
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Starts loading from the given URL and pass the loaded animations as an array
|
|
31
|
+
* holding instances of {@link AnimationClip} to the `onLoad()` callback.
|
|
32
|
+
*
|
|
33
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
34
|
+
* @param {function(Array<AnimationClip>)} onLoad - Executed when the loading process has been finished.
|
|
35
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
36
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
37
|
+
*/
|
|
13
38
|
load( url, onLoad, onProgress, onError ) {
|
|
14
39
|
|
|
15
40
|
const scope = this;
|
|
@@ -44,6 +69,12 @@ class AnimationLoader extends Loader {
|
|
|
44
69
|
|
|
45
70
|
}
|
|
46
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Parses the given JSON object and returns an array of animation clips.
|
|
74
|
+
*
|
|
75
|
+
* @param {Object} json - The serialized animation clips.
|
|
76
|
+
* @return {Array<AnimationClip>} The parsed animation clips.
|
|
77
|
+
*/
|
|
47
78
|
parse( json ) {
|
|
48
79
|
|
|
49
80
|
const animations = [];
|
|
@@ -2,14 +2,45 @@ import { AudioContext } from '../audio/AudioContext.js';
|
|
|
2
2
|
import { FileLoader } from './FileLoader.js';
|
|
3
3
|
import { Loader } from './Loader.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Class for loading audio buffers. Audios are internally
|
|
7
|
+
* loaded via {@link FileLoader}.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const audioListener = new THREE.AudioListener();
|
|
11
|
+
* const ambientSound = new THREE.Audio( audioListener );
|
|
12
|
+
*
|
|
13
|
+
* const loader = new THREE.AudioLoader();
|
|
14
|
+
* const audioBuffer = await loader.loadAsync( 'audio/ambient_ocean.ogg' );
|
|
15
|
+
*
|
|
16
|
+
* ambientSound.setBuffer( audioBuffer );
|
|
17
|
+
* ambientSound.play();
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @augments Loader
|
|
21
|
+
*/
|
|
5
22
|
class AudioLoader extends Loader {
|
|
6
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Constructs a new audio loader.
|
|
26
|
+
*
|
|
27
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
28
|
+
*/
|
|
7
29
|
constructor( manager ) {
|
|
8
30
|
|
|
9
31
|
super( manager );
|
|
10
32
|
|
|
11
33
|
}
|
|
12
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Starts loading from the given URL and passes the loaded audio buffer
|
|
37
|
+
* to the `onLoad()` callback.
|
|
38
|
+
*
|
|
39
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
40
|
+
* @param {function(AudioBuffer)} onLoad - Executed when the loading process has been finished.
|
|
41
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
42
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
43
|
+
*/
|
|
13
44
|
load( url, onLoad, onProgress, onError ) {
|
|
14
45
|
|
|
15
46
|
const scope = this;
|
|
@@ -10,14 +10,42 @@ import { InterleavedBufferAttribute } from '../core/InterleavedBufferAttribute.j
|
|
|
10
10
|
import { InterleavedBuffer } from '../core/InterleavedBuffer.js';
|
|
11
11
|
import { getTypedArray } from '../utils.js';
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Class for loading geometries. The files are internally
|
|
15
|
+
* loaded via {@link FileLoader}.
|
|
16
|
+
*
|
|
17
|
+
* ```js
|
|
18
|
+
* const loader = new THREE.BufferGeometryLoader();
|
|
19
|
+
* const geometry = await loader.loadAsync( 'models/json/pressure.json' );
|
|
20
|
+
*
|
|
21
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xF5F5F5 } );
|
|
22
|
+
* const object = new THREE.Mesh( geometry, material );
|
|
23
|
+
* scene.add( object );
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @augments Loader
|
|
27
|
+
*/
|
|
13
28
|
class BufferGeometryLoader extends Loader {
|
|
14
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Constructs a new geometry loader.
|
|
32
|
+
*
|
|
33
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
34
|
+
*/
|
|
15
35
|
constructor( manager ) {
|
|
16
36
|
|
|
17
37
|
super( manager );
|
|
18
38
|
|
|
19
39
|
}
|
|
20
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Starts loading from the given URL and pass the loaded geometry to the `onLoad()` callback.
|
|
43
|
+
*
|
|
44
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
45
|
+
* @param {function(BufferGeometry)} onLoad - Executed when the loading process has been finished.
|
|
46
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
47
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
48
|
+
*/
|
|
21
49
|
load( url, onLoad, onProgress, onError ) {
|
|
22
50
|
|
|
23
51
|
const scope = this;
|
|
@@ -52,6 +80,12 @@ class BufferGeometryLoader extends Loader {
|
|
|
52
80
|
|
|
53
81
|
}
|
|
54
82
|
|
|
83
|
+
/**
|
|
84
|
+
* Parses the given JSON object and returns a geometry.
|
|
85
|
+
*
|
|
86
|
+
* @param {Object} json - The serialized geometry.
|
|
87
|
+
* @return {BufferGeometry} The parsed geometry.
|
|
88
|
+
*/
|
|
55
89
|
parse( json ) {
|
|
56
90
|
|
|
57
91
|
const interleavedBufferMap = {};
|
package/src/loaders/Cache.js
CHANGED
|
@@ -1,9 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @class
|
|
3
|
+
* @classdesc A simple caching system, used internally by {@link FileLoader}.
|
|
4
|
+
* To enable caching across all loaders that use {@link FileLoader}, add `THREE.Cache.enabled = true.` once in your app.
|
|
5
|
+
* @hideconstructor
|
|
6
|
+
*/
|
|
1
7
|
const Cache = {
|
|
2
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Whether caching is enabled or not.
|
|
11
|
+
*
|
|
12
|
+
* @static
|
|
13
|
+
* @type {boolean}
|
|
14
|
+
* @default false
|
|
15
|
+
*/
|
|
3
16
|
enabled: false,
|
|
4
17
|
|
|
18
|
+
/**
|
|
19
|
+
* A dictionary that holds cached files.
|
|
20
|
+
*
|
|
21
|
+
* @static
|
|
22
|
+
* @type {Object<string,Object>}
|
|
23
|
+
*/
|
|
5
24
|
files: {},
|
|
6
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Adds a cache entry with a key to reference the file. If this key already
|
|
28
|
+
* holds a file, it is overwritten.
|
|
29
|
+
*
|
|
30
|
+
* @static
|
|
31
|
+
* @param {string} key - The key to reference the cached file.
|
|
32
|
+
* @param {Object} file - The file to be cached.
|
|
33
|
+
*/
|
|
7
34
|
add: function ( key, file ) {
|
|
8
35
|
|
|
9
36
|
if ( this.enabled === false ) return;
|
|
@@ -14,6 +41,13 @@ const Cache = {
|
|
|
14
41
|
|
|
15
42
|
},
|
|
16
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Gets the cached value for the given key.
|
|
46
|
+
*
|
|
47
|
+
* @static
|
|
48
|
+
* @param {string} key - The key to reference the cached file.
|
|
49
|
+
* @return {Object|undefined} The cached file. If the key does not exist `undefined` is returned.
|
|
50
|
+
*/
|
|
17
51
|
get: function ( key ) {
|
|
18
52
|
|
|
19
53
|
if ( this.enabled === false ) return;
|
|
@@ -24,12 +58,23 @@ const Cache = {
|
|
|
24
58
|
|
|
25
59
|
},
|
|
26
60
|
|
|
61
|
+
/**
|
|
62
|
+
* Removes the cached file associated with the given key.
|
|
63
|
+
*
|
|
64
|
+
* @static
|
|
65
|
+
* @param {string} key - The key to reference the cached file.
|
|
66
|
+
*/
|
|
27
67
|
remove: function ( key ) {
|
|
28
68
|
|
|
29
69
|
delete this.files[ key ];
|
|
30
70
|
|
|
31
71
|
},
|
|
32
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Remove all values from the cache.
|
|
75
|
+
*
|
|
76
|
+
* @static
|
|
77
|
+
*/
|
|
33
78
|
clear: function () {
|
|
34
79
|
|
|
35
80
|
this.files = {};
|
|
@@ -4,19 +4,40 @@ import { CompressedTexture } from '../textures/CompressedTexture.js';
|
|
|
4
4
|
import { Loader } from './Loader.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* Abstract
|
|
7
|
+
* Abstract base class for loading compressed texture formats S3TC, ASTC or ETC.
|
|
8
|
+
* Textures are internally loaded via {@link FileLoader}.
|
|
8
9
|
*
|
|
9
|
-
*
|
|
10
|
+
* Derived classes have to implement the `parse()` method which holds the parsing
|
|
11
|
+
* for the respective format.
|
|
12
|
+
*
|
|
13
|
+
* @abstract
|
|
14
|
+
* @augments Loader
|
|
10
15
|
*/
|
|
11
|
-
|
|
12
16
|
class CompressedTextureLoader extends Loader {
|
|
13
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new compressed texture loader.
|
|
20
|
+
*
|
|
21
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
22
|
+
*/
|
|
14
23
|
constructor( manager ) {
|
|
15
24
|
|
|
16
25
|
super( manager );
|
|
17
26
|
|
|
18
27
|
}
|
|
19
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Starts loading from the given URL and passes the loaded compressed texture
|
|
31
|
+
* to the `onLoad()` callback. The method also returns a new texture object which can
|
|
32
|
+
* directly be used for material creation. If you do it this way, the texture
|
|
33
|
+
* may pop up in your scene once the respective loading process is finished.
|
|
34
|
+
*
|
|
35
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
36
|
+
* @param {function(CompressedTexture)} onLoad - Executed when the loading process has been finished.
|
|
37
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
38
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
39
|
+
* @return {CompressedTexture} The compressed texture.
|
|
40
|
+
*/
|
|
20
41
|
load( url, onLoad, onProgress, onError ) {
|
|
21
42
|
|
|
22
43
|
const scope = this;
|
|
@@ -130,5 +151,17 @@ class CompressedTextureLoader extends Loader {
|
|
|
130
151
|
|
|
131
152
|
}
|
|
132
153
|
|
|
154
|
+
/**
|
|
155
|
+
* Represents the result object type of the `parse()` method.
|
|
156
|
+
*
|
|
157
|
+
* @typedef {Object} CompressedTextureLoader~TexData
|
|
158
|
+
* @property {number} width - The width of the base mip.
|
|
159
|
+
* @property {number} height - The width of the base mip.
|
|
160
|
+
* @property {boolean} isCubemap - Whether the data represent a cubemap or not.
|
|
161
|
+
* @property {number} mipmapCount - The mipmap count.
|
|
162
|
+
* @property {Array<{data:TypedArray,width:number,height:number}>} mipmaps - An array holding the mipmaps.
|
|
163
|
+
* Each entry holds the data and the dimensions for each level.
|
|
164
|
+
* @property {number} format - The texture format.
|
|
165
|
+
**/
|
|
133
166
|
|
|
134
167
|
export { CompressedTextureLoader };
|
|
@@ -3,14 +3,59 @@ import { CubeTexture } from '../textures/CubeTexture.js';
|
|
|
3
3
|
import { Loader } from './Loader.js';
|
|
4
4
|
import { SRGBColorSpace } from '../constants.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Class for loading cube textures. Images are internally loaded via {@link ImageLoader}.
|
|
8
|
+
*
|
|
9
|
+
* The loader returns an instance of {@link CubeTexture} and expects the cube map to
|
|
10
|
+
* be defined as six separate images representing the sides of a cube. Other cube map definitions
|
|
11
|
+
* like vertical and horizontal cross, column and row layouts are not supported.
|
|
12
|
+
*
|
|
13
|
+
* Note that, by convention, cube maps are specified in a coordinate system
|
|
14
|
+
* in which positive-x is to the right when looking up the positive-z axis --
|
|
15
|
+
* in other words, using a left-handed coordinate system. Since three.js uses
|
|
16
|
+
* a right-handed coordinate system, environment maps used in three.js will
|
|
17
|
+
* have pos-x and neg-x swapped.
|
|
18
|
+
*
|
|
19
|
+
* The loaded cube texture is in sRGB color space. Meaning {@link Texture#colorSpace}
|
|
20
|
+
* is set to `SRGBColorSpace` by default.
|
|
21
|
+
*
|
|
22
|
+
* ```js
|
|
23
|
+
* const loader = new THREE.CubeTextureLoader().setPath( 'textures/cubeMaps/' );
|
|
24
|
+
* const cubeTexture = await loader.loadAsync( [
|
|
25
|
+
* 'px.png', 'nx.png', 'py.png', 'ny.png', 'pz.png', 'nz.png'
|
|
26
|
+
* ] );
|
|
27
|
+
* scene.background = cubeTexture;
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @augments Loader
|
|
31
|
+
*/
|
|
6
32
|
class CubeTextureLoader extends Loader {
|
|
7
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Constructs a new cube texture loader.
|
|
36
|
+
*
|
|
37
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
38
|
+
*/
|
|
8
39
|
constructor( manager ) {
|
|
9
40
|
|
|
10
41
|
super( manager );
|
|
11
42
|
|
|
12
43
|
}
|
|
13
44
|
|
|
45
|
+
/**
|
|
46
|
+
* Starts loading from the given URL and pass the fully loaded cube texture
|
|
47
|
+
* to the `onLoad()` callback. The method also returns a new cube texture object which can
|
|
48
|
+
* directly be used for material creation. If you do it this way, the cube texture
|
|
49
|
+
* may pop up in your scene once the respective loading process is finished.
|
|
50
|
+
*
|
|
51
|
+
* @param {Array<string>} urls - Array of 6 URLs to images, one for each side of the
|
|
52
|
+
* cube texture. The urls should be specified in the following order: pos-x,
|
|
53
|
+
* neg-x, pos-y, neg-y, pos-z, neg-z. An array of data URIs are allowed as well.
|
|
54
|
+
* @param {function(CubeTexture)} onLoad - Executed when the loading process has been finished.
|
|
55
|
+
* @param {onProgressCallback} onProgress - Unsupported in this loader.
|
|
56
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
57
|
+
* @return {CubeTexture} The cube texture.
|
|
58
|
+
*/
|
|
14
59
|
load( urls, onLoad, onProgress, onError ) {
|
|
15
60
|
|
|
16
61
|
const texture = new CubeTexture();
|
|
@@ -4,19 +4,40 @@ import { DataTexture } from '../textures/DataTexture.js';
|
|
|
4
4
|
import { Loader } from './Loader.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* Abstract
|
|
7
|
+
* Abstract base class for loading binary texture formats RGBE, EXR or TGA.
|
|
8
|
+
* Textures are internally loaded via {@link FileLoader}.
|
|
8
9
|
*
|
|
9
|
-
*
|
|
10
|
+
* Derived classes have to implement the `parse()` method which holds the parsing
|
|
11
|
+
* for the respective format.
|
|
12
|
+
*
|
|
13
|
+
* @abstract
|
|
14
|
+
* @augments Loader
|
|
10
15
|
*/
|
|
11
|
-
|
|
12
16
|
class DataTextureLoader extends Loader {
|
|
13
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new data texture loader.
|
|
20
|
+
*
|
|
21
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
22
|
+
*/
|
|
14
23
|
constructor( manager ) {
|
|
15
24
|
|
|
16
25
|
super( manager );
|
|
17
26
|
|
|
18
27
|
}
|
|
19
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Starts loading from the given URL and passes the loaded data texture
|
|
31
|
+
* to the `onLoad()` callback. The method also returns a new texture object which can
|
|
32
|
+
* directly be used for material creation. If you do it this way, the texture
|
|
33
|
+
* may pop up in your scene once the respective loading process is finished.
|
|
34
|
+
*
|
|
35
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
36
|
+
* @param {function(DataTexture)} onLoad - Executed when the loading process has been finished.
|
|
37
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
38
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
39
|
+
* @return {DataTexture} The data texture.
|
|
40
|
+
*/
|
|
20
41
|
load( url, onLoad, onProgress, onError ) {
|
|
21
42
|
|
|
22
43
|
const scope = this;
|
|
@@ -127,5 +148,25 @@ class DataTextureLoader extends Loader {
|
|
|
127
148
|
|
|
128
149
|
}
|
|
129
150
|
|
|
151
|
+
/**
|
|
152
|
+
* Represents the result object type of the `parse()` method.
|
|
153
|
+
*
|
|
154
|
+
* @typedef {Object} DataTextureLoader~TexData
|
|
155
|
+
* @property {Object} [image] - An object holding width, height and the texture data.
|
|
156
|
+
* @property {number} [width] - The width of the base mip.
|
|
157
|
+
* @property {number} [height] - The width of the base mip.
|
|
158
|
+
* @property {TypedArray} [data] - The texture data.
|
|
159
|
+
* @property {number} [format] - The texture format.
|
|
160
|
+
* @property {number} [type] - The texture type.
|
|
161
|
+
* @property {boolean} [flipY] - If set to `true`, the texture is flipped along the vertical axis when uploaded to the GPU.
|
|
162
|
+
* @property {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.
|
|
163
|
+
* @property {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.
|
|
164
|
+
* @property {number} [anisotropy=1] - The anisotropy value.
|
|
165
|
+
* @property {boolean} [generateMipmaps] - Whether to generate mipmaps or not.
|
|
166
|
+
* @property {string} [colorSpace] - The color space.
|
|
167
|
+
* @property {number} [magFilter] - The mag filter.
|
|
168
|
+
* @property {number} [minFilter] - The min filter.
|
|
169
|
+
* @property {Array<Object>} [mipmaps] - The mipmaps.
|
|
170
|
+
**/
|
|
130
171
|
|
|
131
172
|
export { DataTextureLoader };
|