@plastic-software/three 0.174.0 → 0.175.1
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 +10744 -1476
- package/build/three.core.js +9633 -1096
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +918 -189
- 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 +1432 -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 +58 -1
- 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/ShaderChunk/alphamap_fragment.glsl.js +10 -1
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -1
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +82 -0
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +22 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +8 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +31 -11
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/triplanar_fragment.glsl.js +20 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +52 -7
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +25 -6
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +19 -7
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
- package/src/renderers/shaders/UniformsLib.js +6 -5
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLProgram.js +25 -5
- package/src/renderers/webgl/WebGLPrograms.js +21 -7
- 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
|
@@ -145,14 +145,41 @@ const MXElements = [
|
|
|
145
145
|
const MtlXLibrary = {};
|
|
146
146
|
MXElements.forEach( element => MtlXLibrary[ element.name ] = element );
|
|
147
147
|
|
|
148
|
+
/**
|
|
149
|
+
* A loader for the MaterialX format.
|
|
150
|
+
*
|
|
151
|
+
* The node materials loaded with this loader can only be used with {@link WebGPURenderer}.
|
|
152
|
+
*
|
|
153
|
+
* ```js
|
|
154
|
+
* const loader = new MaterialXLoader().setPath( SAMPLE_PATH );
|
|
155
|
+
* const materials = await loader.loadAsync( 'standard_surface_brass_tiled.mtlx' );
|
|
156
|
+
* ```
|
|
157
|
+
*
|
|
158
|
+
* @augments Loader
|
|
159
|
+
*/
|
|
148
160
|
class MaterialXLoader extends Loader {
|
|
149
161
|
|
|
162
|
+
/**
|
|
163
|
+
* Constructs a new MaterialX loader.
|
|
164
|
+
*
|
|
165
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
166
|
+
*/
|
|
150
167
|
constructor( manager ) {
|
|
151
168
|
|
|
152
169
|
super( manager );
|
|
153
170
|
|
|
154
171
|
}
|
|
155
172
|
|
|
173
|
+
/**
|
|
174
|
+
* Starts loading from the given URL and passes the loaded MaterialX asset
|
|
175
|
+
* to the `onLoad()` callback.
|
|
176
|
+
*
|
|
177
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
178
|
+
* @param {function(Object<string,NodeMaterial>)} onLoad - Executed when the loading process has been finished.
|
|
179
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
180
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
181
|
+
* @return {MaterialXLoader} A reference to this loader.
|
|
182
|
+
*/
|
|
156
183
|
load( url, onLoad, onProgress, onError ) {
|
|
157
184
|
|
|
158
185
|
const _onError = function ( e ) {
|
|
@@ -189,6 +216,12 @@ class MaterialXLoader extends Loader {
|
|
|
189
216
|
|
|
190
217
|
}
|
|
191
218
|
|
|
219
|
+
/**
|
|
220
|
+
* Parses the given MaterialX data and returns the resulting materials.
|
|
221
|
+
*
|
|
222
|
+
* @param {string} text - The raw MaterialX data as a string.
|
|
223
|
+
* @return {Object<string,NodeMaterial>} A dictionary holding the parse node materials.
|
|
224
|
+
*/
|
|
192
225
|
parse( text ) {
|
|
193
226
|
|
|
194
227
|
return new MaterialX( this.manager, this.path ).parse( text );
|
|
@@ -7,14 +7,38 @@ import {
|
|
|
7
7
|
import * as fflate from '../libs/fflate.module.js';
|
|
8
8
|
import { Volume } from '../misc/Volume.js';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* A loader for the NRRD format.
|
|
12
|
+
*
|
|
13
|
+
* ```js
|
|
14
|
+
* const loader = new NRRDLoader();
|
|
15
|
+
* const volume = await loader.loadAsync( 'models/nrrd/I.nrrd' );
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @augments Loader
|
|
19
|
+
*/
|
|
10
20
|
class NRRDLoader extends Loader {
|
|
11
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Constructs a new NRRD loader.
|
|
24
|
+
*
|
|
25
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
26
|
+
*/
|
|
12
27
|
constructor( manager ) {
|
|
13
28
|
|
|
14
29
|
super( manager );
|
|
15
30
|
|
|
16
31
|
}
|
|
17
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Starts loading from the given URL and passes the loaded NRRD asset
|
|
35
|
+
* to the `onLoad()` callback.
|
|
36
|
+
*
|
|
37
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
38
|
+
* @param {function(Volume)} onLoad - Executed when the loading process has been finished.
|
|
39
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
40
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
41
|
+
*/
|
|
18
42
|
load( url, onLoad, onProgress, onError ) {
|
|
19
43
|
|
|
20
44
|
const scope = this;
|
|
@@ -51,15 +75,22 @@ class NRRDLoader extends Loader {
|
|
|
51
75
|
}
|
|
52
76
|
|
|
53
77
|
/**
|
|
78
|
+
* Toggles the segmentation mode.
|
|
54
79
|
*
|
|
55
|
-
* @param {boolean} segmentation
|
|
56
|
-
|
|
80
|
+
* @param {boolean} segmentation - Whether to use segmentation mode or not.
|
|
81
|
+
*/
|
|
57
82
|
setSegmentation( segmentation ) {
|
|
58
83
|
|
|
59
|
-
|
|
84
|
+
this.segmentation = segmentation;
|
|
60
85
|
|
|
61
86
|
}
|
|
62
87
|
|
|
88
|
+
/**
|
|
89
|
+
* Parses the given NRRD data and returns the resulting volume data.
|
|
90
|
+
*
|
|
91
|
+
* @param {ArrayBuffer} data - The raw NRRD data as an array buffer.
|
|
92
|
+
* @return {Volume} The parsed volume.
|
|
93
|
+
*/
|
|
63
94
|
parse( data ) {
|
|
64
95
|
|
|
65
96
|
// this parser is largely inspired from the XTK NRRD parser : https://github.com/xtk/X
|
|
@@ -307,7 +338,7 @@ class NRRDLoader extends Loader {
|
|
|
307
338
|
|
|
308
339
|
// we found two line breaks in a row
|
|
309
340
|
// now we know what the header is
|
|
310
|
-
_header = this.
|
|
341
|
+
_header = this._parseChars( _bytes, 0, i - 2 );
|
|
311
342
|
// this is were the data starts
|
|
312
343
|
_data_start = i + 1;
|
|
313
344
|
break;
|
|
@@ -485,7 +516,7 @@ class NRRDLoader extends Loader {
|
|
|
485
516
|
|
|
486
517
|
}
|
|
487
518
|
|
|
488
|
-
|
|
519
|
+
_parseChars( array, start, end ) {
|
|
489
520
|
|
|
490
521
|
// without borders, use the whole array
|
|
491
522
|
if ( start === undefined ) {
|
|
@@ -432,18 +432,53 @@ function ParserState() {
|
|
|
432
432
|
|
|
433
433
|
}
|
|
434
434
|
|
|
435
|
-
//
|
|
436
435
|
|
|
436
|
+
/**
|
|
437
|
+
* A loader for the OBJ format.
|
|
438
|
+
*
|
|
439
|
+
* The [OBJ format]{@link https://en.wikipedia.org/wiki/Wavefront_.obj_file} is a simple data-format that
|
|
440
|
+
* represents 3D geometry in a human readable format as the position of each vertex, the UV position of
|
|
441
|
+
* each texture coordinate vertex, vertex normals, and the faces that make each polygon defined as a list
|
|
442
|
+
* of vertices, and texture vertices.
|
|
443
|
+
*
|
|
444
|
+
* ```js
|
|
445
|
+
* const loader = new OBJLoader();
|
|
446
|
+
* const object = await loader.loadAsync( 'models/monster.obj' );
|
|
447
|
+
* scene.add( object );
|
|
448
|
+
* ```
|
|
449
|
+
*
|
|
450
|
+
* @augments Loader
|
|
451
|
+
*/
|
|
437
452
|
class OBJLoader extends Loader {
|
|
438
453
|
|
|
454
|
+
/**
|
|
455
|
+
* Constructs a new OBJ loader.
|
|
456
|
+
*
|
|
457
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
458
|
+
*/
|
|
439
459
|
constructor( manager ) {
|
|
440
460
|
|
|
441
461
|
super( manager );
|
|
442
462
|
|
|
463
|
+
/**
|
|
464
|
+
* A reference to a material creator.
|
|
465
|
+
*
|
|
466
|
+
* @type {?MaterialCreator}
|
|
467
|
+
* @default null
|
|
468
|
+
*/
|
|
443
469
|
this.materials = null;
|
|
444
470
|
|
|
445
471
|
}
|
|
446
472
|
|
|
473
|
+
/**
|
|
474
|
+
* Starts loading from the given URL and passes the loaded OBJ asset
|
|
475
|
+
* to the `onLoad()` callback.
|
|
476
|
+
*
|
|
477
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
478
|
+
* @param {function(Group)} onLoad - Executed when the loading process has been finished.
|
|
479
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
480
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
481
|
+
*/
|
|
447
482
|
load( url, onLoad, onProgress, onError ) {
|
|
448
483
|
|
|
449
484
|
const scope = this;
|
|
@@ -478,6 +513,12 @@ class OBJLoader extends Loader {
|
|
|
478
513
|
|
|
479
514
|
}
|
|
480
515
|
|
|
516
|
+
/**
|
|
517
|
+
* Sets the material creator for this OBJ. This object is loaded via {@link MTLLoader}.
|
|
518
|
+
*
|
|
519
|
+
* @param {MaterialCreator} materials - An object that creates the materials for this OBJ.
|
|
520
|
+
* @return {OBJLoader} A reference to this loader.
|
|
521
|
+
*/
|
|
481
522
|
setMaterials( materials ) {
|
|
482
523
|
|
|
483
524
|
this.materials = materials;
|
|
@@ -486,6 +527,12 @@ class OBJLoader extends Loader {
|
|
|
486
527
|
|
|
487
528
|
}
|
|
488
529
|
|
|
530
|
+
/**
|
|
531
|
+
* Parses the given OBJ data and returns the resulting group.
|
|
532
|
+
*
|
|
533
|
+
* @param {string} text - The raw OBJ data as a string.
|
|
534
|
+
* @return {Group} The parsed OBJ.
|
|
535
|
+
*/
|
|
489
536
|
parse( text ) {
|
|
490
537
|
|
|
491
538
|
const state = new ParserState();
|
|
@@ -10,16 +10,57 @@ import {
|
|
|
10
10
|
SRGBColorSpace
|
|
11
11
|
} from 'three';
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* A loader for the Point Cloud Data (PCD) format.
|
|
15
|
+
*
|
|
16
|
+
* PCDLoader supports ASCII and (compressed) binary files as well as the following PCD fields:
|
|
17
|
+
* - x y z
|
|
18
|
+
* - rgb
|
|
19
|
+
* - normal_x normal_y normal_z
|
|
20
|
+
* - intensity
|
|
21
|
+
* - label
|
|
22
|
+
*
|
|
23
|
+
* ```js
|
|
24
|
+
* const loader = new PCDLoader();
|
|
25
|
+
*
|
|
26
|
+
* const points = await loader.loadAsync( './models/pcd/binary/Zaghetto.pcd' );
|
|
27
|
+
* points.geometry.center(); // optional
|
|
28
|
+
* points.geometry.rotateX( Math.PI ); // optional
|
|
29
|
+
* scene.add( points );
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @augments Loader
|
|
33
|
+
*/
|
|
13
34
|
class PCDLoader extends Loader {
|
|
14
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Constructs a new PCD loader.
|
|
38
|
+
*
|
|
39
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
40
|
+
*/
|
|
15
41
|
constructor( manager ) {
|
|
16
42
|
|
|
17
43
|
super( manager );
|
|
18
44
|
|
|
45
|
+
/**
|
|
46
|
+
* Whether to use little Endian or not.
|
|
47
|
+
*
|
|
48
|
+
* @type {boolean}
|
|
49
|
+
* @default true
|
|
50
|
+
*/
|
|
19
51
|
this.littleEndian = true;
|
|
20
52
|
|
|
21
53
|
}
|
|
22
54
|
|
|
55
|
+
/**
|
|
56
|
+
* Starts loading from the given URL and passes the loaded PCD asset
|
|
57
|
+
* to the `onLoad()` callback.
|
|
58
|
+
*
|
|
59
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
60
|
+
* @param {function(Points)} onLoad - Executed when the loading process has been finished.
|
|
61
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
62
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
63
|
+
*/
|
|
23
64
|
load( url, onLoad, onProgress, onError ) {
|
|
24
65
|
|
|
25
66
|
const scope = this;
|
|
@@ -55,6 +96,12 @@ class PCDLoader extends Loader {
|
|
|
55
96
|
|
|
56
97
|
}
|
|
57
98
|
|
|
99
|
+
/**
|
|
100
|
+
* Parses the given PCD data and returns a point cloud.
|
|
101
|
+
*
|
|
102
|
+
* @param {ArrayBuffer} data - The raw PCD data as an array buffer.
|
|
103
|
+
* @return {Points} The parsed point cloud.
|
|
104
|
+
*/
|
|
58
105
|
parse( data ) {
|
|
59
106
|
|
|
60
107
|
// from https://gitlab.com/taketwo/three-pcd-loader/blob/master/decompress-lzf.js
|
|
@@ -7,14 +7,45 @@ import {
|
|
|
7
7
|
SRGBColorSpace
|
|
8
8
|
} from 'three';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* A loader for the PDB format.
|
|
12
|
+
*
|
|
13
|
+
* The [Protein Data Bank]{@link https://en.wikipedia.org/wiki/Protein_Data_Bank_(file_format)}
|
|
14
|
+
* file format is a textual file describing the three-dimensional structures of molecules.
|
|
15
|
+
*
|
|
16
|
+
* ```js
|
|
17
|
+
* const loader = new PDBLoader();
|
|
18
|
+
* const pdb = await loader.loadAsync( 'models/pdb/ethanol.pdb' );
|
|
19
|
+
*
|
|
20
|
+
* const geometryAtoms = pdb.geometryAtoms;
|
|
21
|
+
* const geometryBonds = pdb.geometryBonds;
|
|
22
|
+
* const json = pdb.json;
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @augments Loader
|
|
26
|
+
*/
|
|
10
27
|
class PDBLoader extends Loader {
|
|
11
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Constructs a new PDB loader.
|
|
31
|
+
*
|
|
32
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
33
|
+
*/
|
|
12
34
|
constructor( manager ) {
|
|
13
35
|
|
|
14
36
|
super( manager );
|
|
15
37
|
|
|
16
38
|
}
|
|
17
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Starts loading from the given URL and passes the loaded PDB asset
|
|
42
|
+
* 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(Object)} 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
|
+
*/
|
|
18
49
|
load( url, onLoad, onProgress, onError ) {
|
|
19
50
|
|
|
20
51
|
const scope = this;
|
|
@@ -49,10 +80,17 @@ class PDBLoader extends Loader {
|
|
|
49
80
|
|
|
50
81
|
}
|
|
51
82
|
|
|
52
|
-
|
|
53
|
-
|
|
83
|
+
/**
|
|
84
|
+
* Parses the given PDB data and returns an object holding the atoms and
|
|
85
|
+
* bond geometries as well as the raw atom data as JSON.
|
|
86
|
+
*
|
|
87
|
+
* @param {string} text - The raw PDB data as a string.
|
|
88
|
+
* @return {Object} The result object.
|
|
89
|
+
*/
|
|
54
90
|
parse( text ) {
|
|
55
91
|
|
|
92
|
+
// Based on CanvasMol PDB parser
|
|
93
|
+
|
|
56
94
|
function trim( text ) {
|
|
57
95
|
|
|
58
96
|
return text.replace( /^\s\s*/, '' ).replace( /\s\s*$/, '' );
|
|
@@ -7,55 +7,50 @@ import {
|
|
|
7
7
|
SRGBColorSpace
|
|
8
8
|
} from 'three';
|
|
9
9
|
|
|
10
|
+
const _color = new Color();
|
|
11
|
+
|
|
10
12
|
/**
|
|
11
|
-
*
|
|
13
|
+
* A loader for PLY the PLY format (known as the Polygon
|
|
12
14
|
* File Format or the Stanford Triangle Format).
|
|
13
15
|
*
|
|
14
|
-
* Limitations:
|
|
15
|
-
*
|
|
16
|
-
* Usage:
|
|
17
|
-
* const loader = new PLYLoader();
|
|
18
|
-
* loader.load('./models/ply/ascii/dolphins.ply', function (geometry) {
|
|
19
|
-
*
|
|
20
|
-
* scene.add( new THREE.Mesh( geometry ) );
|
|
21
|
-
*
|
|
22
|
-
* } );
|
|
23
|
-
*
|
|
24
|
-
* If the PLY file uses non standard property names, they can be mapped while
|
|
25
|
-
* loading. For example, the following maps the properties
|
|
26
|
-
* “diffuse_(red|green|blue)” in the file to standard color names.
|
|
16
|
+
* Limitations:
|
|
17
|
+
* - ASCII decoding assumes file is UTF-8.
|
|
27
18
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* Custom properties outside of the defaults for position, uv, normal
|
|
35
|
-
* and color attributes can be added using the setCustomPropertyNameMapping method.
|
|
36
|
-
* For example, the following maps the element properties “custom_property_a”
|
|
37
|
-
* and “custom_property_b” to an attribute “customAttribute” with an item size of 2.
|
|
38
|
-
* Attribute item sizes are set from the number of element properties in the property array.
|
|
39
|
-
*
|
|
40
|
-
* loader.setCustomPropertyNameMapping( {
|
|
41
|
-
* customAttribute: ['custom_property_a', 'custom_property_b'],
|
|
42
|
-
* } );
|
|
19
|
+
* ```js
|
|
20
|
+
* const loader = new PLYLoader();
|
|
21
|
+
* const geometry = await loader.loadAsync( './models/ply/ascii/dolphins.ply' );
|
|
22
|
+
* scene.add( new THREE.Mesh( geometry ) );
|
|
23
|
+
* ```
|
|
43
24
|
*
|
|
25
|
+
* @augments Loader
|
|
44
26
|
*/
|
|
45
|
-
|
|
46
|
-
const _color = new Color();
|
|
47
|
-
|
|
48
27
|
class PLYLoader extends Loader {
|
|
49
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Constructs a new PLY loader.
|
|
31
|
+
*
|
|
32
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
33
|
+
*/
|
|
50
34
|
constructor( manager ) {
|
|
51
35
|
|
|
52
36
|
super( manager );
|
|
53
37
|
|
|
38
|
+
// internals
|
|
39
|
+
|
|
54
40
|
this.propertyNameMapping = {};
|
|
55
41
|
this.customPropertyMapping = {};
|
|
56
42
|
|
|
57
43
|
}
|
|
58
44
|
|
|
45
|
+
/**
|
|
46
|
+
* Starts loading from the given URL and passes the loaded PLY asset
|
|
47
|
+
* to the `onLoad()` callback.
|
|
48
|
+
*
|
|
49
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
50
|
+
* @param {function(BufferGeometry)} onLoad - Executed when the loading process has been finished.
|
|
51
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
52
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
53
|
+
*/
|
|
59
54
|
load( url, onLoad, onProgress, onError ) {
|
|
60
55
|
|
|
61
56
|
const scope = this;
|
|
@@ -91,18 +86,53 @@ class PLYLoader extends Loader {
|
|
|
91
86
|
|
|
92
87
|
}
|
|
93
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Sets a property name mapping that maps default property names
|
|
91
|
+
* to custom ones. For example, the following maps the properties
|
|
92
|
+
* “diffuse_(red|green|blue)” in the file to standard color names.
|
|
93
|
+
*
|
|
94
|
+
* ```js
|
|
95
|
+
* loader.setPropertyNameMapping( {
|
|
96
|
+
* diffuse_red: 'red',
|
|
97
|
+
* diffuse_green: 'green',
|
|
98
|
+
* diffuse_blue: 'blue'
|
|
99
|
+
* } );
|
|
100
|
+
* ```
|
|
101
|
+
*
|
|
102
|
+
* @param {Object} mapping - The mapping dictionary.
|
|
103
|
+
*/
|
|
94
104
|
setPropertyNameMapping( mapping ) {
|
|
95
105
|
|
|
96
106
|
this.propertyNameMapping = mapping;
|
|
97
107
|
|
|
98
108
|
}
|
|
99
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Custom properties outside of the defaults for position, uv, normal
|
|
112
|
+
* and color attributes can be added using the setCustomPropertyNameMapping method.
|
|
113
|
+
* For example, the following maps the element properties “custom_property_a”
|
|
114
|
+
* and “custom_property_b” to an attribute “customAttribute” with an item size of 2.
|
|
115
|
+
* Attribute item sizes are set from the number of element properties in the property array.
|
|
116
|
+
*
|
|
117
|
+
* ```js
|
|
118
|
+
* loader.setCustomPropertyNameMapping( {
|
|
119
|
+
* customAttribute: ['custom_property_a', 'custom_property_b'],
|
|
120
|
+
* } );
|
|
121
|
+
* ```
|
|
122
|
+
* @param {Object} mapping - The mapping dictionary.
|
|
123
|
+
*/
|
|
100
124
|
setCustomPropertyNameMapping( mapping ) {
|
|
101
125
|
|
|
102
126
|
this.customPropertyMapping = mapping;
|
|
103
127
|
|
|
104
128
|
}
|
|
105
129
|
|
|
130
|
+
/**
|
|
131
|
+
* Parses the given PLY data and returns the resulting geometry.
|
|
132
|
+
*
|
|
133
|
+
* @param {ArrayBuffer} data - The raw PLY data as an array buffer.
|
|
134
|
+
* @return {BufferGeometry} The parsed geometry.
|
|
135
|
+
*/
|
|
106
136
|
parse( data ) {
|
|
107
137
|
|
|
108
138
|
function parseHeader( data, headerLength = 0 ) {
|
|
@@ -6,20 +6,38 @@ import {
|
|
|
6
6
|
RGB_PVRTC_4BPPV1_Format
|
|
7
7
|
} from 'three';
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
/**
|
|
10
|
+
* A loader for the PVRTC texture compression format.
|
|
11
|
+
*
|
|
12
|
+
* ```js
|
|
13
|
+
* const loader = new PVRLoader();
|
|
14
|
+
*
|
|
15
|
+
* const map = loader.load( 'textures/compressed/disturb_4bpp_rgb.pvr' );
|
|
16
|
+
* map.colorSpace = THREE.SRGBColorSpace; // only for color textures
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @augments CompressedTextureLoader
|
|
13
20
|
*/
|
|
14
|
-
|
|
15
21
|
class PVRLoader extends CompressedTextureLoader {
|
|
16
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Constructs a new PVR loader.
|
|
25
|
+
*
|
|
26
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
27
|
+
*/
|
|
17
28
|
constructor( manager ) {
|
|
18
29
|
|
|
19
30
|
super( manager );
|
|
20
31
|
|
|
21
32
|
}
|
|
22
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Parses the given PVRTC texture data.
|
|
36
|
+
*
|
|
37
|
+
* @param {ArrayBuffer} buffer - The raw texture data.
|
|
38
|
+
* @param {boolean} loadMipmaps - Whether to load mipmaps or not. This option is not yet supported by the loader.
|
|
39
|
+
* @return {CompressedTextureLoader~TexData} An object representing the parsed texture data.
|
|
40
|
+
*/
|
|
23
41
|
parse( buffer, loadMipmaps ) {
|
|
24
42
|
|
|
25
43
|
const headerLengthInt = 13;
|
|
@@ -7,23 +7,50 @@ import {
|
|
|
7
7
|
LinearSRGBColorSpace
|
|
8
8
|
} from 'three';
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
/**
|
|
11
|
+
* A loader for the RGBE HDR texture format.
|
|
12
|
+
*
|
|
13
|
+
* ```js
|
|
14
|
+
* const loader = new RGBELoader();
|
|
15
|
+
* const envMap = await loader.loadAsync( 'textures/equirectangular/blouberg_sunrise_2_1k.hdr' );
|
|
16
|
+
* envMap.mapping = THREE.EquirectangularReflectionMapping;
|
|
17
|
+
*
|
|
18
|
+
* scene.environment = envMap;
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @augments DataTextureLoader
|
|
22
|
+
*/
|
|
13
23
|
class RGBELoader extends DataTextureLoader {
|
|
14
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a new RGBE loader.
|
|
27
|
+
*
|
|
28
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
29
|
+
*/
|
|
15
30
|
constructor( manager ) {
|
|
16
31
|
|
|
17
32
|
super( manager );
|
|
18
33
|
|
|
34
|
+
/**
|
|
35
|
+
* The texture type.
|
|
36
|
+
*
|
|
37
|
+
* @type {(HalfFloatType|FloatType)}
|
|
38
|
+
* @default HalfFloatType
|
|
39
|
+
*/
|
|
19
40
|
this.type = HalfFloatType;
|
|
20
41
|
|
|
21
42
|
}
|
|
22
43
|
|
|
23
|
-
|
|
24
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Parses the given RGBE texture data.
|
|
46
|
+
*
|
|
47
|
+
* @param {ArrayBuffer} buffer - The raw texture data.
|
|
48
|
+
* @return {DataTextureLoader~TexData} An object representing the parsed texture data.
|
|
49
|
+
*/
|
|
25
50
|
parse( buffer ) {
|
|
26
51
|
|
|
52
|
+
// adapted from http://www.graphics.cornell.edu/~bjw/rgbe.html
|
|
53
|
+
|
|
27
54
|
const
|
|
28
55
|
/* default error routine. change this to change error handling */
|
|
29
56
|
rgbe_read_error = 1,
|
|
@@ -411,6 +438,12 @@ class RGBELoader extends DataTextureLoader {
|
|
|
411
438
|
|
|
412
439
|
}
|
|
413
440
|
|
|
441
|
+
/**
|
|
442
|
+
* Sets the texture type.
|
|
443
|
+
*
|
|
444
|
+
* @param {(HalfFloatType|FloatType)} value - The texture type to set.
|
|
445
|
+
* @return {RGBELoader} A reference to this loader.
|
|
446
|
+
*/
|
|
414
447
|
setDataType( value ) {
|
|
415
448
|
|
|
416
449
|
this.type = value;
|