three-stdlib 2.24.2 → 2.25.1
Sign up to get free protection for your applications and to get access to all the features.
- package/controls/OrbitControls.d.ts +2 -0
- package/index.cjs +116401 -611
- package/index.js +116037 -263
- package/package.json +17 -4
- package/_polyfill/CapsuleGeometry.cjs +0 -22
- package/_polyfill/CapsuleGeometry.js +0 -22
- package/_polyfill/CompressedArrayTexture.cjs +0 -12
- package/_polyfill/CompressedArrayTexture.js +0 -12
- package/_polyfill/Data3DTexture.cjs +0 -17
- package/_polyfill/Data3DTexture.js +0 -17
- package/animation/AnimationClipCreator.cjs +0 -56
- package/animation/AnimationClipCreator.js +0 -56
- package/animation/CCDIKSolver.cjs +0 -269
- package/animation/CCDIKSolver.js +0 -269
- package/animation/MMDAnimationHelper.cjs +0 -688
- package/animation/MMDAnimationHelper.js +0 -688
- package/animation/MMDPhysics.cjs +0 -830
- package/animation/MMDPhysics.js +0 -830
- package/cameras/CinematicCamera.cjs +0 -131
- package/cameras/CinematicCamera.js +0 -131
- package/controls/ArcballControls.cjs +0 -2033
- package/controls/ArcballControls.js +0 -2033
- package/controls/DeviceOrientationControls.cjs +0 -85
- package/controls/DeviceOrientationControls.js +0 -85
- package/controls/DragControls.cjs +0 -182
- package/controls/DragControls.js +0 -182
- package/controls/FirstPersonControls.cjs +0 -229
- package/controls/FirstPersonControls.js +0 -229
- package/controls/FlyControls.cjs +0 -248
- package/controls/FlyControls.js +0 -248
- package/controls/OrbitControls.cjs +0 -787
- package/controls/OrbitControls.js +0 -787
- package/controls/PointerLockControls.cjs +0 -103
- package/controls/PointerLockControls.js +0 -103
- package/controls/TrackballControls.cjs +0 -502
- package/controls/TrackballControls.js +0 -502
- package/controls/TransformControls.cjs +0 -1089
- package/controls/TransformControls.js +0 -1089
- package/controls/experimental/CameraControls.cjs +0 -736
- package/controls/experimental/CameraControls.js +0 -736
- package/csm/CSM.cjs +0 -244
- package/csm/CSM.js +0 -244
- package/csm/CSMFrustum.cjs +0 -75
- package/csm/CSMFrustum.js +0 -75
- package/csm/CSMHelper.cjs +0 -114
- package/csm/CSMHelper.js +0 -114
- package/csm/CSMShader.cjs +0 -261
- package/csm/CSMShader.js +0 -261
- package/curves/CurveExtras.cjs +0 -214
- package/curves/CurveExtras.js +0 -214
- package/curves/NURBSCurve.cjs +0 -35
- package/curves/NURBSCurve.js +0 -35
- package/curves/NURBSSurface.cjs +0 -28
- package/curves/NURBSSurface.js +0 -28
- package/curves/NURBSUtils.cjs +0 -226
- package/curves/NURBSUtils.js +0 -226
- package/deprecated/Geometry.cjs +0 -971
- package/deprecated/Geometry.js +0 -971
- package/effects/AnaglyphEffect.cjs +0 -102
- package/effects/AnaglyphEffect.js +0 -102
- package/effects/AsciiEffect.cjs +0 -155
- package/effects/AsciiEffect.js +0 -155
- package/effects/OutlineEffect.cjs +0 -275
- package/effects/OutlineEffect.js +0 -275
- package/effects/ParallaxBarrierEffect.cjs +0 -65
- package/effects/ParallaxBarrierEffect.js +0 -65
- package/effects/PeppersGhostEffect.cjs +0 -88
- package/effects/PeppersGhostEffect.js +0 -88
- package/effects/StereoEffect.cjs +0 -35
- package/effects/StereoEffect.js +0 -35
- package/environments/RoomEnvironment.cjs +0 -95
- package/environments/RoomEnvironment.js +0 -78
- package/exporters/ColladaExporter.cjs +0 -331
- package/exporters/ColladaExporter.js +0 -331
- package/exporters/DRACOExporter.cjs +0 -141
- package/exporters/DRACOExporter.js +0 -141
- package/exporters/GLTFExporter.cjs +0 -1909
- package/exporters/GLTFExporter.js +0 -1909
- package/exporters/MMDExporter.cjs +0 -131
- package/exporters/MMDExporter.js +0 -131
- package/exporters/OBJExporter.cjs +0 -181
- package/exporters/OBJExporter.js +0 -181
- package/exporters/PLYExporter.cjs +0 -280
- package/exporters/PLYExporter.js +0 -280
- package/exporters/STLExporter.cjs +0 -146
- package/exporters/STLExporter.js +0 -146
- package/exporters/USDZExporter.cjs +0 -340
- package/exporters/USDZExporter.js +0 -340
- package/geometries/BoxLineGeometry.cjs +0 -45
- package/geometries/BoxLineGeometry.js +0 -45
- package/geometries/ConvexGeometry.cjs +0 -26
- package/geometries/ConvexGeometry.js +0 -26
- package/geometries/DecalGeometry.cjs +0 -184
- package/geometries/DecalGeometry.js +0 -184
- package/geometries/LightningStrike.cjs +0 -553
- package/geometries/LightningStrike.js +0 -553
- package/geometries/ParametricGeometries.cjs +0 -130
- package/geometries/ParametricGeometries.js +0 -130
- package/geometries/ParametricGeometry.cjs +0 -63
- package/geometries/ParametricGeometry.js +0 -63
- package/geometries/RoundedBoxGeometry.cjs +0 -91
- package/geometries/RoundedBoxGeometry.js +0 -91
- package/geometries/TeapotGeometry.cjs +0 -1563
- package/geometries/TeapotGeometry.js +0 -1563
- package/geometries/TextGeometry.cjs +0 -27
- package/geometries/TextGeometry.js +0 -27
- package/helpers/LightProbeHelper.cjs +0 -73
- package/helpers/LightProbeHelper.js +0 -73
- package/helpers/PositionalAudioHelper.cjs +0 -68
- package/helpers/PositionalAudioHelper.js +0 -68
- package/helpers/RectAreaLightHelper.cjs +0 -44
- package/helpers/RectAreaLightHelper.js +0 -44
- package/helpers/VertexNormalsHelper.cjs +0 -47
- package/helpers/VertexNormalsHelper.js +0 -47
- package/helpers/VertexTangentsHelper.cjs +0 -43
- package/helpers/VertexTangentsHelper.js +0 -43
- package/interactive/HTMLMesh.cjs +0 -325
- package/interactive/HTMLMesh.js +0 -325
- package/interactive/InteractiveGroup.cjs +0 -68
- package/interactive/InteractiveGroup.js +0 -68
- package/interactive/SelectionBox.cjs +0 -134
- package/interactive/SelectionBox.js +0 -134
- package/interactive/SelectionHelper.cjs +0 -51
- package/interactive/SelectionHelper.js +0 -51
- package/libs/MeshoptDecoder.cjs +0 -221
- package/libs/MeshoptDecoder.js +0 -221
- package/libs/MotionControllers.cjs +0 -325
- package/libs/MotionControllers.js +0 -325
- package/lights/LightProbeGenerator.cjs +0 -145
- package/lights/LightProbeGenerator.js +0 -145
- package/lights/RectAreaLightUniformsLib.cjs +0 -32846
- package/lights/RectAreaLightUniformsLib.js +0 -32846
- package/lines/Line2.cjs +0 -13
- package/lines/Line2.js +0 -13
- package/lines/LineGeometry.cjs +0 -44
- package/lines/LineGeometry.js +0 -44
- package/lines/LineMaterial.cjs +0 -547
- package/lines/LineMaterial.js +0 -547
- package/lines/LineSegments2.cjs +0 -203
- package/lines/LineSegments2.js +0 -203
- package/lines/LineSegmentsGeometry.cjs +0 -124
- package/lines/LineSegmentsGeometry.js +0 -124
- package/lines/Wireframe.cjs +0 -32
- package/lines/Wireframe.js +0 -32
- package/lines/WireframeGeometry2.cjs +0 -13
- package/lines/WireframeGeometry2.js +0 -13
- package/loaders/3DMLoader.cjs +0 -803
- package/loaders/3DMLoader.js +0 -803
- package/loaders/3MFLoader.cjs +0 -854
- package/loaders/3MFLoader.js +0 -854
- package/loaders/AMFLoader.cjs +0 -284
- package/loaders/AMFLoader.js +0 -284
- package/loaders/AssimpLoader.cjs +0 -1434
- package/loaders/AssimpLoader.js +0 -1434
- package/loaders/BVHLoader.cjs +0 -207
- package/loaders/BVHLoader.js +0 -207
- package/loaders/BasisTextureLoader.cjs +0 -489
- package/loaders/BasisTextureLoader.js +0 -489
- package/loaders/ColladaLoader.cjs +0 -2405
- package/loaders/ColladaLoader.js +0 -2405
- package/loaders/DDSLoader.cjs +0 -148
- package/loaders/DDSLoader.js +0 -148
- package/loaders/DRACOLoader.cjs +0 -341
- package/loaders/DRACOLoader.js +0 -341
- package/loaders/EXRLoader.cjs +0 -1356
- package/loaders/EXRLoader.js +0 -1356
- package/loaders/FBXLoader.cjs +0 -2457
- package/loaders/FBXLoader.js +0 -2457
- package/loaders/FontLoader.cjs +0 -123
- package/loaders/FontLoader.js +0 -123
- package/loaders/GCodeLoader.cjs +0 -141
- package/loaders/GCodeLoader.js +0 -141
- package/loaders/GLTFLoader.cjs +0 -2504
- package/loaders/GLTFLoader.js +0 -2504
- package/loaders/HDRCubeTextureLoader.cjs +0 -75
- package/loaders/HDRCubeTextureLoader.js +0 -75
- package/loaders/KMZLoader.cjs +0 -75
- package/loaders/KMZLoader.js +0 -75
- package/loaders/KTX2Loader.cjs +0 -480
- package/loaders/KTX2Loader.js +0 -480
- package/loaders/KTXLoader.cjs +0 -93
- package/loaders/KTXLoader.js +0 -93
- package/loaders/LDrawLoader.cjs +0 -1424
- package/loaders/LDrawLoader.js +0 -1424
- package/loaders/LUT3dlLoader.cjs +0 -103
- package/loaders/LUT3dlLoader.js +0 -103
- package/loaders/LUTCubeLoader.cjs +0 -107
- package/loaders/LUTCubeLoader.js +0 -107
- package/loaders/LWOLoader.cjs +0 -645
- package/loaders/LWOLoader.js +0 -645
- package/loaders/LottieLoader.cjs +0 -47
- package/loaders/LottieLoader.js +0 -47
- package/loaders/MD2Loader.cjs +0 -359
- package/loaders/MD2Loader.js +0 -359
- package/loaders/MDDLoader.cjs +0 -58
- package/loaders/MDDLoader.js +0 -58
- package/loaders/MMDLoader.cjs +0 -1121
- package/loaders/MMDLoader.js +0 -1121
- package/loaders/MTLLoader.cjs +0 -304
- package/loaders/MTLLoader.js +0 -304
- package/loaders/NRRDLoader.cjs +0 -401
- package/loaders/NRRDLoader.js +0 -401
- package/loaders/OBJLoader.cjs +0 -487
- package/loaders/OBJLoader.js +0 -487
- package/loaders/PCDLoader.cjs +0 -248
- package/loaders/PCDLoader.js +0 -248
- package/loaders/PDBLoader.cjs +0 -247
- package/loaders/PDBLoader.js +0 -247
- package/loaders/PLYLoader.cjs +0 -317
- package/loaders/PLYLoader.js +0 -317
- package/loaders/PRWMLoader.cjs +0 -160
- package/loaders/PRWMLoader.js +0 -160
- package/loaders/PVRLoader.cjs +0 -131
- package/loaders/PVRLoader.js +0 -131
- package/loaders/RGBELoader.cjs +0 -252
- package/loaders/RGBELoader.js +0 -252
- package/loaders/RGBMLoader.cjs +0 -1004
- package/loaders/RGBMLoader.js +0 -1004
- package/loaders/STLLoader.cjs +0 -190
- package/loaders/STLLoader.js +0 -190
- package/loaders/SVGLoader.cjs +0 -1712
- package/loaders/SVGLoader.js +0 -1712
- package/loaders/TDSLoader.cjs +0 -650
- package/loaders/TDSLoader.js +0 -650
- package/loaders/TGALoader.cjs +0 -285
- package/loaders/TGALoader.js +0 -285
- package/loaders/TTFLoader.cjs +0 -131
- package/loaders/TTFLoader.js +0 -131
- package/loaders/TiltLoader.cjs +0 -375
- package/loaders/TiltLoader.js +0 -375
- package/loaders/VOXLoader.cjs +0 -432
- package/loaders/VOXLoader.js +0 -432
- package/loaders/VRMLLoader.cjs +0 -2105
- package/loaders/VRMLLoader.js +0 -2105
- package/loaders/VRMLoader.cjs +0 -38
- package/loaders/VRMLoader.js +0 -38
- package/loaders/VTKLoader.cjs +0 -648
- package/loaders/VTKLoader.js +0 -648
- package/loaders/XLoader.cjs +0 -1258
- package/loaders/XLoader.js +0 -1258
- package/loaders/XYZLoader.cjs +0 -60
- package/loaders/XYZLoader.js +0 -60
- package/loaders/lwo/IFFParser.cjs +0 -743
- package/loaders/lwo/IFFParser.js +0 -743
- package/loaders/lwo/LWO2Parser.cjs +0 -312
- package/loaders/lwo/LWO2Parser.js +0 -312
- package/loaders/lwo/LWO3Parser.cjs +0 -282
- package/loaders/lwo/LWO3Parser.js +0 -282
- package/math/Capsule.cjs +0 -98
- package/math/Capsule.js +0 -98
- package/math/ColorConverter.cjs +0 -42
- package/math/ColorConverter.js +0 -42
- package/math/ConvexHull.cjs +0 -596
- package/math/ConvexHull.js +0 -596
- package/math/ImprovedNoise.cjs +0 -304
- package/math/ImprovedNoise.js +0 -304
- package/math/Lut.cjs +0 -137
- package/math/Lut.js +0 -137
- package/math/MeshSurfaceSampler.cjs +0 -103
- package/math/MeshSurfaceSampler.js +0 -103
- package/math/OBB.cjs +0 -242
- package/math/OBB.js +0 -242
- package/math/Octree.cjs +0 -273
- package/math/Octree.js +0 -273
- package/math/SimplexNoise.cjs +0 -440
- package/math/SimplexNoise.js +0 -440
- package/misc/ConvexObjectBreaker.cjs +0 -292
- package/misc/ConvexObjectBreaker.js +0 -292
- package/misc/GPUComputationRenderer.cjs +0 -205
- package/misc/GPUComputationRenderer.js +0 -205
- package/misc/Gyroscope.cjs +0 -33
- package/misc/Gyroscope.js +0 -33
- package/misc/MD2Character.cjs +0 -167
- package/misc/MD2Character.js +0 -167
- package/misc/MD2CharacterComplex.cjs +0 -332
- package/misc/MD2CharacterComplex.js +0 -332
- package/misc/MorphAnimMesh.cjs +0 -40
- package/misc/MorphAnimMesh.js +0 -40
- package/misc/MorphBlendMesh.cjs +0 -179
- package/misc/MorphBlendMesh.js +0 -179
- package/misc/ProgressiveLightmap.cjs +0 -186
- package/misc/ProgressiveLightmap.js +0 -186
- package/misc/RollerCoaster.cjs +0 -353
- package/misc/RollerCoaster.js +0 -353
- package/misc/Timer.cjs +0 -101
- package/misc/Timer.js +0 -101
- package/misc/TubePainter.cjs +0 -123
- package/misc/TubePainter.js +0 -123
- package/misc/Volume.cjs +0 -305
- package/misc/Volume.js +0 -305
- package/misc/VolumeSlice.cjs +0 -114
- package/misc/VolumeSlice.js +0 -114
- package/misc/WebGL.cjs +0 -74
- package/misc/WebGL.js +0 -74
- package/modifiers/CurveModifier.cjs +0 -232
- package/modifiers/CurveModifier.js +0 -232
- package/modifiers/EdgeSplitModifier.cjs +0 -167
- package/modifiers/EdgeSplitModifier.js +0 -168
- package/modifiers/SimplifyModifier.cjs +0 -301
- package/modifiers/SimplifyModifier.js +0 -301
- package/modifiers/TessellateModifier.cjs +0 -214
- package/modifiers/TessellateModifier.js +0 -214
- package/objects/GroundProjectedEnv.cjs +0 -134
- package/objects/GroundProjectedEnv.js +0 -134
- package/objects/Lensflare.cjs +0 -291
- package/objects/Lensflare.js +0 -291
- package/objects/LightningStorm.cjs +0 -110
- package/objects/LightningStorm.js +0 -110
- package/objects/MarchingCubes.cjs +0 -4809
- package/objects/MarchingCubes.js +0 -4809
- package/objects/Reflector.cjs +0 -202
- package/objects/Reflector.js +0 -202
- package/objects/ReflectorForSSRPass.cjs +0 -260
- package/objects/ReflectorForSSRPass.js +0 -260
- package/objects/ReflectorRTT.cjs +0 -10
- package/objects/ReflectorRTT.js +0 -10
- package/objects/Refractor.cjs +0 -215
- package/objects/Refractor.js +0 -215
- package/objects/ShadowMesh.cjs +0 -45
- package/objects/ShadowMesh.js +0 -45
- package/objects/Sky.cjs +0 -200
- package/objects/Sky.js +0 -200
- package/objects/Water.cjs +0 -242
- package/objects/Water.js +0 -242
- package/objects/Water2.cjs +0 -256
- package/objects/Water2.js +0 -256
- package/physics/AmmoPhysics.cjs +0 -166
- package/physics/AmmoPhysics.js +0 -166
- package/postprocessing/AdaptiveToneMappingPass.cjs +0 -218
- package/postprocessing/AdaptiveToneMappingPass.js +0 -218
- package/postprocessing/AfterimagePass.cjs +0 -68
- package/postprocessing/AfterimagePass.js +0 -68
- package/postprocessing/BloomPass.cjs +0 -109
- package/postprocessing/BloomPass.js +0 -109
- package/postprocessing/BokehPass.cjs +0 -90
- package/postprocessing/BokehPass.js +0 -90
- package/postprocessing/ClearPass.cjs +0 -36
- package/postprocessing/ClearPass.js +0 -36
- package/postprocessing/CubeTexturePass.cjs +0 -53
- package/postprocessing/CubeTexturePass.js +0 -53
- package/postprocessing/DotScreenPass.cjs +0 -49
- package/postprocessing/DotScreenPass.js +0 -49
- package/postprocessing/EffectComposer.cjs +0 -157
- package/postprocessing/EffectComposer.js +0 -157
- package/postprocessing/FilmPass.cjs +0 -51
- package/postprocessing/FilmPass.js +0 -51
- package/postprocessing/GlitchPass.cjs +0 -84
- package/postprocessing/GlitchPass.js +0 -84
- package/postprocessing/HalftonePass.cjs +0 -53
- package/postprocessing/HalftonePass.js +0 -53
- package/postprocessing/LUTPass.cjs +0 -142
- package/postprocessing/LUTPass.js +0 -142
- package/postprocessing/MaskPass.cjs +0 -69
- package/postprocessing/MaskPass.js +0 -69
- package/postprocessing/OutlinePass.cjs +0 -479
- package/postprocessing/OutlinePass.js +0 -479
- package/postprocessing/Pass.cjs +0 -48
- package/postprocessing/Pass.js +0 -48
- package/postprocessing/RenderPass.cjs +0 -59
- package/postprocessing/RenderPass.js +0 -59
- package/postprocessing/RenderPixelatedPass.cjs +0 -199
- package/postprocessing/RenderPixelatedPass.js +0 -199
- package/postprocessing/SAOPass.cjs +0 -288
- package/postprocessing/SAOPass.js +0 -288
- package/postprocessing/SMAAPass.cjs +0 -112
- package/postprocessing/SMAAPass.js +0 -112
- package/postprocessing/SSAARenderPass.cjs +0 -189
- package/postprocessing/SSAARenderPass.js +0 -189
- package/postprocessing/SSAOPass.cjs +0 -272
- package/postprocessing/SSAOPass.js +0 -272
- package/postprocessing/SSRPass.cjs +0 -411
- package/postprocessing/SSRPass.js +0 -411
- package/postprocessing/SavePass.cjs +0 -38
- package/postprocessing/SavePass.js +0 -38
- package/postprocessing/ShaderPass.cjs +0 -49
- package/postprocessing/ShaderPass.js +0 -49
- package/postprocessing/TAARenderPass.cjs +0 -174
- package/postprocessing/TAARenderPass.js +0 -174
- package/postprocessing/TexturePass.cjs +0 -42
- package/postprocessing/TexturePass.js +0 -42
- package/postprocessing/UnrealBloomPass.cjs +0 -277
- package/postprocessing/UnrealBloomPass.js +0 -277
- package/postprocessing/WaterPass.cjs +0 -72
- package/postprocessing/WaterPass.js +0 -72
- package/renderers/CSS2DRenderer.cjs +0 -122
- package/renderers/CSS2DRenderer.js +0 -122
- package/renderers/CSS3DRenderer.cjs +0 -167
- package/renderers/CSS3DRenderer.js +0 -167
- package/renderers/Projector.cjs +0 -499
- package/renderers/Projector.js +0 -499
- package/renderers/SVGRenderer.cjs +0 -311
- package/renderers/SVGRenderer.js +0 -311
- package/shaders/ACESFilmicToneMappingShader.cjs +0 -55
- package/shaders/ACESFilmicToneMappingShader.js +0 -55
- package/shaders/AfterimageShader.cjs +0 -32
- package/shaders/AfterimageShader.js +0 -32
- package/shaders/BasicShader.cjs +0 -12
- package/shaders/BasicShader.js +0 -12
- package/shaders/BleachBypassShader.cjs +0 -35
- package/shaders/BleachBypassShader.js +0 -35
- package/shaders/BlendShader.cjs +0 -30
- package/shaders/BlendShader.js +0 -30
- package/shaders/BokehShader.cjs +0 -109
- package/shaders/BokehShader.js +0 -109
- package/shaders/BokehShader2.cjs +0 -269
- package/shaders/BokehShader2.js +0 -269
- package/shaders/BrightnessContrastShader.cjs +0 -32
- package/shaders/BrightnessContrastShader.js +0 -32
- package/shaders/ColorCorrectionShader.cjs +0 -30
- package/shaders/ColorCorrectionShader.js +0 -30
- package/shaders/ColorifyShader.cjs +0 -28
- package/shaders/ColorifyShader.js +0 -28
- package/shaders/ConvolutionShader.cjs +0 -55
- package/shaders/ConvolutionShader.js +0 -55
- package/shaders/CopyShader.cjs +0 -25
- package/shaders/CopyShader.js +0 -25
- package/shaders/DOFMipMapShader.cjs +0 -32
- package/shaders/DOFMipMapShader.js +0 -32
- package/shaders/DepthLimitedBlurShader.cjs +0 -114
- package/shaders/DepthLimitedBlurShader.js +0 -114
- package/shaders/DigitalGlitch.cjs +0 -85
- package/shaders/DigitalGlitch.js +0 -85
- package/shaders/DotScreenShader.cjs +0 -39
- package/shaders/DotScreenShader.js +0 -39
- package/shaders/FXAAShader.cjs +0 -1098
- package/shaders/FXAAShader.js +0 -1098
- package/shaders/FilmShader.cjs +0 -53
- package/shaders/FilmShader.js +0 -53
- package/shaders/FocusShader.cjs +0 -55
- package/shaders/FocusShader.js +0 -55
- package/shaders/FreiChenShader.cjs +0 -64
- package/shaders/FreiChenShader.js +0 -64
- package/shaders/FresnelShader.cjs +0 -47
- package/shaders/FresnelShader.js +0 -47
- package/shaders/GammaCorrectionShader.cjs +0 -23
- package/shaders/GammaCorrectionShader.js +0 -23
- package/shaders/GodRaysShader.cjs +0 -183
- package/shaders/GodRaysShader.js +0 -183
- package/shaders/HalftoneShader.cjs +0 -228
- package/shaders/HalftoneShader.js +0 -228
- package/shaders/HorizontalBlurShader.cjs +0 -49
- package/shaders/HorizontalBlurShader.js +0 -49
- package/shaders/HorizontalTiltShiftShader.cjs +0 -37
- package/shaders/HorizontalTiltShiftShader.js +0 -37
- package/shaders/HueSaturationShader.cjs +0 -43
- package/shaders/HueSaturationShader.js +0 -43
- package/shaders/KaleidoShader.cjs +0 -34
- package/shaders/KaleidoShader.js +0 -34
- package/shaders/LuminosityHighPassShader.cjs +0 -37
- package/shaders/LuminosityHighPassShader.js +0 -37
- package/shaders/LuminosityShader.cjs +0 -25
- package/shaders/LuminosityShader.js +0 -25
- package/shaders/MirrorShader.cjs +0 -35
- package/shaders/MirrorShader.js +0 -35
- package/shaders/NormalMapShader.cjs +0 -31
- package/shaders/NormalMapShader.js +0 -31
- package/shaders/ParallaxShader.cjs +0 -133
- package/shaders/ParallaxShader.js +0 -133
- package/shaders/PixelShader.cjs +0 -28
- package/shaders/PixelShader.js +0 -28
- package/shaders/RGBShiftShader.cjs +0 -30
- package/shaders/RGBShiftShader.js +0 -30
- package/shaders/SAOShader.cjs +0 -144
- package/shaders/SAOShader.js +0 -144
- package/shaders/SMAAShader.cjs +0 -358
- package/shaders/SMAAShader.js +0 -358
- package/shaders/SSAOShader.cjs +0 -182
- package/shaders/SSAOShader.js +0 -182
- package/shaders/SSRShader.cjs +0 -342
- package/shaders/SSRShader.js +0 -342
- package/shaders/SepiaShader.cjs +0 -29
- package/shaders/SepiaShader.js +0 -29
- package/shaders/SobelOperatorShader.cjs +0 -54
- package/shaders/SobelOperatorShader.js +0 -54
- package/shaders/SubsurfaceScatteringShader.cjs +0 -98
- package/shaders/SubsurfaceScatteringShader.js +0 -98
- package/shaders/TechnicolorShader.cjs +0 -24
- package/shaders/TechnicolorShader.js +0 -24
- package/shaders/ToneMapShader.cjs +0 -51
- package/shaders/ToneMapShader.js +0 -51
- package/shaders/ToonShader.cjs +0 -188
- package/shaders/ToonShader.js +0 -188
- package/shaders/TriangleBlurShader.cjs +0 -37
- package/shaders/TriangleBlurShader.js +0 -37
- package/shaders/UnpackDepthRGBAShader.cjs +0 -26
- package/shaders/UnpackDepthRGBAShader.js +0 -26
- package/shaders/VerticalBlurShader.cjs +0 -50
- package/shaders/VerticalBlurShader.js +0 -50
- package/shaders/VerticalTiltShiftShader.cjs +0 -37
- package/shaders/VerticalTiltShiftShader.js +0 -37
- package/shaders/VignetteShader.cjs +0 -38
- package/shaders/VignetteShader.js +0 -38
- package/shaders/VolumeShader.cjs +0 -225
- package/shaders/VolumeShader.js +0 -225
- package/shaders/WaterRefractionShader.cjs +0 -59
- package/shaders/WaterRefractionShader.js +0 -59
- package/shaders/types.cjs +0 -1
- package/shaders/types.js +0 -1
- package/textures/FlakesTexture.cjs +0 -30
- package/textures/FlakesTexture.js +0 -30
- package/types/helpers.cjs +0 -4
- package/types/helpers.js +0 -4
- package/utils/BufferGeometryUtils.cjs +0 -636
- package/utils/BufferGeometryUtils.js +0 -636
- package/utils/GeometryCompressionUtils.cjs +0 -573
- package/utils/GeometryCompressionUtils.js +0 -573
- package/utils/GeometryUtils.cjs +0 -109
- package/utils/GeometryUtils.js +0 -109
- package/utils/RoughnessMipmapper.cjs +0 -223
- package/utils/RoughnessMipmapper.js +0 -223
- package/utils/SceneUtils.cjs +0 -36
- package/utils/SceneUtils.js +0 -36
- package/utils/ShadowMapViewer.cjs +0 -111
- package/utils/ShadowMapViewer.js +0 -111
- package/utils/SkeletonUtils.cjs +0 -211
- package/utils/SkeletonUtils.js +0 -211
- package/utils/UVsDebug.cjs +0 -80
- package/utils/UVsDebug.js +0 -80
- package/utils/WorkerPool.cjs +0 -62
- package/utils/WorkerPool.js +0 -62
- package/webxr/ARButton.cjs +0 -119
- package/webxr/ARButton.js +0 -119
- package/webxr/OculusHandModel.cjs +0 -82
- package/webxr/OculusHandModel.js +0 -82
- package/webxr/OculusHandPointerModel.cjs +0 -241
- package/webxr/OculusHandPointerModel.js +0 -224
- package/webxr/Text2D.cjs +0 -48
- package/webxr/Text2D.js +0 -31
- package/webxr/VRButton.cjs +0 -111
- package/webxr/VRButton.js +0 -111
- package/webxr/XRControllerModelFactory.cjs +0 -174
- package/webxr/XRControllerModelFactory.js +0 -174
- package/webxr/XREstimatedLight.cjs +0 -126
- package/webxr/XREstimatedLight.js +0 -126
- package/webxr/XRHandMeshModel.cjs +0 -82
- package/webxr/XRHandMeshModel.js +0 -82
- package/webxr/XRHandModelFactory.cjs +0 -61
- package/webxr/XRHandModelFactory.js +0 -61
- package/webxr/XRHandPrimitiveModel.cjs +0 -68
- package/webxr/XRHandPrimitiveModel.js +0 -68
package/misc/Volume.cjs
DELETED
@@ -1,305 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
3
|
-
const THREE = require("three");
|
4
|
-
const VolumeSlice = require("./VolumeSlice.cjs");
|
5
|
-
class Volume {
|
6
|
-
constructor(xLength, yLength, zLength, type, arrayBuffer) {
|
7
|
-
if (xLength !== void 0) {
|
8
|
-
this.xLength = Number(xLength) || 1;
|
9
|
-
this.yLength = Number(yLength) || 1;
|
10
|
-
this.zLength = Number(zLength) || 1;
|
11
|
-
this.axisOrder = ["x", "y", "z"];
|
12
|
-
switch (type) {
|
13
|
-
case "Uint8":
|
14
|
-
case "uint8":
|
15
|
-
case "uchar":
|
16
|
-
case "unsigned char":
|
17
|
-
case "uint8_t":
|
18
|
-
this.data = new Uint8Array(arrayBuffer);
|
19
|
-
break;
|
20
|
-
case "Int8":
|
21
|
-
case "int8":
|
22
|
-
case "signed char":
|
23
|
-
case "int8_t":
|
24
|
-
this.data = new Int8Array(arrayBuffer);
|
25
|
-
break;
|
26
|
-
case "Int16":
|
27
|
-
case "int16":
|
28
|
-
case "short":
|
29
|
-
case "short int":
|
30
|
-
case "signed short":
|
31
|
-
case "signed short int":
|
32
|
-
case "int16_t":
|
33
|
-
this.data = new Int16Array(arrayBuffer);
|
34
|
-
break;
|
35
|
-
case "Uint16":
|
36
|
-
case "uint16":
|
37
|
-
case "ushort":
|
38
|
-
case "unsigned short":
|
39
|
-
case "unsigned short int":
|
40
|
-
case "uint16_t":
|
41
|
-
this.data = new Uint16Array(arrayBuffer);
|
42
|
-
break;
|
43
|
-
case "Int32":
|
44
|
-
case "int32":
|
45
|
-
case "int":
|
46
|
-
case "signed int":
|
47
|
-
case "int32_t":
|
48
|
-
this.data = new Int32Array(arrayBuffer);
|
49
|
-
break;
|
50
|
-
case "Uint32":
|
51
|
-
case "uint32":
|
52
|
-
case "uint":
|
53
|
-
case "unsigned int":
|
54
|
-
case "uint32_t":
|
55
|
-
this.data = new Uint32Array(arrayBuffer);
|
56
|
-
break;
|
57
|
-
case "longlong":
|
58
|
-
case "long long":
|
59
|
-
case "long long int":
|
60
|
-
case "signed long long":
|
61
|
-
case "signed long long int":
|
62
|
-
case "int64":
|
63
|
-
case "int64_t":
|
64
|
-
case "ulonglong":
|
65
|
-
case "unsigned long long":
|
66
|
-
case "unsigned long long int":
|
67
|
-
case "uint64":
|
68
|
-
case "uint64_t":
|
69
|
-
throw new Error("Error in Volume constructor : this type is not supported in JavaScript");
|
70
|
-
break;
|
71
|
-
case "Float32":
|
72
|
-
case "float32":
|
73
|
-
case "float":
|
74
|
-
this.data = new Float32Array(arrayBuffer);
|
75
|
-
break;
|
76
|
-
case "Float64":
|
77
|
-
case "float64":
|
78
|
-
case "double":
|
79
|
-
this.data = new Float64Array(arrayBuffer);
|
80
|
-
break;
|
81
|
-
default:
|
82
|
-
this.data = new Uint8Array(arrayBuffer);
|
83
|
-
}
|
84
|
-
if (this.data.length !== this.xLength * this.yLength * this.zLength) {
|
85
|
-
throw new Error("Error in Volume constructor, lengths are not matching arrayBuffer size");
|
86
|
-
}
|
87
|
-
}
|
88
|
-
this.spacing = [1, 1, 1];
|
89
|
-
this.offset = [0, 0, 0];
|
90
|
-
this.matrix = new THREE.Matrix3();
|
91
|
-
this.matrix.identity();
|
92
|
-
let lowerThreshold = -Infinity;
|
93
|
-
Object.defineProperty(this, "lowerThreshold", {
|
94
|
-
get: function() {
|
95
|
-
return lowerThreshold;
|
96
|
-
},
|
97
|
-
set: function(value) {
|
98
|
-
lowerThreshold = value;
|
99
|
-
this.sliceList.forEach(function(slice) {
|
100
|
-
slice.geometryNeedsUpdate = true;
|
101
|
-
});
|
102
|
-
}
|
103
|
-
});
|
104
|
-
let upperThreshold = Infinity;
|
105
|
-
Object.defineProperty(this, "upperThreshold", {
|
106
|
-
get: function() {
|
107
|
-
return upperThreshold;
|
108
|
-
},
|
109
|
-
set: function(value) {
|
110
|
-
upperThreshold = value;
|
111
|
-
this.sliceList.forEach(function(slice) {
|
112
|
-
slice.geometryNeedsUpdate = true;
|
113
|
-
});
|
114
|
-
}
|
115
|
-
});
|
116
|
-
this.sliceList = [];
|
117
|
-
this.segmentation = false;
|
118
|
-
}
|
119
|
-
/**
|
120
|
-
* @member {Function} getData Shortcut for data[access(i,j,k)]
|
121
|
-
* @memberof Volume
|
122
|
-
* @param {number} i First coordinate
|
123
|
-
* @param {number} j Second coordinate
|
124
|
-
* @param {number} k Third coordinate
|
125
|
-
* @returns {number} value in the data array
|
126
|
-
*/
|
127
|
-
getData(i, j, k) {
|
128
|
-
return this.data[k * this.xLength * this.yLength + j * this.xLength + i];
|
129
|
-
}
|
130
|
-
/**
|
131
|
-
* @member {Function} access compute the index in the data array corresponding to the given coordinates in IJK system
|
132
|
-
* @memberof Volume
|
133
|
-
* @param {number} i First coordinate
|
134
|
-
* @param {number} j Second coordinate
|
135
|
-
* @param {number} k Third coordinate
|
136
|
-
* @returns {number} index
|
137
|
-
*/
|
138
|
-
access(i, j, k) {
|
139
|
-
return k * this.xLength * this.yLength + j * this.xLength + i;
|
140
|
-
}
|
141
|
-
/**
|
142
|
-
* @member {Function} reverseAccess Retrieve the IJK coordinates of the voxel corresponding of the given index in the data
|
143
|
-
* @memberof Volume
|
144
|
-
* @param {number} index index of the voxel
|
145
|
-
* @returns {Array} [x,y,z]
|
146
|
-
*/
|
147
|
-
reverseAccess(index) {
|
148
|
-
const z = Math.floor(index / (this.yLength * this.xLength));
|
149
|
-
const y = Math.floor((index - z * this.yLength * this.xLength) / this.xLength);
|
150
|
-
const x = index - z * this.yLength * this.xLength - y * this.xLength;
|
151
|
-
return [x, y, z];
|
152
|
-
}
|
153
|
-
/**
|
154
|
-
* @member {Function} map Apply a function to all the voxels, be careful, the value will be replaced
|
155
|
-
* @memberof Volume
|
156
|
-
* @param {Function} functionToMap A function to apply to every voxel, will be called with the following parameters :
|
157
|
-
* value of the voxel
|
158
|
-
* index of the voxel
|
159
|
-
* the data (TypedArray)
|
160
|
-
* @param {Object} context You can specify a context in which call the function, default if this Volume
|
161
|
-
* @returns {Volume} this
|
162
|
-
*/
|
163
|
-
map(functionToMap, context) {
|
164
|
-
const length = this.data.length;
|
165
|
-
context = context || this;
|
166
|
-
for (let i = 0; i < length; i++) {
|
167
|
-
this.data[i] = functionToMap.call(context, this.data[i], i, this.data);
|
168
|
-
}
|
169
|
-
return this;
|
170
|
-
}
|
171
|
-
/**
|
172
|
-
* @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.
|
173
|
-
* @memberof Volume
|
174
|
-
* @param {string} axis the normal axis to the slice 'x' 'y' or 'z'
|
175
|
-
* @param {number} index the index of the slice
|
176
|
-
* @returns {Object} an object containing all the usefull information on the geometry of the slice
|
177
|
-
*/
|
178
|
-
extractPerpendicularPlane(axis, RASIndex) {
|
179
|
-
let firstSpacing, secondSpacing, positionOffset, IJKIndex;
|
180
|
-
const axisInIJK = new THREE.Vector3(), firstDirection = new THREE.Vector3(), secondDirection = new THREE.Vector3(), planeMatrix = new THREE.Matrix4().identity(), volume = this;
|
181
|
-
const dimensions = new THREE.Vector3(this.xLength, this.yLength, this.zLength);
|
182
|
-
switch (axis) {
|
183
|
-
case "x":
|
184
|
-
axisInIJK.set(1, 0, 0);
|
185
|
-
firstDirection.set(0, 0, -1);
|
186
|
-
secondDirection.set(0, -1, 0);
|
187
|
-
firstSpacing = this.spacing[this.axisOrder.indexOf("z")];
|
188
|
-
secondSpacing = this.spacing[this.axisOrder.indexOf("y")];
|
189
|
-
IJKIndex = new THREE.Vector3(RASIndex, 0, 0);
|
190
|
-
planeMatrix.multiply(new THREE.Matrix4().makeRotationY(Math.PI / 2));
|
191
|
-
positionOffset = (volume.RASDimensions[0] - 1) / 2;
|
192
|
-
planeMatrix.setPosition(new THREE.Vector3(RASIndex - positionOffset, 0, 0));
|
193
|
-
break;
|
194
|
-
case "y":
|
195
|
-
axisInIJK.set(0, 1, 0);
|
196
|
-
firstDirection.set(1, 0, 0);
|
197
|
-
secondDirection.set(0, 0, 1);
|
198
|
-
firstSpacing = this.spacing[this.axisOrder.indexOf("x")];
|
199
|
-
secondSpacing = this.spacing[this.axisOrder.indexOf("z")];
|
200
|
-
IJKIndex = new THREE.Vector3(0, RASIndex, 0);
|
201
|
-
planeMatrix.multiply(new THREE.Matrix4().makeRotationX(-Math.PI / 2));
|
202
|
-
positionOffset = (volume.RASDimensions[1] - 1) / 2;
|
203
|
-
planeMatrix.setPosition(new THREE.Vector3(0, RASIndex - positionOffset, 0));
|
204
|
-
break;
|
205
|
-
case "z":
|
206
|
-
default:
|
207
|
-
axisInIJK.set(0, 0, 1);
|
208
|
-
firstDirection.set(1, 0, 0);
|
209
|
-
secondDirection.set(0, -1, 0);
|
210
|
-
firstSpacing = this.spacing[this.axisOrder.indexOf("x")];
|
211
|
-
secondSpacing = this.spacing[this.axisOrder.indexOf("y")];
|
212
|
-
IJKIndex = new THREE.Vector3(0, 0, RASIndex);
|
213
|
-
positionOffset = (volume.RASDimensions[2] - 1) / 2;
|
214
|
-
planeMatrix.setPosition(new THREE.Vector3(0, 0, RASIndex - positionOffset));
|
215
|
-
break;
|
216
|
-
}
|
217
|
-
let iLength, jLength;
|
218
|
-
if (!this.segmentation) {
|
219
|
-
firstDirection.applyMatrix4(volume.inverseMatrix).normalize();
|
220
|
-
secondDirection.applyMatrix4(volume.inverseMatrix).normalize();
|
221
|
-
axisInIJK.applyMatrix4(volume.inverseMatrix).normalize();
|
222
|
-
}
|
223
|
-
firstDirection.arglet = "i";
|
224
|
-
secondDirection.arglet = "j";
|
225
|
-
iLength = Math.floor(Math.abs(firstDirection.dot(dimensions)));
|
226
|
-
jLength = Math.floor(Math.abs(secondDirection.dot(dimensions)));
|
227
|
-
const planeWidth = Math.abs(iLength * firstSpacing);
|
228
|
-
const planeHeight = Math.abs(jLength * secondSpacing);
|
229
|
-
IJKIndex = Math.abs(Math.round(IJKIndex.applyMatrix4(volume.inverseMatrix).dot(axisInIJK)));
|
230
|
-
const base = [new THREE.Vector3(1, 0, 0), new THREE.Vector3(0, 1, 0), new THREE.Vector3(0, 0, 1)];
|
231
|
-
const iDirection = [firstDirection, secondDirection, axisInIJK].find(function(x) {
|
232
|
-
return Math.abs(x.dot(base[0])) > 0.9;
|
233
|
-
});
|
234
|
-
const jDirection = [firstDirection, secondDirection, axisInIJK].find(function(x) {
|
235
|
-
return Math.abs(x.dot(base[1])) > 0.9;
|
236
|
-
});
|
237
|
-
const kDirection = [firstDirection, secondDirection, axisInIJK].find(function(x) {
|
238
|
-
return Math.abs(x.dot(base[2])) > 0.9;
|
239
|
-
});
|
240
|
-
function sliceAccess(i, j) {
|
241
|
-
const si = iDirection === axisInIJK ? IJKIndex : iDirection.arglet === "i" ? i : j;
|
242
|
-
const sj = jDirection === axisInIJK ? IJKIndex : jDirection.arglet === "i" ? i : j;
|
243
|
-
const sk = kDirection === axisInIJK ? IJKIndex : kDirection.arglet === "i" ? i : j;
|
244
|
-
const accessI = iDirection.dot(base[0]) > 0 ? si : volume.xLength - 1 - si;
|
245
|
-
const accessJ = jDirection.dot(base[1]) > 0 ? sj : volume.yLength - 1 - sj;
|
246
|
-
const accessK = kDirection.dot(base[2]) > 0 ? sk : volume.zLength - 1 - sk;
|
247
|
-
return volume.access(accessI, accessJ, accessK);
|
248
|
-
}
|
249
|
-
return {
|
250
|
-
iLength,
|
251
|
-
jLength,
|
252
|
-
sliceAccess,
|
253
|
-
matrix: planeMatrix,
|
254
|
-
planeWidth,
|
255
|
-
planeHeight
|
256
|
-
};
|
257
|
-
}
|
258
|
-
/**
|
259
|
-
* @member {Function} extractSlice Returns a slice corresponding to the given axis and index
|
260
|
-
* The coordinate are given in the Right Anterior Superior coordinate format
|
261
|
-
* @memberof Volume
|
262
|
-
* @param {string} axis the normal axis to the slice 'x' 'y' or 'z'
|
263
|
-
* @param {number} index the index of the slice
|
264
|
-
* @returns {VolumeSlice} the extracted slice
|
265
|
-
*/
|
266
|
-
extractSlice(axis, index) {
|
267
|
-
const slice = new VolumeSlice.VolumeSlice(this, index, axis);
|
268
|
-
this.sliceList.push(slice);
|
269
|
-
return slice;
|
270
|
-
}
|
271
|
-
/**
|
272
|
-
* @member {Function} repaintAllSlices Call repaint on all the slices extracted from this volume
|
273
|
-
* @see VolumeSlice.repaint
|
274
|
-
* @memberof Volume
|
275
|
-
* @returns {Volume} this
|
276
|
-
*/
|
277
|
-
repaintAllSlices() {
|
278
|
-
this.sliceList.forEach(function(slice) {
|
279
|
-
slice.repaint();
|
280
|
-
});
|
281
|
-
return this;
|
282
|
-
}
|
283
|
-
/**
|
284
|
-
* @member {Function} computeMinMax Compute the minimum and the maximum of the data in the volume
|
285
|
-
* @memberof Volume
|
286
|
-
* @returns {Array} [min,max]
|
287
|
-
*/
|
288
|
-
computeMinMax() {
|
289
|
-
let min = Infinity;
|
290
|
-
let max = -Infinity;
|
291
|
-
const datasize = this.data.length;
|
292
|
-
let i = 0;
|
293
|
-
for (i = 0; i < datasize; i++) {
|
294
|
-
if (!isNaN(this.data[i])) {
|
295
|
-
const value = this.data[i];
|
296
|
-
min = Math.min(min, value);
|
297
|
-
max = Math.max(max, value);
|
298
|
-
}
|
299
|
-
}
|
300
|
-
this.min = min;
|
301
|
-
this.max = max;
|
302
|
-
return [min, max];
|
303
|
-
}
|
304
|
-
}
|
305
|
-
exports.Volume = Volume;
|
package/misc/Volume.js
DELETED
@@ -1,305 +0,0 @@
|
|
1
|
-
import { Matrix3, Vector3, Matrix4 } from "three";
|
2
|
-
import { VolumeSlice } from "./VolumeSlice.js";
|
3
|
-
class Volume {
|
4
|
-
constructor(xLength, yLength, zLength, type, arrayBuffer) {
|
5
|
-
if (xLength !== void 0) {
|
6
|
-
this.xLength = Number(xLength) || 1;
|
7
|
-
this.yLength = Number(yLength) || 1;
|
8
|
-
this.zLength = Number(zLength) || 1;
|
9
|
-
this.axisOrder = ["x", "y", "z"];
|
10
|
-
switch (type) {
|
11
|
-
case "Uint8":
|
12
|
-
case "uint8":
|
13
|
-
case "uchar":
|
14
|
-
case "unsigned char":
|
15
|
-
case "uint8_t":
|
16
|
-
this.data = new Uint8Array(arrayBuffer);
|
17
|
-
break;
|
18
|
-
case "Int8":
|
19
|
-
case "int8":
|
20
|
-
case "signed char":
|
21
|
-
case "int8_t":
|
22
|
-
this.data = new Int8Array(arrayBuffer);
|
23
|
-
break;
|
24
|
-
case "Int16":
|
25
|
-
case "int16":
|
26
|
-
case "short":
|
27
|
-
case "short int":
|
28
|
-
case "signed short":
|
29
|
-
case "signed short int":
|
30
|
-
case "int16_t":
|
31
|
-
this.data = new Int16Array(arrayBuffer);
|
32
|
-
break;
|
33
|
-
case "Uint16":
|
34
|
-
case "uint16":
|
35
|
-
case "ushort":
|
36
|
-
case "unsigned short":
|
37
|
-
case "unsigned short int":
|
38
|
-
case "uint16_t":
|
39
|
-
this.data = new Uint16Array(arrayBuffer);
|
40
|
-
break;
|
41
|
-
case "Int32":
|
42
|
-
case "int32":
|
43
|
-
case "int":
|
44
|
-
case "signed int":
|
45
|
-
case "int32_t":
|
46
|
-
this.data = new Int32Array(arrayBuffer);
|
47
|
-
break;
|
48
|
-
case "Uint32":
|
49
|
-
case "uint32":
|
50
|
-
case "uint":
|
51
|
-
case "unsigned int":
|
52
|
-
case "uint32_t":
|
53
|
-
this.data = new Uint32Array(arrayBuffer);
|
54
|
-
break;
|
55
|
-
case "longlong":
|
56
|
-
case "long long":
|
57
|
-
case "long long int":
|
58
|
-
case "signed long long":
|
59
|
-
case "signed long long int":
|
60
|
-
case "int64":
|
61
|
-
case "int64_t":
|
62
|
-
case "ulonglong":
|
63
|
-
case "unsigned long long":
|
64
|
-
case "unsigned long long int":
|
65
|
-
case "uint64":
|
66
|
-
case "uint64_t":
|
67
|
-
throw new Error("Error in Volume constructor : this type is not supported in JavaScript");
|
68
|
-
break;
|
69
|
-
case "Float32":
|
70
|
-
case "float32":
|
71
|
-
case "float":
|
72
|
-
this.data = new Float32Array(arrayBuffer);
|
73
|
-
break;
|
74
|
-
case "Float64":
|
75
|
-
case "float64":
|
76
|
-
case "double":
|
77
|
-
this.data = new Float64Array(arrayBuffer);
|
78
|
-
break;
|
79
|
-
default:
|
80
|
-
this.data = new Uint8Array(arrayBuffer);
|
81
|
-
}
|
82
|
-
if (this.data.length !== this.xLength * this.yLength * this.zLength) {
|
83
|
-
throw new Error("Error in Volume constructor, lengths are not matching arrayBuffer size");
|
84
|
-
}
|
85
|
-
}
|
86
|
-
this.spacing = [1, 1, 1];
|
87
|
-
this.offset = [0, 0, 0];
|
88
|
-
this.matrix = new Matrix3();
|
89
|
-
this.matrix.identity();
|
90
|
-
let lowerThreshold = -Infinity;
|
91
|
-
Object.defineProperty(this, "lowerThreshold", {
|
92
|
-
get: function() {
|
93
|
-
return lowerThreshold;
|
94
|
-
},
|
95
|
-
set: function(value) {
|
96
|
-
lowerThreshold = value;
|
97
|
-
this.sliceList.forEach(function(slice) {
|
98
|
-
slice.geometryNeedsUpdate = true;
|
99
|
-
});
|
100
|
-
}
|
101
|
-
});
|
102
|
-
let upperThreshold = Infinity;
|
103
|
-
Object.defineProperty(this, "upperThreshold", {
|
104
|
-
get: function() {
|
105
|
-
return upperThreshold;
|
106
|
-
},
|
107
|
-
set: function(value) {
|
108
|
-
upperThreshold = value;
|
109
|
-
this.sliceList.forEach(function(slice) {
|
110
|
-
slice.geometryNeedsUpdate = true;
|
111
|
-
});
|
112
|
-
}
|
113
|
-
});
|
114
|
-
this.sliceList = [];
|
115
|
-
this.segmentation = false;
|
116
|
-
}
|
117
|
-
/**
|
118
|
-
* @member {Function} getData Shortcut for data[access(i,j,k)]
|
119
|
-
* @memberof Volume
|
120
|
-
* @param {number} i First coordinate
|
121
|
-
* @param {number} j Second coordinate
|
122
|
-
* @param {number} k Third coordinate
|
123
|
-
* @returns {number} value in the data array
|
124
|
-
*/
|
125
|
-
getData(i, j, k) {
|
126
|
-
return this.data[k * this.xLength * this.yLength + j * this.xLength + i];
|
127
|
-
}
|
128
|
-
/**
|
129
|
-
* @member {Function} access compute the index in the data array corresponding to the given coordinates in IJK system
|
130
|
-
* @memberof Volume
|
131
|
-
* @param {number} i First coordinate
|
132
|
-
* @param {number} j Second coordinate
|
133
|
-
* @param {number} k Third coordinate
|
134
|
-
* @returns {number} index
|
135
|
-
*/
|
136
|
-
access(i, j, k) {
|
137
|
-
return k * this.xLength * this.yLength + j * this.xLength + i;
|
138
|
-
}
|
139
|
-
/**
|
140
|
-
* @member {Function} reverseAccess Retrieve the IJK coordinates of the voxel corresponding of the given index in the data
|
141
|
-
* @memberof Volume
|
142
|
-
* @param {number} index index of the voxel
|
143
|
-
* @returns {Array} [x,y,z]
|
144
|
-
*/
|
145
|
-
reverseAccess(index) {
|
146
|
-
const z = Math.floor(index / (this.yLength * this.xLength));
|
147
|
-
const y = Math.floor((index - z * this.yLength * this.xLength) / this.xLength);
|
148
|
-
const x = index - z * this.yLength * this.xLength - y * this.xLength;
|
149
|
-
return [x, y, z];
|
150
|
-
}
|
151
|
-
/**
|
152
|
-
* @member {Function} map Apply a function to all the voxels, be careful, the value will be replaced
|
153
|
-
* @memberof Volume
|
154
|
-
* @param {Function} functionToMap A function to apply to every voxel, will be called with the following parameters :
|
155
|
-
* value of the voxel
|
156
|
-
* index of the voxel
|
157
|
-
* the data (TypedArray)
|
158
|
-
* @param {Object} context You can specify a context in which call the function, default if this Volume
|
159
|
-
* @returns {Volume} this
|
160
|
-
*/
|
161
|
-
map(functionToMap, context) {
|
162
|
-
const length = this.data.length;
|
163
|
-
context = context || this;
|
164
|
-
for (let i = 0; i < length; i++) {
|
165
|
-
this.data[i] = functionToMap.call(context, this.data[i], i, this.data);
|
166
|
-
}
|
167
|
-
return this;
|
168
|
-
}
|
169
|
-
/**
|
170
|
-
* @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.
|
171
|
-
* @memberof Volume
|
172
|
-
* @param {string} axis the normal axis to the slice 'x' 'y' or 'z'
|
173
|
-
* @param {number} index the index of the slice
|
174
|
-
* @returns {Object} an object containing all the usefull information on the geometry of the slice
|
175
|
-
*/
|
176
|
-
extractPerpendicularPlane(axis, RASIndex) {
|
177
|
-
let firstSpacing, secondSpacing, positionOffset, IJKIndex;
|
178
|
-
const axisInIJK = new Vector3(), firstDirection = new Vector3(), secondDirection = new Vector3(), planeMatrix = new Matrix4().identity(), volume = this;
|
179
|
-
const dimensions = new Vector3(this.xLength, this.yLength, this.zLength);
|
180
|
-
switch (axis) {
|
181
|
-
case "x":
|
182
|
-
axisInIJK.set(1, 0, 0);
|
183
|
-
firstDirection.set(0, 0, -1);
|
184
|
-
secondDirection.set(0, -1, 0);
|
185
|
-
firstSpacing = this.spacing[this.axisOrder.indexOf("z")];
|
186
|
-
secondSpacing = this.spacing[this.axisOrder.indexOf("y")];
|
187
|
-
IJKIndex = new Vector3(RASIndex, 0, 0);
|
188
|
-
planeMatrix.multiply(new Matrix4().makeRotationY(Math.PI / 2));
|
189
|
-
positionOffset = (volume.RASDimensions[0] - 1) / 2;
|
190
|
-
planeMatrix.setPosition(new Vector3(RASIndex - positionOffset, 0, 0));
|
191
|
-
break;
|
192
|
-
case "y":
|
193
|
-
axisInIJK.set(0, 1, 0);
|
194
|
-
firstDirection.set(1, 0, 0);
|
195
|
-
secondDirection.set(0, 0, 1);
|
196
|
-
firstSpacing = this.spacing[this.axisOrder.indexOf("x")];
|
197
|
-
secondSpacing = this.spacing[this.axisOrder.indexOf("z")];
|
198
|
-
IJKIndex = new Vector3(0, RASIndex, 0);
|
199
|
-
planeMatrix.multiply(new Matrix4().makeRotationX(-Math.PI / 2));
|
200
|
-
positionOffset = (volume.RASDimensions[1] - 1) / 2;
|
201
|
-
planeMatrix.setPosition(new Vector3(0, RASIndex - positionOffset, 0));
|
202
|
-
break;
|
203
|
-
case "z":
|
204
|
-
default:
|
205
|
-
axisInIJK.set(0, 0, 1);
|
206
|
-
firstDirection.set(1, 0, 0);
|
207
|
-
secondDirection.set(0, -1, 0);
|
208
|
-
firstSpacing = this.spacing[this.axisOrder.indexOf("x")];
|
209
|
-
secondSpacing = this.spacing[this.axisOrder.indexOf("y")];
|
210
|
-
IJKIndex = new Vector3(0, 0, RASIndex);
|
211
|
-
positionOffset = (volume.RASDimensions[2] - 1) / 2;
|
212
|
-
planeMatrix.setPosition(new Vector3(0, 0, RASIndex - positionOffset));
|
213
|
-
break;
|
214
|
-
}
|
215
|
-
let iLength, jLength;
|
216
|
-
if (!this.segmentation) {
|
217
|
-
firstDirection.applyMatrix4(volume.inverseMatrix).normalize();
|
218
|
-
secondDirection.applyMatrix4(volume.inverseMatrix).normalize();
|
219
|
-
axisInIJK.applyMatrix4(volume.inverseMatrix).normalize();
|
220
|
-
}
|
221
|
-
firstDirection.arglet = "i";
|
222
|
-
secondDirection.arglet = "j";
|
223
|
-
iLength = Math.floor(Math.abs(firstDirection.dot(dimensions)));
|
224
|
-
jLength = Math.floor(Math.abs(secondDirection.dot(dimensions)));
|
225
|
-
const planeWidth = Math.abs(iLength * firstSpacing);
|
226
|
-
const planeHeight = Math.abs(jLength * secondSpacing);
|
227
|
-
IJKIndex = Math.abs(Math.round(IJKIndex.applyMatrix4(volume.inverseMatrix).dot(axisInIJK)));
|
228
|
-
const base = [new Vector3(1, 0, 0), new Vector3(0, 1, 0), new Vector3(0, 0, 1)];
|
229
|
-
const iDirection = [firstDirection, secondDirection, axisInIJK].find(function(x) {
|
230
|
-
return Math.abs(x.dot(base[0])) > 0.9;
|
231
|
-
});
|
232
|
-
const jDirection = [firstDirection, secondDirection, axisInIJK].find(function(x) {
|
233
|
-
return Math.abs(x.dot(base[1])) > 0.9;
|
234
|
-
});
|
235
|
-
const kDirection = [firstDirection, secondDirection, axisInIJK].find(function(x) {
|
236
|
-
return Math.abs(x.dot(base[2])) > 0.9;
|
237
|
-
});
|
238
|
-
function sliceAccess(i, j) {
|
239
|
-
const si = iDirection === axisInIJK ? IJKIndex : iDirection.arglet === "i" ? i : j;
|
240
|
-
const sj = jDirection === axisInIJK ? IJKIndex : jDirection.arglet === "i" ? i : j;
|
241
|
-
const sk = kDirection === axisInIJK ? IJKIndex : kDirection.arglet === "i" ? i : j;
|
242
|
-
const accessI = iDirection.dot(base[0]) > 0 ? si : volume.xLength - 1 - si;
|
243
|
-
const accessJ = jDirection.dot(base[1]) > 0 ? sj : volume.yLength - 1 - sj;
|
244
|
-
const accessK = kDirection.dot(base[2]) > 0 ? sk : volume.zLength - 1 - sk;
|
245
|
-
return volume.access(accessI, accessJ, accessK);
|
246
|
-
}
|
247
|
-
return {
|
248
|
-
iLength,
|
249
|
-
jLength,
|
250
|
-
sliceAccess,
|
251
|
-
matrix: planeMatrix,
|
252
|
-
planeWidth,
|
253
|
-
planeHeight
|
254
|
-
};
|
255
|
-
}
|
256
|
-
/**
|
257
|
-
* @member {Function} extractSlice Returns a slice corresponding to the given axis and index
|
258
|
-
* The coordinate are given in the Right Anterior Superior coordinate format
|
259
|
-
* @memberof Volume
|
260
|
-
* @param {string} axis the normal axis to the slice 'x' 'y' or 'z'
|
261
|
-
* @param {number} index the index of the slice
|
262
|
-
* @returns {VolumeSlice} the extracted slice
|
263
|
-
*/
|
264
|
-
extractSlice(axis, index) {
|
265
|
-
const slice = new VolumeSlice(this, index, axis);
|
266
|
-
this.sliceList.push(slice);
|
267
|
-
return slice;
|
268
|
-
}
|
269
|
-
/**
|
270
|
-
* @member {Function} repaintAllSlices Call repaint on all the slices extracted from this volume
|
271
|
-
* @see VolumeSlice.repaint
|
272
|
-
* @memberof Volume
|
273
|
-
* @returns {Volume} this
|
274
|
-
*/
|
275
|
-
repaintAllSlices() {
|
276
|
-
this.sliceList.forEach(function(slice) {
|
277
|
-
slice.repaint();
|
278
|
-
});
|
279
|
-
return this;
|
280
|
-
}
|
281
|
-
/**
|
282
|
-
* @member {Function} computeMinMax Compute the minimum and the maximum of the data in the volume
|
283
|
-
* @memberof Volume
|
284
|
-
* @returns {Array} [min,max]
|
285
|
-
*/
|
286
|
-
computeMinMax() {
|
287
|
-
let min = Infinity;
|
288
|
-
let max = -Infinity;
|
289
|
-
const datasize = this.data.length;
|
290
|
-
let i = 0;
|
291
|
-
for (i = 0; i < datasize; i++) {
|
292
|
-
if (!isNaN(this.data[i])) {
|
293
|
-
const value = this.data[i];
|
294
|
-
min = Math.min(min, value);
|
295
|
-
max = Math.max(max, value);
|
296
|
-
}
|
297
|
-
}
|
298
|
-
this.min = min;
|
299
|
-
this.max = max;
|
300
|
-
return [min, max];
|
301
|
-
}
|
302
|
-
}
|
303
|
-
export {
|
304
|
-
Volume
|
305
|
-
};
|