@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
|
@@ -24,7 +24,8 @@ import {
|
|
|
24
24
|
CompressedTexture,
|
|
25
25
|
Vector3,
|
|
26
26
|
Quaternion,
|
|
27
|
-
REVISION
|
|
27
|
+
REVISION,
|
|
28
|
+
ImageUtils
|
|
28
29
|
} from 'three';
|
|
29
30
|
|
|
30
31
|
/**
|
|
@@ -61,11 +62,55 @@ const KHR_mesh_quantization_ExtraAttrTypes = {
|
|
|
61
62
|
],
|
|
62
63
|
};
|
|
63
64
|
|
|
64
|
-
|
|
65
|
+
/**
|
|
66
|
+
* An exporter for `glTF` 2.0.
|
|
67
|
+
*
|
|
68
|
+
* glTF (GL Transmission Format) is an [open format specification]{@link https://github.com/KhronosGroup/glTF/tree/master/specification/2.0}
|
|
69
|
+
* for efficient delivery and loading of 3D content. Assets may be provided either in JSON (.gltf)
|
|
70
|
+
* or binary (.glb) format. External files store textures (.jpg, .png) and additional binary
|
|
71
|
+
* data (.bin). A glTF asset may deliver one or more scenes, including meshes, materials,
|
|
72
|
+
* textures, skins, skeletons, morph targets, animations, lights, and/or cameras.
|
|
73
|
+
*
|
|
74
|
+
* GLTFExporter supports the [glTF 2.0 extensions]{@link https://github.com/KhronosGroup/glTF/tree/master/extensions/}:
|
|
75
|
+
*
|
|
76
|
+
* - KHR_lights_punctual
|
|
77
|
+
* - KHR_materials_clearcoat
|
|
78
|
+
* - KHR_materials_dispersion
|
|
79
|
+
* - KHR_materials_emissive_strength
|
|
80
|
+
* - KHR_materials_ior
|
|
81
|
+
* - KHR_materials_iridescence
|
|
82
|
+
* - KHR_materials_specular
|
|
83
|
+
* - KHR_materials_sheen
|
|
84
|
+
* - KHR_materials_transmission
|
|
85
|
+
* - KHR_materials_unlit
|
|
86
|
+
* - KHR_materials_volume
|
|
87
|
+
* - KHR_mesh_quantization
|
|
88
|
+
* - KHR_texture_transform
|
|
89
|
+
* - EXT_materials_bump
|
|
90
|
+
* - EXT_mesh_gpu_instancing
|
|
91
|
+
*
|
|
92
|
+
* The following glTF 2.0 extension is supported by an external user plugin:
|
|
93
|
+
*
|
|
94
|
+
* - [KHR_materials_variants]{@link https://github.com/takahirox/three-gltf-extensions}
|
|
95
|
+
*
|
|
96
|
+
* ```js
|
|
97
|
+
* const exporter = new GLTFExporter();
|
|
98
|
+
* const data = await exporter.parseAsync( scene, options );
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
65
101
|
class GLTFExporter {
|
|
66
102
|
|
|
103
|
+
/**
|
|
104
|
+
* Constructs a new glTF exporter.
|
|
105
|
+
*/
|
|
67
106
|
constructor() {
|
|
68
107
|
|
|
108
|
+
/**
|
|
109
|
+
* A reference to a texture utils module.
|
|
110
|
+
*
|
|
111
|
+
* @type {?(WebGLTextureUtils|WebGPUTextureUtils)}
|
|
112
|
+
* @default null
|
|
113
|
+
*/
|
|
69
114
|
this.textureUtils = null;
|
|
70
115
|
|
|
71
116
|
this.pluginCallbacks = [];
|
|
@@ -156,6 +201,14 @@ class GLTFExporter {
|
|
|
156
201
|
|
|
157
202
|
}
|
|
158
203
|
|
|
204
|
+
/**
|
|
205
|
+
* Registers a plugin callback. This API is internally used to implement the various
|
|
206
|
+
* glTF extensions but can also used by third-party code to add additional logic
|
|
207
|
+
* to the exporter.
|
|
208
|
+
*
|
|
209
|
+
* @param {function(writer:GLTFWriter)} callback - The callback function to register.
|
|
210
|
+
* @return {GLTFExporter} A reference to this exporter.
|
|
211
|
+
*/
|
|
159
212
|
register( callback ) {
|
|
160
213
|
|
|
161
214
|
if ( this.pluginCallbacks.indexOf( callback ) === - 1 ) {
|
|
@@ -168,6 +221,12 @@ class GLTFExporter {
|
|
|
168
221
|
|
|
169
222
|
}
|
|
170
223
|
|
|
224
|
+
/**
|
|
225
|
+
* Unregisters a plugin callback.
|
|
226
|
+
*
|
|
227
|
+
* @param {Function} callback - The callback function to unregister.
|
|
228
|
+
* @return {GLTFExporter} A reference to this exporter.
|
|
229
|
+
*/
|
|
171
230
|
unregister( callback ) {
|
|
172
231
|
|
|
173
232
|
if ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) {
|
|
@@ -180,6 +239,15 @@ class GLTFExporter {
|
|
|
180
239
|
|
|
181
240
|
}
|
|
182
241
|
|
|
242
|
+
/**
|
|
243
|
+
* Sets the texture utils for this exporter. Only relevant when compressed textures have to be exported.
|
|
244
|
+
*
|
|
245
|
+
* Depending on whether you use {@link WebGLRenderer} or {@link WebGPURenderer}, you must inject the
|
|
246
|
+
* corresponding texture utils {@link WebGLTextureUtils} or {@link WebGPUTextureUtils}.
|
|
247
|
+
*
|
|
248
|
+
* @param {WebGLTextureUtils|WebGPUTextureUtils} utils - The texture utils.
|
|
249
|
+
* @return {GLTFExporter} A reference to this exporter.
|
|
250
|
+
*/
|
|
183
251
|
setTextureUtils( utils ) {
|
|
184
252
|
|
|
185
253
|
this.textureUtils = utils;
|
|
@@ -189,12 +257,12 @@ class GLTFExporter {
|
|
|
189
257
|
}
|
|
190
258
|
|
|
191
259
|
/**
|
|
192
|
-
*
|
|
260
|
+
* Parses the given scenes and generates the glTF output.
|
|
193
261
|
*
|
|
194
|
-
* @param
|
|
195
|
-
* @param
|
|
196
|
-
* @param
|
|
197
|
-
* @param
|
|
262
|
+
* @param {Scene|Array<Scene>} input - A scene or an array of scenes.
|
|
263
|
+
* @param {GLTFExporter~OnDone} onDone - A callback function that is executed when the export has finished.
|
|
264
|
+
* @param {GLTFExporter~OnError} onError - A callback function that is executed when an error happens.
|
|
265
|
+
* @param {GLTFExporter~Options} options - options
|
|
198
266
|
*/
|
|
199
267
|
parse( input, onDone, onError, options ) {
|
|
200
268
|
|
|
@@ -213,6 +281,13 @@ class GLTFExporter {
|
|
|
213
281
|
|
|
214
282
|
}
|
|
215
283
|
|
|
284
|
+
/**
|
|
285
|
+
* Async version of {@link GLTFExporter#parse}.
|
|
286
|
+
*
|
|
287
|
+
* @param {Scene|Array<Scene>} input - A scene or an array of scenes.
|
|
288
|
+
* @param {GLTFExporter~Options} options - options.
|
|
289
|
+
* @return {Promise<ArrayBuffer|string>} A Promise that resolved with the exported glTF data.
|
|
290
|
+
*/
|
|
216
291
|
parseAsync( input, options ) {
|
|
217
292
|
|
|
218
293
|
const scope = this;
|
|
@@ -304,8 +379,10 @@ const GLB_CHUNK_TYPE_BIN = 0x004E4942;
|
|
|
304
379
|
|
|
305
380
|
/**
|
|
306
381
|
* Compare two arrays
|
|
307
|
-
*
|
|
308
|
-
* @
|
|
382
|
+
*
|
|
383
|
+
* @private
|
|
384
|
+
* @param {Array} array1 Array 1 to compare
|
|
385
|
+
* @param {Array} array2 Array 2 to compare
|
|
309
386
|
* @return {boolean} Returns true if both arrays are equal
|
|
310
387
|
*/
|
|
311
388
|
function equalArray( array1, array2 ) {
|
|
@@ -320,7 +397,9 @@ function equalArray( array1, array2 ) {
|
|
|
320
397
|
|
|
321
398
|
/**
|
|
322
399
|
* Converts a string to an ArrayBuffer.
|
|
323
|
-
*
|
|
400
|
+
*
|
|
401
|
+
* @private
|
|
402
|
+
* @param {string} text
|
|
324
403
|
* @return {ArrayBuffer}
|
|
325
404
|
*/
|
|
326
405
|
function stringToArrayBuffer( text ) {
|
|
@@ -332,6 +411,7 @@ function stringToArrayBuffer( text ) {
|
|
|
332
411
|
/**
|
|
333
412
|
* Is identity matrix
|
|
334
413
|
*
|
|
414
|
+
* @private
|
|
335
415
|
* @param {Matrix4} matrix
|
|
336
416
|
* @returns {boolean} Returns true, if parameter is identity matrix
|
|
337
417
|
*/
|
|
@@ -344,9 +424,10 @@ function isIdentityMatrix( matrix ) {
|
|
|
344
424
|
/**
|
|
345
425
|
* Get the min and max vectors from the given attribute
|
|
346
426
|
*
|
|
347
|
-
* @
|
|
348
|
-
* @param
|
|
349
|
-
* @param
|
|
427
|
+
* @private
|
|
428
|
+
* @param {BufferAttribute} attribute Attribute to find the min/max in range from start to start + count
|
|
429
|
+
* @param {number} start Start index
|
|
430
|
+
* @param {number} count Range to cover
|
|
350
431
|
* @return {Object} Object containing the `min` and `max` values (As an array of attribute.itemSize components)
|
|
351
432
|
*/
|
|
352
433
|
function getMinMax( attribute, start, count ) {
|
|
@@ -400,6 +481,7 @@ function getMinMax( attribute, start, count ) {
|
|
|
400
481
|
* Get the required size + padding for a buffer, rounded to the next 4-byte boundary.
|
|
401
482
|
* https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#data-alignment
|
|
402
483
|
*
|
|
484
|
+
* @private
|
|
403
485
|
* @param {number} bufferSize The size the original buffer. Should be an integer.
|
|
404
486
|
* @returns {number} new buffer size with required padding as an integer.
|
|
405
487
|
*
|
|
@@ -413,6 +495,7 @@ function getPaddedBufferSize( bufferSize ) {
|
|
|
413
495
|
/**
|
|
414
496
|
* Returns a buffer aligned to 4-byte boundary.
|
|
415
497
|
*
|
|
498
|
+
* @private
|
|
416
499
|
* @param {ArrayBuffer} arrayBuffer Buffer to pad
|
|
417
500
|
* @param {number} [paddingByte=0] Should be an integer
|
|
418
501
|
* @returns {ArrayBuffer} The same buffer if it's already aligned to 4-byte boundary or a new buffer
|
|
@@ -489,6 +572,8 @@ function getToBlobPromise( canvas, mimeType ) {
|
|
|
489
572
|
|
|
490
573
|
/**
|
|
491
574
|
* Writer
|
|
575
|
+
*
|
|
576
|
+
* @private
|
|
492
577
|
*/
|
|
493
578
|
class GLTFWriter {
|
|
494
579
|
|
|
@@ -713,7 +798,7 @@ class GLTFWriter {
|
|
|
713
798
|
/**
|
|
714
799
|
* Returns ids for buffer attributes.
|
|
715
800
|
*
|
|
716
|
-
* @param
|
|
801
|
+
* @param {Object} attribute
|
|
717
802
|
* @param {boolean} [isRelativeCopy=false]
|
|
718
803
|
* @return {number} An integer
|
|
719
804
|
*/
|
|
@@ -968,7 +1053,7 @@ class GLTFWriter {
|
|
|
968
1053
|
|
|
969
1054
|
/**
|
|
970
1055
|
* Process a buffer to append to the default one.
|
|
971
|
-
* @param
|
|
1056
|
+
* @param {ArrayBuffer} buffer
|
|
972
1057
|
* @return {0}
|
|
973
1058
|
*/
|
|
974
1059
|
processBuffer( buffer ) {
|
|
@@ -991,7 +1076,7 @@ class GLTFWriter {
|
|
|
991
1076
|
* @param {number} componentType
|
|
992
1077
|
* @param {number} start
|
|
993
1078
|
* @param {number} count
|
|
994
|
-
* @param {
|
|
1079
|
+
* @param {number} [target] Target usage of the BufferView
|
|
995
1080
|
* @return {Object}
|
|
996
1081
|
*/
|
|
997
1082
|
processBufferView( attribute, componentType, start, count, target ) {
|
|
@@ -1180,7 +1265,7 @@ class GLTFWriter {
|
|
|
1180
1265
|
/**
|
|
1181
1266
|
* Process attribute to generate an accessor
|
|
1182
1267
|
* @param {BufferAttribute} attribute Attribute to process
|
|
1183
|
-
* @param {?BufferGeometry} geometry Geometry used for truncated draw range
|
|
1268
|
+
* @param {?BufferGeometry} [geometry] Geometry used for truncated draw range
|
|
1184
1269
|
* @param {number} [start=0]
|
|
1185
1270
|
* @param {number} [count=Infinity]
|
|
1186
1271
|
* @return {?number} Index of the processed accessor on the "accessors" array
|
|
@@ -1277,10 +1362,10 @@ class GLTFWriter {
|
|
|
1277
1362
|
|
|
1278
1363
|
/**
|
|
1279
1364
|
* Process image
|
|
1280
|
-
* @param
|
|
1281
|
-
* @param
|
|
1282
|
-
* @param
|
|
1283
|
-
* @param
|
|
1365
|
+
* @param {Image} image to process
|
|
1366
|
+
* @param {number} format Identifier of the format (RGBAFormat)
|
|
1367
|
+
* @param {boolean} flipY before writing out the image
|
|
1368
|
+
* @param {string} mimeType export format
|
|
1284
1369
|
* @return {number} Index of the processed texture in the "images" array
|
|
1285
1370
|
*/
|
|
1286
1371
|
processImage( image, format, flipY, mimeType = 'image/png' ) {
|
|
@@ -1381,25 +1466,7 @@ class GLTFWriter {
|
|
|
1381
1466
|
|
|
1382
1467
|
} else {
|
|
1383
1468
|
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
imageDef.uri = canvas.toDataURL( mimeType );
|
|
1387
|
-
|
|
1388
|
-
} else {
|
|
1389
|
-
|
|
1390
|
-
pending.push(
|
|
1391
|
-
|
|
1392
|
-
getToBlobPromise( canvas, mimeType )
|
|
1393
|
-
.then( blob => new FileReader().readAsDataURL( blob ) )
|
|
1394
|
-
.then( dataURL => {
|
|
1395
|
-
|
|
1396
|
-
imageDef.uri = dataURL;
|
|
1397
|
-
|
|
1398
|
-
} )
|
|
1399
|
-
|
|
1400
|
-
);
|
|
1401
|
-
|
|
1402
|
-
}
|
|
1469
|
+
imageDef.uri = ImageUtils.getDataURL( canvas, mimeType );
|
|
1403
1470
|
|
|
1404
1471
|
}
|
|
1405
1472
|
|
|
@@ -1417,7 +1484,7 @@ class GLTFWriter {
|
|
|
1417
1484
|
|
|
1418
1485
|
/**
|
|
1419
1486
|
* Process sampler
|
|
1420
|
-
* @param
|
|
1487
|
+
* @param {Texture} map Texture to process
|
|
1421
1488
|
* @return {number} Index of the processed texture in the "samplers" array
|
|
1422
1489
|
*/
|
|
1423
1490
|
processSampler( map ) {
|
|
@@ -1439,7 +1506,7 @@ class GLTFWriter {
|
|
|
1439
1506
|
|
|
1440
1507
|
/**
|
|
1441
1508
|
* Process texture
|
|
1442
|
-
* @param
|
|
1509
|
+
* @param {Texture} map Map to process
|
|
1443
1510
|
* @return {Promise<number>} Index of the processed texture in the "textures" array
|
|
1444
1511
|
*/
|
|
1445
1512
|
async processTextureAsync( map ) {
|
|
@@ -1485,7 +1552,7 @@ class GLTFWriter {
|
|
|
1485
1552
|
|
|
1486
1553
|
/**
|
|
1487
1554
|
* Process material
|
|
1488
|
-
* @param
|
|
1555
|
+
* @param {THREE.Material} material Material to process
|
|
1489
1556
|
* @return {Promise<number|null>} Index of the processed material in the "materials" array
|
|
1490
1557
|
*/
|
|
1491
1558
|
async processMaterialAsync( material ) {
|
|
@@ -1661,7 +1728,7 @@ class GLTFWriter {
|
|
|
1661
1728
|
|
|
1662
1729
|
/**
|
|
1663
1730
|
* Process mesh
|
|
1664
|
-
* @param
|
|
1731
|
+
* @param {THREE.Mesh} mesh Mesh to process
|
|
1665
1732
|
* @return {Promise<number|null>} Index of the processed mesh in the "meshes" array
|
|
1666
1733
|
*/
|
|
1667
1734
|
async processMeshAsync( mesh ) {
|
|
@@ -2066,7 +2133,7 @@ class GLTFWriter {
|
|
|
2066
2133
|
|
|
2067
2134
|
/**
|
|
2068
2135
|
* Process camera
|
|
2069
|
-
* @param
|
|
2136
|
+
* @param {THREE.Camera} camera Camera to process
|
|
2070
2137
|
* @return {number} Index of the processed mesh in the "camera" array
|
|
2071
2138
|
*/
|
|
2072
2139
|
processCamera( camera ) {
|
|
@@ -2267,7 +2334,7 @@ class GLTFWriter {
|
|
|
2267
2334
|
|
|
2268
2335
|
/**
|
|
2269
2336
|
* Process Object3D node
|
|
2270
|
-
* @param
|
|
2337
|
+
* @param {THREE.Object3D} object Object3D to processNodeAsync
|
|
2271
2338
|
* @return {Promise<number>} Index of the node in the nodes list
|
|
2272
2339
|
*/
|
|
2273
2340
|
async processNodeAsync( object ) {
|
|
@@ -2375,7 +2442,7 @@ class GLTFWriter {
|
|
|
2375
2442
|
|
|
2376
2443
|
/**
|
|
2377
2444
|
* Process Scene
|
|
2378
|
-
* @param
|
|
2445
|
+
* @param {Scene} scene Scene to process
|
|
2379
2446
|
*/
|
|
2380
2447
|
async processSceneAsync( scene ) {
|
|
2381
2448
|
|
|
@@ -2419,7 +2486,7 @@ class GLTFWriter {
|
|
|
2419
2486
|
|
|
2420
2487
|
/**
|
|
2421
2488
|
* Creates a Scene to hold a list of objects and parse it
|
|
2422
|
-
* @param
|
|
2489
|
+
* @param {Array<THREE.Object3D>} objects List of objects to process
|
|
2423
2490
|
*/
|
|
2424
2491
|
async processObjectsAsync( objects ) {
|
|
2425
2492
|
|
|
@@ -2511,6 +2578,8 @@ class GLTFWriter {
|
|
|
2511
2578
|
* Punctual Lights Extension
|
|
2512
2579
|
*
|
|
2513
2580
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual
|
|
2581
|
+
*
|
|
2582
|
+
* @private
|
|
2514
2583
|
*/
|
|
2515
2584
|
class GLTFLightExtension {
|
|
2516
2585
|
|
|
@@ -2606,6 +2675,8 @@ class GLTFLightExtension {
|
|
|
2606
2675
|
* Unlit Materials Extension
|
|
2607
2676
|
*
|
|
2608
2677
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit
|
|
2678
|
+
*
|
|
2679
|
+
* @private
|
|
2609
2680
|
*/
|
|
2610
2681
|
class GLTFMaterialsUnlitExtension {
|
|
2611
2682
|
|
|
@@ -2639,6 +2710,8 @@ class GLTFMaterialsUnlitExtension {
|
|
|
2639
2710
|
* Clearcoat Materials Extension
|
|
2640
2711
|
*
|
|
2641
2712
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat
|
|
2713
|
+
*
|
|
2714
|
+
* @private
|
|
2642
2715
|
*/
|
|
2643
2716
|
class GLTFMaterialsClearcoatExtension {
|
|
2644
2717
|
|
|
@@ -2712,6 +2785,8 @@ class GLTFMaterialsClearcoatExtension {
|
|
|
2712
2785
|
* Materials dispersion Extension
|
|
2713
2786
|
*
|
|
2714
2787
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_dispersion
|
|
2788
|
+
*
|
|
2789
|
+
* @private
|
|
2715
2790
|
*/
|
|
2716
2791
|
class GLTFMaterialsDispersionExtension {
|
|
2717
2792
|
|
|
@@ -2746,6 +2821,8 @@ class GLTFMaterialsDispersionExtension {
|
|
|
2746
2821
|
* Iridescence Materials Extension
|
|
2747
2822
|
*
|
|
2748
2823
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence
|
|
2824
|
+
*
|
|
2825
|
+
* @private
|
|
2749
2826
|
*/
|
|
2750
2827
|
class GLTFMaterialsIridescenceExtension {
|
|
2751
2828
|
|
|
@@ -2806,6 +2883,8 @@ class GLTFMaterialsIridescenceExtension {
|
|
|
2806
2883
|
* Transmission Materials Extension
|
|
2807
2884
|
*
|
|
2808
2885
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission
|
|
2886
|
+
*
|
|
2887
|
+
* @private
|
|
2809
2888
|
*/
|
|
2810
2889
|
class GLTFMaterialsTransmissionExtension {
|
|
2811
2890
|
|
|
@@ -2851,6 +2930,8 @@ class GLTFMaterialsTransmissionExtension {
|
|
|
2851
2930
|
* Materials Volume Extension
|
|
2852
2931
|
*
|
|
2853
2932
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume
|
|
2933
|
+
*
|
|
2934
|
+
* @private
|
|
2854
2935
|
*/
|
|
2855
2936
|
class GLTFMaterialsVolumeExtension {
|
|
2856
2937
|
|
|
@@ -2904,6 +2985,8 @@ class GLTFMaterialsVolumeExtension {
|
|
|
2904
2985
|
* Materials ior Extension
|
|
2905
2986
|
*
|
|
2906
2987
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior
|
|
2988
|
+
*
|
|
2989
|
+
* @private
|
|
2907
2990
|
*/
|
|
2908
2991
|
class GLTFMaterialsIorExtension {
|
|
2909
2992
|
|
|
@@ -2938,6 +3021,8 @@ class GLTFMaterialsIorExtension {
|
|
|
2938
3021
|
* Materials specular Extension
|
|
2939
3022
|
*
|
|
2940
3023
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular
|
|
3024
|
+
*
|
|
3025
|
+
* @private
|
|
2941
3026
|
*/
|
|
2942
3027
|
class GLTFMaterialsSpecularExtension {
|
|
2943
3028
|
|
|
@@ -2997,6 +3082,8 @@ class GLTFMaterialsSpecularExtension {
|
|
|
2997
3082
|
* Sheen Materials Extension
|
|
2998
3083
|
*
|
|
2999
3084
|
* Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen
|
|
3085
|
+
*
|
|
3086
|
+
* @private
|
|
3000
3087
|
*/
|
|
3001
3088
|
class GLTFMaterialsSheenExtension {
|
|
3002
3089
|
|
|
@@ -3054,6 +3141,8 @@ class GLTFMaterialsSheenExtension {
|
|
|
3054
3141
|
* Anisotropy Materials Extension
|
|
3055
3142
|
*
|
|
3056
3143
|
* Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_anisotropy
|
|
3144
|
+
*
|
|
3145
|
+
* @private
|
|
3057
3146
|
*/
|
|
3058
3147
|
class GLTFMaterialsAnisotropyExtension {
|
|
3059
3148
|
|
|
@@ -3097,6 +3186,8 @@ class GLTFMaterialsAnisotropyExtension {
|
|
|
3097
3186
|
* Materials Emissive Strength Extension
|
|
3098
3187
|
*
|
|
3099
3188
|
* Specification: https://github.com/KhronosGroup/glTF/blob/5768b3ce0ef32bc39cdf1bef10b948586635ead3/extensions/2.0/Khronos/KHR_materials_emissive_strength/README.md
|
|
3189
|
+
*
|
|
3190
|
+
* @private
|
|
3100
3191
|
*/
|
|
3101
3192
|
class GLTFMaterialsEmissiveStrengthExtension {
|
|
3102
3193
|
|
|
@@ -3132,6 +3223,8 @@ class GLTFMaterialsEmissiveStrengthExtension {
|
|
|
3132
3223
|
* Materials bump Extension
|
|
3133
3224
|
*
|
|
3134
3225
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/EXT_materials_bump
|
|
3226
|
+
*
|
|
3227
|
+
* @private
|
|
3135
3228
|
*/
|
|
3136
3229
|
class GLTFMaterialsBumpExtension {
|
|
3137
3230
|
|
|
@@ -3179,6 +3272,8 @@ class GLTFMaterialsBumpExtension {
|
|
|
3179
3272
|
* GPU Instancing Extension
|
|
3180
3273
|
*
|
|
3181
3274
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_mesh_gpu_instancing
|
|
3275
|
+
*
|
|
3276
|
+
* @private
|
|
3182
3277
|
*/
|
|
3183
3278
|
class GLTFMeshGpuInstancing {
|
|
3184
3279
|
|
|
@@ -3238,6 +3333,8 @@ class GLTFMeshGpuInstancing {
|
|
|
3238
3333
|
|
|
3239
3334
|
/**
|
|
3240
3335
|
* Static utility functions
|
|
3336
|
+
*
|
|
3337
|
+
* @private
|
|
3241
3338
|
*/
|
|
3242
3339
|
GLTFExporter.Utils = {
|
|
3243
3340
|
|
|
@@ -3458,4 +3555,30 @@ GLTFExporter.Utils = {
|
|
|
3458
3555
|
|
|
3459
3556
|
};
|
|
3460
3557
|
|
|
3558
|
+
/**
|
|
3559
|
+
* Export options of `GLTFExporter`.
|
|
3560
|
+
*
|
|
3561
|
+
* @typedef {Object} GLTFExporter~Options
|
|
3562
|
+
* @property {boolean} [trs=false] - Export position, rotation and scale instead of matrix per node.
|
|
3563
|
+
* @property {boolean} [onlyVisible=true] - Export only visible 3D objects.
|
|
3564
|
+
* @property {boolean} [binary=false] - Export in binary (.glb) format, returning an ArrayBuffer.
|
|
3565
|
+
* @property {number} [maxTextureSize=Infinity] - Restricts the image maximum size (both width and height) to the given value.
|
|
3566
|
+
* @property {Array<AnimationClip>} [animations=[]] - List of animations to be included in the export.
|
|
3567
|
+
* @property {boolean} [includeCustomExtensions=false] - Export custom glTF extensions defined on an object's `userData.gltfExtensions` property.
|
|
3568
|
+
**/
|
|
3569
|
+
|
|
3570
|
+
/**
|
|
3571
|
+
* onDone callback of `GLTFExporter`.
|
|
3572
|
+
*
|
|
3573
|
+
* @callback GLTFExporter~OnDone
|
|
3574
|
+
* @param {ArrayBuffer|string} result - The generated .gltf (JSON) or .glb (binary).
|
|
3575
|
+
*/
|
|
3576
|
+
|
|
3577
|
+
/**
|
|
3578
|
+
* onError callback of `GLTFExporter`.
|
|
3579
|
+
*
|
|
3580
|
+
* @callback GLTFExporter~OnError
|
|
3581
|
+
* @param {Error} error - The error object.
|
|
3582
|
+
*/
|
|
3583
|
+
|
|
3461
3584
|
export { GLTFExporter };
|
|
@@ -127,8 +127,28 @@ const ERROR_FORMAT = 'THREE.KTX2Exporter: Supported formats are RGBAFormat, RGFo
|
|
|
127
127
|
const ERROR_TYPE = 'THREE.KTX2Exporter: Supported types are FloatType, HalfFloatType, or UnsignedByteType."';
|
|
128
128
|
const ERROR_COLOR_SPACE = 'THREE.KTX2Exporter: Supported color spaces are SRGBColorSpace (UnsignedByteType only), LinearSRGBColorSpace, or NoColorSpace.';
|
|
129
129
|
|
|
130
|
+
/**
|
|
131
|
+
* An exporter for KTX2.
|
|
132
|
+
*
|
|
133
|
+
* ```js
|
|
134
|
+
* const exporter = new KTX2Exporter();
|
|
135
|
+
* const result = await exporter.parse( dataTexture );
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
130
138
|
export class KTX2Exporter {
|
|
131
139
|
|
|
140
|
+
/**
|
|
141
|
+
* This method has two variants.
|
|
142
|
+
*
|
|
143
|
+
* - When exporting a data texture, it receives one parameter. The data or 3D data texture.
|
|
144
|
+
* - When exporting a render target (e.g. a PMREM), it receives two parameters. The renderer and the
|
|
145
|
+
* render target.
|
|
146
|
+
*
|
|
147
|
+
* @async
|
|
148
|
+
* @param {(DataTexture|Data3DTexture|WebGPURenderer|WebGLRenderer)} arg1 - The data texture to export or a renderer.
|
|
149
|
+
* @param {RenderTarget} [arg2] - The render target that should be exported
|
|
150
|
+
* @return {Promise<Uint8Array>} A Promise that resolves with the exported KTX2.
|
|
151
|
+
*/
|
|
132
152
|
async parse( arg1, arg2 ) {
|
|
133
153
|
|
|
134
154
|
let texture;
|
|
@@ -7,8 +7,26 @@ import {
|
|
|
7
7
|
Vector3
|
|
8
8
|
} from 'three';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* An exporter for OBJ.
|
|
12
|
+
*
|
|
13
|
+
* `OBJExporter` is not able to export material data into MTL files so only geometry data are supported.
|
|
14
|
+
*
|
|
15
|
+
* ```js
|
|
16
|
+
* const exporter = new OBJExporter();
|
|
17
|
+
* const data = exporter.parse( scene );
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
10
20
|
class OBJExporter {
|
|
11
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Parses the given 3D object and generates the OBJ output.
|
|
24
|
+
*
|
|
25
|
+
* If the 3D object is composed of multiple children and geometry, they are merged into a single mesh in the file.
|
|
26
|
+
*
|
|
27
|
+
* @param {Object3D} object - The 3D object to export.
|
|
28
|
+
* @return {string} The exported OBJ.
|
|
29
|
+
*/
|
|
12
30
|
parse( object ) {
|
|
13
31
|
|
|
14
32
|
let output = '';
|
|
@@ -7,22 +7,34 @@ import {
|
|
|
7
7
|
} from 'three';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* An exporter for PLY.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* PLY (Polygon or Stanford Triangle Format) is a file format for efficient delivery and
|
|
13
|
+
* loading of simple, static 3D content in a dense format. Both binary and ascii formats are
|
|
14
|
+
* supported. PLY can store vertex positions, colors, normals and uv coordinates. No textures
|
|
15
|
+
* or texture references are saved.
|
|
14
16
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* http://paulbourke.net/dataformats/ply/
|
|
17
|
+
* ```js
|
|
18
|
+
* const exporter = new PLYExporter();
|
|
19
|
+
* const data = exporter.parse( scene, options );
|
|
20
|
+
* ```
|
|
20
21
|
*/
|
|
21
|
-
|
|
22
22
|
class PLYExporter {
|
|
23
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Parses the given 3D object and generates the PLY output.
|
|
26
|
+
*
|
|
27
|
+
* If the 3D object is composed of multiple children and geometry, they are merged into a single mesh in the file.
|
|
28
|
+
*
|
|
29
|
+
* @param {Object3D} object - The 3D object to export.
|
|
30
|
+
* @param {PLYExporter~OnDone} onDone - A callback function that is executed when the export has finished.
|
|
31
|
+
* @param {PLYExporter~Options} options - The export options.
|
|
32
|
+
* @return {?string|ArrayBuffer} The exported PLY.
|
|
33
|
+
*/
|
|
24
34
|
parse( object, onDone, options = {} ) {
|
|
25
35
|
|
|
36
|
+
// reference https://github.com/gkjohnson/ply-exporter-js
|
|
37
|
+
|
|
26
38
|
// Iterate over the valid meshes in the object
|
|
27
39
|
function traverseMeshes( cb ) {
|
|
28
40
|
|
|
@@ -527,4 +539,22 @@ class PLYExporter {
|
|
|
527
539
|
|
|
528
540
|
}
|
|
529
541
|
|
|
542
|
+
/**
|
|
543
|
+
* Export options of `PLYExporter`.
|
|
544
|
+
*
|
|
545
|
+
* @typedef {Object} PLYExporter~Options
|
|
546
|
+
* @property {boolean} [binary=false] - Whether to export in binary format or ASCII.
|
|
547
|
+
* @property {Array<string>} [excludeAttributes] - Which properties to explicitly exclude from
|
|
548
|
+
* the exported PLY file. Valid values are `'color'`, `'normal'`, `'uv'`, and `'index'`. If triangle
|
|
549
|
+
* indices are excluded, then a point cloud is exported.
|
|
550
|
+
* @property {boolean} [littleEndian=false] - Whether the binary export uses little or big endian.
|
|
551
|
+
**/
|
|
552
|
+
|
|
553
|
+
/**
|
|
554
|
+
* onDone callback of `PLYExporter`.
|
|
555
|
+
*
|
|
556
|
+
* @callback PLYExporter~OnDone
|
|
557
|
+
* @param {string|ArrayBuffer} result - The generated PLY ascii or binary.
|
|
558
|
+
*/
|
|
559
|
+
|
|
530
560
|
export { PLYExporter };
|
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
import { Vector3 } from 'three';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
* const exporter = new STLExporter();
|
|
4
|
+
* An exporter for STL.
|
|
6
5
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* STL files describe only the surface geometry of a three-dimensional object without
|
|
7
|
+
* any representation of color, texture or other common model attributes. The STL format
|
|
8
|
+
* specifies both ASCII and binary representations, with binary being more compact.
|
|
9
|
+
* STL files contain no scale information or indexes, and the units are arbitrary.
|
|
9
10
|
*
|
|
11
|
+
* ```js
|
|
12
|
+
* const exporter = new STLExporter();
|
|
13
|
+
* const data = exporter.parse( mesh, { binary: true } );
|
|
14
|
+
* ```
|
|
10
15
|
*/
|
|
11
|
-
|
|
12
16
|
class STLExporter {
|
|
13
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Parses the given 3D object and generates the STL output.
|
|
20
|
+
*
|
|
21
|
+
* If the 3D object is composed of multiple children and geometry, they are merged into a single mesh in the file.
|
|
22
|
+
*
|
|
23
|
+
* @param {Object3D} scene - A scene, mesh or any other 3D object containing meshes to encode.
|
|
24
|
+
* @param {STLExporter~Options} options - The export options.
|
|
25
|
+
* @return {string|ArrayBuffer} The exported STL.
|
|
26
|
+
*/
|
|
14
27
|
parse( scene, options = {} ) {
|
|
15
28
|
|
|
16
29
|
options = Object.assign( {
|
|
@@ -196,4 +209,11 @@ class STLExporter {
|
|
|
196
209
|
|
|
197
210
|
}
|
|
198
211
|
|
|
212
|
+
/**
|
|
213
|
+
* Export options of `STLExporter`.
|
|
214
|
+
*
|
|
215
|
+
* @typedef {Object} STLExporter~Options
|
|
216
|
+
* @property {boolean} [binary=false] - Whether to export in binary format or ASCII.
|
|
217
|
+
**/
|
|
218
|
+
|
|
199
219
|
export { STLExporter };
|