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
|
@@ -8,104 +8,95 @@
|
|
|
8
8
|
* @param {string} [axis='z'] For now only 'x', 'y' or 'z' but later it will change to a normal vector
|
|
9
9
|
* @see Volume
|
|
10
10
|
*/
|
|
11
|
+
class VolumeSlice {
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
constructor( volume, index, axis ) {
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
Object.defineProperty( this, 'index', {
|
|
26
|
-
get: function () {
|
|
27
|
-
|
|
28
|
-
return index;
|
|
15
|
+
const slice = this;
|
|
16
|
+
/**
|
|
17
|
+
* @member {Volume} volume The associated volume
|
|
18
|
+
*/
|
|
19
|
+
this.volume = volume;
|
|
20
|
+
/**
|
|
21
|
+
* @member {Number} index The index of the slice, if changed, will automatically call updateGeometry at the next repaint
|
|
22
|
+
*/
|
|
23
|
+
index = index || 0;
|
|
24
|
+
Object.defineProperty( this, 'index', {
|
|
25
|
+
get: function () {
|
|
29
26
|
|
|
30
|
-
|
|
31
|
-
set: function ( value ) {
|
|
27
|
+
return index;
|
|
32
28
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return index;
|
|
29
|
+
},
|
|
30
|
+
set: function ( value ) {
|
|
36
31
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
* @member {String} axis The normal axis
|
|
41
|
-
*/
|
|
42
|
-
|
|
43
|
-
this.axis = axis || 'z';
|
|
44
|
-
/**
|
|
45
|
-
* @member {HTMLCanvasElement} canvas The final canvas used for the texture
|
|
46
|
-
*/
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* @member {CanvasRenderingContext2D} ctx Context of the canvas
|
|
50
|
-
*/
|
|
51
|
-
|
|
52
|
-
this.canvas = document.createElement( 'canvas' );
|
|
53
|
-
/**
|
|
54
|
-
* @member {HTMLCanvasElement} canvasBuffer The intermediary canvas used to paint the data
|
|
55
|
-
*/
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* @member {CanvasRenderingContext2D} ctxBuffer Context of the canvas buffer
|
|
59
|
-
*/
|
|
60
|
-
|
|
61
|
-
this.canvasBuffer = document.createElement( 'canvas' );
|
|
62
|
-
this.updateGeometry();
|
|
63
|
-
const canvasMap = new THREE.Texture( this.canvas );
|
|
64
|
-
canvasMap.minFilter = THREE.LinearFilter;
|
|
65
|
-
canvasMap.wrapS = canvasMap.wrapT = THREE.ClampToEdgeWrapping;
|
|
66
|
-
const material = new THREE.MeshBasicMaterial( {
|
|
67
|
-
map: canvasMap,
|
|
68
|
-
side: THREE.DoubleSide,
|
|
69
|
-
transparent: true
|
|
70
|
-
} );
|
|
71
|
-
/**
|
|
72
|
-
* @member {Mesh} mesh The mesh ready to get used in the scene
|
|
73
|
-
*/
|
|
32
|
+
index = value;
|
|
33
|
+
slice.geometryNeedsUpdate = true;
|
|
34
|
+
return index;
|
|
74
35
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
36
|
+
}
|
|
37
|
+
} );
|
|
38
|
+
/**
|
|
39
|
+
* @member {String} axis The normal axis
|
|
40
|
+
*/
|
|
41
|
+
this.axis = axis || 'z';
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* @member {HTMLCanvasElement} canvas The final canvas used for the texture
|
|
45
|
+
*/
|
|
46
|
+
/**
|
|
47
|
+
* @member {CanvasRenderingContext2D} ctx Context of the canvas
|
|
48
|
+
*/
|
|
49
|
+
this.canvas = document.createElement( 'canvas' );
|
|
50
|
+
/**
|
|
51
|
+
* @member {HTMLCanvasElement} canvasBuffer The intermediary canvas used to paint the data
|
|
52
|
+
*/
|
|
53
|
+
/**
|
|
54
|
+
* @member {CanvasRenderingContext2D} ctxBuffer Context of the canvas buffer
|
|
55
|
+
*/
|
|
56
|
+
this.canvasBuffer = document.createElement( 'canvas' );
|
|
57
|
+
this.updateGeometry();
|
|
58
|
+
const canvasMap = new THREE.Texture( this.canvas );
|
|
59
|
+
canvasMap.minFilter = THREE.LinearFilter;
|
|
60
|
+
canvasMap.wrapS = canvasMap.wrapT = THREE.ClampToEdgeWrapping;
|
|
61
|
+
const material = new THREE.MeshBasicMaterial( {
|
|
62
|
+
map: canvasMap,
|
|
63
|
+
side: THREE.DoubleSide,
|
|
64
|
+
transparent: true
|
|
65
|
+
} );
|
|
66
|
+
/**
|
|
67
|
+
* @member {Mesh} mesh The mesh ready to get used in the scene
|
|
68
|
+
*/
|
|
69
|
+
this.mesh = new THREE.Mesh( this.geometry, material );
|
|
70
|
+
this.mesh.matrixAutoUpdate = false;
|
|
71
|
+
/**
|
|
72
|
+
* @member {Boolean} geometryNeedsUpdate If set to true, updateGeometry will be triggered at the next repaint
|
|
73
|
+
*/
|
|
74
|
+
this.geometryNeedsUpdate = true;
|
|
75
|
+
this.repaint();
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @member {Number} iLength Width of slice in the original coordinate system, corresponds to the width of the buffer canvas
|
|
79
|
+
*/
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @member {Number} jLength Height of slice in the original coordinate system, corresponds to the height of the buffer canvas
|
|
83
|
+
*/
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* @member {Function} sliceAccess Function that allow the slice to access right data
|
|
87
|
+
* @see Volume.extractPerpendicularPlane
|
|
88
|
+
* @param {Number} i The first coordinate
|
|
89
|
+
* @param {Number} j The second coordinate
|
|
90
|
+
* @returns {Number} the index corresponding to the voxel in volume.data of the given position in the slice
|
|
91
|
+
*/
|
|
100
92
|
|
|
101
|
-
|
|
102
|
-
constructor: VolumeSlice,
|
|
93
|
+
}
|
|
103
94
|
|
|
104
95
|
/**
|
|
105
96
|
* @member {Function} repaint Refresh the texture and the geometry if geometryNeedsUpdate is set to true
|
|
106
97
|
* @memberof VolumeSlice
|
|
107
98
|
*/
|
|
108
|
-
repaint
|
|
99
|
+
repaint() {
|
|
109
100
|
|
|
110
101
|
if ( this.geometryNeedsUpdate ) {
|
|
111
102
|
|
|
@@ -118,18 +109,19 @@
|
|
|
118
109
|
sliceAccess = this.sliceAccess,
|
|
119
110
|
volume = this.volume,
|
|
120
111
|
canvas = this.canvasBuffer,
|
|
121
|
-
ctx = this.ctxBuffer;
|
|
112
|
+
ctx = this.ctxBuffer;
|
|
122
113
|
|
|
114
|
+
// get the imageData and pixel array from the canvas
|
|
123
115
|
const imgData = ctx.getImageData( 0, 0, iLength, jLength );
|
|
124
116
|
const data = imgData.data;
|
|
125
117
|
const volumeData = volume.data;
|
|
126
118
|
const upperThreshold = volume.upperThreshold;
|
|
127
119
|
const lowerThreshold = volume.lowerThreshold;
|
|
128
120
|
const windowLow = volume.windowLow;
|
|
129
|
-
const windowHigh = volume.windowHigh;
|
|
121
|
+
const windowHigh = volume.windowHigh;
|
|
130
122
|
|
|
123
|
+
// manipulate some pixel elements
|
|
131
124
|
let pixelCount = 0;
|
|
132
|
-
|
|
133
125
|
if ( volume.dataType === 'label' ) {
|
|
134
126
|
|
|
135
127
|
//this part is currently useless but will be used when colortables will be handled
|
|
@@ -157,10 +149,10 @@
|
|
|
157
149
|
for ( let i = 0; i < iLength; i ++ ) {
|
|
158
150
|
|
|
159
151
|
let value = volumeData[ sliceAccess( i, j ) ];
|
|
160
|
-
let alpha = 0xff;
|
|
161
|
-
|
|
162
|
-
alpha = upperThreshold >= value ? lowerThreshold <= value ? alpha : 0 : 0;
|
|
163
|
-
|
|
152
|
+
let alpha = 0xff;
|
|
153
|
+
//apply threshold
|
|
154
|
+
alpha = upperThreshold >= value ? lowerThreshold <= value ? alpha : 0 : 0;
|
|
155
|
+
//apply window level
|
|
164
156
|
value = Math.floor( 255 * ( value - windowLow ) / ( windowHigh - windowLow ) );
|
|
165
157
|
value = value > 255 ? 255 : value < 0 ? 0 : value | 0;
|
|
166
158
|
data[ 4 * pixelCount ] = value;
|
|
@@ -179,14 +171,14 @@
|
|
|
179
171
|
this.ctx.drawImage( canvas, 0, 0, iLength, jLength, 0, 0, this.canvas.width, this.canvas.height );
|
|
180
172
|
this.mesh.material.map.needsUpdate = true;
|
|
181
173
|
|
|
182
|
-
}
|
|
174
|
+
}
|
|
183
175
|
|
|
184
176
|
/**
|
|
185
177
|
* @member {Function} Refresh the geometry according to axis and index
|
|
186
178
|
* @see Volume.extractPerpendicularPlane
|
|
187
179
|
* @memberof VolumeSlice
|
|
188
180
|
*/
|
|
189
|
-
updateGeometry
|
|
181
|
+
updateGeometry() {
|
|
190
182
|
|
|
191
183
|
const extracted = this.volume.extractPerpendicularPlane( this.axis, this.index );
|
|
192
184
|
this.sliceAccess = extracted.sliceAccess;
|
|
@@ -202,11 +194,10 @@
|
|
|
202
194
|
if ( this.geometry ) this.geometry.dispose(); // dispose existing geometry
|
|
203
195
|
|
|
204
196
|
this.geometry = new THREE.PlaneGeometry( extracted.planeWidth, extracted.planeHeight );
|
|
205
|
-
|
|
206
197
|
if ( this.mesh ) {
|
|
207
198
|
|
|
208
|
-
this.mesh.geometry = this.geometry;
|
|
209
|
-
|
|
199
|
+
this.mesh.geometry = this.geometry;
|
|
200
|
+
//reset mesh matrix
|
|
210
201
|
this.mesh.matrix.identity();
|
|
211
202
|
this.mesh.applyMatrix4( this.matrix );
|
|
212
203
|
|
|
@@ -215,7 +206,8 @@
|
|
|
215
206
|
this.geometryNeedsUpdate = false;
|
|
216
207
|
|
|
217
208
|
}
|
|
218
|
-
|
|
209
|
+
|
|
210
|
+
}
|
|
219
211
|
|
|
220
212
|
THREE.VolumeSlice = VolumeSlice;
|
|
221
213
|
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
const CHANNELS = 4;
|
|
5
5
|
const TEXTURE_WIDTH = 1024;
|
|
6
6
|
const TEXTURE_HEIGHT = 4;
|
|
7
|
+
|
|
7
8
|
/**
|
|
8
9
|
* Make a new THREE.DataTexture to store the descriptions of the curves.
|
|
9
10
|
*
|
|
10
11
|
* @param { number } numberOfCurves the number of curves needed to be described by this texture.
|
|
11
12
|
*/
|
|
12
|
-
|
|
13
13
|
function initSplineTexture( numberOfCurves = 1 ) {
|
|
14
14
|
|
|
15
15
|
const dataArray = new Float32Array( TEXTURE_WIDTH * TEXTURE_HEIGHT * numberOfCurves * CHANNELS );
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
return dataTexture;
|
|
22
22
|
|
|
23
23
|
}
|
|
24
|
+
|
|
24
25
|
/**
|
|
25
26
|
* Write the curve description to the data texture
|
|
26
27
|
*
|
|
@@ -28,7 +29,6 @@
|
|
|
28
29
|
* @param { Curve } splineCurve The curve to describe
|
|
29
30
|
* @param { number } offset Which curve slot to write to
|
|
30
31
|
*/
|
|
31
|
-
|
|
32
32
|
function updateSplineTexture( texture, splineCurve, offset = 0 ) {
|
|
33
33
|
|
|
34
34
|
const numberOfPoints = Math.floor( TEXTURE_WIDTH * ( TEXTURE_HEIGHT / 4 ) );
|
|
@@ -36,7 +36,6 @@
|
|
|
36
36
|
splineCurve.updateArcLengths();
|
|
37
37
|
const points = splineCurve.getSpacedPoints( numberOfPoints );
|
|
38
38
|
const frenetFrames = splineCurve.computeFrenetFrames( numberOfPoints, true );
|
|
39
|
-
|
|
40
39
|
for ( let i = 0; i < numberOfPoints; i ++ ) {
|
|
41
40
|
|
|
42
41
|
const rowOffset = Math.floor( i / TEXTURE_WIDTH );
|
|
@@ -63,20 +62,18 @@
|
|
|
63
62
|
data
|
|
64
63
|
} = image;
|
|
65
64
|
const i = CHANNELS * TEXTURE_WIDTH * o; // Row Offset
|
|
66
|
-
|
|
67
65
|
data[ index * CHANNELS + i + 0 ] = x;
|
|
68
66
|
data[ index * CHANNELS + i + 1 ] = y;
|
|
69
67
|
data[ index * CHANNELS + i + 2 ] = z;
|
|
70
68
|
data[ index * CHANNELS + i + 3 ] = 1;
|
|
71
69
|
|
|
72
70
|
}
|
|
71
|
+
|
|
73
72
|
/**
|
|
74
73
|
* Create a new set of uniforms for describing the curve modifier
|
|
75
74
|
*
|
|
76
75
|
* @param { THREE.DataTexture } Texture which holds the curve description
|
|
77
76
|
*/
|
|
78
|
-
|
|
79
|
-
|
|
80
77
|
function getUniforms( splineTexture ) {
|
|
81
78
|
|
|
82
79
|
const uniforms = {
|
|
@@ -114,7 +111,6 @@
|
|
|
114
111
|
|
|
115
112
|
if ( material.__ok ) return;
|
|
116
113
|
material.__ok = true;
|
|
117
|
-
|
|
118
114
|
material.onBeforeCompile = shader => {
|
|
119
115
|
|
|
120
116
|
if ( shader.__modified ) return;
|
|
@@ -132,10 +128,17 @@
|
|
|
132
128
|
float textureStacks = ${TEXTURE_HEIGHT / 4}.;
|
|
133
129
|
|
|
134
130
|
${shader.vertexShader}
|
|
135
|
-
`
|
|
136
|
-
|
|
137
|
-
.replace( '#include <
|
|
138
|
-
|
|
131
|
+
`
|
|
132
|
+
// chunk import moved in front of modified shader below
|
|
133
|
+
.replace( '#include <beginnormal_vertex>', '' )
|
|
134
|
+
|
|
135
|
+
// vec3 transformedNormal declaration overriden below
|
|
136
|
+
.replace( '#include <defaultnormal_vertex>', '' )
|
|
137
|
+
|
|
138
|
+
// vec3 transformed declaration overriden below
|
|
139
|
+
.replace( '#include <begin_vertex>', '' )
|
|
140
|
+
|
|
141
|
+
// shader override
|
|
139
142
|
.replace( /void\s*main\s*\(\)\s*\{/, `
|
|
140
143
|
void main() {
|
|
141
144
|
#include <beginnormal_vertex>
|
|
@@ -180,10 +183,10 @@ vec3 transformedNormal = normalMatrix * (basis * objectNormal);
|
|
|
180
183
|
};
|
|
181
184
|
|
|
182
185
|
}
|
|
186
|
+
|
|
183
187
|
/**
|
|
184
188
|
* A helper class for making meshes bend aroudn curves
|
|
185
189
|
*/
|
|
186
|
-
|
|
187
190
|
class Flow {
|
|
188
191
|
|
|
189
192
|
/**
|
|
@@ -212,7 +215,6 @@ vec3 transformedNormal = normalMatrix * (basis * objectNormal);
|
|
|
212
215
|
this.uniforms = uniforms;
|
|
213
216
|
|
|
214
217
|
}
|
|
215
|
-
|
|
216
218
|
updateCurve( index, curve ) {
|
|
217
219
|
|
|
218
220
|
if ( index >= this.curveArray.length ) throw Error( 'Index out of range for Flow' );
|
|
@@ -223,7 +225,6 @@ vec3 transformedNormal = normalMatrix * (basis * objectNormal);
|
|
|
223
225
|
updateSplineTexture( this.splineTexure, curve, index );
|
|
224
226
|
|
|
225
227
|
}
|
|
226
|
-
|
|
227
228
|
moveAlongCurve( amount ) {
|
|
228
229
|
|
|
229
230
|
this.uniforms.pathOffset.value += amount;
|
|
@@ -232,10 +233,10 @@ vec3 transformedNormal = normalMatrix * (basis * objectNormal);
|
|
|
232
233
|
|
|
233
234
|
}
|
|
234
235
|
const matrix = new THREE.Matrix4();
|
|
236
|
+
|
|
235
237
|
/**
|
|
236
238
|
* A helper class for creating instanced versions of flow, where the instances are placed on the curve.
|
|
237
239
|
*/
|
|
238
|
-
|
|
239
240
|
class InstancedFlow extends Flow {
|
|
240
241
|
|
|
241
242
|
/**
|
|
@@ -254,14 +255,13 @@ vec3 transformedNormal = normalMatrix * (basis * objectNormal);
|
|
|
254
255
|
this.whichCurve = new Array( count ).fill( 0 );
|
|
255
256
|
|
|
256
257
|
}
|
|
258
|
+
|
|
257
259
|
/**
|
|
258
260
|
* The extra information about which curve and curve position is stored in the translation components of the matrix for the instanced objects
|
|
259
261
|
* This writes that information to the matrix and marks it as needing update.
|
|
260
262
|
*
|
|
261
263
|
* @param {number} index of the instanced element to update
|
|
262
264
|
*/
|
|
263
|
-
|
|
264
|
-
|
|
265
265
|
writeChanges( index ) {
|
|
266
266
|
|
|
267
267
|
matrix.makeTranslation( this.curveLengthArray[ this.whichCurve[ index ] ], this.whichCurve[ index ], this.offsets[ index ] );
|
|
@@ -269,28 +269,26 @@ vec3 transformedNormal = normalMatrix * (basis * objectNormal);
|
|
|
269
269
|
this.object3D.instanceMatrix.needsUpdate = true;
|
|
270
270
|
|
|
271
271
|
}
|
|
272
|
+
|
|
272
273
|
/**
|
|
273
274
|
* Move an individual element along the curve by a specific amount
|
|
274
275
|
*
|
|
275
276
|
* @param {number} index Which element to update
|
|
276
277
|
* @param {number} offset Move by how much
|
|
277
278
|
*/
|
|
278
|
-
|
|
279
|
-
|
|
280
279
|
moveIndividualAlongCurve( index, offset ) {
|
|
281
280
|
|
|
282
281
|
this.offsets[ index ] += offset;
|
|
283
282
|
this.writeChanges( index );
|
|
284
283
|
|
|
285
284
|
}
|
|
285
|
+
|
|
286
286
|
/**
|
|
287
287
|
* Select which curve to use for an element
|
|
288
288
|
*
|
|
289
289
|
* @param {number} index the index of the instanced element to update
|
|
290
290
|
* @param {number} curveNo the index of the curve it should use
|
|
291
291
|
*/
|
|
292
|
-
|
|
293
|
-
|
|
294
292
|
setCurve( index, curveNo ) {
|
|
295
293
|
|
|
296
294
|
if ( isNaN( curveNo ) ) throw Error( 'curve index being set is Not a Number (NaN)' );
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
( function () {
|
|
2
2
|
|
|
3
3
|
const _A = new THREE.Vector3();
|
|
4
|
-
|
|
5
4
|
const _B = new THREE.Vector3();
|
|
6
|
-
|
|
7
5
|
const _C = new THREE.Vector3();
|
|
8
|
-
|
|
9
6
|
class EdgeSplitModifier {
|
|
10
7
|
|
|
11
8
|
modify( geometry, cutOffAngle, tryKeepNormals = true ) {
|
|
@@ -13,27 +10,17 @@
|
|
|
13
10
|
function computeNormals() {
|
|
14
11
|
|
|
15
12
|
normals = new Float32Array( indexes.length * 3 );
|
|
16
|
-
|
|
17
13
|
for ( let i = 0; i < indexes.length; i += 3 ) {
|
|
18
14
|
|
|
19
15
|
let index = indexes[ i ];
|
|
20
|
-
|
|
21
16
|
_A.set( positions[ 3 * index ], positions[ 3 * index + 1 ], positions[ 3 * index + 2 ] );
|
|
22
|
-
|
|
23
17
|
index = indexes[ i + 1 ];
|
|
24
|
-
|
|
25
18
|
_B.set( positions[ 3 * index ], positions[ 3 * index + 1 ], positions[ 3 * index + 2 ] );
|
|
26
|
-
|
|
27
19
|
index = indexes[ i + 2 ];
|
|
28
|
-
|
|
29
20
|
_C.set( positions[ 3 * index ], positions[ 3 * index + 1 ], positions[ 3 * index + 2 ] );
|
|
30
|
-
|
|
31
21
|
_C.sub( _B );
|
|
32
|
-
|
|
33
22
|
_A.sub( _B );
|
|
34
|
-
|
|
35
23
|
const normal = _C.cross( _A ).normalize();
|
|
36
|
-
|
|
37
24
|
for ( let j = 0; j < 3; j ++ ) {
|
|
38
25
|
|
|
39
26
|
normals[ 3 * ( i + j ) ] = normal.x;
|
|
@@ -49,11 +36,9 @@
|
|
|
49
36
|
function mapPositionsToIndexes() {
|
|
50
37
|
|
|
51
38
|
pointToIndexMap = Array( positions.length / 3 );
|
|
52
|
-
|
|
53
39
|
for ( let i = 0; i < indexes.length; i ++ ) {
|
|
54
40
|
|
|
55
41
|
const index = indexes[ i ];
|
|
56
|
-
|
|
57
42
|
if ( pointToIndexMap[ index ] == null ) {
|
|
58
43
|
|
|
59
44
|
pointToIndexMap[ index ] = [];
|
|
@@ -69,18 +54,15 @@
|
|
|
69
54
|
function edgeSplitToGroups( indexes, cutOff, firstIndex ) {
|
|
70
55
|
|
|
71
56
|
_A.set( normals[ 3 * firstIndex ], normals[ 3 * firstIndex + 1 ], normals[ 3 * firstIndex + 2 ] ).normalize();
|
|
72
|
-
|
|
73
57
|
const result = {
|
|
74
58
|
splitGroup: [],
|
|
75
59
|
currentGroup: [ firstIndex ]
|
|
76
60
|
};
|
|
77
|
-
|
|
78
61
|
for ( const j of indexes ) {
|
|
79
62
|
|
|
80
63
|
if ( j !== firstIndex ) {
|
|
81
64
|
|
|
82
65
|
_B.set( normals[ 3 * j ], normals[ 3 * j + 1 ], normals[ 3 * j + 2 ] ).normalize();
|
|
83
|
-
|
|
84
66
|
if ( _B.dot( _A ) < cutOff ) {
|
|
85
67
|
|
|
86
68
|
result.splitGroup.push( j );
|
|
@@ -103,7 +85,6 @@
|
|
|
103
85
|
|
|
104
86
|
if ( indexes.length === 0 ) return;
|
|
105
87
|
const groupResults = [];
|
|
106
|
-
|
|
107
88
|
for ( const index of indexes ) {
|
|
108
89
|
|
|
109
90
|
groupResults.push( edgeSplitToGroups( indexes, cutOff, index ) );
|
|
@@ -111,7 +92,6 @@
|
|
|
111
92
|
}
|
|
112
93
|
|
|
113
94
|
let result = groupResults[ 0 ];
|
|
114
|
-
|
|
115
95
|
for ( const groupResult of groupResults ) {
|
|
116
96
|
|
|
117
97
|
if ( groupResult.currentGroup.length > result.currentGroup.length ) {
|
|
@@ -141,12 +121,10 @@
|
|
|
141
121
|
|
|
142
122
|
let hadNormals = false;
|
|
143
123
|
let oldNormals = null;
|
|
144
|
-
|
|
145
124
|
if ( geometry.attributes.normal ) {
|
|
146
125
|
|
|
147
126
|
hadNormals = true;
|
|
148
127
|
geometry = geometry.clone();
|
|
149
|
-
|
|
150
128
|
if ( tryKeepNormals === true && geometry.index !== null ) {
|
|
151
129
|
|
|
152
130
|
oldNormals = geometry.attributes.normal.array;
|
|
@@ -170,7 +148,6 @@
|
|
|
170
148
|
computeNormals();
|
|
171
149
|
mapPositionsToIndexes();
|
|
172
150
|
const splitIndexes = [];
|
|
173
|
-
|
|
174
151
|
for ( const vertexIndexes of pointToIndexMap ) {
|
|
175
152
|
|
|
176
153
|
edgeSplit( vertexIndexes, Math.cos( cutOffAngle ) - 0.001 );
|
|
@@ -178,7 +155,6 @@
|
|
|
178
155
|
}
|
|
179
156
|
|
|
180
157
|
const newAttributes = {};
|
|
181
|
-
|
|
182
158
|
for ( const name of Object.keys( geometry.attributes ) ) {
|
|
183
159
|
|
|
184
160
|
const oldAttribute = geometry.attributes[ name ];
|
|
@@ -190,12 +166,10 @@
|
|
|
190
166
|
|
|
191
167
|
const newIndexes = new Uint32Array( indexes.length );
|
|
192
168
|
newIndexes.set( indexes );
|
|
193
|
-
|
|
194
169
|
for ( let i = 0; i < splitIndexes.length; i ++ ) {
|
|
195
170
|
|
|
196
171
|
const split = splitIndexes[ i ];
|
|
197
172
|
const index = indexes[ split.original ];
|
|
198
|
-
|
|
199
173
|
for ( const attribute of Object.values( newAttributes ) ) {
|
|
200
174
|
|
|
201
175
|
for ( let j = 0; j < attribute.itemSize; j ++ ) {
|
|
@@ -216,7 +190,6 @@
|
|
|
216
190
|
|
|
217
191
|
geometry = new THREE.BufferGeometry();
|
|
218
192
|
geometry.setIndex( new THREE.BufferAttribute( newIndexes, 1 ) );
|
|
219
|
-
|
|
220
193
|
for ( const name of Object.keys( newAttributes ) ) {
|
|
221
194
|
|
|
222
195
|
geometry.setAttribute( name, newAttributes[ name ] );
|
|
@@ -226,13 +199,10 @@
|
|
|
226
199
|
if ( hadNormals ) {
|
|
227
200
|
|
|
228
201
|
geometry.computeVertexNormals();
|
|
229
|
-
|
|
230
202
|
if ( oldNormals !== null ) {
|
|
231
203
|
|
|
232
204
|
const changedNormals = new Array( oldNormals.length / 3 ).fill( false );
|
|
233
|
-
|
|
234
205
|
for ( const splitData of splitIndexes ) changedNormals[ splitData.original ] = true;
|
|
235
|
-
|
|
236
206
|
for ( let i = 0; i < changedNormals.length; i ++ ) {
|
|
237
207
|
|
|
238
208
|
if ( changedNormals[ i ] === false ) {
|