super-three 0.136.0 → 0.141.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/LICENSE +1 -1
- package/README.md +24 -26
- package/build/three.cjs +35889 -0
- package/build/three.js +4837 -6036
- package/build/three.min.js +2 -2
- package/build/three.module.js +16548 -17930
- package/examples/js/animation/CCDIKSolver.js +3 -2
- package/examples/js/animation/MMDAnimationHelper.js +3 -1
- package/examples/js/animation/MMDPhysics.js +3 -3
- package/examples/js/cameras/CinematicCamera.js +2 -7
- package/examples/js/controls/ArcballControls.js +3 -1
- package/examples/js/controls/PointerLockControls.js +3 -2
- package/examples/js/controls/TrackballControls.js +1 -4
- package/examples/js/controls/TransformControls.js +5 -6
- package/examples/js/controls/experimental/CameraControls.js +8 -4
- package/examples/js/csm/CSMFrustum.js +1 -1
- package/examples/js/csm/CSMShader.js +51 -35
- package/examples/js/curves/CurveExtras.js +14 -18
- package/examples/js/effects/AnaglyphEffect.js +7 -4
- package/examples/js/effects/AsciiEffect.js +10 -29
- package/examples/js/exporters/ColladaExporter.js +29 -7
- package/examples/js/exporters/EXRExporter.js +458 -0
- package/examples/js/exporters/GLTFExporter.js +233 -105
- package/examples/js/exporters/MMDExporter.js +1 -1
- package/examples/js/exporters/OBJExporter.js +12 -18
- package/examples/js/exporters/PLYExporter.js +15 -20
- package/examples/js/exporters/USDZExporter.js +13 -0
- package/examples/js/geometries/ConvexGeometry.js +1 -1
- package/examples/js/geometries/DecalGeometry.js +0 -7
- package/examples/js/geometries/LightningStrike.js +2 -2
- package/examples/js/geometries/ParametricGeometries.js +3 -3
- package/examples/js/geometries/TextGeometry.js +12 -10
- package/examples/js/helpers/OctreeHelper.js +74 -0
- package/examples/js/helpers/VertexNormalsHelper.js +4 -23
- package/examples/js/helpers/VertexTangentsHelper.js +3 -13
- package/examples/js/helpers/ViewHelper.js +266 -0
- package/examples/js/interactive/HTMLMesh.js +249 -42
- package/examples/js/interactive/SelectionHelper.js +1 -1
- package/examples/js/libs/opentype.min.js +1 -118
- package/examples/js/lines/Line2.js +1 -2
- package/examples/js/lines/LineGeometry.js +10 -21
- package/examples/js/lines/LineMaterial.js +2 -3
- package/examples/js/lines/LineSegments2.js +214 -140
- package/examples/js/lines/LineSegmentsGeometry.js +3 -14
- package/examples/js/lines/Wireframe.js +2 -3
- package/examples/js/lines/WireframeGeometry2.js +1 -2
- package/examples/js/loaders/3MFLoader.js +21 -17
- package/examples/js/loaders/AMFLoader.js +1 -1
- package/examples/js/loaders/BasisTextureLoader.js +1 -0
- package/examples/js/loaders/ColladaLoader.js +33 -12
- package/examples/js/loaders/DDSLoader.js +23 -30
- package/examples/js/loaders/EXRLoader.js +314 -294
- package/examples/js/loaders/FBXLoader.js +11 -0
- package/examples/js/loaders/FontLoader.js +1 -2
- package/examples/js/loaders/GCodeLoader.js +0 -1
- package/examples/js/loaders/GLTFLoader.js +250 -61
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -2
- package/examples/js/loaders/KMZLoader.js +1 -1
- package/examples/js/loaders/KTX2Loader.js +1 -9
- package/examples/js/loaders/LDrawLoader.js +1342 -962
- package/examples/js/loaders/LUT3dlLoader.js +18 -11
- package/examples/js/loaders/LUTCubeLoader.js +4 -5
- package/examples/js/loaders/LWOLoader.js +4 -2
- package/examples/js/loaders/LogLuvLoader.js +1 -2
- package/examples/js/loaders/MD2Loader.js +5 -5
- package/examples/js/loaders/MMDLoader.js +18 -4
- package/examples/js/loaders/MTLLoader.js +10 -3
- package/examples/js/loaders/NRRDLoader.js +1 -1
- package/examples/js/loaders/OBJLoader.js +9 -5
- package/examples/js/loaders/PCDLoader.js +24 -15
- package/examples/js/loaders/PDBLoader.js +11 -11
- package/examples/js/loaders/PLYLoader.js +5 -1
- package/examples/js/loaders/RGBELoader.js +9 -17
- package/examples/js/loaders/RGBMLoader.js +13 -16
- package/examples/js/loaders/STLLoader.js +1 -1
- package/examples/js/loaders/SVGLoader.js +21 -11
- package/examples/js/loaders/VOXLoader.js +3 -4
- package/examples/js/loaders/VRMLLoader.js +9 -21
- package/examples/js/loaders/VTKLoader.js +260 -295
- package/examples/js/loaders/lwo/LWO2Parser.js +4 -4
- package/examples/js/loaders/lwo/LWO3Parser.js +4 -4
- package/examples/js/math/ConvexHull.js +13 -28
- package/examples/js/math/Lut.js +27 -26
- package/examples/js/misc/MorphAnimMesh.js +2 -2
- package/examples/js/misc/ProgressiveLightMap.js +1 -1
- package/examples/js/misc/Volume.js +39 -48
- package/examples/js/misc/VolumeSlice.js +21 -21
- package/examples/js/modifiers/CurveModifier.js +8 -7
- package/examples/js/modifiers/EdgeSplitModifier.js +0 -13
- package/examples/js/modifiers/SimplifyModifier.js +1 -18
- package/examples/js/modifiers/TessellateModifier.js +0 -7
- package/examples/js/objects/Lensflare.js +4 -4
- package/examples/js/objects/LightningStorm.js +4 -5
- package/examples/js/objects/MarchingCubes.js +6 -11
- package/examples/js/objects/Reflector.js +10 -16
- package/examples/js/objects/ReflectorForSSRPass.js +1 -11
- package/examples/js/objects/Refractor.js +10 -16
- package/examples/js/objects/ShadowMesh.js +1 -2
- package/examples/js/objects/Sky.js +1 -1
- package/examples/js/objects/Water.js +2 -15
- package/examples/js/objects/Water2.js +1 -1
- package/examples/js/postprocessing/AdaptiveToneMappingPass.js +6 -10
- package/examples/js/postprocessing/AfterimagePass.js +2 -6
- package/examples/js/postprocessing/BloomPass.js +50 -19
- package/examples/js/postprocessing/DotScreenPass.js +1 -1
- package/examples/js/postprocessing/EffectComposer.js +1 -6
- package/examples/js/postprocessing/GlitchPass.js +4 -5
- package/examples/js/postprocessing/LUTPass.js +2 -2
- package/examples/js/postprocessing/OutlinePass.js +8 -17
- package/examples/js/postprocessing/SAOPass.js +2 -7
- package/examples/js/postprocessing/SMAAPass.js +2 -9
- package/examples/js/postprocessing/SSAARenderPass.js +1 -6
- package/examples/js/postprocessing/SSAOPass.js +9 -21
- package/examples/js/postprocessing/SSRPass.js +3 -8
- package/examples/js/postprocessing/SavePass.js +1 -5
- package/examples/js/postprocessing/TAARenderPass.js +4 -4
- package/examples/js/postprocessing/UnrealBloomPass.js +3 -12
- package/examples/js/renderers/CSS2DRenderer.js +20 -19
- package/examples/js/renderers/CSS3DRenderer.js +40 -36
- package/examples/js/renderers/Projector.js +97 -124
- package/examples/js/renderers/SVGRenderer.js +3 -4
- package/examples/js/shaders/BlendShader.js +2 -1
- package/examples/js/shaders/CopyShader.js +4 -3
- package/examples/js/shaders/DigitalGlitch.js +3 -3
- package/examples/js/shaders/FXAAShader.js +239 -1069
- package/examples/js/shaders/FreiChenShader.js +1 -1
- package/examples/js/shaders/HorizontalBlurShader.js +1 -1
- package/examples/js/shaders/HorizontalTiltShiftShader.js +1 -1
- package/examples/js/shaders/MMDToonShader.js +0 -1
- package/examples/js/shaders/SSAOShader.js +1 -1
- package/examples/js/shaders/SSRShader.js +3 -3
- package/examples/js/shaders/ToneMapShader.js +1 -1
- package/examples/js/utils/BufferGeometryUtils.js +282 -22
- package/examples/js/utils/GPUStatsPanel.js +1 -1
- package/examples/js/utils/LDrawUtils.js +182 -0
- package/examples/js/utils/SceneUtils.js +59 -0
- package/examples/js/utils/SkeletonUtils.js +1 -1
- package/examples/js/utils/UVsDebug.js +23 -33
- package/examples/jsm/animation/CCDIKSolver.js +3 -9
- package/examples/jsm/animation/MMDPhysics.js +2 -2
- package/examples/jsm/cameras/CinematicCamera.js +2 -5
- package/examples/jsm/{WebGL.js → capabilities/WebGL.js} +2 -2
- package/examples/jsm/{renderers/webgpu → capabilities}/WebGPU.js +7 -1
- package/examples/jsm/controls/ArcballControls.js +3 -1
- package/examples/jsm/controls/PointerLockControls.js +4 -2
- package/examples/jsm/controls/TrackballControls.js +1 -4
- package/examples/jsm/controls/TransformControls.js +6 -6
- package/examples/jsm/controls/experimental/CameraControls.js +2 -2
- package/examples/jsm/csm/CSMFrustum.js +1 -1
- package/examples/jsm/csm/CSMShader.js +51 -35
- package/examples/jsm/curves/CurveExtras.js +15 -17
- package/examples/jsm/effects/AnaglyphEffect.js +4 -4
- package/examples/jsm/effects/AsciiEffect.js +9 -22
- package/examples/jsm/exporters/ColladaExporter.js +31 -6
- package/examples/jsm/exporters/EXRExporter.js +507 -0
- package/examples/jsm/exporters/GLTFExporter.js +261 -103
- package/examples/jsm/exporters/KTX2Exporter.js +281 -0
- package/examples/jsm/exporters/MMDExporter.js +1 -1
- package/examples/jsm/exporters/OBJExporter.js +11 -18
- package/examples/jsm/exporters/PLYExporter.js +23 -21
- package/examples/jsm/exporters/USDZExporter.js +12 -0
- package/examples/jsm/geometries/ConvexGeometry.js +1 -1
- package/examples/jsm/geometries/DecalGeometry.js +0 -7
- package/examples/jsm/geometries/LightningStrike.js +2 -2
- package/examples/jsm/geometries/ParametricGeometries.js +3 -3
- package/examples/jsm/geometries/TextGeometry.js +13 -13
- package/examples/jsm/helpers/OctreeHelper.js +58 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +4 -25
- package/examples/jsm/helpers/VertexTangentsHelper.js +3 -15
- package/examples/jsm/helpers/ViewHelper.js +295 -0
- package/examples/jsm/interactive/HTMLMesh.js +268 -36
- package/examples/jsm/interactive/SelectionHelper.js +1 -1
- package/examples/jsm/libs/flow.module.js +947 -183
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/libs/lil-gui.module.min.js +2 -2
- package/examples/jsm/libs/mikktspace.module.js +128 -0
- package/examples/jsm/libs/opentype.module.js +14568 -0
- package/examples/jsm/lines/Line2.js +2 -2
- package/examples/jsm/lines/LineGeometry.js +11 -19
- package/examples/jsm/lines/LineMaterial.js +3 -3
- package/examples/jsm/lines/LineSegments2.js +210 -145
- package/examples/jsm/lines/LineSegmentsGeometry.js +3 -12
- package/examples/jsm/lines/Wireframe.js +3 -3
- package/examples/jsm/lines/WireframeGeometry2.js +2 -2
- package/examples/jsm/loaders/3DMLoader.js +3 -2
- package/examples/jsm/loaders/3MFLoader.js +21 -17
- package/examples/jsm/loaders/AMFLoader.js +1 -1
- package/examples/jsm/loaders/BasisTextureLoader.js +7 -0
- package/examples/jsm/loaders/ColladaLoader.js +40 -12
- package/examples/jsm/loaders/DDSLoader.js +21 -28
- package/examples/jsm/loaders/EXRLoader.js +309 -293
- package/examples/jsm/loaders/FBXLoader.js +11 -0
- package/examples/jsm/loaders/FontLoader.js +2 -2
- package/examples/jsm/loaders/GCodeLoader.js +0 -1
- package/examples/jsm/loaders/GLTFLoader.js +263 -68
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -4
- package/examples/jsm/loaders/KMZLoader.js +1 -1
- package/examples/jsm/loaders/KTX2Loader.js +1 -10
- package/examples/jsm/loaders/LDrawLoader.js +1335 -988
- package/examples/jsm/loaders/LUT3dlLoader.js +19 -14
- package/examples/jsm/loaders/LUTCubeLoader.js +5 -7
- package/examples/jsm/loaders/LWOLoader.js +5 -3
- package/examples/jsm/loaders/LogLuvLoader.js +2 -2
- package/examples/jsm/loaders/MD2Loader.js +5 -5
- package/examples/jsm/loaders/MMDLoader.js +21 -3
- package/examples/jsm/loaders/MTLLoader.js +11 -4
- package/examples/jsm/loaders/NRRDLoader.js +1 -2
- package/examples/jsm/loaders/OBJLoader.js +11 -7
- package/examples/jsm/loaders/PCDLoader.js +25 -17
- package/examples/jsm/loaders/PDBLoader.js +11 -11
- package/examples/jsm/loaders/PLYLoader.js +10 -2
- package/examples/jsm/loaders/RGBELoader.js +11 -20
- package/examples/jsm/loaders/RGBMLoader.js +15 -12
- package/examples/jsm/loaders/STLLoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +26 -11
- package/examples/jsm/loaders/TTFLoader.js +1 -1
- package/examples/jsm/loaders/VOXLoader.js +5 -5
- package/examples/jsm/loaders/VRMLLoader.js +9 -23
- package/examples/jsm/loaders/VTKLoader.js +256 -284
- package/examples/jsm/loaders/ifc/web-ifc-api.js +9 -8
- package/examples/jsm/loaders/lwo/LWO2Parser.js +4 -4
- package/examples/jsm/loaders/lwo/LWO3Parser.js +4 -4
- package/examples/jsm/math/ConvexHull.js +13 -28
- package/examples/jsm/math/Lut.js +35 -25
- package/examples/jsm/misc/MorphAnimMesh.js +2 -2
- package/examples/jsm/misc/ProgressiveLightMap.js +1 -1
- package/examples/jsm/misc/Volume.js +39 -46
- package/examples/jsm/misc/VolumeSlice.js +21 -21
- package/examples/jsm/modifiers/CurveModifier.js +9 -8
- package/examples/jsm/modifiers/EdgeSplitModifier.js +0 -13
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -18
- package/examples/jsm/modifiers/TessellateModifier.js +0 -7
- package/examples/jsm/node-editor/NodeEditor.js +485 -163
- package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +14 -0
- package/examples/jsm/node-editor/accessors/NormalEditor.js +9 -9
- package/examples/jsm/node-editor/accessors/PositionEditor.js +9 -9
- package/examples/jsm/node-editor/accessors/UVEditor.js +7 -8
- package/examples/jsm/node-editor/core/BaseNode.js +89 -0
- package/examples/jsm/node-editor/core/DataFile.js +59 -0
- package/examples/jsm/node-editor/core/FileEditor.js +20 -0
- package/examples/jsm/node-editor/core/FileURLEditor.js +29 -0
- package/examples/jsm/node-editor/display/BlendEditor.js +10 -9
- package/examples/jsm/node-editor/display/NormalMapEditor.js +49 -0
- package/examples/jsm/node-editor/examples/animate-uv.json +1 -1
- package/examples/jsm/node-editor/examples/fake-top-light.json +1 -1
- package/examples/jsm/node-editor/examples/matcap.json +1 -0
- package/examples/jsm/node-editor/examples/oscillator-color.json +1 -1
- package/examples/jsm/node-editor/examples/rim.json +1 -1
- package/examples/jsm/node-editor/inputs/ColorEditor.js +18 -13
- package/examples/jsm/node-editor/inputs/FloatEditor.js +8 -9
- package/examples/jsm/node-editor/inputs/SliderEditor.js +6 -7
- package/examples/jsm/node-editor/inputs/TextureEditor.js +155 -0
- package/examples/jsm/node-editor/inputs/Vector2Editor.js +9 -9
- package/examples/jsm/node-editor/inputs/Vector3Editor.js +11 -11
- package/examples/jsm/node-editor/inputs/Vector4Editor.js +12 -12
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +87 -0
- package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +102 -0
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +31 -18
- package/examples/jsm/node-editor/math/AngleEditor.js +40 -0
- package/examples/jsm/node-editor/math/DotEditor.js +8 -9
- package/examples/jsm/node-editor/math/InvertEditor.js +8 -7
- package/examples/jsm/node-editor/math/LimiterEditor.js +28 -14
- package/examples/jsm/node-editor/math/NormalizeEditor.js +9 -7
- package/examples/jsm/node-editor/math/OperatorEditor.js +29 -16
- package/examples/jsm/node-editor/math/PowerEditor.js +20 -10
- package/examples/jsm/node-editor/math/TrigonometryEditor.js +15 -9
- package/examples/jsm/node-editor/procedural/CheckerEditor.js +7 -6
- package/examples/jsm/node-editor/scene/MeshEditor.js +99 -0
- package/examples/jsm/node-editor/scene/Object3DEditor.js +160 -0
- package/examples/jsm/node-editor/scene/PointsEditor.js +99 -0
- package/examples/jsm/node-editor/utils/JoinEditor.js +58 -0
- package/examples/jsm/node-editor/utils/OscillatorEditor.js +9 -8
- package/examples/jsm/node-editor/utils/PreviewEditor.js +166 -0
- package/examples/jsm/node-editor/utils/SplitEditor.js +39 -0
- package/examples/jsm/node-editor/utils/TimerEditor.js +7 -6
- package/examples/jsm/nodes/Nodes.js +283 -94
- package/examples/jsm/nodes/accessors/BufferNode.js +24 -0
- package/examples/jsm/nodes/accessors/CameraNode.js +27 -196
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +103 -0
- package/examples/jsm/nodes/accessors/InstanceNode.js +58 -0
- package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialNode.js +49 -11
- package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialReferenceNode.js +0 -0
- package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelNode.js +8 -0
- package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelViewProjectionNode.js +0 -0
- package/examples/jsm/nodes/accessors/NormalNode.js +39 -99
- package/examples/jsm/{renderers/nodes → nodes}/accessors/Object3DNode.js +34 -17
- package/examples/jsm/{renderers/nodes → nodes}/accessors/PointUVNode.js +2 -2
- package/examples/jsm/nodes/accessors/PositionNode.js +41 -110
- package/examples/jsm/nodes/accessors/ReferenceNode.js +65 -0
- package/examples/jsm/nodes/accessors/ReflectNode.js +34 -121
- package/examples/jsm/nodes/accessors/SkinningNode.js +102 -0
- package/examples/jsm/nodes/accessors/StorageBufferNode.js +21 -0
- package/examples/jsm/nodes/accessors/TextureNode.js +100 -0
- package/examples/jsm/nodes/accessors/UVNode.js +17 -43
- package/examples/jsm/nodes/accessors/UserDataNode.js +23 -0
- package/examples/jsm/nodes/core/ArrayUniformNode.js +23 -0
- package/examples/jsm/nodes/core/AttributeNode.js +33 -30
- package/examples/jsm/{renderers/nodes → nodes}/core/BypassNode.js +2 -2
- package/examples/jsm/{renderers/nodes → nodes}/core/CodeNode.js +2 -30
- package/examples/jsm/nodes/core/ConstNode.js +10 -106
- package/examples/jsm/{renderers/nodes → nodes}/core/ContextNode.js +17 -3
- package/examples/jsm/nodes/core/ExpressionNode.js +24 -7
- package/examples/jsm/nodes/core/FunctionCallNode.js +26 -67
- package/examples/jsm/nodes/core/FunctionNode.js +43 -216
- package/examples/jsm/nodes/core/InputNode.js +28 -60
- package/examples/jsm/nodes/core/InstanceIndexNode.js +21 -0
- package/examples/jsm/nodes/core/Node.js +228 -94
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeAttribute.js +2 -2
- package/examples/jsm/nodes/core/NodeBuilder.js +388 -560
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeCode.js +0 -0
- package/examples/jsm/nodes/core/NodeFrame.js +30 -23
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunction.js +0 -0
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunctionInput.js +0 -0
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeKeywords.js +0 -0
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeParser.js +0 -0
- package/examples/jsm/nodes/core/NodeUniform.js +8 -6
- package/examples/jsm/nodes/core/NodeUtils.js +69 -37
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeVar.js +2 -2
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeVary.js +2 -2
- package/examples/jsm/{renderers/nodes → nodes}/core/PropertyNode.js +0 -0
- package/examples/jsm/nodes/core/TempNode.js +20 -112
- package/examples/jsm/nodes/core/UniformNode.js +46 -0
- package/examples/jsm/nodes/core/VarNode.js +58 -27
- package/examples/jsm/{renderers/nodes → nodes}/core/VaryNode.js +0 -0
- package/examples/jsm/{renderers/nodes → nodes}/core/constants.js +0 -0
- package/examples/jsm/nodes/display/ColorSpaceNode.js +95 -0
- package/examples/jsm/nodes/display/FrontFacingNode.js +21 -0
- package/examples/jsm/nodes/display/NormalMapNode.js +86 -0
- package/examples/jsm/nodes/display/ToneMappingNode.js +51 -0
- package/examples/jsm/nodes/fog/FogNode.js +31 -0
- package/examples/jsm/nodes/fog/FogRangeNode.js +27 -0
- package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +33 -0
- package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +9 -0
- package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +27 -0
- package/examples/jsm/nodes/functions/BSDF/D_GGX.js +18 -0
- package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +18 -0
- package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +18 -0
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +94 -0
- package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +22 -0
- package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +12 -0
- package/examples/jsm/nodes/functions/material/getRoughness.js +18 -0
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +63 -0
- package/examples/jsm/nodes/lighting/AONode.js +25 -0
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +37 -0
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +65 -0
- package/examples/jsm/nodes/lighting/HemisphereLightNode.js +50 -0
- package/examples/jsm/nodes/lighting/LightingContextNode.js +75 -0
- package/examples/jsm/nodes/lighting/LightingNode.js +19 -0
- package/examples/jsm/nodes/lighting/LightsNode.js +120 -0
- package/examples/jsm/nodes/lighting/PunctualLightNode.js +68 -0
- package/examples/jsm/nodes/loaders/NodeLoader.js +107 -0
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +42 -0
- package/examples/jsm/nodes/loaders/NodeObjectLoader.js +70 -0
- package/examples/jsm/{renderers/nodes → nodes}/materials/LineBasicNodeMaterial.js +11 -4
- package/examples/jsm/nodes/materials/Materials.js +65 -0
- package/examples/jsm/{renderers/nodes → nodes}/materials/MeshBasicNodeMaterial.js +13 -4
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +162 -22
- package/examples/jsm/nodes/materials/NodeMaterial.js +128 -113
- package/examples/jsm/{renderers/nodes → nodes}/materials/PointsNodeMaterial.js +13 -4
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +84 -16
- package/examples/jsm/nodes/math/CondNode.js +26 -95
- package/examples/jsm/nodes/math/MathNode.js +164 -187
- package/examples/jsm/nodes/math/OperatorNode.js +161 -41
- package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeFunction.js +2 -2
- package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeParser.js +0 -0
- package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeFunction.js +20 -5
- package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeParser.js +0 -0
- package/examples/jsm/nodes/procedural/CheckerNode.js +16 -57
- package/examples/jsm/nodes/shadernode/ShaderNode.js +262 -0
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +274 -0
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +106 -0
- package/examples/jsm/{renderers/nodes → nodes}/utils/ArrayElementNode.js +3 -3
- package/examples/jsm/{renderers/nodes → nodes}/utils/ConvertNode.js +11 -3
- package/examples/jsm/nodes/utils/JoinNode.js +17 -89
- package/examples/jsm/nodes/utils/MatcapUVNode.js +25 -0
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +32 -0
- package/examples/jsm/{renderers/nodes → nodes}/utils/OscNode.js +18 -2
- package/examples/jsm/{renderers/nodes → nodes}/utils/SplitNode.js +35 -4
- package/examples/jsm/{renderers/nodes → nodes}/utils/SpriteSheetUVNode.js +3 -3
- package/examples/jsm/nodes/utils/TimerNode.js +30 -65
- package/examples/jsm/objects/Lensflare.js +6 -6
- package/examples/jsm/objects/LightningStorm.js +4 -4
- package/examples/jsm/objects/MarchingCubes.js +5 -9
- package/examples/jsm/objects/Reflector.js +8 -19
- package/examples/jsm/objects/ReflectorForSSRPass.js +2 -14
- package/examples/jsm/objects/Refractor.js +8 -19
- package/examples/jsm/objects/ShadowMesh.js +2 -2
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/Water.js +3 -18
- package/examples/jsm/objects/Water2.js +2 -2
- package/examples/jsm/offscreen/jank.js +5 -5
- package/examples/jsm/offscreen/offscreen.js +1 -1
- package/examples/jsm/offscreen/scene.js +11 -11
- package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +5 -7
- package/examples/jsm/postprocessing/AfterimagePass.js +0 -10
- package/examples/jsm/postprocessing/BloomPass.js +48 -20
- package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
- package/examples/jsm/postprocessing/EffectComposer.js +1 -9
- package/examples/jsm/postprocessing/GlitchPass.js +7 -6
- package/examples/jsm/postprocessing/LUTPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +8 -15
- package/examples/jsm/postprocessing/SAOPass.js +2 -9
- package/examples/jsm/postprocessing/SMAAPass.js +2 -11
- package/examples/jsm/postprocessing/SSAARenderPass.js +1 -4
- package/examples/jsm/postprocessing/SSAOPass.js +13 -25
- package/examples/jsm/postprocessing/SSRPass.js +3 -9
- package/examples/jsm/postprocessing/SavePass.js +1 -3
- package/examples/jsm/postprocessing/TAARenderPass.js +4 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +3 -8
- package/examples/jsm/renderers/CSS2DRenderer.js +21 -19
- package/examples/jsm/renderers/CSS3DRenderer.js +39 -34
- package/examples/jsm/renderers/Projector.js +101 -128
- package/examples/jsm/renderers/SVGRenderer.js +4 -4
- package/examples/jsm/renderers/webgl/nodes/SlotNode.js +1 -1
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +127 -23
- package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +14 -3
- package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +5 -5
- package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +4 -4
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +16 -10
- package/examples/jsm/renderers/webgpu/WebGPUBindings.js +8 -7
- package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +43 -0
- package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +14 -7
- package/examples/jsm/renderers/webgpu/WebGPUInfo.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPUObjects.js +0 -6
- package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +20 -20
- package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +2 -1
- package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +66 -0
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +49 -28
- package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +14 -14
- package/examples/jsm/renderers/webgpu/WebGPUSampler.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +5 -8
- package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +23 -20
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +38 -20
- package/examples/jsm/renderers/webgpu/WebGPUUniform.js +14 -14
- package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +5 -32
- package/examples/jsm/renderers/webgpu/WebGPUUniformsGroup.js +2 -2
- package/examples/jsm/renderers/webgpu/constants.js +3 -2
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +276 -278
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeSampledTexture.js +20 -2
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +24 -14
- package/examples/jsm/shaders/BlendShader.js +2 -1
- package/examples/jsm/shaders/CopyShader.js +4 -3
- package/examples/jsm/shaders/DigitalGlitch.js +3 -3
- package/examples/jsm/shaders/FXAAShader.js +219 -1051
- package/examples/jsm/shaders/FreiChenShader.js +1 -1
- package/examples/jsm/shaders/HorizontalBlurShader.js +1 -1
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +1 -1
- package/examples/jsm/shaders/MMDToonShader.js +0 -1
- package/examples/jsm/shaders/SSAOShader.js +1 -1
- package/examples/jsm/shaders/SSRShader.js +3 -3
- package/examples/jsm/shaders/ToneMapShader.js +1 -1
- package/examples/jsm/utils/BufferGeometryUtils.js +292 -22
- package/examples/jsm/utils/GPUStatsPanel.js +1 -1
- package/examples/jsm/utils/LDrawUtils.js +202 -0
- package/examples/jsm/utils/SceneUtils.js +76 -2
- package/examples/jsm/utils/SkeletonUtils.js +1 -1
- package/examples/jsm/utils/UVsDebug.js +23 -32
- package/examples/jsm/webxr/ARButton.js +14 -4
- package/examples/jsm/webxr/OculusHandPointerModel.js +3 -3
- package/examples/jsm/webxr/Text2D.js +1 -1
- package/examples/jsm/webxr/VRButton.js +39 -1
- package/examples/jsm/webxr/XREstimatedLight.js +2 -0
- package/examples/jsm/webxr/XRHandMeshModel.js +3 -7
- package/examples/jsm/webxr/XRHandModelFactory.js +3 -0
- package/package.json +53 -25
- package/src/Three.Legacy.js +41 -1912
- package/src/Three.js +6 -3
- package/src/animation/AnimationClip.js +1 -1
- package/src/animation/AnimationMixer.js +6 -3
- package/src/animation/AnimationObjectGroup.js +2 -2
- package/src/animation/PropertyBinding.js +8 -18
- package/src/audio/PositionalAudio.js +8 -0
- package/src/cameras/ArrayCamera.js +2 -3
- package/src/cameras/Camera.js +2 -2
- package/src/cameras/CubeCamera.js +8 -1
- package/src/cameras/OrthographicCamera.js +2 -2
- package/src/cameras/PerspectiveCamera.js +2 -2
- package/src/constants.js +8 -18
- package/src/core/BufferAttribute.js +7 -12
- package/src/core/BufferGeometry.js +6 -6
- package/src/core/GLBufferAttribute.js +2 -2
- package/src/core/InstancedBufferAttribute.js +2 -2
- package/src/core/InstancedBufferGeometry.js +2 -2
- package/src/core/InstancedInterleavedBuffer.js +2 -2
- package/src/core/InterleavedBuffer.js +2 -2
- package/src/core/InterleavedBufferAttribute.js +5 -11
- package/src/core/Object3D.js +6 -3
- package/src/core/Raycaster.js +2 -2
- package/src/extras/DataUtils.js +127 -40
- package/src/extras/Earcut.js +2 -2
- package/src/extras/ImageUtils.js +63 -0
- package/src/extras/PMREMGenerator.js +152 -174
- package/src/extras/core/CurvePath.js +3 -3
- package/src/extras/core/ShapePath.js +5 -6
- package/src/extras/curves/ArcCurve.js +2 -2
- package/src/extras/curves/CatmullRomCurve3.js +2 -2
- package/src/extras/curves/CubicBezierCurve.js +2 -2
- package/src/extras/curves/CubicBezierCurve3.js +2 -2
- package/src/extras/curves/EllipseCurve.js +2 -2
- package/src/extras/curves/LineCurve.js +2 -2
- package/src/extras/curves/LineCurve3.js +2 -1
- package/src/extras/curves/QuadraticBezierCurve.js +2 -2
- package/src/extras/curves/QuadraticBezierCurve3.js +2 -2
- package/src/extras/curves/SplineCurve.js +2 -2
- package/src/geometries/CapsuleGeometry.js +33 -0
- package/src/geometries/ExtrudeGeometry.js +2 -0
- package/src/geometries/Geometries.js +1 -0
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/geometries/TorusKnotGeometry.js +2 -2
- package/src/geometries/WireframeGeometry.js +3 -2
- package/src/helpers/BoxHelper.js +2 -2
- package/src/helpers/PointLightHelper.js +1 -1
- package/src/helpers/SkeletonHelper.js +3 -2
- package/src/lights/AmbientLight.js +2 -2
- package/src/lights/AmbientLightProbe.js +2 -2
- package/src/lights/DirectionalLight.js +2 -2
- package/src/lights/DirectionalLightShadow.js +2 -2
- package/src/lights/HemisphereLight.js +4 -4
- package/src/lights/HemisphereLightProbe.js +2 -2
- package/src/lights/Light.js +4 -4
- package/src/lights/LightProbe.js +2 -2
- package/src/lights/PointLight.js +4 -4
- package/src/lights/PointLightShadow.js +2 -2
- package/src/lights/RectAreaLight.js +2 -2
- package/src/lights/SpotLight.js +4 -4
- package/src/lights/SpotLightShadow.js +2 -2
- package/src/loaders/FileLoader.js +23 -4
- package/src/loaders/ImageBitmapLoader.js +2 -2
- package/src/loaders/ImageLoader.js +1 -1
- package/src/loaders/LoaderUtils.js +1 -1
- package/src/loaders/MaterialLoader.js +8 -3
- package/src/loaders/ObjectLoader.js +23 -25
- package/src/materials/LineBasicMaterial.js +6 -13
- package/src/materials/LineDashedMaterial.js +2 -15
- package/src/materials/Material.js +49 -15
- package/src/materials/Materials.js +66 -18
- package/src/materials/MeshBasicMaterial.js +6 -31
- package/src/materials/MeshDepthMaterial.js +2 -22
- package/src/materials/MeshDistanceMaterial.js +2 -22
- package/src/materials/MeshLambertMaterial.js +6 -34
- package/src/materials/MeshMatcapMaterial.js +6 -28
- package/src/materials/MeshNormalMaterial.js +2 -26
- package/src/materials/MeshPhongMaterial.js +6 -48
- package/src/materials/MeshPhysicalMaterial.js +32 -35
- package/src/materials/MeshStandardMaterial.js +6 -54
- package/src/materials/MeshToonMaterial.js +6 -38
- package/src/materials/PointsMaterial.js +6 -15
- package/src/materials/RawShaderMaterial.js +2 -2
- package/src/materials/ShaderMaterial.js +3 -17
- package/src/materials/ShadowMaterial.js +6 -8
- package/src/materials/SpriteMaterial.js +6 -12
- package/src/math/Box2.js +2 -2
- package/src/math/Box3.js +29 -15
- package/src/math/Color.js +85 -36
- package/src/math/ColorManagement.js +74 -0
- package/src/math/Euler.js +16 -14
- package/src/math/Interpolant.js +4 -9
- package/src/math/MathUtils.js +76 -7
- package/src/math/Matrix3.js +2 -2
- package/src/math/Matrix4.js +2 -3
- package/src/math/Plane.js +2 -2
- package/src/math/Quaternion.js +12 -3
- package/src/math/Spherical.js +1 -1
- package/src/math/SphericalHarmonics3.js +2 -2
- package/src/math/Vector2.js +2 -2
- package/src/math/Vector3.js +12 -3
- package/src/math/Vector4.js +2 -2
- package/src/math/interpolants/DiscreteInterpolant.js +1 -1
- package/src/objects/Bone.js +2 -2
- package/src/objects/Group.js +2 -2
- package/src/objects/InstancedMesh.js +4 -4
- package/src/objects/Line.js +76 -107
- package/src/objects/LineLoop.js +2 -2
- package/src/objects/LineSegments.js +15 -23
- package/src/objects/Mesh.js +82 -104
- package/src/objects/Points.js +32 -54
- package/src/objects/SkinnedMesh.js +5 -8
- package/src/objects/Sprite.js +4 -4
- package/src/renderers/WebGL3DRenderTarget.js +22 -0
- package/src/renderers/WebGLArrayRenderTarget.js +22 -0
- package/src/renderers/WebGLCubeRenderTarget.js +7 -16
- package/src/renderers/WebGLMultipleRenderTargets.js +8 -5
- package/src/renderers/WebGLRenderTarget.js +19 -18
- package/src/renderers/WebGLRenderer.js +112 -133
- package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +46 -0
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +1 -0
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +12 -13
- package/src/renderers/shaders/ShaderChunk/dithering_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -4
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +3 -19
- package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +107 -0
- package/src/renderers/shaders/ShaderChunk/iridescence_pars_fragment.glsl.js +14 -0
- package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -7
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +25 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -7
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +25 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +43 -5
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +10 -3
- package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +1 -2
- package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +24 -0
- package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +7 -7
- package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +1 -9
- package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +16 -31
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +9 -8
- package/src/renderers/shaders/ShaderChunk.js +6 -0
- package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -2
- package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -3
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +3 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +2 -2
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +6 -0
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +10 -0
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib.js +8 -2
- package/src/renderers/shaders/UniformsLib.js +2 -2
- package/src/renderers/webgl/WebGLAttributes.js +6 -6
- package/src/renderers/webgl/WebGLBackground.js +5 -2
- package/src/renderers/webgl/WebGLBindingStates.js +57 -29
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -4
- package/src/renderers/webgl/WebGLCubeUVMaps.js +29 -16
- package/src/renderers/webgl/WebGLGeometries.js +2 -2
- package/src/renderers/webgl/WebGLLights.js +0 -1
- package/src/renderers/webgl/WebGLMaterials.js +72 -187
- package/src/renderers/webgl/WebGLMorphtargets.js +59 -23
- package/src/renderers/webgl/WebGLProgram.js +56 -30
- package/src/renderers/webgl/WebGLPrograms.js +80 -130
- package/src/renderers/webgl/WebGLShaderCache.js +4 -3
- package/src/renderers/webgl/WebGLShadowMap.js +6 -8
- package/src/renderers/webgl/WebGLState.js +83 -2
- package/src/renderers/webgl/WebGLTextures.js +618 -375
- package/src/renderers/webgl/WebGLUniforms.js +79 -80
- package/src/renderers/webgl/WebGLUtils.js +97 -30
- package/src/renderers/webxr/WebXRManager.js +64 -47
- package/src/scenes/Fog.js +2 -2
- package/src/scenes/FogExp2.js +2 -2
- package/src/scenes/Scene.js +2 -2
- package/src/textures/CanvasTexture.js +2 -2
- package/src/textures/CompressedTexture.js +2 -2
- package/src/textures/CubeTexture.js +2 -2
- package/src/textures/{DataTexture3D.js → Data3DTexture.js} +4 -4
- package/src/textures/{DataTexture2DArray.js → DataArrayTexture.js} +4 -4
- package/src/textures/DataTexture.js +2 -5
- package/src/textures/DepthTexture.js +5 -5
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +123 -0
- package/src/textures/Texture.js +29 -98
- package/src/textures/VideoTexture.js +2 -4
- package/src/utils.js +15 -1
- package/examples/js/WebGL.js +0 -90
- package/examples/js/csm/Frustum.js +0 -133
- package/examples/js/deprecated/Geometry.js +0 -1656
- package/examples/js/loaders/VRMLoader.js +0 -72
- package/examples/js/objects/ReflectorRTT.js +0 -16
- package/examples/js/postprocessing/SSRrPass.js +0 -494
- package/examples/js/shaders/SSRrShader.js +0 -336
- package/examples/js/utils/RoughnessMipmapper.js +0 -268
- package/examples/jsm/deprecated/Geometry.js +0 -1869
- package/examples/jsm/libs/opentype.module.min.js +0 -119
- package/examples/jsm/loaders/NodeMaterialLoader.js +0 -263
- package/examples/jsm/loaders/VRMLoader.js +0 -78
- package/examples/jsm/nodes/accessors/ColorsNode.js +0 -56
- package/examples/jsm/nodes/accessors/LightNode.js +0 -60
- package/examples/jsm/nodes/accessors/ResolutionNode.js +0 -64
- package/examples/jsm/nodes/accessors/ScreenUVNode.js +0 -64
- package/examples/jsm/nodes/core/NodeLib.js +0 -64
- package/examples/jsm/nodes/core/StructNode.js +0 -106
- package/examples/jsm/nodes/effects/BlurNode.js +0 -171
- package/examples/jsm/nodes/effects/ColorAdjustmentNode.js +0 -140
- package/examples/jsm/nodes/effects/LuminanceNode.js +0 -75
- package/examples/jsm/nodes/inputs/BoolNode.js +0 -51
- package/examples/jsm/nodes/inputs/ColorNode.js +0 -58
- package/examples/jsm/nodes/inputs/CubeTextureNode.js +0 -108
- package/examples/jsm/nodes/inputs/FloatNode.js +0 -51
- package/examples/jsm/nodes/inputs/IntNode.js +0 -51
- package/examples/jsm/nodes/inputs/Matrix3Node.js +0 -63
- package/examples/jsm/nodes/inputs/Matrix4Node.js +0 -63
- package/examples/jsm/nodes/inputs/PropertyNode.js +0 -47
- package/examples/jsm/nodes/inputs/RTTNode.js +0 -157
- package/examples/jsm/nodes/inputs/ReflectorNode.js +0 -90
- package/examples/jsm/nodes/inputs/ScreenNode.js +0 -28
- package/examples/jsm/nodes/inputs/TextureNode.js +0 -116
- package/examples/jsm/nodes/inputs/Vector2Node.js +0 -57
- package/examples/jsm/nodes/inputs/Vector3Node.js +0 -58
- package/examples/jsm/nodes/inputs/Vector4Node.js +0 -59
- package/examples/jsm/nodes/materials/BasicNodeMaterial.js +0 -26
- package/examples/jsm/nodes/materials/PhongNodeMaterial.js +0 -36
- package/examples/jsm/nodes/materials/StandardNodeMaterial.js +0 -40
- package/examples/jsm/nodes/materials/nodes/BasicNode.js +0 -154
- package/examples/jsm/nodes/materials/nodes/MeshStandardNode.js +0 -116
- package/examples/jsm/nodes/materials/nodes/PhongNode.js +0 -409
- package/examples/jsm/nodes/materials/nodes/RawNode.js +0 -62
- package/examples/jsm/nodes/materials/nodes/SpriteNode.js +0 -236
- package/examples/jsm/nodes/materials/nodes/StandardNode.js +0 -609
- package/examples/jsm/nodes/misc/BumpMapNode.js +0 -163
- package/examples/jsm/nodes/misc/NormalMapNode.js +0 -138
- package/examples/jsm/nodes/misc/TextureCubeNode.js +0 -86
- package/examples/jsm/nodes/misc/TextureCubeUVNode.js +0 -280
- package/examples/jsm/nodes/postprocessing/NodePass.js +0 -93
- package/examples/jsm/nodes/postprocessing/NodePostProcessing.js +0 -148
- package/examples/jsm/nodes/procedural/Fractal3DNode.js +0 -104
- package/examples/jsm/nodes/procedural/Noise2DNode.js +0 -149
- package/examples/jsm/nodes/procedural/Noise3DNode.js +0 -141
- package/examples/jsm/nodes/utils/BypassNode.js +0 -85
- package/examples/jsm/nodes/utils/ColorSpaceNode.js +0 -154
- package/examples/jsm/nodes/utils/MaxMIPLevelNode.js +0 -56
- package/examples/jsm/nodes/utils/RemapNode.js +0 -155
- package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -101
- package/examples/jsm/nodes/utils/SubSlotNode.js +0 -77
- package/examples/jsm/nodes/utils/SwitchNode.js +0 -103
- package/examples/jsm/nodes/utils/UVTransformNode.js +0 -66
- package/examples/jsm/nodes/utils/VelocityNode.js +0 -170
- package/examples/jsm/objects/ReflectorRTT.js +0 -15
- package/examples/jsm/postprocessing/SSRrPass.js +0 -579
- package/examples/jsm/renderers/nodes/Nodes.js +0 -164
- package/examples/jsm/renderers/nodes/ShaderNode.js +0 -346
- package/examples/jsm/renderers/nodes/accessors/CameraNode.js +0 -68
- package/examples/jsm/renderers/nodes/accessors/NormalNode.js +0 -63
- package/examples/jsm/renderers/nodes/accessors/PositionNode.js +0 -67
- package/examples/jsm/renderers/nodes/accessors/ReferenceNode.js +0 -91
- package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +0 -107
- package/examples/jsm/renderers/nodes/accessors/UVNode.js +0 -25
- package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +0 -23
- package/examples/jsm/renderers/nodes/core/AttributeNode.js +0 -54
- package/examples/jsm/renderers/nodes/core/ExpressionNode.js +0 -32
- package/examples/jsm/renderers/nodes/core/FunctionCallNode.js +0 -67
- package/examples/jsm/renderers/nodes/core/FunctionNode.js +0 -87
- package/examples/jsm/renderers/nodes/core/InputNode.js +0 -66
- package/examples/jsm/renderers/nodes/core/Node.js +0 -104
- package/examples/jsm/renderers/nodes/core/NodeBuilder.js +0 -633
- package/examples/jsm/renderers/nodes/core/NodeFrame.js +0 -59
- package/examples/jsm/renderers/nodes/core/NodeUniform.js +0 -28
- package/examples/jsm/renderers/nodes/core/TempNode.js +0 -43
- package/examples/jsm/renderers/nodes/core/VarNode.js +0 -51
- package/examples/jsm/renderers/nodes/display/ColorSpaceNode.js +0 -133
- package/examples/jsm/renderers/nodes/display/NormalMapNode.js +0 -87
- package/examples/jsm/renderers/nodes/functions/BSDFs.js +0 -122
- package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +0 -27
- package/examples/jsm/renderers/nodes/inputs/BufferNode.js +0 -25
- package/examples/jsm/renderers/nodes/inputs/ColorNode.js +0 -18
- package/examples/jsm/renderers/nodes/inputs/FloatNode.js +0 -17
- package/examples/jsm/renderers/nodes/inputs/IntNode.js +0 -17
- package/examples/jsm/renderers/nodes/inputs/Matrix3Node.js +0 -18
- package/examples/jsm/renderers/nodes/inputs/Matrix4Node.js +0 -18
- package/examples/jsm/renderers/nodes/inputs/TextureNode.js +0 -79
- package/examples/jsm/renderers/nodes/inputs/Vector2Node.js +0 -18
- package/examples/jsm/renderers/nodes/inputs/Vector3Node.js +0 -18
- package/examples/jsm/renderers/nodes/inputs/Vector4Node.js +0 -18
- package/examples/jsm/renderers/nodes/lights/LightContextNode.js +0 -59
- package/examples/jsm/renderers/nodes/lights/LightNode.js +0 -79
- package/examples/jsm/renderers/nodes/lights/LightsNode.js +0 -44
- package/examples/jsm/renderers/nodes/materials/Materials.js +0 -11
- package/examples/jsm/renderers/nodes/materials/MeshStandardNodeMaterial.js +0 -63
- package/examples/jsm/renderers/nodes/math/CondNode.js +0 -60
- package/examples/jsm/renderers/nodes/math/MathNode.js +0 -241
- package/examples/jsm/renderers/nodes/math/OperatorNode.js +0 -174
- package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +0 -36
- package/examples/jsm/renderers/nodes/utils/JoinNode.js +0 -42
- package/examples/jsm/renderers/nodes/utils/TimerNode.js +0 -47
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +0 -20
- package/examples/jsm/shaders/SSRrShader.js +0 -307
- package/examples/jsm/utils/RoughnessMipmapper.js +0 -288
- package/src/renderers/WebGLMultisampleRenderTarget.js +0 -33
|
@@ -56,67 +56,67 @@ class VTKLoader extends Loader {
|
|
|
56
56
|
function parseASCII( data ) {
|
|
57
57
|
|
|
58
58
|
// connectivity of the triangles
|
|
59
|
-
|
|
59
|
+
const indices = [];
|
|
60
60
|
|
|
61
61
|
// triangles vertices
|
|
62
|
-
|
|
62
|
+
const positions = [];
|
|
63
63
|
|
|
64
64
|
// red, green, blue colors in the range 0 to 1
|
|
65
|
-
|
|
65
|
+
const colors = [];
|
|
66
66
|
|
|
67
67
|
// normal vector, one per vertex
|
|
68
|
-
|
|
68
|
+
const normals = [];
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
let result;
|
|
71
71
|
|
|
72
72
|
// pattern for detecting the end of a number sequence
|
|
73
|
-
|
|
73
|
+
const patWord = /^[^\d.\s-]+/;
|
|
74
74
|
|
|
75
75
|
// pattern for reading vertices, 3 floats or integers
|
|
76
|
-
|
|
76
|
+
const pat3Floats = /(\-?\d+\.?[\d\-\+e]*)\s+(\-?\d+\.?[\d\-\+e]*)\s+(\-?\d+\.?[\d\-\+e]*)/g;
|
|
77
77
|
|
|
78
78
|
// pattern for connectivity, an integer followed by any number of ints
|
|
79
79
|
// the first integer is the number of polygon nodes
|
|
80
|
-
|
|
80
|
+
const patConnectivity = /^(\d+)\s+([\s\d]*)/;
|
|
81
81
|
|
|
82
82
|
// indicates start of vertex data section
|
|
83
|
-
|
|
83
|
+
const patPOINTS = /^POINTS /;
|
|
84
84
|
|
|
85
85
|
// indicates start of polygon connectivity section
|
|
86
|
-
|
|
86
|
+
const patPOLYGONS = /^POLYGONS /;
|
|
87
87
|
|
|
88
88
|
// indicates start of triangle strips section
|
|
89
|
-
|
|
89
|
+
const patTRIANGLE_STRIPS = /^TRIANGLE_STRIPS /;
|
|
90
90
|
|
|
91
91
|
// POINT_DATA number_of_values
|
|
92
|
-
|
|
92
|
+
const patPOINT_DATA = /^POINT_DATA[ ]+(\d+)/;
|
|
93
93
|
|
|
94
94
|
// CELL_DATA number_of_polys
|
|
95
|
-
|
|
95
|
+
const patCELL_DATA = /^CELL_DATA[ ]+(\d+)/;
|
|
96
96
|
|
|
97
97
|
// Start of color section
|
|
98
|
-
|
|
98
|
+
const patCOLOR_SCALARS = /^COLOR_SCALARS[ ]+(\w+)[ ]+3/;
|
|
99
99
|
|
|
100
100
|
// NORMALS Normals float
|
|
101
|
-
|
|
101
|
+
const patNORMALS = /^NORMALS[ ]+(\w+)[ ]+(\w+)/;
|
|
102
102
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
103
|
+
let inPointsSection = false;
|
|
104
|
+
let inPolygonsSection = false;
|
|
105
|
+
let inTriangleStripSection = false;
|
|
106
|
+
let inPointDataSection = false;
|
|
107
|
+
let inCellDataSection = false;
|
|
108
|
+
let inColorSection = false;
|
|
109
|
+
let inNormalsSection = false;
|
|
110
110
|
|
|
111
|
-
|
|
111
|
+
const lines = data.split( '\n' );
|
|
112
112
|
|
|
113
|
-
for (
|
|
113
|
+
for ( const i in lines ) {
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
const line = lines[ i ].trim();
|
|
116
116
|
|
|
117
117
|
if ( line.indexOf( 'DATASET' ) === 0 ) {
|
|
118
118
|
|
|
119
|
-
|
|
119
|
+
const dataset = line.split( ' ' )[ 1 ];
|
|
120
120
|
|
|
121
121
|
if ( dataset !== 'POLYDATA' ) throw new Error( 'Unsupported DATASET type: ' + dataset );
|
|
122
122
|
|
|
@@ -127,9 +127,9 @@ class VTKLoader extends Loader {
|
|
|
127
127
|
|
|
128
128
|
if ( patWord.exec( line ) !== null ) break;
|
|
129
129
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
130
|
+
const x = parseFloat( result[ 1 ] );
|
|
131
|
+
const y = parseFloat( result[ 2 ] );
|
|
132
|
+
const z = parseFloat( result[ 3 ] );
|
|
133
133
|
positions.push( x, y, z );
|
|
134
134
|
|
|
135
135
|
}
|
|
@@ -139,19 +139,18 @@ class VTKLoader extends Loader {
|
|
|
139
139
|
if ( ( result = patConnectivity.exec( line ) ) !== null ) {
|
|
140
140
|
|
|
141
141
|
// numVertices i0 i1 i2 ...
|
|
142
|
-
|
|
143
|
-
|
|
142
|
+
const numVertices = parseInt( result[ 1 ] );
|
|
143
|
+
const inds = result[ 2 ].split( /\s+/ );
|
|
144
144
|
|
|
145
145
|
if ( numVertices >= 3 ) {
|
|
146
146
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
var k = 1;
|
|
147
|
+
const i0 = parseInt( inds[ 0 ] );
|
|
148
|
+
let k = 1;
|
|
150
149
|
// split the polygon in numVertices - 2 triangles
|
|
151
|
-
for (
|
|
150
|
+
for ( let j = 0; j < numVertices - 2; ++ j ) {
|
|
152
151
|
|
|
153
|
-
i1 = parseInt( inds[ k ] );
|
|
154
|
-
i2 = parseInt( inds[ k + 1 ] );
|
|
152
|
+
const i1 = parseInt( inds[ k ] );
|
|
153
|
+
const i2 = parseInt( inds[ k + 1 ] );
|
|
155
154
|
indices.push( i0, i1, i2 );
|
|
156
155
|
k ++;
|
|
157
156
|
|
|
@@ -166,27 +165,26 @@ class VTKLoader extends Loader {
|
|
|
166
165
|
if ( ( result = patConnectivity.exec( line ) ) !== null ) {
|
|
167
166
|
|
|
168
167
|
// numVertices i0 i1 i2 ...
|
|
169
|
-
|
|
170
|
-
|
|
168
|
+
const numVertices = parseInt( result[ 1 ] );
|
|
169
|
+
const inds = result[ 2 ].split( /\s+/ );
|
|
171
170
|
|
|
172
171
|
if ( numVertices >= 3 ) {
|
|
173
172
|
|
|
174
|
-
var i0, i1, i2;
|
|
175
173
|
// split the polygon in numVertices - 2 triangles
|
|
176
|
-
for (
|
|
174
|
+
for ( let j = 0; j < numVertices - 2; j ++ ) {
|
|
177
175
|
|
|
178
176
|
if ( j % 2 === 1 ) {
|
|
179
177
|
|
|
180
|
-
i0 = parseInt( inds[ j ] );
|
|
181
|
-
i1 = parseInt( inds[ j + 2 ] );
|
|
182
|
-
i2 = parseInt( inds[ j + 1 ] );
|
|
178
|
+
const i0 = parseInt( inds[ j ] );
|
|
179
|
+
const i1 = parseInt( inds[ j + 2 ] );
|
|
180
|
+
const i2 = parseInt( inds[ j + 1 ] );
|
|
183
181
|
indices.push( i0, i1, i2 );
|
|
184
182
|
|
|
185
183
|
} else {
|
|
186
184
|
|
|
187
|
-
i0 = parseInt( inds[ j ] );
|
|
188
|
-
i1 = parseInt( inds[ j + 1 ] );
|
|
189
|
-
i2 = parseInt( inds[ j + 2 ] );
|
|
185
|
+
const i0 = parseInt( inds[ j ] );
|
|
186
|
+
const i1 = parseInt( inds[ j + 1 ] );
|
|
187
|
+
const i2 = parseInt( inds[ j + 2 ] );
|
|
190
188
|
indices.push( i0, i1, i2 );
|
|
191
189
|
|
|
192
190
|
}
|
|
@@ -207,9 +205,9 @@ class VTKLoader extends Loader {
|
|
|
207
205
|
|
|
208
206
|
if ( patWord.exec( line ) !== null ) break;
|
|
209
207
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
208
|
+
const r = parseFloat( result[ 1 ] );
|
|
209
|
+
const g = parseFloat( result[ 2 ] );
|
|
210
|
+
const b = parseFloat( result[ 3 ] );
|
|
213
211
|
colors.push( r, g, b );
|
|
214
212
|
|
|
215
213
|
}
|
|
@@ -222,9 +220,9 @@ class VTKLoader extends Loader {
|
|
|
222
220
|
|
|
223
221
|
if ( patWord.exec( line ) !== null ) break;
|
|
224
222
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
223
|
+
const nx = parseFloat( result[ 1 ] );
|
|
224
|
+
const ny = parseFloat( result[ 2 ] );
|
|
225
|
+
const nz = parseFloat( result[ 3 ] );
|
|
228
226
|
normals.push( nx, ny, nz );
|
|
229
227
|
|
|
230
228
|
}
|
|
@@ -285,7 +283,7 @@ class VTKLoader extends Loader {
|
|
|
285
283
|
|
|
286
284
|
}
|
|
287
285
|
|
|
288
|
-
|
|
286
|
+
let geometry = new BufferGeometry();
|
|
289
287
|
geometry.setIndex( indices );
|
|
290
288
|
geometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );
|
|
291
289
|
|
|
@@ -310,17 +308,17 @@ class VTKLoader extends Loader {
|
|
|
310
308
|
// cell
|
|
311
309
|
|
|
312
310
|
geometry = geometry.toNonIndexed();
|
|
313
|
-
|
|
311
|
+
const numTriangles = geometry.attributes.position.count / 3;
|
|
314
312
|
|
|
315
313
|
if ( colors.length === ( numTriangles * 3 ) ) {
|
|
316
314
|
|
|
317
|
-
|
|
315
|
+
const newColors = [];
|
|
318
316
|
|
|
319
|
-
for (
|
|
317
|
+
for ( let i = 0; i < numTriangles; i ++ ) {
|
|
320
318
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
319
|
+
const r = colors[ 3 * i + 0 ];
|
|
320
|
+
const g = colors[ 3 * i + 1 ];
|
|
321
|
+
const b = colors[ 3 * i + 2 ];
|
|
324
322
|
|
|
325
323
|
newColors.push( r, g, b );
|
|
326
324
|
newColors.push( r, g, b );
|
|
@@ -340,24 +338,21 @@ class VTKLoader extends Loader {
|
|
|
340
338
|
|
|
341
339
|
function parseBinary( data ) {
|
|
342
340
|
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
var dataView = new DataView( data );
|
|
341
|
+
const buffer = new Uint8Array( data );
|
|
342
|
+
const dataView = new DataView( data );
|
|
346
343
|
|
|
347
344
|
// Points and normals, by default, are empty
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
345
|
+
let points = [];
|
|
346
|
+
let normals = [];
|
|
347
|
+
let indices = [];
|
|
351
348
|
|
|
352
|
-
|
|
353
|
-
var vtk = [];
|
|
354
|
-
var index = 0;
|
|
349
|
+
let index = 0;
|
|
355
350
|
|
|
356
351
|
function findString( buffer, start ) {
|
|
357
352
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
353
|
+
let index = start;
|
|
354
|
+
let c = buffer[ index ];
|
|
355
|
+
const s = [];
|
|
361
356
|
while ( c !== 10 ) {
|
|
362
357
|
|
|
363
358
|
s.push( String.fromCharCode( c ) );
|
|
@@ -373,7 +368,7 @@ class VTKLoader extends Loader {
|
|
|
373
368
|
|
|
374
369
|
}
|
|
375
370
|
|
|
376
|
-
|
|
371
|
+
let state, line;
|
|
377
372
|
|
|
378
373
|
while ( true ) {
|
|
379
374
|
|
|
@@ -383,23 +378,22 @@ class VTKLoader extends Loader {
|
|
|
383
378
|
|
|
384
379
|
if ( line.indexOf( 'DATASET' ) === 0 ) {
|
|
385
380
|
|
|
386
|
-
|
|
381
|
+
const dataset = line.split( ' ' )[ 1 ];
|
|
387
382
|
|
|
388
383
|
if ( dataset !== 'POLYDATA' ) throw new Error( 'Unsupported DATASET type: ' + dataset );
|
|
389
384
|
|
|
390
385
|
} else if ( line.indexOf( 'POINTS' ) === 0 ) {
|
|
391
386
|
|
|
392
|
-
vtk.push( line );
|
|
393
387
|
// Add the points
|
|
394
|
-
numberOfPoints = parseInt( line.split( ' ' )[ 1 ], 10 );
|
|
388
|
+
const numberOfPoints = parseInt( line.split( ' ' )[ 1 ], 10 );
|
|
395
389
|
|
|
396
390
|
// Each point is 3 4-byte floats
|
|
397
|
-
count = numberOfPoints * 4 * 3;
|
|
391
|
+
const count = numberOfPoints * 4 * 3;
|
|
398
392
|
|
|
399
393
|
points = new Float32Array( numberOfPoints * 3 );
|
|
400
394
|
|
|
401
|
-
pointIndex = state.next;
|
|
402
|
-
for ( i = 0; i < numberOfPoints; i ++ ) {
|
|
395
|
+
let pointIndex = state.next;
|
|
396
|
+
for ( let i = 0; i < numberOfPoints; i ++ ) {
|
|
403
397
|
|
|
404
398
|
points[ 3 * i ] = dataView.getFloat32( pointIndex, false );
|
|
405
399
|
points[ 3 * i + 1 ] = dataView.getFloat32( pointIndex + 4, false );
|
|
@@ -413,22 +407,22 @@ class VTKLoader extends Loader {
|
|
|
413
407
|
|
|
414
408
|
} else if ( line.indexOf( 'TRIANGLE_STRIPS' ) === 0 ) {
|
|
415
409
|
|
|
416
|
-
|
|
417
|
-
|
|
410
|
+
const numberOfStrips = parseInt( line.split( ' ' )[ 1 ], 10 );
|
|
411
|
+
const size = parseInt( line.split( ' ' )[ 2 ], 10 );
|
|
418
412
|
// 4 byte integers
|
|
419
|
-
count = size * 4;
|
|
413
|
+
const count = size * 4;
|
|
420
414
|
|
|
421
415
|
indices = new Uint32Array( 3 * size - 9 * numberOfStrips );
|
|
422
|
-
|
|
416
|
+
let indicesIndex = 0;
|
|
423
417
|
|
|
424
|
-
pointIndex = state.next;
|
|
425
|
-
for ( i = 0; i < numberOfStrips; i ++ ) {
|
|
418
|
+
let pointIndex = state.next;
|
|
419
|
+
for ( let i = 0; i < numberOfStrips; i ++ ) {
|
|
426
420
|
|
|
427
421
|
// For each strip, read the first value, then record that many more points
|
|
428
|
-
|
|
429
|
-
|
|
422
|
+
const indexCount = dataView.getInt32( pointIndex, false );
|
|
423
|
+
const strip = [];
|
|
430
424
|
pointIndex += 4;
|
|
431
|
-
for ( s = 0; s < indexCount; s ++ ) {
|
|
425
|
+
for ( let s = 0; s < indexCount; s ++ ) {
|
|
432
426
|
|
|
433
427
|
strip.push( dataView.getInt32( pointIndex, false ) );
|
|
434
428
|
pointIndex += 4;
|
|
@@ -436,7 +430,7 @@ class VTKLoader extends Loader {
|
|
|
436
430
|
}
|
|
437
431
|
|
|
438
432
|
// retrieves the n-2 triangles from the triangle strip
|
|
439
|
-
for (
|
|
433
|
+
for ( let j = 0; j < indexCount - 2; j ++ ) {
|
|
440
434
|
|
|
441
435
|
if ( j % 2 ) {
|
|
442
436
|
|
|
@@ -462,22 +456,22 @@ class VTKLoader extends Loader {
|
|
|
462
456
|
|
|
463
457
|
} else if ( line.indexOf( 'POLYGONS' ) === 0 ) {
|
|
464
458
|
|
|
465
|
-
|
|
466
|
-
|
|
459
|
+
const numberOfStrips = parseInt( line.split( ' ' )[ 1 ], 10 );
|
|
460
|
+
const size = parseInt( line.split( ' ' )[ 2 ], 10 );
|
|
467
461
|
// 4 byte integers
|
|
468
|
-
count = size * 4;
|
|
462
|
+
const count = size * 4;
|
|
469
463
|
|
|
470
464
|
indices = new Uint32Array( 3 * size - 9 * numberOfStrips );
|
|
471
|
-
|
|
465
|
+
let indicesIndex = 0;
|
|
472
466
|
|
|
473
|
-
pointIndex = state.next;
|
|
474
|
-
for ( i = 0; i < numberOfStrips; i ++ ) {
|
|
467
|
+
let pointIndex = state.next;
|
|
468
|
+
for ( let i = 0; i < numberOfStrips; i ++ ) {
|
|
475
469
|
|
|
476
470
|
// For each strip, read the first value, then record that many more points
|
|
477
|
-
|
|
478
|
-
|
|
471
|
+
const indexCount = dataView.getInt32( pointIndex, false );
|
|
472
|
+
const strip = [];
|
|
479
473
|
pointIndex += 4;
|
|
480
|
-
for ( s = 0; s < indexCount; s ++ ) {
|
|
474
|
+
for ( let s = 0; s < indexCount; s ++ ) {
|
|
481
475
|
|
|
482
476
|
strip.push( dataView.getInt32( pointIndex, false ) );
|
|
483
477
|
pointIndex += 4;
|
|
@@ -485,7 +479,7 @@ class VTKLoader extends Loader {
|
|
|
485
479
|
}
|
|
486
480
|
|
|
487
481
|
// divide the polygon in n-2 triangle
|
|
488
|
-
for (
|
|
482
|
+
for ( let j = 1; j < indexCount - 1; j ++ ) {
|
|
489
483
|
|
|
490
484
|
indices[ indicesIndex ++ ] = strip[ 0 ];
|
|
491
485
|
indices[ indicesIndex ++ ] = strip[ j ];
|
|
@@ -500,17 +494,17 @@ class VTKLoader extends Loader {
|
|
|
500
494
|
|
|
501
495
|
} else if ( line.indexOf( 'POINT_DATA' ) === 0 ) {
|
|
502
496
|
|
|
503
|
-
numberOfPoints = parseInt( line.split( ' ' )[ 1 ], 10 );
|
|
497
|
+
const numberOfPoints = parseInt( line.split( ' ' )[ 1 ], 10 );
|
|
504
498
|
|
|
505
499
|
// Grab the next line
|
|
506
500
|
state = findString( buffer, state.next );
|
|
507
501
|
|
|
508
502
|
// Now grab the binary data
|
|
509
|
-
count = numberOfPoints * 4 * 3;
|
|
503
|
+
const count = numberOfPoints * 4 * 3;
|
|
510
504
|
|
|
511
505
|
normals = new Float32Array( numberOfPoints * 3 );
|
|
512
|
-
pointIndex = state.next;
|
|
513
|
-
for ( i = 0; i < numberOfPoints; i ++ ) {
|
|
506
|
+
let pointIndex = state.next;
|
|
507
|
+
for ( let i = 0; i < numberOfPoints; i ++ ) {
|
|
514
508
|
|
|
515
509
|
normals[ 3 * i ] = dataView.getFloat32( pointIndex, false );
|
|
516
510
|
normals[ 3 * i + 1 ] = dataView.getFloat32( pointIndex + 4, false );
|
|
@@ -535,7 +529,7 @@ class VTKLoader extends Loader {
|
|
|
535
529
|
|
|
536
530
|
}
|
|
537
531
|
|
|
538
|
-
|
|
532
|
+
const geometry = new BufferGeometry();
|
|
539
533
|
geometry.setIndex( new BufferAttribute( indices, 1 ) );
|
|
540
534
|
geometry.setAttribute( 'position', new BufferAttribute( points, 3 ) );
|
|
541
535
|
|
|
@@ -562,7 +556,7 @@ class VTKLoader extends Loader {
|
|
|
562
556
|
|
|
563
557
|
function Int32Concat( first, second ) {
|
|
564
558
|
|
|
565
|
-
|
|
559
|
+
const firstLength = first.length, result = new Int32Array( firstLength + second.length );
|
|
566
560
|
|
|
567
561
|
result.set( first );
|
|
568
562
|
result.set( second, firstLength );
|
|
@@ -578,7 +572,7 @@ class VTKLoader extends Loader {
|
|
|
578
572
|
function xmlToJson( xml ) {
|
|
579
573
|
|
|
580
574
|
// Create the return object
|
|
581
|
-
|
|
575
|
+
let obj = {};
|
|
582
576
|
|
|
583
577
|
if ( xml.nodeType === 1 ) { // element
|
|
584
578
|
|
|
@@ -590,9 +584,9 @@ class VTKLoader extends Loader {
|
|
|
590
584
|
|
|
591
585
|
obj[ 'attributes' ] = {};
|
|
592
586
|
|
|
593
|
-
for (
|
|
587
|
+
for ( let j = 0; j < xml.attributes.length; j ++ ) {
|
|
594
588
|
|
|
595
|
-
|
|
589
|
+
const attribute = xml.attributes.item( j );
|
|
596
590
|
obj[ 'attributes' ][ attribute.nodeName ] = attribute.nodeValue.trim();
|
|
597
591
|
|
|
598
592
|
}
|
|
@@ -610,14 +604,14 @@ class VTKLoader extends Loader {
|
|
|
610
604
|
// do children
|
|
611
605
|
if ( xml.hasChildNodes() ) {
|
|
612
606
|
|
|
613
|
-
for (
|
|
607
|
+
for ( let i = 0; i < xml.childNodes.length; i ++ ) {
|
|
614
608
|
|
|
615
|
-
|
|
616
|
-
|
|
609
|
+
const item = xml.childNodes.item( i );
|
|
610
|
+
const nodeName = item.nodeName;
|
|
617
611
|
|
|
618
612
|
if ( typeof obj[ nodeName ] === 'undefined' ) {
|
|
619
613
|
|
|
620
|
-
|
|
614
|
+
const tmp = xmlToJson( item );
|
|
621
615
|
|
|
622
616
|
if ( tmp !== '' ) obj[ nodeName ] = tmp;
|
|
623
617
|
|
|
@@ -625,12 +619,12 @@ class VTKLoader extends Loader {
|
|
|
625
619
|
|
|
626
620
|
if ( typeof obj[ nodeName ].push === 'undefined' ) {
|
|
627
621
|
|
|
628
|
-
|
|
622
|
+
const old = obj[ nodeName ];
|
|
629
623
|
obj[ nodeName ] = [ old ];
|
|
630
624
|
|
|
631
625
|
}
|
|
632
626
|
|
|
633
|
-
|
|
627
|
+
const tmp = xmlToJson( item );
|
|
634
628
|
|
|
635
629
|
if ( tmp !== '' ) obj[ nodeName ].push( tmp );
|
|
636
630
|
|
|
@@ -647,20 +641,11 @@ class VTKLoader extends Loader {
|
|
|
647
641
|
// Taken from Base64-js
|
|
648
642
|
function Base64toByteArray( b64 ) {
|
|
649
643
|
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
var revLookup = [];
|
|
654
|
-
var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
655
|
-
var len = code.length;
|
|
644
|
+
const Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
|
|
645
|
+
const revLookup = [];
|
|
646
|
+
const code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
656
647
|
|
|
657
|
-
for ( i = 0; i <
|
|
658
|
-
|
|
659
|
-
lookup[ i ] = code[ i ];
|
|
660
|
-
|
|
661
|
-
}
|
|
662
|
-
|
|
663
|
-
for ( i = 0; i < len; ++ i ) {
|
|
648
|
+
for ( let i = 0, l = code.length; i < l; ++ i ) {
|
|
664
649
|
|
|
665
650
|
revLookup[ code.charCodeAt( i ) ] = i;
|
|
666
651
|
|
|
@@ -669,8 +654,7 @@ class VTKLoader extends Loader {
|
|
|
669
654
|
revLookup[ '-'.charCodeAt( 0 ) ] = 62;
|
|
670
655
|
revLookup[ '_'.charCodeAt( 0 ) ] = 63;
|
|
671
656
|
|
|
672
|
-
|
|
673
|
-
var len = b64.length;
|
|
657
|
+
const len = b64.length;
|
|
674
658
|
|
|
675
659
|
if ( len % 4 > 0 ) {
|
|
676
660
|
|
|
@@ -678,15 +662,16 @@ class VTKLoader extends Loader {
|
|
|
678
662
|
|
|
679
663
|
}
|
|
680
664
|
|
|
681
|
-
placeHolders = b64[ len - 2 ] === '=' ? 2 : b64[ len - 1 ] === '=' ? 1 : 0;
|
|
682
|
-
arr = new Arr( len * 3 / 4 - placeHolders );
|
|
683
|
-
l = placeHolders > 0 ? len - 4 : len;
|
|
665
|
+
const placeHolders = b64[ len - 2 ] === '=' ? 2 : b64[ len - 1 ] === '=' ? 1 : 0;
|
|
666
|
+
const arr = new Arr( len * 3 / 4 - placeHolders );
|
|
667
|
+
const l = placeHolders > 0 ? len - 4 : len;
|
|
684
668
|
|
|
685
|
-
|
|
669
|
+
let L = 0;
|
|
670
|
+
let i, j;
|
|
686
671
|
|
|
687
672
|
for ( i = 0, j = 0; i < l; i += 4, j += 3 ) {
|
|
688
673
|
|
|
689
|
-
tmp = ( revLookup[ b64.charCodeAt( i ) ] << 18 ) | ( revLookup[ b64.charCodeAt( i + 1 ) ] << 12 ) | ( revLookup[ b64.charCodeAt( i + 2 ) ] << 6 ) | revLookup[ b64.charCodeAt( i + 3 ) ];
|
|
674
|
+
const tmp = ( revLookup[ b64.charCodeAt( i ) ] << 18 ) | ( revLookup[ b64.charCodeAt( i + 1 ) ] << 12 ) | ( revLookup[ b64.charCodeAt( i + 2 ) ] << 6 ) | revLookup[ b64.charCodeAt( i + 3 ) ];
|
|
690
675
|
arr[ L ++ ] = ( tmp & 0xFF0000 ) >> 16;
|
|
691
676
|
arr[ L ++ ] = ( tmp & 0xFF00 ) >> 8;
|
|
692
677
|
arr[ L ++ ] = tmp & 0xFF;
|
|
@@ -695,12 +680,12 @@ class VTKLoader extends Loader {
|
|
|
695
680
|
|
|
696
681
|
if ( placeHolders === 2 ) {
|
|
697
682
|
|
|
698
|
-
tmp = ( revLookup[ b64.charCodeAt( i ) ] << 2 ) | ( revLookup[ b64.charCodeAt( i + 1 ) ] >> 4 );
|
|
683
|
+
const tmp = ( revLookup[ b64.charCodeAt( i ) ] << 2 ) | ( revLookup[ b64.charCodeAt( i + 1 ) ] >> 4 );
|
|
699
684
|
arr[ L ++ ] = tmp & 0xFF;
|
|
700
685
|
|
|
701
686
|
} else if ( placeHolders === 1 ) {
|
|
702
687
|
|
|
703
|
-
tmp = ( revLookup[ b64.charCodeAt( i ) ] << 10 ) | ( revLookup[ b64.charCodeAt( i + 1 ) ] << 4 ) | ( revLookup[ b64.charCodeAt( i + 2 ) ] >> 2 );
|
|
688
|
+
const tmp = ( revLookup[ b64.charCodeAt( i ) ] << 10 ) | ( revLookup[ b64.charCodeAt( i + 1 ) ] << 4 ) | ( revLookup[ b64.charCodeAt( i + 2 ) ] >> 2 );
|
|
704
689
|
arr[ L ++ ] = ( tmp >> 8 ) & 0xFF;
|
|
705
690
|
arr[ L ++ ] = tmp & 0xFF;
|
|
706
691
|
|
|
@@ -712,7 +697,7 @@ class VTKLoader extends Loader {
|
|
|
712
697
|
|
|
713
698
|
function parseDataArray( ele, compressed ) {
|
|
714
699
|
|
|
715
|
-
|
|
700
|
+
let numBytes = 0;
|
|
716
701
|
|
|
717
702
|
if ( json.attributes.header_type === 'UInt64' ) {
|
|
718
703
|
|
|
@@ -724,19 +709,18 @@ class VTKLoader extends Loader {
|
|
|
724
709
|
|
|
725
710
|
}
|
|
726
711
|
|
|
712
|
+
let txt, content;
|
|
727
713
|
|
|
728
714
|
// Check the format
|
|
729
715
|
if ( ele.attributes.format === 'binary' && compressed ) {
|
|
730
716
|
|
|
731
|
-
var rawData, content, byteData, blocks, cSizeStart, headerSize, padding, dataOffsets, currentOffset;
|
|
732
|
-
|
|
733
717
|
if ( ele.attributes.type === 'Float32' ) {
|
|
734
718
|
|
|
735
|
-
|
|
719
|
+
txt = new Float32Array( );
|
|
736
720
|
|
|
737
|
-
} else if ( ele.attributes.type === 'Int64' ) {
|
|
721
|
+
} else if ( ele.attributes.type === 'Int32' || ele.attributes.type === 'Int64' ) {
|
|
738
722
|
|
|
739
|
-
|
|
723
|
+
txt = new Int32Array( );
|
|
740
724
|
|
|
741
725
|
}
|
|
742
726
|
|
|
@@ -752,37 +736,40 @@ class VTKLoader extends Loader {
|
|
|
752
736
|
// The [DATA] portion stores contiguously every block appended together. The offset from the beginning of the data section to the beginning of a block is
|
|
753
737
|
// computed by summing the compressed block sizes from preceding blocks according to the header.
|
|
754
738
|
|
|
755
|
-
|
|
739
|
+
const textNode = ele[ '#text' ];
|
|
740
|
+
const rawData = Array.isArray( textNode ) ? textNode[ 0 ] : textNode;
|
|
741
|
+
|
|
742
|
+
const byteData = Base64toByteArray( rawData );
|
|
756
743
|
|
|
757
|
-
|
|
744
|
+
// Each data point consists of 8 bits regardless of the header type
|
|
745
|
+
const dataPointSize = 8;
|
|
758
746
|
|
|
759
|
-
blocks = byteData[ 0 ];
|
|
760
|
-
for (
|
|
747
|
+
let blocks = byteData[ 0 ];
|
|
748
|
+
for ( let i = 1; i < numBytes - 1; i ++ ) {
|
|
761
749
|
|
|
762
|
-
blocks = blocks | ( byteData[ i ] << ( i *
|
|
750
|
+
blocks = blocks | ( byteData[ i ] << ( i * dataPointSize ) );
|
|
763
751
|
|
|
764
752
|
}
|
|
765
753
|
|
|
766
|
-
headerSize = ( blocks + 3 ) * numBytes;
|
|
767
|
-
padding = ( ( headerSize % 3 ) > 0 ) ? 3 - ( headerSize % 3 ) : 0;
|
|
754
|
+
let headerSize = ( blocks + 3 ) * numBytes;
|
|
755
|
+
const padding = ( ( headerSize % 3 ) > 0 ) ? 3 - ( headerSize % 3 ) : 0;
|
|
768
756
|
headerSize = headerSize + padding;
|
|
769
757
|
|
|
770
|
-
dataOffsets = [];
|
|
771
|
-
currentOffset = headerSize;
|
|
758
|
+
const dataOffsets = [];
|
|
759
|
+
let currentOffset = headerSize;
|
|
772
760
|
dataOffsets.push( currentOffset );
|
|
773
761
|
|
|
774
762
|
// Get the blocks sizes after the compression.
|
|
775
763
|
// There are three blocks before c-size-i, so we skip 3*numBytes
|
|
776
|
-
cSizeStart = 3 * numBytes;
|
|
764
|
+
const cSizeStart = 3 * numBytes;
|
|
777
765
|
|
|
778
|
-
for (
|
|
766
|
+
for ( let i = 0; i < blocks; i ++ ) {
|
|
779
767
|
|
|
780
|
-
|
|
768
|
+
let currentBlockSize = byteData[ i * numBytes + cSizeStart ];
|
|
781
769
|
|
|
782
|
-
for (
|
|
770
|
+
for ( let j = 1; j < numBytes - 1; j ++ ) {
|
|
783
771
|
|
|
784
|
-
|
|
785
|
-
currentBlockSize = currentBlockSize | ( byteData[ i * numBytes + cSizeStart + j ] << ( j * 8 ) );
|
|
772
|
+
currentBlockSize = currentBlockSize | ( byteData[ i * numBytes + cSizeStart + j ] << ( j * dataPointSize ) );
|
|
786
773
|
|
|
787
774
|
}
|
|
788
775
|
|
|
@@ -791,9 +778,9 @@ class VTKLoader extends Loader {
|
|
|
791
778
|
|
|
792
779
|
}
|
|
793
780
|
|
|
794
|
-
for (
|
|
781
|
+
for ( let i = 0; i < dataOffsets.length - 1; i ++ ) {
|
|
795
782
|
|
|
796
|
-
|
|
783
|
+
const data = fflate.unzlibSync( byteData.slice( dataOffsets[ i ], dataOffsets[ i + 1 ] ) ); // eslint-disable-line no-undef
|
|
797
784
|
content = data.buffer;
|
|
798
785
|
|
|
799
786
|
if ( ele.attributes.type === 'Float32' ) {
|
|
@@ -801,7 +788,7 @@ class VTKLoader extends Loader {
|
|
|
801
788
|
content = new Float32Array( content );
|
|
802
789
|
txt = Float32Concat( txt, content );
|
|
803
790
|
|
|
804
|
-
} else if ( ele.attributes.type === 'Int64' ) {
|
|
791
|
+
} else if ( ele.attributes.type === 'Int32' || ele.attributes.type === 'Int64' ) {
|
|
805
792
|
|
|
806
793
|
content = new Int32Array( content );
|
|
807
794
|
txt = Int32Concat( txt, content );
|
|
@@ -830,7 +817,7 @@ class VTKLoader extends Loader {
|
|
|
830
817
|
|
|
831
818
|
if ( ele.attributes.format === 'binary' && ! compressed ) {
|
|
832
819
|
|
|
833
|
-
|
|
820
|
+
content = Base64toByteArray( ele[ '#text' ] );
|
|
834
821
|
|
|
835
822
|
// VTP data for the uncompressed case has the following structure:
|
|
836
823
|
// [#bytes][DATA]
|
|
@@ -841,7 +828,7 @@ class VTKLoader extends Loader {
|
|
|
841
828
|
|
|
842
829
|
if ( ele[ '#text' ] ) {
|
|
843
830
|
|
|
844
|
-
|
|
831
|
+
content = ele[ '#text' ].split( /\s+/ ).filter( function ( el ) {
|
|
845
832
|
|
|
846
833
|
if ( el !== '' ) return el;
|
|
847
834
|
|
|
@@ -849,7 +836,7 @@ class VTKLoader extends Loader {
|
|
|
849
836
|
|
|
850
837
|
} else {
|
|
851
838
|
|
|
852
|
-
|
|
839
|
+
content = new Int32Array( 0 ).buffer;
|
|
853
840
|
|
|
854
841
|
}
|
|
855
842
|
|
|
@@ -860,15 +847,15 @@ class VTKLoader extends Loader {
|
|
|
860
847
|
// Get the content and optimize it
|
|
861
848
|
if ( ele.attributes.type === 'Float32' ) {
|
|
862
849
|
|
|
863
|
-
|
|
850
|
+
txt = new Float32Array( content );
|
|
864
851
|
|
|
865
852
|
} else if ( ele.attributes.type === 'Int32' ) {
|
|
866
853
|
|
|
867
|
-
|
|
854
|
+
txt = new Int32Array( content );
|
|
868
855
|
|
|
869
856
|
} else if ( ele.attributes.type === 'Int64' ) {
|
|
870
857
|
|
|
871
|
-
|
|
858
|
+
txt = new Int32Array( content );
|
|
872
859
|
|
|
873
860
|
if ( ele.attributes.format === 'binary' ) {
|
|
874
861
|
|
|
@@ -890,66 +877,30 @@ class VTKLoader extends Loader {
|
|
|
890
877
|
|
|
891
878
|
// Main part
|
|
892
879
|
// Get Dom
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
if ( window.DOMParser ) {
|
|
896
|
-
|
|
897
|
-
try {
|
|
898
|
-
|
|
899
|
-
dom = ( new DOMParser() ).parseFromString( stringFile, 'text/xml' );
|
|
900
|
-
|
|
901
|
-
} catch ( e ) {
|
|
902
|
-
|
|
903
|
-
dom = null;
|
|
904
|
-
|
|
905
|
-
}
|
|
906
|
-
|
|
907
|
-
} else if ( window.ActiveXObject ) {
|
|
908
|
-
|
|
909
|
-
try {
|
|
910
|
-
|
|
911
|
-
dom = new ActiveXObject( 'Microsoft.XMLDOM' ); // eslint-disable-line no-undef
|
|
912
|
-
dom.async = false;
|
|
913
|
-
|
|
914
|
-
if ( ! dom.loadXML( /* xml */ ) ) {
|
|
915
|
-
|
|
916
|
-
throw new Error( dom.parseError.reason + dom.parseError.srcText );
|
|
917
|
-
|
|
918
|
-
}
|
|
919
|
-
|
|
920
|
-
} catch ( e ) {
|
|
921
|
-
|
|
922
|
-
dom = null;
|
|
923
|
-
|
|
924
|
-
}
|
|
925
|
-
|
|
926
|
-
} else {
|
|
927
|
-
|
|
928
|
-
throw new Error( 'Cannot parse xml string!' );
|
|
929
|
-
|
|
930
|
-
}
|
|
880
|
+
const dom = new DOMParser().parseFromString( stringFile, 'application/xml' );
|
|
931
881
|
|
|
932
882
|
// Get the doc
|
|
933
|
-
|
|
883
|
+
const doc = dom.documentElement;
|
|
934
884
|
// Convert to json
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
885
|
+
const json = xmlToJson( doc );
|
|
886
|
+
let points = [];
|
|
887
|
+
let normals = [];
|
|
888
|
+
let indices = [];
|
|
939
889
|
|
|
940
890
|
if ( json.PolyData ) {
|
|
941
891
|
|
|
942
|
-
|
|
943
|
-
|
|
892
|
+
const piece = json.PolyData.Piece;
|
|
893
|
+
const compressed = json.attributes.hasOwnProperty( 'compressor' );
|
|
944
894
|
|
|
945
895
|
// Can be optimized
|
|
946
896
|
// Loop through the sections
|
|
947
|
-
|
|
948
|
-
|
|
897
|
+
const sections = [ 'PointData', 'Points', 'Strips', 'Polys' ];// +['CellData', 'Verts', 'Lines'];
|
|
898
|
+
let sectionIndex = 0;
|
|
899
|
+
const numberOfSections = sections.length;
|
|
949
900
|
|
|
950
901
|
while ( sectionIndex < numberOfSections ) {
|
|
951
902
|
|
|
952
|
-
|
|
903
|
+
const section = piece[ sections[ sectionIndex ] ];
|
|
953
904
|
|
|
954
905
|
// If it has a DataArray in it
|
|
955
906
|
|
|
@@ -957,17 +908,20 @@ class VTKLoader extends Loader {
|
|
|
957
908
|
|
|
958
909
|
// Depending on the number of DataArrays
|
|
959
910
|
|
|
911
|
+
let arr;
|
|
912
|
+
|
|
960
913
|
if ( Object.prototype.toString.call( section.DataArray ) === '[object Array]' ) {
|
|
961
914
|
|
|
962
|
-
|
|
915
|
+
arr = section.DataArray;
|
|
963
916
|
|
|
964
917
|
} else {
|
|
965
918
|
|
|
966
|
-
|
|
919
|
+
arr = [ section.DataArray ];
|
|
967
920
|
|
|
968
921
|
}
|
|
969
922
|
|
|
970
|
-
|
|
923
|
+
let dataArrayIndex = 0;
|
|
924
|
+
const numberOfDataArrays = arr.length;
|
|
971
925
|
|
|
972
926
|
while ( dataArrayIndex < numberOfDataArrays ) {
|
|
973
927
|
|
|
@@ -987,18 +941,22 @@ class VTKLoader extends Loader {
|
|
|
987
941
|
// if iti is point data
|
|
988
942
|
case 'PointData':
|
|
989
943
|
|
|
990
|
-
|
|
991
|
-
|
|
944
|
+
{
|
|
945
|
+
|
|
946
|
+
const numberOfPoints = parseInt( piece.attributes.NumberOfPoints );
|
|
947
|
+
const normalsName = section.attributes.Normals;
|
|
992
948
|
|
|
993
|
-
|
|
949
|
+
if ( numberOfPoints > 0 ) {
|
|
994
950
|
|
|
995
|
-
|
|
951
|
+
for ( let i = 0, len = arr.length; i < len; i ++ ) {
|
|
996
952
|
|
|
997
|
-
|
|
953
|
+
if ( normalsName === arr[ i ].attributes.Name ) {
|
|
998
954
|
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
955
|
+
const components = arr[ i ].attributes.NumberOfComponents;
|
|
956
|
+
normals = new Float32Array( numberOfPoints * components );
|
|
957
|
+
normals.set( arr[ i ].text, 0 );
|
|
958
|
+
|
|
959
|
+
}
|
|
1002
960
|
|
|
1003
961
|
}
|
|
1004
962
|
|
|
@@ -1011,13 +969,17 @@ class VTKLoader extends Loader {
|
|
|
1011
969
|
// if it is points
|
|
1012
970
|
case 'Points':
|
|
1013
971
|
|
|
1014
|
-
|
|
972
|
+
{
|
|
973
|
+
|
|
974
|
+
const numberOfPoints = parseInt( piece.attributes.NumberOfPoints );
|
|
1015
975
|
|
|
1016
|
-
|
|
976
|
+
if ( numberOfPoints > 0 ) {
|
|
1017
977
|
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
978
|
+
const components = section.DataArray.attributes.NumberOfComponents;
|
|
979
|
+
points = new Float32Array( numberOfPoints * components );
|
|
980
|
+
points.set( section.DataArray.text, 0 );
|
|
981
|
+
|
|
982
|
+
}
|
|
1021
983
|
|
|
1022
984
|
}
|
|
1023
985
|
|
|
@@ -1026,49 +988,53 @@ class VTKLoader extends Loader {
|
|
|
1026
988
|
// if it is strips
|
|
1027
989
|
case 'Strips':
|
|
1028
990
|
|
|
1029
|
-
|
|
991
|
+
{
|
|
1030
992
|
|
|
1031
|
-
|
|
993
|
+
const numberOfStrips = parseInt( piece.attributes.NumberOfStrips );
|
|
1032
994
|
|
|
1033
|
-
|
|
1034
|
-
var offset = new Int32Array( section.DataArray[ 1 ].text.length );
|
|
1035
|
-
connectivity.set( section.DataArray[ 0 ].text, 0 );
|
|
1036
|
-
offset.set( section.DataArray[ 1 ].text, 0 );
|
|
995
|
+
if ( numberOfStrips > 0 ) {
|
|
1037
996
|
|
|
1038
|
-
|
|
1039
|
-
|
|
997
|
+
const connectivity = new Int32Array( section.DataArray[ 0 ].text.length );
|
|
998
|
+
const offset = new Int32Array( section.DataArray[ 1 ].text.length );
|
|
999
|
+
connectivity.set( section.DataArray[ 0 ].text, 0 );
|
|
1000
|
+
offset.set( section.DataArray[ 1 ].text, 0 );
|
|
1040
1001
|
|
|
1041
|
-
|
|
1002
|
+
const size = numberOfStrips + connectivity.length;
|
|
1003
|
+
indices = new Uint32Array( 3 * size - 9 * numberOfStrips );
|
|
1042
1004
|
|
|
1043
|
-
|
|
1005
|
+
let indicesIndex = 0;
|
|
1044
1006
|
|
|
1045
|
-
|
|
1007
|
+
for ( let i = 0, len = numberOfStrips; i < len; i ++ ) {
|
|
1046
1008
|
|
|
1047
|
-
|
|
1009
|
+
const strip = [];
|
|
1048
1010
|
|
|
1049
|
-
|
|
1011
|
+
for ( let s = 0, len1 = offset[ i ], len0 = 0; s < len1 - len0; s ++ ) {
|
|
1050
1012
|
|
|
1051
|
-
|
|
1013
|
+
strip.push( connectivity[ s ] );
|
|
1052
1014
|
|
|
1053
|
-
|
|
1015
|
+
if ( i > 0 ) len0 = offset[ i - 1 ];
|
|
1054
1016
|
|
|
1055
|
-
|
|
1017
|
+
}
|
|
1056
1018
|
|
|
1057
|
-
|
|
1019
|
+
for ( let j = 0, len1 = offset[ i ], len0 = 0; j < len1 - len0 - 2; j ++ ) {
|
|
1058
1020
|
|
|
1059
|
-
|
|
1060
|
-
indices[ indicesIndex ++ ] = strip[ j + 2 ];
|
|
1061
|
-
indices[ indicesIndex ++ ] = strip[ j + 1 ];
|
|
1021
|
+
if ( j % 2 ) {
|
|
1062
1022
|
|
|
1063
|
-
|
|
1023
|
+
indices[ indicesIndex ++ ] = strip[ j ];
|
|
1024
|
+
indices[ indicesIndex ++ ] = strip[ j + 2 ];
|
|
1025
|
+
indices[ indicesIndex ++ ] = strip[ j + 1 ];
|
|
1064
1026
|
|
|
1065
|
-
|
|
1066
|
-
indices[ indicesIndex ++ ] = strip[ j + 1 ];
|
|
1067
|
-
indices[ indicesIndex ++ ] = strip[ j + 2 ];
|
|
1027
|
+
} else {
|
|
1068
1028
|
|
|
1069
|
-
|
|
1029
|
+
indices[ indicesIndex ++ ] = strip[ j ];
|
|
1030
|
+
indices[ indicesIndex ++ ] = strip[ j + 1 ];
|
|
1031
|
+
indices[ indicesIndex ++ ] = strip[ j + 2 ];
|
|
1032
|
+
|
|
1033
|
+
}
|
|
1070
1034
|
|
|
1071
|
-
|
|
1035
|
+
if ( i > 0 ) len0 = offset[ i - 1 ];
|
|
1036
|
+
|
|
1037
|
+
}
|
|
1072
1038
|
|
|
1073
1039
|
}
|
|
1074
1040
|
|
|
@@ -1081,45 +1047,51 @@ class VTKLoader extends Loader {
|
|
|
1081
1047
|
// if it is polys
|
|
1082
1048
|
case 'Polys':
|
|
1083
1049
|
|
|
1084
|
-
|
|
1050
|
+
{
|
|
1085
1051
|
|
|
1086
|
-
|
|
1052
|
+
const numberOfPolys = parseInt( piece.attributes.NumberOfPolys );
|
|
1087
1053
|
|
|
1088
|
-
|
|
1089
|
-
var offset = new Int32Array( section.DataArray[ 1 ].text.length );
|
|
1090
|
-
connectivity.set( section.DataArray[ 0 ].text, 0 );
|
|
1091
|
-
offset.set( section.DataArray[ 1 ].text, 0 );
|
|
1054
|
+
if ( numberOfPolys > 0 ) {
|
|
1092
1055
|
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1056
|
+
const connectivity = new Int32Array( section.DataArray[ 0 ].text.length );
|
|
1057
|
+
const offset = new Int32Array( section.DataArray[ 1 ].text.length );
|
|
1058
|
+
connectivity.set( section.DataArray[ 0 ].text, 0 );
|
|
1059
|
+
offset.set( section.DataArray[ 1 ].text, 0 );
|
|
1097
1060
|
|
|
1098
|
-
|
|
1061
|
+
const size = numberOfPolys + connectivity.length;
|
|
1062
|
+
indices = new Uint32Array( 3 * size - 9 * numberOfPolys );
|
|
1063
|
+
let indicesIndex = 0, connectivityIndex = 0;
|
|
1064
|
+
let i = 0, len0 = 0;
|
|
1065
|
+
const len = numberOfPolys;
|
|
1099
1066
|
|
|
1100
|
-
|
|
1101
|
-
var s = 0, len1 = offset[ i ];
|
|
1067
|
+
while ( i < len ) {
|
|
1102
1068
|
|
|
1103
|
-
|
|
1069
|
+
const poly = [];
|
|
1070
|
+
let s = 0;
|
|
1071
|
+
const len1 = offset[ i ];
|
|
1104
1072
|
|
|
1105
|
-
|
|
1106
|
-
s ++;
|
|
1073
|
+
while ( s < len1 - len0 ) {
|
|
1107
1074
|
|
|
1108
|
-
|
|
1075
|
+
poly.push( connectivity[ connectivityIndex ++ ] );
|
|
1076
|
+
s ++;
|
|
1109
1077
|
|
|
1110
|
-
|
|
1078
|
+
}
|
|
1111
1079
|
|
|
1112
|
-
|
|
1080
|
+
let j = 1;
|
|
1113
1081
|
|
|
1114
|
-
|
|
1115
|
-
indices[ indicesIndex ++ ] = poly[ j ];
|
|
1116
|
-
indices[ indicesIndex ++ ] = poly[ j + 1 ];
|
|
1117
|
-
j ++;
|
|
1082
|
+
while ( j < len1 - len0 - 1 ) {
|
|
1118
1083
|
|
|
1119
|
-
|
|
1084
|
+
indices[ indicesIndex ++ ] = poly[ 0 ];
|
|
1085
|
+
indices[ indicesIndex ++ ] = poly[ j ];
|
|
1086
|
+
indices[ indicesIndex ++ ] = poly[ j + 1 ];
|
|
1087
|
+
j ++;
|
|
1088
|
+
|
|
1089
|
+
}
|
|
1090
|
+
|
|
1091
|
+
i ++;
|
|
1092
|
+
len0 = offset[ i - 1 ];
|
|
1120
1093
|
|
|
1121
|
-
|
|
1122
|
-
len0 = offset[ i - 1 ];
|
|
1094
|
+
}
|
|
1123
1095
|
|
|
1124
1096
|
}
|
|
1125
1097
|
|
|
@@ -1138,7 +1110,7 @@ class VTKLoader extends Loader {
|
|
|
1138
1110
|
|
|
1139
1111
|
}
|
|
1140
1112
|
|
|
1141
|
-
|
|
1113
|
+
const geometry = new BufferGeometry();
|
|
1142
1114
|
geometry.setIndex( new BufferAttribute( indices, 1 ) );
|
|
1143
1115
|
geometry.setAttribute( 'position', new BufferAttribute( points, 3 ) );
|
|
1144
1116
|
|
|
@@ -1159,7 +1131,7 @@ class VTKLoader extends Loader {
|
|
|
1159
1131
|
}
|
|
1160
1132
|
|
|
1161
1133
|
// get the 5 first lines of the files to check if there is the key word binary
|
|
1162
|
-
|
|
1134
|
+
const meta = LoaderUtils.decodeText( new Uint8Array( data, 0, 250 ) ).split( '\n' );
|
|
1163
1135
|
|
|
1164
1136
|
if ( meta[ 0 ].indexOf( 'xml' ) !== - 1 ) {
|
|
1165
1137
|
|