super-three 0.141.0 → 0.147.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -9
- package/build/three.cjs +2441 -1569
- package/build/three.js +2441 -1569
- package/build/three.min.js +1 -1
- package/build/three.module.js +2847 -1576
- package/examples/js/animation/AnimationClipCreator.js +0 -8
- package/examples/js/animation/CCDIKSolver.js +50 -67
- package/examples/js/animation/MMDAnimationHelper.js +66 -137
- package/examples/js/animation/MMDPhysics.js +71 -150
- package/examples/js/cameras/CinematicCamera.js +33 -22
- package/examples/js/controls/ArcballControls.js +149 -403
- package/examples/js/controls/DragControls.js +8 -33
- package/examples/js/controls/FirstPersonControls.js +32 -61
- package/examples/js/controls/FlyControls.js +29 -63
- package/examples/js/controls/OrbitControls.js +125 -103
- package/examples/js/controls/PointerLockControls.js +5 -22
- package/examples/js/controls/TrackballControls.js +33 -88
- package/examples/js/controls/TransformControls.js +101 -182
- 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 +6 -20
- package/examples/js/effects/AsciiEffect.js +32 -31
- package/examples/js/effects/OutlineEffect.js +30 -54
- package/examples/js/effects/ParallaxBarrierEffect.js +2 -15
- package/examples/js/effects/PeppersGhostEffect.js +14 -41
- package/examples/js/effects/StereoEffect.js +2 -6
- package/examples/js/environments/RoomEnvironment.js +32 -8
- package/examples/js/exporters/ColladaExporter.js +52 -78
- package/examples/js/exporters/DRACOExporter.js +22 -34
- package/examples/js/exporters/EXRExporter.js +15 -18
- package/examples/js/exporters/GLTFExporter.js +168 -345
- package/examples/js/exporters/MMDExporter.js +5 -12
- package/examples/js/exporters/OBJExporter.js +40 -52
- package/examples/js/exporters/PLYExporter.js +50 -57
- package/examples/js/exporters/STLExporter.js +5 -14
- package/examples/js/exporters/USDZExporter.js +119 -27
- package/examples/js/geometries/BoxLineGeometry.js +0 -1
- package/examples/js/geometries/ConvexGeometry.js +12 -7
- 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 +23 -17
- 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 +25 -39
- package/examples/js/interactive/InteractiveGroup.js +9 -14
- package/examples/js/interactive/SelectionBox.js +3 -70
- package/examples/js/interactive/SelectionHelper.js +2 -8
- package/examples/js/libs/ktx-parse.umd.js +1 -0
- package/examples/js/libs/meshopt_decoder.js +98 -32
- 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 +40 -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 +229 -359
- package/examples/js/loaders/DDSLoader.js +24 -25
- package/examples/js/loaders/DRACOLoader.js +30 -90
- package/examples/js/loaders/EXRLoader.js +69 -177
- package/examples/js/loaders/FBXLoader.js +294 -441
- package/examples/js/loaders/FontLoader.js +9 -31
- package/examples/js/loaders/GCodeLoader.js +15 -16
- package/examples/js/loaders/GLTFLoader.js +458 -739
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -17
- package/examples/js/loaders/KMZLoader.js +3 -7
- package/examples/js/loaders/KTXLoader.js +12 -30
- package/examples/js/loaders/LDrawLoader.js +309 -355
- 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/NRRDLoader.js +44 -84
- package/examples/js/loaders/OBJLoader.js +56 -77
- package/examples/js/loaders/PCDLoader.js +92 -42
- package/examples/js/loaders/PDBLoader.js +17 -13
- package/examples/js/loaders/PLYLoader.js +65 -51
- 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 +365 -236
- package/examples/js/loaders/TDSLoader.js +81 -118
- package/examples/js/loaders/TGALoader.js +39 -41
- package/examples/js/loaders/TIFFLoader.js +30 -0
- 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 +266 -354
- package/examples/js/loaders/VTKLoader.js +102 -119
- package/examples/js/loaders/XYZLoader.js +2 -4
- package/examples/js/loaders/lwo/IFFParser.js +55 -136
- package/examples/js/loaders/lwo/LWO2Parser.js +39 -89
- package/examples/js/loaders/lwo/LWO3Parser.js +38 -79
- package/examples/js/materials/MeshGouraudMaterial.js +387 -0
- package/examples/js/math/Capsule.js +0 -17
- package/examples/js/math/ColorConverter.js +3 -53
- package/examples/js/math/ConvexHull.js +185 -141
- 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 +47 -14
- 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 +173 -194
- package/examples/js/misc/VolumeSlice.js +91 -99
- package/examples/js/modifiers/CurveModifier.js +19 -21
- package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
- package/examples/js/modifiers/SimplifyModifier.js +57 -60
- package/examples/js/modifiers/TessellateModifier.js +2 -9
- package/examples/js/objects/GroundProjectedEnv.js +181 -0
- 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 +31 -22
- package/examples/js/objects/ReflectorForSSRPass.js +20 -25
- package/examples/js/objects/Refractor.js +61 -33
- package/examples/js/objects/ShadowMesh.js +6 -3
- 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 +49 -38
- package/examples/js/postprocessing/Pass.js +11 -14
- package/examples/js/postprocessing/RenderPass.js +3 -7
- package/examples/js/postprocessing/RenderPixelatedPass.js +215 -0
- 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 +4 -23
- package/examples/js/renderers/CSS3DRenderer.js +5 -26
- package/examples/js/renderers/Projector.js +31 -108
- 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 +4 -7
- package/examples/js/shaders/MMDToonShader.js +2 -4
- 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 +4 -7
- 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 +237 -171
- 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 +15 -36
- package/examples/js/utils/LDrawUtils.js +8 -11
- package/examples/js/utils/PackedPhongMaterial.js +6 -4
- package/examples/js/utils/SceneUtils.js +109 -14
- 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 +27 -3
- package/examples/jsm/animation/MMDPhysics.js +28 -22
- package/examples/jsm/capabilities/WebGPU.js +3 -1
- package/examples/jsm/controls/ArcballControls.js +17 -2
- package/examples/jsm/controls/FirstPersonControls.js +20 -27
- package/examples/jsm/controls/FlyControls.js +16 -24
- package/examples/jsm/controls/OrbitControls.js +44 -9
- package/examples/jsm/controls/PointerLockControls.js +0 -7
- package/examples/jsm/controls/TrackballControls.js +14 -5
- package/examples/jsm/controls/TransformControls.js +18 -16
- package/examples/jsm/csm/CSM.js +1 -0
- package/examples/jsm/csm/CSMHelper.js +30 -0
- package/examples/jsm/effects/AnaglyphEffect.js +2 -2
- package/examples/jsm/effects/OutlineEffect.js +4 -25
- package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
- package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
- package/examples/jsm/effects/StereoEffect.js +2 -2
- package/examples/jsm/environments/RoomEnvironment.js +23 -0
- package/examples/jsm/exporters/ColladaExporter.js +4 -13
- package/examples/jsm/exporters/DRACOExporter.js +0 -13
- package/examples/jsm/exporters/GLTFExporter.js +29 -110
- package/examples/jsm/exporters/KTX2Exporter.js +29 -29
- package/examples/jsm/exporters/OBJExporter.js +0 -18
- package/examples/jsm/exporters/PLYExporter.js +14 -22
- package/examples/jsm/exporters/STLExporter.js +1 -9
- package/examples/jsm/exporters/USDZExporter.js +107 -4
- package/examples/jsm/geometries/ConvexGeometry.js +1 -1
- package/examples/jsm/geometries/ParametricGeometry.js +0 -6
- package/examples/jsm/helpers/OctreeHelper.js +22 -8
- package/examples/jsm/helpers/VertexNormalsHelper.js +7 -1
- package/examples/jsm/helpers/VertexTangentsHelper.js +7 -0
- package/examples/jsm/helpers/ViewHelper.js +24 -0
- package/examples/jsm/interactive/HTMLMesh.js +14 -15
- package/examples/jsm/interactive/InteractiveGroup.js +4 -2
- package/examples/jsm/interactive/SelectionHelper.js +5 -3
- package/examples/jsm/libs/flow.module.js +610 -160
- package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
- package/examples/jsm/libs/utif.module.js +1579 -0
- package/examples/jsm/libs/zstddec.module.js +1 -0
- package/examples/jsm/lines/LineSegments2.js +4 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -2
- package/examples/jsm/loaders/ColladaLoader.js +29 -0
- package/examples/jsm/loaders/DRACOLoader.js +2 -28
- package/examples/jsm/loaders/EXRLoader.js +3 -13
- package/examples/jsm/loaders/FBXLoader.js +26 -3
- package/examples/jsm/loaders/FontLoader.js +3 -16
- package/examples/jsm/loaders/GLTFLoader.js +321 -464
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
- package/examples/jsm/loaders/KTX2Loader.js +254 -53
- package/examples/jsm/loaders/LDrawLoader.js +149 -87
- package/examples/jsm/loaders/LottieLoader.js +4 -2
- package/examples/jsm/loaders/MaterialXLoader.js +728 -0
- package/examples/jsm/loaders/OBJLoader.js +6 -14
- package/examples/jsm/loaders/PCDLoader.js +60 -14
- package/examples/jsm/loaders/PLYLoader.js +71 -19
- package/examples/jsm/loaders/RGBELoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +231 -17
- package/examples/jsm/loaders/TIFFLoader.js +36 -0
- package/examples/jsm/loaders/USDZLoader.js +633 -0
- package/examples/jsm/loaders/VRMLLoader.js +36 -26
- package/examples/jsm/loaders/VTKLoader.js +1 -1
- package/examples/jsm/loaders/lwo/LWO2Parser.js +6 -8
- package/examples/jsm/loaders/lwo/LWO3Parser.js +6 -8
- package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
- package/examples/jsm/math/ColorConverter.js +1 -49
- package/examples/jsm/math/ConvexHull.js +4 -4
- package/examples/jsm/math/Octree.js +1 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
- package/examples/jsm/misc/Volume.js +169 -171
- package/examples/jsm/misc/VolumeSlice.js +78 -80
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/node-editor/NodeEditor.js +91 -12
- package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
- package/examples/jsm/node-editor/core/BaseNode.js +10 -3
- package/examples/jsm/node-editor/display/BlendEditor.js +1 -1
- package/examples/jsm/node-editor/display/NormalMapEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/ColorEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/FloatEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/SliderEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/TextureEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector2Editor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector3Editor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector4Editor.js +1 -1
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +7 -10
- package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +1 -1
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +7 -10
- package/examples/jsm/node-editor/math/AngleEditor.js +4 -4
- package/examples/jsm/node-editor/math/DotEditor.js +1 -1
- package/examples/jsm/node-editor/math/InvertEditor.js +3 -3
- package/examples/jsm/node-editor/math/LimiterEditor.js +1 -1
- package/examples/jsm/node-editor/math/NormalizeEditor.js +1 -1
- package/examples/jsm/node-editor/math/OperatorEditor.js +1 -1
- package/examples/jsm/node-editor/math/PowerEditor.js +1 -1
- package/examples/jsm/node-editor/math/TrigonometryEditor.js +1 -1
- package/examples/jsm/node-editor/procedural/CheckerEditor.js +1 -1
- package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
- package/examples/jsm/node-editor/utils/JoinEditor.js +1 -1
- package/examples/jsm/node-editor/utils/OscillatorEditor.js +1 -1
- package/examples/jsm/node-editor/utils/PreviewEditor.js +7 -3
- package/examples/jsm/node-editor/utils/SplitEditor.js +1 -1
- package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
- package/examples/jsm/nodes/Nodes.js +70 -13
- package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +9 -5
- package/examples/jsm/nodes/accessors/NormalNode.js +8 -8
- package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +11 -5
- package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
- package/examples/jsm/nodes/accessors/SkinningNode.js +8 -1
- package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
- package/examples/jsm/nodes/core/AttributeNode.js +32 -9
- package/examples/jsm/nodes/core/CodeNode.js +3 -3
- package/examples/jsm/nodes/core/FunctionCallNode.js +20 -5
- package/examples/jsm/nodes/core/FunctionNode.js +2 -2
- package/examples/jsm/nodes/core/Node.js +15 -13
- package/examples/jsm/nodes/core/NodeBuilder.js +67 -18
- package/examples/jsm/nodes/core/NodeFrame.js +2 -2
- package/examples/jsm/nodes/core/NodeUtils.js +23 -1
- package/examples/jsm/nodes/core/NodeVarying.js +17 -0
- package/examples/jsm/nodes/core/VaryingNode.js +56 -0
- package/examples/jsm/nodes/core/constants.js +13 -13
- package/examples/jsm/nodes/display/BlendModeNode.js +85 -0
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +84 -0
- package/examples/jsm/nodes/display/NormalMapNode.js +19 -12
- package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
- package/examples/jsm/nodes/display/ViewportNode.js +106 -0
- package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +5 -5
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +3 -3
- package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +2 -2
- package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +3 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -7
- package/examples/jsm/nodes/lighting/LightingContextNode.js +4 -4
- package/examples/jsm/nodes/loaders/NodeLoader.js +2 -2
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +33 -0
- package/examples/jsm/nodes/materials/Materials.js +21 -31
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +4 -7
- package/examples/jsm/nodes/materials/NodeMaterial.js +11 -3
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +28 -17
- package/examples/jsm/nodes/materialx/DISCLAIMER.md +199 -0
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
- package/examples/jsm/nodes/materialx/lib/mx_hsv.js +56 -0
- package/examples/jsm/nodes/materialx/lib/mx_noise.js +617 -0
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
- package/examples/jsm/nodes/math/MathNode.js +7 -17
- package/examples/jsm/nodes/math/OperatorNode.js +16 -3
- package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +21 -6
- package/examples/jsm/nodes/procedural/CheckerNode.js +2 -2
- package/examples/jsm/nodes/shadernode/ShaderNode.js +40 -25
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +95 -68
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +49 -6
- package/examples/jsm/nodes/utils/ConvertNode.js +18 -12
- package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
- package/examples/jsm/nodes/utils/JoinNode.js +15 -9
- package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +3 -2
- package/examples/jsm/nodes/utils/OscNode.js +2 -2
- package/examples/jsm/nodes/utils/RemapNode.js +34 -0
- package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
- package/examples/jsm/nodes/utils/SplitNode.js +21 -5
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
- package/examples/jsm/nodes/utils/TimerNode.js +23 -3
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
- package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
- package/examples/jsm/objects/Reflector.js +12 -5
- package/examples/jsm/objects/ReflectorForSSRPass.js +3 -5
- package/examples/jsm/objects/Refractor.js +12 -6
- package/examples/jsm/objects/ShadowMesh.js +8 -2
- 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 +25 -3
- 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/CSS2DRenderer.js +2 -2
- package/examples/jsm/renderers/CSS3DRenderer.js +2 -2
- package/examples/jsm/renderers/Projector.js +2 -24
- package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +363 -231
- package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +7 -3
- 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 +68 -3
- package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +6 -0
- package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
- package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +17 -19
- package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +16 -14
- package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +113 -93
- package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +5 -3
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +63 -36
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
- package/examples/jsm/shaders/LuminosityShader.js +1 -1
- package/examples/jsm/shaders/MMDToonShader.js +2 -4
- package/examples/jsm/shaders/ToneMapShader.js +1 -1
- package/examples/jsm/shaders/VelocityShader.js +128 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +176 -43
- package/examples/jsm/utils/GeometryUtils.js +17 -25
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
- package/examples/jsm/utils/SceneUtils.js +117 -12
- package/examples/jsm/webxr/OculusHandModel.js +3 -2
- package/examples/jsm/webxr/OculusHandPointerModel.js +6 -1
- package/examples/jsm/webxr/VRButton.js +1 -7
- package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
- package/package.json +22 -18
- package/src/Three.Legacy.js +262 -36
- package/src/Three.js +4 -2
- package/src/animation/AnimationAction.js +6 -5
- package/src/animation/AnimationClip.js +1 -1
- package/src/animation/AnimationMixer.js +1 -1
- package/src/animation/AnimationUtils.js +204 -199
- package/src/animation/KeyframeTrack.js +1 -1
- package/src/animation/PropertyBinding.js +31 -5
- package/src/audio/AudioContext.js +5 -5
- package/src/cameras/CubeCamera.js +14 -21
- package/src/constants.js +2 -4
- package/src/core/BufferAttribute.js +81 -111
- package/src/core/BufferGeometry.js +3 -41
- package/src/core/InstancedBufferAttribute.js +0 -10
- package/src/core/InstancedBufferGeometry.js +1 -7
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +57 -8
- package/src/core/Object3D.js +22 -5
- package/src/core/Uniform.js +0 -7
- package/src/core/UniformsGroup.js +92 -0
- package/src/extras/DataUtils.js +104 -88
- package/src/extras/Earcut.js +67 -67
- package/src/extras/core/Path.js +1 -0
- package/src/extras/core/ShapePath.js +1 -4
- package/src/extras/curves/CatmullRomCurve3.js +4 -2
- package/src/geometries/BoxGeometry.js +1 -1
- package/src/geometries/CapsuleGeometry.js +1 -1
- package/src/geometries/CircleGeometry.js +1 -1
- package/src/geometries/ConeGeometry.js +1 -1
- package/src/geometries/CylinderGeometry.js +2 -1
- package/src/geometries/DodecahedronGeometry.js +1 -1
- package/src/geometries/EdgesGeometry.js +5 -4
- package/src/geometries/ExtrudeGeometry.js +2 -11
- package/src/geometries/IcosahedronGeometry.js +1 -1
- package/src/geometries/LatheGeometry.js +2 -2
- package/src/geometries/OctahedronGeometry.js +1 -1
- package/src/geometries/PlaneGeometry.js +2 -1
- package/src/geometries/PolyhedronGeometry.js +2 -2
- package/src/geometries/RingGeometry.js +1 -1
- package/src/geometries/ShapeGeometry.js +3 -2
- package/src/geometries/SphereGeometry.js +2 -1
- package/src/geometries/TetrahedronGeometry.js +1 -1
- package/src/geometries/TorusGeometry.js +2 -1
- package/src/geometries/TorusKnotGeometry.js +2 -1
- package/src/geometries/TubeGeometry.js +2 -1
- package/src/geometries/WireframeGeometry.js +1 -0
- package/src/helpers/ArrowHelper.js +9 -0
- package/src/helpers/Box3Helper.js +7 -0
- package/src/helpers/BoxHelper.js +7 -1
- package/src/helpers/CameraHelper.js +97 -38
- package/src/helpers/DirectionalLightHelper.js +6 -1
- package/src/helpers/GridHelper.js +7 -0
- package/src/helpers/HemisphereLightHelper.js +5 -1
- package/src/helpers/PlaneHelper.js +15 -9
- package/src/helpers/PointLightHelper.js +2 -1
- package/src/helpers/PolarGridHelper.js +25 -14
- package/src/helpers/SkeletonHelper.js +7 -0
- package/src/helpers/SpotLightHelper.js +5 -2
- package/src/lights/LightShadow.js +1 -2
- package/src/lights/PointLight.js +2 -2
- package/src/lights/SpotLight.js +4 -2
- package/src/loaders/FileLoader.js +16 -2
- package/src/loaders/LoadingManager.js +1 -1
- package/src/loaders/MaterialLoader.js +49 -7
- package/src/loaders/ObjectLoader.js +9 -42
- package/src/materials/Material.js +2 -34
- package/src/materials/Materials.js +0 -27
- package/src/materials/MeshLambertMaterial.js +28 -1
- package/src/materials/MeshPhysicalMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +3 -7
- package/src/math/Color.js +8 -18
- package/src/math/MathUtils.js +1 -7
- package/src/math/Matrix3.js +54 -25
- package/src/math/Matrix4.js +3 -27
- package/src/math/Quaternion.js +1 -21
- package/src/math/Ray.js +2 -5
- package/src/math/Sphere.js +36 -21
- package/src/math/Vector2.js +4 -24
- package/src/math/Vector3.js +7 -46
- package/src/math/Vector4.js +4 -24
- 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 +119 -69
- package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +12 -12
- package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -5
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +24 -24
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
- package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +113 -99
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +34 -13
- package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +28 -0
- package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +3 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +13 -1
- package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -4
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -4
- package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +7 -2
- 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/meshbasic.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +22 -50
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +0 -3
- package/src/renderers/shaders/ShaderLib.js +50 -36
- package/src/renderers/shaders/UniformsLib.js +13 -12
- package/src/renderers/shaders/UniformsUtils.js +29 -0
- package/src/renderers/webgl/WebGLAttributes.js +2 -0
- package/src/renderers/webgl/WebGLBackground.js +17 -9
- package/src/renderers/webgl/WebGLLights.js +37 -17
- package/src/renderers/webgl/WebGLMaterials.js +2 -1
- package/src/renderers/webgl/WebGLMorphtargets.js +0 -20
- package/src/renderers/webgl/WebGLProgram.js +6 -11
- package/src/renderers/webgl/WebGLPrograms.js +30 -26
- package/src/renderers/webgl/WebGLRenderLists.js +5 -4
- package/src/renderers/webgl/WebGLRenderStates.js +5 -4
- package/src/renderers/webgl/WebGLShaderCache.js +9 -6
- package/src/renderers/webgl/WebGLShadowMap.js +13 -16
- package/src/renderers/webgl/WebGLState.js +125 -41
- package/src/renderers/webgl/WebGLTextures.js +94 -39
- package/src/renderers/webgl/WebGLUniforms.js +156 -28
- package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
- package/src/renderers/webgl/WebGLUtils.js +3 -1
- package/src/renderers/webvr/WebVRManager.js +42 -9
- package/src/renderers/webvr/WebVRUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +91 -50
- package/src/renderers/webxr/WebXRManager.js +127 -34
- package/src/scenes/Scene.js +24 -3
- package/src/textures/CompressedArrayTexture.js +18 -0
- package/src/textures/Source.js +1 -1
- package/src/textures/Texture.js +2 -1
- package/src/utils.js +1 -1
- package/examples/js/controls/experimental/CameraControls.js +0 -1048
- package/examples/js/libs/lottie_canvas.js +0 -12751
- package/examples/js/loaders/KTX2Loader.js +0 -558
- package/examples/js/shaders/PixelShader.js +0 -51
- package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
- package/examples/jsm/nodes/accessors/ReflectNode.js +0 -70
- package/examples/jsm/nodes/core/NodeVary.js +0 -14
- package/examples/jsm/nodes/core/VaryNode.js +0 -54
- package/examples/jsm/package.json +0 -3
- package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
- package/examples/jsm/shaders/PixelShader.js +0 -44
- package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
|
@@ -12,205 +12,186 @@
|
|
|
12
12
|
* @param {string} type The type of data (uint8, uint16, ...)
|
|
13
13
|
* @param {ArrayBuffer} arrayBuffer The buffer with volume data
|
|
14
14
|
*/
|
|
15
|
+
class Volume {
|
|
16
|
+
|
|
17
|
+
constructor( xLength, yLength, zLength, type, arrayBuffer ) {
|
|
18
|
+
|
|
19
|
+
if ( xLength !== undefined ) {
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @member {number} xLength Width of the volume in the IJK coordinate system
|
|
23
|
+
*/
|
|
24
|
+
this.xLength = Number( xLength ) || 1;
|
|
25
|
+
/**
|
|
26
|
+
* @member {number} yLength Height of the volume in the IJK coordinate system
|
|
27
|
+
*/
|
|
28
|
+
this.yLength = Number( yLength ) || 1;
|
|
29
|
+
/**
|
|
30
|
+
* @member {number} zLength Depth of the volume in the IJK coordinate system
|
|
31
|
+
*/
|
|
32
|
+
this.zLength = Number( zLength ) || 1;
|
|
33
|
+
/**
|
|
34
|
+
* @member {Array<string>} The order of the Axis dictated by the NRRD header
|
|
35
|
+
*/
|
|
36
|
+
this.axisOrder = [ 'x', 'y', 'z' ];
|
|
37
|
+
/**
|
|
38
|
+
* @member {TypedArray} data Data of the volume
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
switch ( type ) {
|
|
42
|
+
|
|
43
|
+
case 'Uint8':
|
|
44
|
+
case 'uint8':
|
|
45
|
+
case 'uchar':
|
|
46
|
+
case 'unsigned char':
|
|
47
|
+
case 'uint8_t':
|
|
48
|
+
this.data = new Uint8Array( arrayBuffer );
|
|
49
|
+
break;
|
|
50
|
+
case 'Int8':
|
|
51
|
+
case 'int8':
|
|
52
|
+
case 'signed char':
|
|
53
|
+
case 'int8_t':
|
|
54
|
+
this.data = new Int8Array( arrayBuffer );
|
|
55
|
+
break;
|
|
56
|
+
case 'Int16':
|
|
57
|
+
case 'int16':
|
|
58
|
+
case 'short':
|
|
59
|
+
case 'short int':
|
|
60
|
+
case 'signed short':
|
|
61
|
+
case 'signed short int':
|
|
62
|
+
case 'int16_t':
|
|
63
|
+
this.data = new Int16Array( arrayBuffer );
|
|
64
|
+
break;
|
|
65
|
+
case 'Uint16':
|
|
66
|
+
case 'uint16':
|
|
67
|
+
case 'ushort':
|
|
68
|
+
case 'unsigned short':
|
|
69
|
+
case 'unsigned short int':
|
|
70
|
+
case 'uint16_t':
|
|
71
|
+
this.data = new Uint16Array( arrayBuffer );
|
|
72
|
+
break;
|
|
73
|
+
case 'Int32':
|
|
74
|
+
case 'int32':
|
|
75
|
+
case 'int':
|
|
76
|
+
case 'signed int':
|
|
77
|
+
case 'int32_t':
|
|
78
|
+
this.data = new Int32Array( arrayBuffer );
|
|
79
|
+
break;
|
|
80
|
+
case 'Uint32':
|
|
81
|
+
case 'uint32':
|
|
82
|
+
case 'uint':
|
|
83
|
+
case 'unsigned int':
|
|
84
|
+
case 'uint32_t':
|
|
85
|
+
this.data = new Uint32Array( arrayBuffer );
|
|
86
|
+
break;
|
|
87
|
+
case 'longlong':
|
|
88
|
+
case 'long long':
|
|
89
|
+
case 'long long int':
|
|
90
|
+
case 'signed long long':
|
|
91
|
+
case 'signed long long int':
|
|
92
|
+
case 'int64':
|
|
93
|
+
case 'int64_t':
|
|
94
|
+
case 'ulonglong':
|
|
95
|
+
case 'unsigned long long':
|
|
96
|
+
case 'unsigned long long int':
|
|
97
|
+
case 'uint64':
|
|
98
|
+
case 'uint64_t':
|
|
99
|
+
throw new Error( 'Error in Volume constructor : this type is not supported in JavaScript' );
|
|
100
|
+
break;
|
|
101
|
+
case 'Float32':
|
|
102
|
+
case 'float32':
|
|
103
|
+
case 'float':
|
|
104
|
+
this.data = new Float32Array( arrayBuffer );
|
|
105
|
+
break;
|
|
106
|
+
case 'Float64':
|
|
107
|
+
case 'float64':
|
|
108
|
+
case 'double':
|
|
109
|
+
this.data = new Float64Array( arrayBuffer );
|
|
110
|
+
break;
|
|
111
|
+
default:
|
|
112
|
+
this.data = new Uint8Array( arrayBuffer );
|
|
15
113
|
|
|
16
|
-
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if ( this.data.length !== this.xLength * this.yLength * this.zLength ) {
|
|
117
|
+
|
|
118
|
+
throw new Error( 'Error in Volume constructor, lengths are not matching arrayBuffer size' );
|
|
17
119
|
|
|
18
|
-
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
}
|
|
19
123
|
|
|
20
124
|
/**
|
|
21
|
-
* @member {
|
|
125
|
+
* @member {Array} spacing Spacing to apply to the volume from IJK to RAS coordinate system
|
|
22
126
|
*/
|
|
23
|
-
this.
|
|
127
|
+
this.spacing = [ 1, 1, 1 ];
|
|
24
128
|
/**
|
|
25
|
-
* @member {
|
|
129
|
+
* @member {Array} offset Offset of the volume in the RAS coordinate system
|
|
26
130
|
*/
|
|
27
|
-
|
|
28
|
-
this.yLength = Number( yLength ) || 1;
|
|
131
|
+
this.offset = [ 0, 0, 0 ];
|
|
29
132
|
/**
|
|
30
|
-
* @member {
|
|
133
|
+
* @member {Martrix3} matrix The IJK to RAS matrix
|
|
31
134
|
*/
|
|
32
|
-
|
|
33
|
-
this.
|
|
135
|
+
this.matrix = new THREE.Matrix3();
|
|
136
|
+
this.matrix.identity();
|
|
34
137
|
/**
|
|
35
|
-
* @member {
|
|
138
|
+
* @member {Martrix3} inverseMatrix The RAS to IJK matrix
|
|
36
139
|
*/
|
|
37
|
-
|
|
38
|
-
this.axisOrder = [ 'x', 'y', 'z' ];
|
|
39
140
|
/**
|
|
40
|
-
* @member {
|
|
141
|
+
* @member {number} lowerThreshold The voxels with values under this threshold won't appear in the slices.
|
|
142
|
+
* If changed, geometryNeedsUpdate is automatically set to true on all the slices associated to this volume
|
|
41
143
|
*/
|
|
144
|
+
let lowerThreshold = - Infinity;
|
|
145
|
+
Object.defineProperty( this, 'lowerThreshold', {
|
|
146
|
+
get: function () {
|
|
42
147
|
|
|
43
|
-
|
|
148
|
+
return lowerThreshold;
|
|
44
149
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
case 'uchar':
|
|
48
|
-
case 'unsigned char':
|
|
49
|
-
case 'uint8_t':
|
|
50
|
-
this.data = new Uint8Array( arrayBuffer );
|
|
51
|
-
break;
|
|
150
|
+
},
|
|
151
|
+
set: function ( value ) {
|
|
52
152
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
case 'signed char':
|
|
56
|
-
case 'int8_t':
|
|
57
|
-
this.data = new Int8Array( arrayBuffer );
|
|
58
|
-
break;
|
|
153
|
+
lowerThreshold = value;
|
|
154
|
+
this.sliceList.forEach( function ( slice ) {
|
|
59
155
|
|
|
60
|
-
|
|
61
|
-
case 'int16':
|
|
62
|
-
case 'short':
|
|
63
|
-
case 'short int':
|
|
64
|
-
case 'signed short':
|
|
65
|
-
case 'signed short int':
|
|
66
|
-
case 'int16_t':
|
|
67
|
-
this.data = new Int16Array( arrayBuffer );
|
|
68
|
-
break;
|
|
156
|
+
slice.geometryNeedsUpdate = true;
|
|
69
157
|
|
|
70
|
-
|
|
71
|
-
case 'uint16':
|
|
72
|
-
case 'ushort':
|
|
73
|
-
case 'unsigned short':
|
|
74
|
-
case 'unsigned short int':
|
|
75
|
-
case 'uint16_t':
|
|
76
|
-
this.data = new Uint16Array( arrayBuffer );
|
|
77
|
-
break;
|
|
158
|
+
} );
|
|
78
159
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
160
|
+
}
|
|
161
|
+
} );
|
|
162
|
+
/**
|
|
163
|
+
* @member {number} upperThreshold The voxels with values over this threshold won't appear in the slices.
|
|
164
|
+
* If changed, geometryNeedsUpdate is automatically set to true on all the slices associated to this volume
|
|
165
|
+
*/
|
|
166
|
+
let upperThreshold = Infinity;
|
|
167
|
+
Object.defineProperty( this, 'upperThreshold', {
|
|
168
|
+
get: function () {
|
|
86
169
|
|
|
87
|
-
|
|
88
|
-
case 'uint32':
|
|
89
|
-
case 'uint':
|
|
90
|
-
case 'unsigned int':
|
|
91
|
-
case 'uint32_t':
|
|
92
|
-
this.data = new Uint32Array( arrayBuffer );
|
|
93
|
-
break;
|
|
170
|
+
return upperThreshold;
|
|
94
171
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
case 'long long int':
|
|
98
|
-
case 'signed long long':
|
|
99
|
-
case 'signed long long int':
|
|
100
|
-
case 'int64':
|
|
101
|
-
case 'int64_t':
|
|
102
|
-
case 'ulonglong':
|
|
103
|
-
case 'unsigned long long':
|
|
104
|
-
case 'unsigned long long int':
|
|
105
|
-
case 'uint64':
|
|
106
|
-
case 'uint64_t':
|
|
107
|
-
throw new Error( 'Error in Volume constructor : this type is not supported in JavaScript' );
|
|
108
|
-
break;
|
|
172
|
+
},
|
|
173
|
+
set: function ( value ) {
|
|
109
174
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
case 'float':
|
|
113
|
-
this.data = new Float32Array( arrayBuffer );
|
|
114
|
-
break;
|
|
175
|
+
upperThreshold = value;
|
|
176
|
+
this.sliceList.forEach( function ( slice ) {
|
|
115
177
|
|
|
116
|
-
|
|
117
|
-
case 'float64':
|
|
118
|
-
case 'double':
|
|
119
|
-
this.data = new Float64Array( arrayBuffer );
|
|
120
|
-
break;
|
|
178
|
+
slice.geometryNeedsUpdate = true;
|
|
121
179
|
|
|
122
|
-
|
|
123
|
-
this.data = new Uint8Array( arrayBuffer );
|
|
180
|
+
} );
|
|
124
181
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
if ( this.data.length !== this.xLength * this.yLength * this.zLength ) {
|
|
182
|
+
}
|
|
183
|
+
} );
|
|
128
184
|
|
|
129
|
-
|
|
185
|
+
/**
|
|
186
|
+
* @member {Array} sliceList The list of all the slices associated to this volume
|
|
187
|
+
*/
|
|
188
|
+
this.sliceList = [];
|
|
130
189
|
|
|
131
|
-
|
|
190
|
+
/**
|
|
191
|
+
* @member {Array} RASDimensions This array holds the dimensions of the volume in the RAS space
|
|
192
|
+
*/
|
|
132
193
|
|
|
133
194
|
}
|
|
134
|
-
/**
|
|
135
|
-
* @member {Array} spacing Spacing to apply to the volume from IJK to RAS coordinate system
|
|
136
|
-
*/
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
this.spacing = [ 1, 1, 1 ];
|
|
140
|
-
/**
|
|
141
|
-
* @member {Array} offset Offset of the volume in the RAS coordinate system
|
|
142
|
-
*/
|
|
143
|
-
|
|
144
|
-
this.offset = [ 0, 0, 0 ];
|
|
145
|
-
/**
|
|
146
|
-
* @member {Martrix3} matrix The IJK to RAS matrix
|
|
147
|
-
*/
|
|
148
|
-
|
|
149
|
-
this.matrix = new THREE.Matrix3();
|
|
150
|
-
this.matrix.identity();
|
|
151
|
-
/**
|
|
152
|
-
* @member {Martrix3} inverseMatrix The RAS to IJK matrix
|
|
153
|
-
*/
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* @member {number} lowerThreshold The voxels with values under this threshold won't appear in the slices.
|
|
157
|
-
* If changed, geometryNeedsUpdate is automatically set to true on all the slices associated to this volume
|
|
158
|
-
*/
|
|
159
|
-
|
|
160
|
-
let lowerThreshold = - Infinity;
|
|
161
|
-
Object.defineProperty( this, 'lowerThreshold', {
|
|
162
|
-
get: function () {
|
|
163
|
-
|
|
164
|
-
return lowerThreshold;
|
|
165
|
-
|
|
166
|
-
},
|
|
167
|
-
set: function ( value ) {
|
|
168
|
-
|
|
169
|
-
lowerThreshold = value;
|
|
170
|
-
this.sliceList.forEach( function ( slice ) {
|
|
171
|
-
|
|
172
|
-
slice.geometryNeedsUpdate = true;
|
|
173
|
-
|
|
174
|
-
} );
|
|
175
|
-
|
|
176
|
-
}
|
|
177
|
-
} );
|
|
178
|
-
/**
|
|
179
|
-
* @member {number} upperThreshold The voxels with values over this threshold won't appear in the slices.
|
|
180
|
-
* If changed, geometryNeedsUpdate is automatically set to true on all the slices associated to this volume
|
|
181
|
-
*/
|
|
182
|
-
|
|
183
|
-
let upperThreshold = Infinity;
|
|
184
|
-
Object.defineProperty( this, 'upperThreshold', {
|
|
185
|
-
get: function () {
|
|
186
|
-
|
|
187
|
-
return upperThreshold;
|
|
188
|
-
|
|
189
|
-
},
|
|
190
|
-
set: function ( value ) {
|
|
191
|
-
|
|
192
|
-
upperThreshold = value;
|
|
193
|
-
this.sliceList.forEach( function ( slice ) {
|
|
194
|
-
|
|
195
|
-
slice.geometryNeedsUpdate = true;
|
|
196
|
-
|
|
197
|
-
} );
|
|
198
|
-
|
|
199
|
-
}
|
|
200
|
-
} );
|
|
201
|
-
/**
|
|
202
|
-
* @member {Array} sliceList The list of all the slices associated to this volume
|
|
203
|
-
*/
|
|
204
|
-
|
|
205
|
-
this.sliceList = [];
|
|
206
|
-
/**
|
|
207
|
-
* @member {Array} RASDimensions This array holds the dimensions of the volume in the RAS space
|
|
208
|
-
*/
|
|
209
|
-
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
Volume.prototype = {
|
|
213
|
-
constructor: Volume,
|
|
214
195
|
|
|
215
196
|
/**
|
|
216
197
|
* @member {Function} getData Shortcut for data[access(i,j,k)]
|
|
@@ -220,11 +201,11 @@
|
|
|
220
201
|
* @param {number} k Third coordinate
|
|
221
202
|
* @returns {number} value in the data array
|
|
222
203
|
*/
|
|
223
|
-
getData
|
|
204
|
+
getData( i, j, k ) {
|
|
224
205
|
|
|
225
206
|
return this.data[ k * this.xLength * this.yLength + j * this.xLength + i ];
|
|
226
207
|
|
|
227
|
-
}
|
|
208
|
+
}
|
|
228
209
|
|
|
229
210
|
/**
|
|
230
211
|
* @member {Function} access compute the index in the data array corresponding to the given coordinates in IJK system
|
|
@@ -234,11 +215,11 @@
|
|
|
234
215
|
* @param {number} k Third coordinate
|
|
235
216
|
* @returns {number} index
|
|
236
217
|
*/
|
|
237
|
-
access
|
|
218
|
+
access( i, j, k ) {
|
|
238
219
|
|
|
239
220
|
return k * this.xLength * this.yLength + j * this.xLength + i;
|
|
240
221
|
|
|
241
|
-
}
|
|
222
|
+
}
|
|
242
223
|
|
|
243
224
|
/**
|
|
244
225
|
* @member {Function} reverseAccess Retrieve the IJK coordinates of the voxel corresponding of the given index in the data
|
|
@@ -246,14 +227,14 @@
|
|
|
246
227
|
* @param {number} index index of the voxel
|
|
247
228
|
* @returns {Array} [x,y,z]
|
|
248
229
|
*/
|
|
249
|
-
reverseAccess
|
|
230
|
+
reverseAccess( index ) {
|
|
250
231
|
|
|
251
232
|
const z = Math.floor( index / ( this.yLength * this.xLength ) );
|
|
252
233
|
const y = Math.floor( ( index - z * this.yLength * this.xLength ) / this.xLength );
|
|
253
234
|
const x = index - z * this.yLength * this.xLength - y * this.xLength;
|
|
254
235
|
return [ x, y, z ];
|
|
255
236
|
|
|
256
|
-
}
|
|
237
|
+
}
|
|
257
238
|
|
|
258
239
|
/**
|
|
259
240
|
* @member {Function} map Apply a function to all the voxels, be careful, the value will be replaced
|
|
@@ -265,11 +246,10 @@
|
|
|
265
246
|
* @param {Object} context You can specify a context in which call the function, default if this Volume
|
|
266
247
|
* @returns {Volume} this
|
|
267
248
|
*/
|
|
268
|
-
map
|
|
249
|
+
map( functionToMap, context ) {
|
|
269
250
|
|
|
270
251
|
const length = this.data.length;
|
|
271
252
|
context = context || this;
|
|
272
|
-
|
|
273
253
|
for ( let i = 0; i < length; i ++ ) {
|
|
274
254
|
|
|
275
255
|
this.data[ i ] = functionToMap.call( context, this.data[ i ], i, this.data );
|
|
@@ -278,7 +258,7 @@
|
|
|
278
258
|
|
|
279
259
|
return this;
|
|
280
260
|
|
|
281
|
-
}
|
|
261
|
+
}
|
|
282
262
|
|
|
283
263
|
/**
|
|
284
264
|
* @member {Function} extractPerpendicularPlane Compute the orientation of the slice and returns all the information relative to the geometry such as sliceAccess, the plane matrix (orientation and position in RAS coordinate) and the dimensions of the plane in both coordinate system.
|
|
@@ -287,7 +267,7 @@
|
|
|
287
267
|
* @param {number} index the index of the slice
|
|
288
268
|
* @returns {Object} an object containing all the usefull information on the geometry of the slice
|
|
289
269
|
*/
|
|
290
|
-
extractPerpendicularPlane
|
|
270
|
+
extractPerpendicularPlane( axis, RASIndex ) {
|
|
291
271
|
|
|
292
272
|
let firstSpacing, secondSpacing, positionOffset, IJKIndex;
|
|
293
273
|
const axisInIJK = new THREE.Vector3(),
|
|
@@ -296,7 +276,6 @@
|
|
|
296
276
|
planeMatrix = new THREE.Matrix4().identity(),
|
|
297
277
|
volume = this;
|
|
298
278
|
const dimensions = new THREE.Vector3( this.xLength, this.yLength, this.zLength );
|
|
299
|
-
|
|
300
279
|
switch ( axis ) {
|
|
301
280
|
|
|
302
281
|
case 'x':
|
|
@@ -310,7 +289,6 @@
|
|
|
310
289
|
positionOffset = ( volume.RASDimensions[ 0 ] - 1 ) / 2;
|
|
311
290
|
planeMatrix.setPosition( new THREE.Vector3( RASIndex - positionOffset, 0, 0 ) );
|
|
312
291
|
break;
|
|
313
|
-
|
|
314
292
|
case 'y':
|
|
315
293
|
axisInIJK.set( 0, 1, 0 );
|
|
316
294
|
firstDirection.set( 1, 0, 0 );
|
|
@@ -322,7 +300,6 @@
|
|
|
322
300
|
positionOffset = ( volume.RASDimensions[ 1 ] - 1 ) / 2;
|
|
323
301
|
planeMatrix.setPosition( new THREE.Vector3( 0, RASIndex - positionOffset, 0 ) );
|
|
324
302
|
break;
|
|
325
|
-
|
|
326
303
|
case 'z':
|
|
327
304
|
default:
|
|
328
305
|
axisInIJK.set( 0, 0, 1 );
|
|
@@ -363,12 +340,13 @@
|
|
|
363
340
|
return Math.abs( x.dot( base[ 2 ] ) ) > 0.9;
|
|
364
341
|
|
|
365
342
|
} );
|
|
366
|
-
|
|
367
343
|
function sliceAccess( i, j ) {
|
|
368
344
|
|
|
369
345
|
const si = iDirection === axisInIJK ? IJKIndex : iDirection.arglet === 'i' ? i : j;
|
|
370
346
|
const sj = jDirection === axisInIJK ? IJKIndex : jDirection.arglet === 'i' ? i : j;
|
|
371
|
-
const sk = kDirection === axisInIJK ? IJKIndex : kDirection.arglet === 'i' ? i : j;
|
|
347
|
+
const sk = kDirection === axisInIJK ? IJKIndex : kDirection.arglet === 'i' ? i : j;
|
|
348
|
+
|
|
349
|
+
// invert indices if necessary
|
|
372
350
|
|
|
373
351
|
const accessI = iDirection.dot( base[ 0 ] ) > 0 ? si : volume.xLength - 1 - si;
|
|
374
352
|
const accessJ = jDirection.dot( base[ 1 ] ) > 0 ? sj : volume.yLength - 1 - sj;
|
|
@@ -386,7 +364,7 @@
|
|
|
386
364
|
planeHeight: planeHeight
|
|
387
365
|
};
|
|
388
366
|
|
|
389
|
-
}
|
|
367
|
+
}
|
|
390
368
|
|
|
391
369
|
/**
|
|
392
370
|
* @member {Function} extractSlice Returns a slice corresponding to the given axis and index
|
|
@@ -396,13 +374,13 @@
|
|
|
396
374
|
* @param {number} index the index of the slice
|
|
397
375
|
* @returns {VolumeSlice} the extracted slice
|
|
398
376
|
*/
|
|
399
|
-
extractSlice
|
|
377
|
+
extractSlice( axis, index ) {
|
|
400
378
|
|
|
401
379
|
const slice = new THREE.VolumeSlice( this, index, axis );
|
|
402
380
|
this.sliceList.push( slice );
|
|
403
381
|
return slice;
|
|
404
382
|
|
|
405
|
-
}
|
|
383
|
+
}
|
|
406
384
|
|
|
407
385
|
/**
|
|
408
386
|
* @member {Function} repaintAllSlices Call repaint on all the slices extracted from this volume
|
|
@@ -410,7 +388,7 @@
|
|
|
410
388
|
* @memberof Volume
|
|
411
389
|
* @returns {Volume} this
|
|
412
390
|
*/
|
|
413
|
-
repaintAllSlices
|
|
391
|
+
repaintAllSlices() {
|
|
414
392
|
|
|
415
393
|
this.sliceList.forEach( function ( slice ) {
|
|
416
394
|
|
|
@@ -419,21 +397,21 @@
|
|
|
419
397
|
} );
|
|
420
398
|
return this;
|
|
421
399
|
|
|
422
|
-
}
|
|
400
|
+
}
|
|
423
401
|
|
|
424
402
|
/**
|
|
425
403
|
* @member {Function} computeMinMax Compute the minimum and the maximum of the data in the volume
|
|
426
404
|
* @memberof Volume
|
|
427
405
|
* @returns {Array} [min,max]
|
|
428
406
|
*/
|
|
429
|
-
computeMinMax
|
|
407
|
+
computeMinMax() {
|
|
430
408
|
|
|
431
409
|
let min = Infinity;
|
|
432
|
-
let max = - Infinity;
|
|
410
|
+
let max = - Infinity;
|
|
433
411
|
|
|
412
|
+
// buffer the length
|
|
434
413
|
const datasize = this.data.length;
|
|
435
414
|
let i = 0;
|
|
436
|
-
|
|
437
415
|
for ( i = 0; i < datasize; i ++ ) {
|
|
438
416
|
|
|
439
417
|
if ( ! isNaN( this.data[ i ] ) ) {
|
|
@@ -451,7 +429,8 @@
|
|
|
451
429
|
return [ min, max ];
|
|
452
430
|
|
|
453
431
|
}
|
|
454
|
-
|
|
432
|
+
|
|
433
|
+
}
|
|
455
434
|
|
|
456
435
|
THREE.Volume = Volume;
|
|
457
436
|
|