@needle-tools/three 0.145.2 → 0.146.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/README.md +1 -1
- package/build/three.cjs +3559 -6924
- package/build/three.js +3559 -6924
- package/build/three.min.js +1 -2
- package/build/three.module.js +732 -339
- package/examples/js/animation/AnimationClipCreator.js +0 -8
- package/examples/js/animation/CCDIKSolver.js +49 -66
- package/examples/js/animation/MMDAnimationHelper.js +66 -137
- package/examples/js/animation/MMDPhysics.js +70 -134
- package/examples/js/cameras/CinematicCamera.js +33 -22
- package/examples/js/controls/ArcballControls.js +138 -405
- package/examples/js/controls/DragControls.js +8 -33
- package/examples/js/controls/FirstPersonControls.js +32 -54
- package/examples/js/controls/FlyControls.js +29 -55
- package/examples/js/controls/OrbitControls.js +85 -95
- package/examples/js/controls/PointerLockControls.js +5 -14
- package/examples/js/controls/TrackballControls.js +33 -86
- package/examples/js/controls/TransformControls.js +84 -169
- package/examples/js/csm/CSM.js +4 -39
- package/examples/js/csm/CSMFrustum.js +3 -9
- package/examples/js/csm/CSMHelper.js +24 -4
- package/examples/js/csm/CSMShader.js +2 -6
- package/examples/js/curves/CurveExtras.js +27 -27
- package/examples/js/curves/NURBSCurve.js +4 -16
- package/examples/js/curves/NURBSSurface.js +3 -9
- package/examples/js/curves/NURBSUtils.js +8 -45
- package/examples/js/effects/AnaglyphEffect.js +4 -18
- package/examples/js/effects/AsciiEffect.js +32 -31
- package/examples/js/effects/OutlineEffect.js +26 -30
- package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
- package/examples/js/effects/PeppersGhostEffect.js +12 -39
- package/examples/js/effects/StereoEffect.js +0 -4
- package/examples/js/environments/RoomEnvironment.js +12 -10
- package/examples/js/exporters/ColladaExporter.js +48 -65
- package/examples/js/exporters/DRACOExporter.js +22 -22
- package/examples/js/exporters/EXRExporter.js +15 -18
- package/examples/js/exporters/GLTFExporter.js +143 -261
- package/examples/js/exporters/MMDExporter.js +5 -12
- package/examples/js/exporters/OBJExporter.js +42 -33
- package/examples/js/exporters/PLYExporter.js +38 -33
- package/examples/js/exporters/STLExporter.js +5 -7
- package/examples/js/exporters/USDZExporter.js +110 -25
- package/examples/js/geometries/BoxLineGeometry.js +0 -1
- package/examples/js/geometries/ConvexGeometry.js +11 -6
- package/examples/js/geometries/DecalGeometry.js +53 -20
- package/examples/js/geometries/LightningStrike.js +54 -67
- package/examples/js/geometries/ParametricGeometries.js +8 -7
- package/examples/js/geometries/ParametricGeometry.js +25 -12
- package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
- package/examples/js/geometries/TeapotGeometry.js +54 -50
- package/examples/js/geometries/TextGeometry.js +6 -4
- package/examples/js/helpers/LightProbeHelper.js +1 -2
- package/examples/js/helpers/OctreeHelper.js +22 -20
- package/examples/js/helpers/PositionalAudioHelper.js +8 -6
- package/examples/js/helpers/RectAreaLightHelper.js +6 -7
- package/examples/js/helpers/VertexNormalsHelper.js +15 -13
- package/examples/js/helpers/VertexTangentsHelper.js +15 -9
- package/examples/js/helpers/ViewHelper.js +31 -16
- package/examples/js/interactive/HTMLMesh.js +22 -33
- package/examples/js/interactive/InteractiveGroup.js +6 -12
- package/examples/js/interactive/SelectionBox.js +3 -70
- package/examples/js/interactive/SelectionHelper.js +0 -8
- package/examples/js/lights/LightProbeGenerator.js +32 -39
- package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
- package/examples/js/lines/LineGeometry.js +3 -5
- package/examples/js/lines/LineMaterial.js +4 -11
- package/examples/js/lines/LineSegments2.js +38 -89
- package/examples/js/lines/LineSegmentsGeometry.js +7 -28
- package/examples/js/lines/Wireframe.js +2 -7
- package/examples/js/lines/WireframeGeometry2.js +3 -1
- package/examples/js/loaders/3DMLoader.js +58 -155
- package/examples/js/loaders/3MFLoader.js +72 -106
- package/examples/js/loaders/AMFLoader.js +0 -25
- package/examples/js/loaders/BVHLoader.js +44 -43
- package/examples/js/loaders/BasisTextureLoader.js +16 -46
- package/examples/js/loaders/ColladaLoader.js +201 -359
- package/examples/js/loaders/DDSLoader.js +24 -25
- package/examples/js/loaders/DRACOLoader.js +29 -66
- package/examples/js/loaders/EXRLoader.js +67 -164
- package/examples/js/loaders/FBXLoader.js +286 -441
- package/examples/js/loaders/FontLoader.js +6 -15
- package/examples/js/loaders/GCodeLoader.js +15 -16
- package/examples/js/loaders/GLTFLoader.js +354 -405
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
- package/examples/js/loaders/KMZLoader.js +3 -7
- package/examples/js/loaders/KTXLoader.js +12 -30
- package/examples/js/loaders/LDrawLoader.js +178 -289
- package/examples/js/loaders/LUT3dlLoader.js +7 -11
- package/examples/js/loaders/LUTCubeLoader.js +0 -8
- package/examples/js/loaders/LWOLoader.js +59 -124
- package/examples/js/loaders/LogLuvLoader.js +27 -77
- package/examples/js/loaders/LottieLoader.js +4 -4
- package/examples/js/loaders/MD2Loader.js +26 -27
- package/examples/js/loaders/MDDLoader.js +6 -10
- package/examples/js/loaders/MMDLoader.js +180 -189
- package/examples/js/loaders/MTLLoader.js +18 -47
- package/examples/js/loaders/MaterialXLoader.js +392 -0
- package/examples/js/loaders/NRRDLoader.js +44 -84
- package/examples/js/loaders/OBJLoader.js +50 -65
- package/examples/js/loaders/PCDLoader.js +34 -29
- package/examples/js/loaders/PDBLoader.js +17 -13
- package/examples/js/loaders/PLYLoader.js +9 -39
- package/examples/js/loaders/PRWMLoader.js +11 -22
- package/examples/js/loaders/PVRLoader.js +7 -16
- package/examples/js/loaders/RGBELoader.js +36 -61
- package/examples/js/loaders/RGBMLoader.js +26 -87
- package/examples/js/loaders/STLLoader.js +20 -27
- package/examples/js/loaders/SVGLoader.js +361 -233
- package/examples/js/loaders/TDSLoader.js +81 -118
- package/examples/js/loaders/TGALoader.js +39 -41
- package/examples/js/loaders/TIFFLoader.js +0 -1
- package/examples/js/loaders/TTFLoader.js +0 -8
- package/examples/js/loaders/TiltLoader.js +14 -15
- package/examples/js/loaders/VOXLoader.js +8 -16
- package/examples/js/loaders/VRMLLoader.js +243 -340
- package/examples/js/loaders/VTKLoader.js +101 -118
- package/examples/js/loaders/XYZLoader.js +2 -4
- package/examples/js/loaders/lwo/IFFParser.js +55 -136
- package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
- package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
- package/examples/js/materials/MeshGouraudMaterial.js +15 -13
- package/examples/js/math/Capsule.js +0 -17
- package/examples/js/math/ColorConverter.js +3 -3
- package/examples/js/math/ConvexHull.js +183 -139
- package/examples/js/math/ImprovedNoise.js +1 -1
- package/examples/js/math/Lut.js +8 -15
- package/examples/js/math/MeshSurfaceSampler.js +6 -28
- package/examples/js/math/OBB.js +90 -49
- package/examples/js/math/Octree.js +2 -57
- package/examples/js/math/SimplexNoise.js +74 -88
- package/examples/js/misc/ConvexObjectBreaker.js +37 -48
- package/examples/js/misc/GPUComputationRenderer.js +14 -18
- package/examples/js/misc/Gyroscope.js +5 -9
- package/examples/js/misc/MD2Character.js +14 -23
- package/examples/js/misc/MD2CharacterComplex.js +73 -54
- package/examples/js/misc/MorphAnimMesh.js +0 -6
- package/examples/js/misc/MorphBlendMesh.js +3 -30
- package/examples/js/misc/ProgressiveLightMap.js +47 -43
- package/examples/js/misc/RollerCoaster.js +17 -24
- package/examples/js/misc/TubePainter.js +18 -12
- package/examples/js/misc/Volume.js +16 -45
- package/examples/js/misc/VolumeSlice.js +14 -24
- package/examples/js/modifiers/CurveModifier.js +19 -21
- package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
- package/examples/js/modifiers/SimplifyModifier.js +56 -59
- package/examples/js/modifiers/TessellateModifier.js +2 -9
- package/examples/js/objects/GroundProjectedEnv.js +2 -14
- package/examples/js/objects/Lensflare.js +47 -38
- package/examples/js/objects/LightningStorm.js +10 -13
- package/examples/js/objects/MarchingCubes.js +80 -59
- package/examples/js/objects/Reflector.js +22 -20
- package/examples/js/objects/ReflectorForSSRPass.js +19 -23
- package/examples/js/objects/Refractor.js +52 -30
- package/examples/js/objects/ShadowMesh.js +1 -2
- package/examples/js/objects/Sky.js +2 -7
- package/examples/js/objects/Water.js +23 -18
- package/examples/js/objects/Water2.js +20 -19
- package/examples/js/physics/AmmoPhysics.js +23 -20
- package/examples/js/physics/OimoPhysics.js +19 -17
- package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
- package/examples/js/postprocessing/AfterimagePass.js +19 -12
- package/examples/js/postprocessing/BloomPass.js +38 -17
- package/examples/js/postprocessing/BokehPass.js +29 -12
- package/examples/js/postprocessing/ClearPass.js +1 -6
- package/examples/js/postprocessing/CubeTexturePass.js +12 -9
- package/examples/js/postprocessing/DotScreenPass.js +7 -5
- package/examples/js/postprocessing/EffectComposer.js +25 -32
- package/examples/js/postprocessing/FilmPass.js +7 -5
- package/examples/js/postprocessing/GlitchPass.js +10 -11
- package/examples/js/postprocessing/HalftonePass.js +9 -9
- package/examples/js/postprocessing/LUTPass.js +2 -15
- package/examples/js/postprocessing/MaskPass.js +20 -17
- package/examples/js/postprocessing/OutlinePass.js +45 -36
- package/examples/js/postprocessing/Pass.js +11 -14
- package/examples/js/postprocessing/RenderPass.js +3 -7
- package/examples/js/postprocessing/SAOPass.js +40 -32
- package/examples/js/postprocessing/SMAAPass.js +34 -17
- package/examples/js/postprocessing/SSAARenderPass.js +14 -14
- package/examples/js/postprocessing/SSAOPass.js +56 -42
- package/examples/js/postprocessing/SSRPass.js +78 -61
- package/examples/js/postprocessing/SavePass.js +14 -6
- package/examples/js/postprocessing/ShaderPass.js +9 -8
- package/examples/js/postprocessing/TAARenderPass.js +11 -9
- package/examples/js/postprocessing/TexturePass.js +7 -4
- package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
- package/examples/js/renderers/CSS2DRenderer.js +2 -21
- package/examples/js/renderers/CSS3DRenderer.js +3 -24
- package/examples/js/renderers/Projector.js +29 -85
- package/examples/js/renderers/SVGRenderer.js +4 -50
- package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
- package/examples/js/shaders/AfterimageShader.js +3 -6
- package/examples/js/shaders/BasicShader.js +3 -6
- package/examples/js/shaders/BleachBypassShader.js +3 -6
- package/examples/js/shaders/BlendShader.js +3 -6
- package/examples/js/shaders/BokehShader.js +3 -6
- package/examples/js/shaders/BokehShader2.js +4 -13
- package/examples/js/shaders/BrightnessContrastShader.js +3 -6
- package/examples/js/shaders/ColorCorrectionShader.js +2 -6
- package/examples/js/shaders/ColorifyShader.js +2 -6
- package/examples/js/shaders/ConvolutionShader.js +5 -10
- package/examples/js/shaders/CopyShader.js +3 -6
- package/examples/js/shaders/DOFMipMapShader.js +3 -6
- package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
- package/examples/js/shaders/DigitalGlitch.js +3 -6
- package/examples/js/shaders/DotScreenShader.js +2 -6
- package/examples/js/shaders/FXAAShader.js +1 -3
- package/examples/js/shaders/FilmShader.js +3 -6
- package/examples/js/shaders/FocusShader.js +3 -6
- package/examples/js/shaders/FreiChenShader.js +2 -6
- package/examples/js/shaders/GammaCorrectionShader.js +3 -6
- package/examples/js/shaders/GodRaysShader.js +11 -24
- package/examples/js/shaders/HalftoneShader.js +3 -6
- package/examples/js/shaders/HorizontalBlurShader.js +3 -6
- package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
- package/examples/js/shaders/HueSaturationShader.js +3 -6
- package/examples/js/shaders/KaleidoShader.js +3 -6
- package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
- package/examples/js/shaders/LuminosityShader.js +3 -6
- package/examples/js/shaders/MMDToonShader.js +2 -6
- package/examples/js/shaders/MirrorShader.js +3 -6
- package/examples/js/shaders/NormalMapShader.js +2 -6
- package/examples/js/shaders/RGBShiftShader.js +3 -6
- package/examples/js/shaders/SAOShader.js +2 -6
- package/examples/js/shaders/SMAAShader.js +6 -18
- package/examples/js/shaders/SSAOShader.js +2 -6
- package/examples/js/shaders/SSRShader.js +6 -18
- package/examples/js/shaders/SepiaShader.js +3 -6
- package/examples/js/shaders/SobelOperatorShader.js +2 -6
- package/examples/js/shaders/TechnicolorShader.js +3 -6
- package/examples/js/shaders/ToneMapShader.js +3 -6
- package/examples/js/shaders/ToonShader.js +8 -24
- package/examples/js/shaders/TriangleBlurShader.js +2 -6
- package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
- package/examples/js/shaders/VelocityShader.js +126 -0
- package/examples/js/shaders/VerticalBlurShader.js +3 -6
- package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
- package/examples/js/shaders/VignetteShader.js +3 -6
- package/examples/js/shaders/VolumeShader.js +2 -6
- package/examples/js/shaders/WaterRefractionShader.js +2 -6
- package/examples/js/textures/FlakesTexture.js +0 -1
- package/examples/js/utils/BufferGeometryUtils.js +234 -168
- package/examples/js/utils/CameraUtils.js +5 -20
- package/examples/js/utils/GPUStatsPanel.js +3 -12
- package/examples/js/utils/GeometryCompressionUtils.js +19 -44
- package/examples/js/utils/GeometryUtils.js +13 -18
- package/examples/js/utils/LDrawUtils.js +8 -11
- package/examples/js/utils/PackedPhongMaterial.js +6 -4
- package/examples/js/utils/SceneUtils.js +117 -6
- package/examples/js/utils/ShadowMapViewer.js +17 -14
- package/examples/js/utils/SkeletonUtils.js +13 -27
- package/examples/js/utils/UVsDebug.js +20 -12
- package/examples/js/utils/WorkerPool.js +1 -11
- package/examples/jsm/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/capabilities/WebGPU.js +3 -1
- package/examples/jsm/controls/OrbitControls.js +44 -4
- package/examples/jsm/exporters/GLTFExporter.js +17 -131
- package/examples/jsm/exporters/USDZExporter.js +94 -28
- package/examples/jsm/interactive/HTMLMesh.js +2 -0
- package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -2
- package/examples/jsm/loaders/ColladaLoader.js +28 -0
- package/examples/jsm/loaders/FBXLoader.js +16 -2
- package/examples/jsm/loaders/GLTFLoader.js +204 -377
- package/examples/jsm/loaders/KTX2Loader.js +68 -29
- package/examples/jsm/loaders/LDrawLoader.js +14 -13
- package/examples/jsm/loaders/LottieLoader.js +4 -2
- package/examples/jsm/loaders/MaterialXLoader.js +728 -0
- package/examples/jsm/loaders/PCDLoader.js +1 -1
- package/examples/jsm/loaders/PLYLoader.js +68 -16
- package/examples/jsm/loaders/SVGLoader.js +227 -14
- package/examples/jsm/loaders/USDZLoader.js +31 -16
- package/examples/jsm/nodes/Nodes.js +14 -2
- package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
- package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
- package/examples/jsm/nodes/accessors/SkinningNode.js +1 -1
- package/examples/jsm/nodes/core/Node.js +1 -1
- package/examples/jsm/nodes/core/NodeBuilder.js +36 -4
- package/examples/jsm/nodes/core/NodeFrame.js +2 -2
- package/examples/jsm/nodes/core/NodeVarying.js +7 -4
- package/examples/jsm/nodes/core/VaryingNode.js +6 -4
- package/examples/jsm/nodes/core/constants.js +13 -13
- package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
- package/examples/jsm/nodes/display/ViewportNode.js +106 -0
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
- package/examples/jsm/nodes/materials/Materials.js +9 -7
- package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +6 -2
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
- package/examples/jsm/nodes/math/MathNode.js +5 -0
- package/examples/jsm/nodes/math/OperatorNode.js +6 -1
- package/examples/jsm/nodes/shadernode/ShaderNode.js +26 -13
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +2 -0
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +18 -0
- package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
- package/examples/jsm/nodes/utils/JoinNode.js +8 -2
- package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
- package/examples/jsm/nodes/utils/TimerNode.js +1 -1
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
- package/examples/jsm/postprocessing/BloomPass.js +22 -3
- package/examples/jsm/postprocessing/BokehPass.js +18 -4
- package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
- package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
- package/examples/jsm/postprocessing/EffectComposer.js +9 -0
- package/examples/jsm/postprocessing/FilmPass.js +8 -0
- package/examples/jsm/postprocessing/GlitchPass.js +13 -1
- package/examples/jsm/postprocessing/HalftonePass.js +8 -0
- package/examples/jsm/postprocessing/OutlinePass.js +10 -0
- package/examples/jsm/postprocessing/Pass.js +2 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
- package/examples/jsm/postprocessing/SAOPass.js +20 -0
- package/examples/jsm/postprocessing/SMAAPass.js +16 -0
- package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
- package/examples/jsm/postprocessing/SavePass.js +17 -1
- package/examples/jsm/postprocessing/ShaderPass.js +8 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
- package/examples/jsm/postprocessing/TexturePass.js +8 -0
- package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +39 -16
- package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
- package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +35 -5
- package/examples/jsm/shaders/MMDToonShader.js +0 -2
- package/examples/jsm/shaders/VelocityShader.js +128 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +130 -6
- package/examples/jsm/utils/SceneUtils.js +129 -4
- package/examples/jsm/utils/TextureUtils.js +85 -0
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +6 -3
- package/package.json +11 -12
- package/src/Three.js +1 -0
- package/src/audio/AudioContext.js +5 -5
- package/src/cameras/CubeCamera.js +14 -14
- package/src/constants.js +1 -1
- package/src/core/InstancedBufferGeometry.js +1 -7
- package/src/extras/Earcut.js +67 -67
- package/src/helpers/DirectionalLightHelper.js +5 -1
- package/src/helpers/HemisphereLightHelper.js +4 -1
- package/src/helpers/PointLightHelper.js +2 -1
- package/src/helpers/SpotLightHelper.js +4 -2
- package/src/lights/PointLight.js +2 -2
- package/src/lights/SpotLight.js +2 -2
- package/src/loaders/FileLoader.js +4 -1
- package/src/loaders/ObjectLoader.js +5 -1
- package/src/materials/Material.js +1 -1
- package/src/math/Color.js +5 -5
- package/src/math/Matrix3.js +53 -18
- package/src/math/Ray.js +2 -5
- package/src/math/Sphere.js +19 -26
- package/src/objects/InstancedMesh.js +7 -0
- package/src/objects/LOD.js +25 -6
- package/src/renderers/WebGL3DRenderTarget.js +1 -1
- package/src/renderers/WebGLArrayRenderTarget.js +1 -1
- package/src/renderers/WebGLCubeRenderTarget.js +1 -1
- package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
- package/src/renderers/WebGLRenderTarget.js +1 -1
- package/src/renderers/WebGLRenderer.js +36 -62
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk.js +3 -0
- package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
- package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +20 -6
- package/src/renderers/shaders/UniformsLib.js +1 -1
- package/src/renderers/shaders/UniformsUtils.js +15 -0
- package/src/renderers/webgl/WebGLAttributes.js +2 -0
- package/src/renderers/webgl/WebGLBackground.js +15 -7
- package/src/renderers/webgl/WebGLCubeUVMaps.js +1 -1
- package/src/renderers/webgl/WebGLLights.js +0 -4
- package/src/renderers/webgl/WebGLMaterials.js +2 -1
- package/src/renderers/webgl/WebGLShadowMap.js +3 -1
- package/src/renderers/webgl/WebGLState.js +31 -1
- package/src/renderers/webgl/WebGLTextures.js +71 -18
- package/src/renderers/webgl/WebGLUniforms.js +116 -20
- package/src/renderers/webgl/WebGLUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +46 -13
- package/src/renderers/webxr/WebXRManager.js +85 -3
- package/src/scenes/Scene.js +8 -0
- package/src/textures/CompressedArrayTexture.js +18 -0
- package/examples/js/libs/lottie_canvas.js +0 -12751
- package/examples/js/shaders/PixelShader.js +0 -51
- package/examples/jsm/shaders/PixelShader.js +0 -44
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
super( manager );
|
|
8
8
|
|
|
9
9
|
}
|
|
10
|
-
|
|
11
10
|
load( url, onLoad, onProgress, onError ) {
|
|
12
11
|
|
|
13
12
|
const scope = this;
|
|
@@ -41,18 +40,15 @@
|
|
|
41
40
|
}, onProgress, onError );
|
|
42
41
|
|
|
43
42
|
}
|
|
44
|
-
|
|
45
43
|
parse( data ) {
|
|
46
44
|
|
|
47
45
|
// this parser is largely inspired from the XTK NRRD parser : https://github.com/xtk/X
|
|
46
|
+
|
|
48
47
|
let _data = data;
|
|
49
48
|
let _dataPointer = 0;
|
|
50
|
-
|
|
51
49
|
const _nativeLittleEndian = new Int8Array( new Int16Array( [ 1 ] ).buffer )[ 0 ] > 0;
|
|
52
|
-
|
|
53
50
|
const _littleEndian = true;
|
|
54
51
|
const headerObject = {};
|
|
55
|
-
|
|
56
52
|
function scan( type, chunks ) {
|
|
57
53
|
|
|
58
54
|
if ( chunks === undefined || chunks === null ) {
|
|
@@ -63,60 +59,51 @@
|
|
|
63
59
|
|
|
64
60
|
let _chunkSize = 1;
|
|
65
61
|
let _array_type = Uint8Array;
|
|
66
|
-
|
|
67
62
|
switch ( type ) {
|
|
68
63
|
|
|
69
64
|
// 1 byte data types
|
|
70
65
|
case 'uchar':
|
|
71
66
|
break;
|
|
72
|
-
|
|
73
67
|
case 'schar':
|
|
74
68
|
_array_type = Int8Array;
|
|
75
69
|
break;
|
|
76
70
|
// 2 byte data types
|
|
77
|
-
|
|
78
71
|
case 'ushort':
|
|
79
72
|
_array_type = Uint16Array;
|
|
80
73
|
_chunkSize = 2;
|
|
81
74
|
break;
|
|
82
|
-
|
|
83
75
|
case 'sshort':
|
|
84
76
|
_array_type = Int16Array;
|
|
85
77
|
_chunkSize = 2;
|
|
86
78
|
break;
|
|
87
79
|
// 4 byte data types
|
|
88
|
-
|
|
89
80
|
case 'uint':
|
|
90
81
|
_array_type = Uint32Array;
|
|
91
82
|
_chunkSize = 4;
|
|
92
83
|
break;
|
|
93
|
-
|
|
94
84
|
case 'sint':
|
|
95
85
|
_array_type = Int32Array;
|
|
96
86
|
_chunkSize = 4;
|
|
97
87
|
break;
|
|
98
|
-
|
|
99
88
|
case 'float':
|
|
100
89
|
_array_type = Float32Array;
|
|
101
90
|
_chunkSize = 4;
|
|
102
91
|
break;
|
|
103
|
-
|
|
104
92
|
case 'complex':
|
|
105
93
|
_array_type = Float64Array;
|
|
106
94
|
_chunkSize = 8;
|
|
107
95
|
break;
|
|
108
|
-
|
|
109
96
|
case 'double':
|
|
110
97
|
_array_type = Float64Array;
|
|
111
98
|
_chunkSize = 8;
|
|
112
99
|
break;
|
|
113
100
|
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
let _bytes = new _array_type( _data.slice( _dataPointer, _dataPointer += chunks * _chunkSize ) ); // if required, flip the endianness of the bytes
|
|
101
|
+
}
|
|
118
102
|
|
|
103
|
+
// increase the data pointer in-place
|
|
104
|
+
let _bytes = new _array_type( _data.slice( _dataPointer, _dataPointer += chunks * _chunkSize ) );
|
|
119
105
|
|
|
106
|
+
// if required, flip the endianness of the bytes
|
|
120
107
|
if ( _nativeLittleEndian != _littleEndian ) {
|
|
121
108
|
|
|
122
109
|
// we need to flip here since the format doesn't match the native endianness
|
|
@@ -129,18 +116,18 @@
|
|
|
129
116
|
// if only one chunk was requested, just return one value
|
|
130
117
|
return _bytes[ 0 ];
|
|
131
118
|
|
|
132
|
-
}
|
|
133
|
-
|
|
119
|
+
}
|
|
134
120
|
|
|
121
|
+
// return the byte array
|
|
135
122
|
return _bytes;
|
|
136
123
|
|
|
137
|
-
}
|
|
124
|
+
}
|
|
138
125
|
|
|
126
|
+
//Flips typed array endianness in-place. Based on https://github.com/kig/DataStream.js/blob/master/DataStream.js.
|
|
139
127
|
|
|
140
128
|
function flipEndianness( array, chunkSize ) {
|
|
141
129
|
|
|
142
130
|
const u8 = new Uint8Array( array.buffer, array.byteOffset, array.byteLength );
|
|
143
|
-
|
|
144
131
|
for ( let i = 0; i < array.byteLength; i += chunkSize ) {
|
|
145
132
|
|
|
146
133
|
for ( let j = i + chunkSize - 1, k = i; j > k; j --, k ++ ) {
|
|
@@ -155,19 +142,16 @@
|
|
|
155
142
|
|
|
156
143
|
return array;
|
|
157
144
|
|
|
158
|
-
}
|
|
159
|
-
|
|
145
|
+
}
|
|
160
146
|
|
|
147
|
+
//parse the header
|
|
161
148
|
function parseHeader( header ) {
|
|
162
149
|
|
|
163
150
|
let data, field, fn, i, l, m, _i, _len;
|
|
164
|
-
|
|
165
151
|
const lines = header.split( /\r?\n/ );
|
|
166
|
-
|
|
167
152
|
for ( _i = 0, _len = lines.length; _i < _len; _i ++ ) {
|
|
168
153
|
|
|
169
154
|
l = lines[ _i ];
|
|
170
|
-
|
|
171
155
|
if ( l.match( /NRRD\d+/ ) ) {
|
|
172
156
|
|
|
173
157
|
headerObject.isNrrd = true;
|
|
@@ -177,7 +161,6 @@
|
|
|
177
161
|
field = m[ 1 ].trim();
|
|
178
162
|
data = m[ 2 ].trim();
|
|
179
163
|
fn = _fieldFunctions[ field ];
|
|
180
|
-
|
|
181
164
|
if ( fn ) {
|
|
182
165
|
|
|
183
166
|
fn.call( headerObject, data );
|
|
@@ -210,8 +193,9 @@
|
|
|
210
193
|
headerObject.vectors = [];
|
|
211
194
|
headerObject.vectors.push( [ 1, 0, 0 ] );
|
|
212
195
|
headerObject.vectors.push( [ 0, 1, 0 ] );
|
|
213
|
-
headerObject.vectors.push( [ 0, 0, 1 ] );
|
|
196
|
+
headerObject.vectors.push( [ 0, 0, 1 ] );
|
|
214
197
|
|
|
198
|
+
//apply spacing if defined
|
|
215
199
|
if ( headerObject.spacings ) {
|
|
216
200
|
|
|
217
201
|
for ( i = 0; i <= 2; i ++ ) {
|
|
@@ -232,23 +216,22 @@
|
|
|
232
216
|
|
|
233
217
|
}
|
|
234
218
|
|
|
235
|
-
}
|
|
236
|
-
|
|
219
|
+
}
|
|
237
220
|
|
|
221
|
+
//parse the data when registred as one of this type : 'text', 'ascii', 'txt'
|
|
238
222
|
function parseDataAsText( data, start, end ) {
|
|
239
223
|
|
|
240
224
|
let number = '';
|
|
241
225
|
start = start || 0;
|
|
242
226
|
end = end || data.length;
|
|
243
|
-
let value;
|
|
244
|
-
|
|
227
|
+
let value;
|
|
228
|
+
//length of the result is the product of the sizes
|
|
245
229
|
const lengthOfTheResult = headerObject.sizes.reduce( function ( previous, current ) {
|
|
246
230
|
|
|
247
231
|
return previous * current;
|
|
248
232
|
|
|
249
233
|
}, 1 );
|
|
250
234
|
let base = 10;
|
|
251
|
-
|
|
252
235
|
if ( headerObject.encoding === 'hex' ) {
|
|
253
236
|
|
|
254
237
|
base = 16;
|
|
@@ -258,7 +241,6 @@
|
|
|
258
241
|
const result = new headerObject.__array( lengthOfTheResult );
|
|
259
242
|
let resultIndex = 0;
|
|
260
243
|
let parsingFunction = parseInt;
|
|
261
|
-
|
|
262
244
|
if ( headerObject.__array === Float32Array || headerObject.__array === Float64Array ) {
|
|
263
245
|
|
|
264
246
|
parsingFunction = parseFloat;
|
|
@@ -267,8 +249,8 @@
|
|
|
267
249
|
|
|
268
250
|
for ( let i = start; i < end; i ++ ) {
|
|
269
251
|
|
|
270
|
-
value = data[ i ];
|
|
271
|
-
|
|
252
|
+
value = data[ i ];
|
|
253
|
+
//if value is not a space
|
|
272
254
|
if ( ( value < 9 || value > 13 ) && value !== 32 ) {
|
|
273
255
|
|
|
274
256
|
number += String.fromCharCode( value );
|
|
@@ -300,31 +282,28 @@
|
|
|
300
282
|
}
|
|
301
283
|
|
|
302
284
|
const _bytes = scan( 'uchar', data.byteLength );
|
|
303
|
-
|
|
304
285
|
const _length = _bytes.length;
|
|
305
286
|
let _header = null;
|
|
306
287
|
let _data_start = 0;
|
|
307
288
|
let i;
|
|
308
|
-
|
|
309
289
|
for ( i = 1; i < _length; i ++ ) {
|
|
310
290
|
|
|
311
291
|
if ( _bytes[ i - 1 ] == 10 && _bytes[ i ] == 10 ) {
|
|
312
292
|
|
|
313
293
|
// we found two line breaks in a row
|
|
314
294
|
// now we know what the header is
|
|
315
|
-
_header = this.parseChars( _bytes, 0, i - 2 );
|
|
316
|
-
|
|
295
|
+
_header = this.parseChars( _bytes, 0, i - 2 );
|
|
296
|
+
// this is were the data starts
|
|
317
297
|
_data_start = i + 1;
|
|
318
298
|
break;
|
|
319
299
|
|
|
320
300
|
}
|
|
321
301
|
|
|
322
|
-
}
|
|
323
|
-
|
|
302
|
+
}
|
|
324
303
|
|
|
304
|
+
// parse the header
|
|
325
305
|
parseHeader( _header );
|
|
326
306
|
_data = _bytes.subarray( _data_start ); // the data without header
|
|
327
|
-
|
|
328
307
|
if ( headerObject.encoding.substring( 0, 2 ) === 'gz' ) {
|
|
329
308
|
|
|
330
309
|
// we need to decompress the datastream
|
|
@@ -339,7 +318,6 @@
|
|
|
339
318
|
|
|
340
319
|
//we need to copy the array to create a new array buffer, else we retrieve the original arraybuffer with the header
|
|
341
320
|
const _copy = new Uint8Array( _data.length );
|
|
342
|
-
|
|
343
321
|
for ( let i = 0; i < _data.length; i ++ ) {
|
|
344
322
|
|
|
345
323
|
_copy[ i ] = _data[ i ];
|
|
@@ -348,29 +326,31 @@
|
|
|
348
326
|
|
|
349
327
|
_data = _copy;
|
|
350
328
|
|
|
351
|
-
}
|
|
352
|
-
|
|
329
|
+
}
|
|
353
330
|
|
|
331
|
+
// .. let's use the underlying array buffer
|
|
354
332
|
_data = _data.buffer;
|
|
355
333
|
const volume = new THREE.Volume();
|
|
356
|
-
volume.header = headerObject;
|
|
334
|
+
volume.header = headerObject;
|
|
335
|
+
//
|
|
357
336
|
// parse the (unzipped) data to a datastream of the correct type
|
|
358
337
|
//
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
338
|
+
volume.data = new headerObject.__array( _data );
|
|
339
|
+
// get the min and max intensities
|
|
362
340
|
const min_max = volume.computeMinMax();
|
|
363
341
|
const min = min_max[ 0 ];
|
|
364
|
-
const max = min_max[ 1 ];
|
|
365
|
-
|
|
342
|
+
const max = min_max[ 1 ];
|
|
343
|
+
// attach the scalar range to the volume
|
|
366
344
|
volume.windowLow = min;
|
|
367
|
-
volume.windowHigh = max;
|
|
345
|
+
volume.windowHigh = max;
|
|
368
346
|
|
|
347
|
+
// get the image dimensions
|
|
369
348
|
volume.dimensions = [ headerObject.sizes[ 0 ], headerObject.sizes[ 1 ], headerObject.sizes[ 2 ] ];
|
|
370
349
|
volume.xLength = volume.dimensions[ 0 ];
|
|
371
350
|
volume.yLength = volume.dimensions[ 1 ];
|
|
372
|
-
volume.zLength = volume.dimensions[ 2 ];
|
|
351
|
+
volume.zLength = volume.dimensions[ 2 ];
|
|
373
352
|
|
|
353
|
+
// Identify axis order in the space-directions matrix from the header if possible.
|
|
374
354
|
if ( headerObject.vectors ) {
|
|
375
355
|
|
|
376
356
|
const xIndex = headerObject.vectors.findIndex( vector => vector[ 0 ] !== 0 );
|
|
@@ -386,17 +366,17 @@
|
|
|
386
366
|
|
|
387
367
|
volume.axisOrder = [ 'x', 'y', 'z' ];
|
|
388
368
|
|
|
389
|
-
}
|
|
390
|
-
|
|
369
|
+
}
|
|
391
370
|
|
|
371
|
+
// spacing
|
|
392
372
|
const spacingX = new THREE.Vector3().fromArray( headerObject.vectors[ 0 ] ).length();
|
|
393
373
|
const spacingY = new THREE.Vector3().fromArray( headerObject.vectors[ 1 ] ).length();
|
|
394
374
|
const spacingZ = new THREE.Vector3().fromArray( headerObject.vectors[ 2 ] ).length();
|
|
395
|
-
volume.spacing = [ spacingX, spacingY, spacingZ ];
|
|
375
|
+
volume.spacing = [ spacingX, spacingY, spacingZ ];
|
|
396
376
|
|
|
377
|
+
// Create IJKtoRAS matrix
|
|
397
378
|
volume.matrix = new THREE.Matrix4();
|
|
398
379
|
const transitionMatrix = new THREE.Matrix4();
|
|
399
|
-
|
|
400
380
|
if ( headerObject.space === 'left-posterior-superior' ) {
|
|
401
381
|
|
|
402
382
|
transitionMatrix.set( - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 );
|
|
@@ -422,9 +402,10 @@
|
|
|
422
402
|
|
|
423
403
|
volume.inverseMatrix = new THREE.Matrix4();
|
|
424
404
|
volume.inverseMatrix.copy( volume.matrix ).invert();
|
|
425
|
-
volume.RASDimensions = new THREE.Vector3( volume.xLength, volume.yLength, volume.zLength ).applyMatrix4( volume.matrix ).round().toArray().map( Math.abs );
|
|
426
|
-
// only if the threshold was not already set
|
|
405
|
+
volume.RASDimensions = new THREE.Vector3( volume.xLength, volume.yLength, volume.zLength ).applyMatrix4( volume.matrix ).round().toArray().map( Math.abs );
|
|
427
406
|
|
|
407
|
+
// .. and set the default threshold
|
|
408
|
+
// only if the threshold was not already set
|
|
428
409
|
if ( volume.lowerThreshold === - Infinity ) {
|
|
429
410
|
|
|
430
411
|
volume.lowerThreshold = min;
|
|
@@ -440,7 +421,6 @@
|
|
|
440
421
|
return volume;
|
|
441
422
|
|
|
442
423
|
}
|
|
443
|
-
|
|
444
424
|
parseChars( array, start, end ) {
|
|
445
425
|
|
|
446
426
|
// without borders, use the whole array
|
|
@@ -456,10 +436,9 @@
|
|
|
456
436
|
|
|
457
437
|
}
|
|
458
438
|
|
|
459
|
-
let output = '';
|
|
460
|
-
|
|
439
|
+
let output = '';
|
|
440
|
+
// create and append the chars
|
|
461
441
|
let i = 0;
|
|
462
|
-
|
|
463
442
|
for ( i = start; i < end; ++ i ) {
|
|
464
443
|
|
|
465
444
|
output += String.fromCharCode( array[ i ] );
|
|
@@ -471,7 +450,6 @@
|
|
|
471
450
|
}
|
|
472
451
|
|
|
473
452
|
}
|
|
474
|
-
|
|
475
453
|
const _fieldFunctions = {
|
|
476
454
|
type: function ( data ) {
|
|
477
455
|
|
|
@@ -483,13 +461,11 @@
|
|
|
483
461
|
case 'uint8_t':
|
|
484
462
|
this.__array = Uint8Array;
|
|
485
463
|
break;
|
|
486
|
-
|
|
487
464
|
case 'signed char':
|
|
488
465
|
case 'int8':
|
|
489
466
|
case 'int8_t':
|
|
490
467
|
this.__array = Int8Array;
|
|
491
468
|
break;
|
|
492
|
-
|
|
493
469
|
case 'short':
|
|
494
470
|
case 'short int':
|
|
495
471
|
case 'signed short':
|
|
@@ -498,7 +474,6 @@
|
|
|
498
474
|
case 'int16_t':
|
|
499
475
|
this.__array = Int16Array;
|
|
500
476
|
break;
|
|
501
|
-
|
|
502
477
|
case 'ushort':
|
|
503
478
|
case 'unsigned short':
|
|
504
479
|
case 'unsigned short int':
|
|
@@ -506,29 +481,24 @@
|
|
|
506
481
|
case 'uint16_t':
|
|
507
482
|
this.__array = Uint16Array;
|
|
508
483
|
break;
|
|
509
|
-
|
|
510
484
|
case 'int':
|
|
511
485
|
case 'signed int':
|
|
512
486
|
case 'int32':
|
|
513
487
|
case 'int32_t':
|
|
514
488
|
this.__array = Int32Array;
|
|
515
489
|
break;
|
|
516
|
-
|
|
517
490
|
case 'uint':
|
|
518
491
|
case 'unsigned int':
|
|
519
492
|
case 'uint32':
|
|
520
493
|
case 'uint32_t':
|
|
521
494
|
this.__array = Uint32Array;
|
|
522
495
|
break;
|
|
523
|
-
|
|
524
496
|
case 'float':
|
|
525
497
|
this.__array = Float32Array;
|
|
526
498
|
break;
|
|
527
|
-
|
|
528
499
|
case 'double':
|
|
529
500
|
this.__array = Float64Array;
|
|
530
501
|
break;
|
|
531
|
-
|
|
532
502
|
default:
|
|
533
503
|
throw new Error( 'Unsupported NRRD data type: ' + data );
|
|
534
504
|
|
|
@@ -558,13 +528,10 @@
|
|
|
558
528
|
return this.sizes = function () {
|
|
559
529
|
|
|
560
530
|
const _ref = data.split( /\s+/ );
|
|
561
|
-
|
|
562
531
|
const _results = [];
|
|
563
|
-
|
|
564
532
|
for ( let _i = 0, _len = _ref.length; _i < _len; _i ++ ) {
|
|
565
533
|
|
|
566
534
|
i = _ref[ _i ];
|
|
567
|
-
|
|
568
535
|
_results.push( parseInt( i, 10 ) );
|
|
569
536
|
|
|
570
537
|
}
|
|
@@ -591,21 +558,16 @@
|
|
|
591
558
|
return this.vectors = function () {
|
|
592
559
|
|
|
593
560
|
const _results = [];
|
|
594
|
-
|
|
595
561
|
for ( let _i = 0, _len = parts.length; _i < _len; _i ++ ) {
|
|
596
562
|
|
|
597
563
|
v = parts[ _i ];
|
|
598
|
-
|
|
599
564
|
_results.push( function () {
|
|
600
565
|
|
|
601
566
|
const _ref = v.slice( 1, - 1 ).split( /,/ );
|
|
602
|
-
|
|
603
567
|
const _results2 = [];
|
|
604
|
-
|
|
605
568
|
for ( let _j = 0, _len2 = _ref.length; _j < _len2; _j ++ ) {
|
|
606
569
|
|
|
607
570
|
f = _ref[ _j ];
|
|
608
|
-
|
|
609
571
|
_results2.push( parseFloat( f ) );
|
|
610
572
|
|
|
611
573
|
}
|
|
@@ -628,11 +590,9 @@
|
|
|
628
590
|
return this.spacings = function () {
|
|
629
591
|
|
|
630
592
|
const _results = [];
|
|
631
|
-
|
|
632
593
|
for ( let _i = 0, _len = parts.length; _i < _len; _i ++ ) {
|
|
633
594
|
|
|
634
595
|
f = parts[ _i ];
|
|
635
|
-
|
|
636
596
|
_results.push( parseFloat( f ) );
|
|
637
597
|
|
|
638
598
|
}
|