super-three 0.137.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/README.md +23 -25
- package/build/three.cjs +3721 -4964
- package/build/three.js +3723 -4966
- package/build/three.min.js +1 -1
- package/build/three.module.js +5705 -7216
- package/examples/js/animation/CCDIKSolver.js +3 -2
- package/examples/js/animation/MMDPhysics.js +2 -2
- 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 +2 -2
- 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 +213 -128
- 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/DecalGeometry.js +0 -7
- package/examples/js/geometries/LightningStrike.js +2 -2
- package/examples/js/geometries/ParametricGeometries.js +3 -3
- 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 +235 -40
- 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/ColladaLoader.js +33 -12
- package/examples/js/loaders/DDSLoader.js +23 -30
- package/examples/js/loaders/EXRLoader.js +269 -266
- 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 +249 -60
- package/examples/js/loaders/KMZLoader.js +1 -1
- package/examples/js/loaders/KTX2Loader.js +1 -9
- package/examples/js/loaders/LDrawLoader.js +3 -11
- package/examples/js/loaders/LUT3dlLoader.js +1 -1
- package/examples/js/loaders/LUTCubeLoader.js +1 -1
- package/examples/js/loaders/LWOLoader.js +4 -2
- package/examples/js/loaders/LogLuvLoader.js +1 -2
- package/examples/js/loaders/MMDLoader.js +18 -4
- package/examples/js/loaders/NRRDLoader.js +1 -1
- package/examples/js/loaders/OBJLoader.js +9 -5
- package/examples/js/loaders/PCDLoader.js +22 -13
- package/examples/js/loaders/PDBLoader.js +11 -11
- package/examples/js/loaders/PLYLoader.js +5 -1
- package/examples/js/loaders/RGBELoader.js +3 -11
- package/examples/js/loaders/RGBMLoader.js +12 -15
- package/examples/js/loaders/SVGLoader.js +16 -9
- package/examples/js/loaders/VOXLoader.js +3 -4
- 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 +6 -15
- 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 +37 -46
- package/examples/js/misc/VolumeSlice.js +21 -21
- package/examples/js/modifiers/EdgeSplitModifier.js +0 -7
- package/examples/js/modifiers/SimplifyModifier.js +1 -8
- package/examples/js/modifiers/TessellateModifier.js +0 -7
- package/examples/js/objects/Lensflare.js +2 -2
- package/examples/js/objects/LightningStorm.js +4 -5
- package/examples/js/objects/MarchingCubes.js +6 -11
- package/examples/js/objects/Reflector.js +10 -4
- package/examples/js/objects/ReflectorForSSRPass.js +1 -1
- package/examples/js/objects/Refractor.js +10 -4
- package/examples/js/objects/ShadowMesh.js +1 -2
- package/examples/js/objects/Sky.js +1 -1
- package/examples/js/objects/Water.js +1 -2
- 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/LUTPass.js +2 -2
- package/examples/js/postprocessing/OutlinePass.js +7 -12
- package/examples/js/postprocessing/SAOPass.js +2 -7
- package/examples/js/postprocessing/SSAARenderPass.js +1 -6
- package/examples/js/postprocessing/SSRPass.js +3 -8
- package/examples/js/postprocessing/TAARenderPass.js +4 -4
- package/examples/js/postprocessing/UnrealBloomPass.js +3 -12
- package/examples/js/renderers/CSS2DRenderer.js +20 -25
- package/examples/js/renderers/CSS3DRenderer.js +6 -7
- 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/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/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 +6 -6
- 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 +1 -1
- package/examples/jsm/capabilities/WebGPU.js +6 -0
- 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 +231 -125
- package/examples/jsm/exporters/KTX2Exporter.js +281 -0
- 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/DecalGeometry.js +0 -7
- package/examples/jsm/geometries/LightningStrike.js +2 -2
- package/examples/jsm/geometries/ParametricGeometries.js +3 -3
- 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 +252 -34
- package/examples/jsm/interactive/SelectionHelper.js +1 -1
- package/examples/jsm/libs/flow.module.js +30 -27
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- 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/ColladaLoader.js +40 -12
- package/examples/jsm/loaders/DDSLoader.js +21 -28
- package/examples/jsm/loaders/EXRLoader.js +268 -265
- 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 -66
- package/examples/jsm/loaders/KMZLoader.js +1 -1
- package/examples/jsm/loaders/KTX2Loader.js +1 -10
- package/examples/jsm/loaders/LDrawLoader.js +4 -11
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
- package/examples/jsm/loaders/LWOLoader.js +5 -3
- package/examples/jsm/loaders/LogLuvLoader.js +2 -2
- package/examples/jsm/loaders/MMDLoader.js +21 -3
- package/examples/jsm/loaders/NRRDLoader.js +1 -2
- package/examples/jsm/loaders/OBJLoader.js +11 -7
- package/examples/jsm/loaders/PCDLoader.js +23 -15
- package/examples/jsm/loaders/PDBLoader.js +11 -11
- package/examples/jsm/loaders/PLYLoader.js +10 -2
- package/examples/jsm/loaders/RGBELoader.js +4 -12
- package/examples/jsm/loaders/RGBMLoader.js +14 -11
- package/examples/jsm/loaders/SVGLoader.js +17 -9
- package/examples/jsm/loaders/TTFLoader.js +1 -1
- package/examples/jsm/loaders/VOXLoader.js +5 -5
- 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 +6 -15
- 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 +37 -44
- package/examples/jsm/misc/VolumeSlice.js +21 -21
- package/examples/jsm/modifiers/EdgeSplitModifier.js +0 -7
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -8
- package/examples/jsm/modifiers/TessellateModifier.js +0 -7
- package/examples/jsm/node-editor/NodeEditor.js +78 -9
- package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +14 -0
- 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 +17 -11
- 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 +3 -3
- package/examples/jsm/node-editor/display/NormalMapEditor.js +49 -0
- package/examples/jsm/node-editor/examples/matcap.json +1 -0
- package/examples/jsm/node-editor/inputs/ColorEditor.js +7 -6
- package/examples/jsm/node-editor/inputs/FloatEditor.js +2 -2
- package/examples/jsm/node-editor/inputs/SliderEditor.js +2 -2
- package/examples/jsm/node-editor/inputs/TextureEditor.js +155 -0
- package/examples/jsm/node-editor/inputs/Vector2Editor.js +3 -2
- package/examples/jsm/node-editor/inputs/Vector3Editor.js +3 -2
- package/examples/jsm/node-editor/inputs/Vector4Editor.js +4 -3
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +3 -3
- package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +16 -11
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +15 -5
- package/examples/jsm/node-editor/math/AngleEditor.js +3 -2
- package/examples/jsm/node-editor/math/DotEditor.js +2 -2
- package/examples/jsm/node-editor/math/InvertEditor.js +4 -4
- package/examples/jsm/node-editor/math/LimiterEditor.js +22 -9
- package/examples/jsm/node-editor/math/NormalizeEditor.js +3 -2
- package/examples/jsm/node-editor/math/OperatorEditor.js +20 -8
- package/examples/jsm/node-editor/math/PowerEditor.js +17 -8
- package/examples/jsm/node-editor/math/TrigonometryEditor.js +3 -2
- package/examples/jsm/node-editor/procedural/CheckerEditor.js +4 -4
- package/examples/jsm/node-editor/utils/JoinEditor.js +2 -2
- package/examples/jsm/node-editor/utils/OscillatorEditor.js +2 -2
- package/examples/jsm/node-editor/utils/PreviewEditor.js +166 -0
- package/examples/jsm/node-editor/utils/SplitEditor.js +2 -2
- package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
- 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/{renderers/nodes → nodes}/display/ColorSpaceNode.js +10 -11
- 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 +16 -0
- 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 +2 -2
- package/examples/jsm/objects/LightningStorm.js +4 -4
- package/examples/jsm/objects/MarchingCubes.js +5 -9
- package/examples/jsm/objects/Reflector.js +8 -4
- package/examples/jsm/objects/ReflectorForSSRPass.js +2 -2
- package/examples/jsm/objects/Refractor.js +8 -4
- package/examples/jsm/objects/ShadowMesh.js +2 -2
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/Water.js +2 -2
- 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/LUTPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +7 -11
- package/examples/jsm/postprocessing/SAOPass.js +2 -9
- package/examples/jsm/postprocessing/SSAARenderPass.js +1 -4
- package/examples/jsm/postprocessing/SSRPass.js +3 -9
- package/examples/jsm/postprocessing/TAARenderPass.js +4 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +3 -8
- package/examples/jsm/renderers/CSS2DRenderer.js +21 -24
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -8
- 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 +47 -24
- 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 +37 -18
- 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 -284
- 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/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/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 +6 -6
- 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 +15 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +3 -7
- package/examples/jsm/webxr/XRHandModelFactory.js +3 -0
- package/package.json +37 -19
- 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 +5 -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 +6 -1
- package/src/cameras/OrthographicCamera.js +2 -2
- package/src/cameras/PerspectiveCamera.js +2 -2
- package/src/constants.js +7 -2
- package/src/core/BufferAttribute.js +7 -12
- package/src/core/BufferGeometry.js +4 -4
- 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/PMREMGenerator.js +132 -104
- 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/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 +3 -1
- 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 +48 -14
- 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 +5 -5
- package/src/math/Color.js +84 -35
- 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 +11 -2
- 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 -14
- package/src/renderers/WebGLMultipleRenderTargets.js +8 -5
- package/src/renderers/WebGLRenderTarget.js +16 -18
- package/src/renderers/WebGLRenderer.js +108 -63
- 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/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 +0 -6
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +25 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +0 -6
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +23 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +43 -5
- 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 +1 -1
- package/src/renderers/shaders/ShaderChunk.js +6 -0
- package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -0
- 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 +1 -0
- 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 +6 -0
- package/src/renderers/shaders/UniformsLib.js +2 -2
- package/src/renderers/webgl/WebGLAttributes.js +6 -6
- package/src/renderers/webgl/WebGLBackground.js +3 -0
- package/src/renderers/webgl/WebGLBindingStates.js +57 -29
- package/src/renderers/webgl/WebGLLights.js +0 -1
- package/src/renderers/webgl/WebGLMaterials.js +72 -187
- package/src/renderers/webgl/WebGLMorphtargets.js +47 -23
- package/src/renderers/webgl/WebGLProgram.js +57 -19
- package/src/renderers/webgl/WebGLPrograms.js +75 -86
- package/src/renderers/webgl/WebGLShaderCache.js +4 -3
- package/src/renderers/webgl/WebGLShadowMap.js +6 -8
- package/src/renderers/webgl/WebGLTextures.js +567 -380
- package/src/renderers/webgl/WebGLUniforms.js +79 -80
- package/src/renderers/webgl/WebGLUtils.js +12 -1
- package/src/renderers/webxr/WebXRManager.js +60 -45
- 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 +27 -97
- package/src/textures/VideoTexture.js +2 -2
- 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/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 -145
- 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 -166
- package/examples/jsm/renderers/nodes/ShaderNode.js +0 -373
- 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 -634
- 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/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 -74
- 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 -242
- 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/src/renderers/WebGLMultisampleRenderTarget.js +0 -33
|
@@ -47,51 +47,51 @@
|
|
|
47
47
|
function parseASCII( data ) {
|
|
48
48
|
|
|
49
49
|
// connectivity of the triangles
|
|
50
|
-
|
|
50
|
+
const indices = []; // triangles vertices
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
const positions = []; // red, green, blue colors in the range 0 to 1
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
const colors = []; // normal vector, one per vertex
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
const normals = [];
|
|
57
|
+
let result; // pattern for detecting the end of a number sequence
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
const patWord = /^[^\d.\s-]+/; // pattern for reading vertices, 3 floats or integers
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
const pat3Floats = /(\-?\d+\.?[\d\-\+e]*)\s+(\-?\d+\.?[\d\-\+e]*)\s+(\-?\d+\.?[\d\-\+e]*)/g; // pattern for connectivity, an integer followed by any number of ints
|
|
62
62
|
// the first integer is the number of polygon nodes
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
const patConnectivity = /^(\d+)\s+([\s\d]*)/; // indicates start of vertex data section
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
const patPOINTS = /^POINTS /; // indicates start of polygon connectivity section
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
const patPOLYGONS = /^POLYGONS /; // indicates start of triangle strips section
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
const patTRIANGLE_STRIPS = /^TRIANGLE_STRIPS /; // POINT_DATA number_of_values
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
const patPOINT_DATA = /^POINT_DATA[ ]+(\d+)/; // CELL_DATA number_of_polys
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
const patCELL_DATA = /^CELL_DATA[ ]+(\d+)/; // Start of color section
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
const patCOLOR_SCALARS = /^COLOR_SCALARS[ ]+(\w+)[ ]+3/; // NORMALS Normals float
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
78
|
+
const patNORMALS = /^NORMALS[ ]+(\w+)[ ]+(\w+)/;
|
|
79
|
+
let inPointsSection = false;
|
|
80
|
+
let inPolygonsSection = false;
|
|
81
|
+
let inTriangleStripSection = false;
|
|
82
|
+
let inPointDataSection = false;
|
|
83
|
+
let inCellDataSection = false;
|
|
84
|
+
let inColorSection = false;
|
|
85
|
+
let inNormalsSection = false;
|
|
86
|
+
const lines = data.split( '\n' );
|
|
87
87
|
|
|
88
|
-
for (
|
|
88
|
+
for ( const i in lines ) {
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
const line = lines[ i ].trim();
|
|
91
91
|
|
|
92
92
|
if ( line.indexOf( 'DATASET' ) === 0 ) {
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
const dataset = line.split( ' ' )[ 1 ];
|
|
95
95
|
if ( dataset !== 'POLYDATA' ) throw new Error( 'Unsupported DATASET type: ' + dataset );
|
|
96
96
|
|
|
97
97
|
} else if ( inPointsSection ) {
|
|
@@ -100,9 +100,9 @@
|
|
|
100
100
|
while ( ( result = pat3Floats.exec( line ) ) !== null ) {
|
|
101
101
|
|
|
102
102
|
if ( patWord.exec( line ) !== null ) break;
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
103
|
+
const x = parseFloat( result[ 1 ] );
|
|
104
|
+
const y = parseFloat( result[ 2 ] );
|
|
105
|
+
const z = parseFloat( result[ 3 ] );
|
|
106
106
|
positions.push( x, y, z );
|
|
107
107
|
|
|
108
108
|
}
|
|
@@ -112,19 +112,18 @@
|
|
|
112
112
|
if ( ( result = patConnectivity.exec( line ) ) !== null ) {
|
|
113
113
|
|
|
114
114
|
// numVertices i0 i1 i2 ...
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
const numVertices = parseInt( result[ 1 ] );
|
|
116
|
+
const inds = result[ 2 ].split( /\s+/ );
|
|
117
117
|
|
|
118
118
|
if ( numVertices >= 3 ) {
|
|
119
119
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
var k = 1; // split the polygon in numVertices - 2 triangles
|
|
120
|
+
const i0 = parseInt( inds[ 0 ] );
|
|
121
|
+
let k = 1; // split the polygon in numVertices - 2 triangles
|
|
123
122
|
|
|
124
|
-
for (
|
|
123
|
+
for ( let j = 0; j < numVertices - 2; ++ j ) {
|
|
125
124
|
|
|
126
|
-
i1 = parseInt( inds[ k ] );
|
|
127
|
-
i2 = parseInt( inds[ k + 1 ] );
|
|
125
|
+
const i1 = parseInt( inds[ k ] );
|
|
126
|
+
const i2 = parseInt( inds[ k + 1 ] );
|
|
128
127
|
indices.push( i0, i1, i2 );
|
|
129
128
|
k ++;
|
|
130
129
|
|
|
@@ -139,27 +138,26 @@
|
|
|
139
138
|
if ( ( result = patConnectivity.exec( line ) ) !== null ) {
|
|
140
139
|
|
|
141
140
|
// numVertices i0 i1 i2 ...
|
|
142
|
-
|
|
143
|
-
|
|
141
|
+
const numVertices = parseInt( result[ 1 ] );
|
|
142
|
+
const inds = result[ 2 ].split( /\s+/ );
|
|
144
143
|
|
|
145
144
|
if ( numVertices >= 3 ) {
|
|
146
145
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
for ( var j = 0; j < numVertices - 2; j ++ ) {
|
|
146
|
+
// split the polygon in numVertices - 2 triangles
|
|
147
|
+
for ( let j = 0; j < numVertices - 2; j ++ ) {
|
|
150
148
|
|
|
151
149
|
if ( j % 2 === 1 ) {
|
|
152
150
|
|
|
153
|
-
i0 = parseInt( inds[ j ] );
|
|
154
|
-
i1 = parseInt( inds[ j + 2 ] );
|
|
155
|
-
i2 = parseInt( inds[ j + 1 ] );
|
|
151
|
+
const i0 = parseInt( inds[ j ] );
|
|
152
|
+
const i1 = parseInt( inds[ j + 2 ] );
|
|
153
|
+
const i2 = parseInt( inds[ j + 1 ] );
|
|
156
154
|
indices.push( i0, i1, i2 );
|
|
157
155
|
|
|
158
156
|
} else {
|
|
159
157
|
|
|
160
|
-
i0 = parseInt( inds[ j ] );
|
|
161
|
-
i1 = parseInt( inds[ j + 1 ] );
|
|
162
|
-
i2 = parseInt( inds[ j + 2 ] );
|
|
158
|
+
const i0 = parseInt( inds[ j ] );
|
|
159
|
+
const i1 = parseInt( inds[ j + 1 ] );
|
|
160
|
+
const i2 = parseInt( inds[ j + 2 ] );
|
|
163
161
|
indices.push( i0, i1, i2 );
|
|
164
162
|
|
|
165
163
|
}
|
|
@@ -178,9 +176,9 @@
|
|
|
178
176
|
while ( ( result = pat3Floats.exec( line ) ) !== null ) {
|
|
179
177
|
|
|
180
178
|
if ( patWord.exec( line ) !== null ) break;
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
179
|
+
const r = parseFloat( result[ 1 ] );
|
|
180
|
+
const g = parseFloat( result[ 2 ] );
|
|
181
|
+
const b = parseFloat( result[ 3 ] );
|
|
184
182
|
colors.push( r, g, b );
|
|
185
183
|
|
|
186
184
|
}
|
|
@@ -191,9 +189,9 @@
|
|
|
191
189
|
while ( ( result = pat3Floats.exec( line ) ) !== null ) {
|
|
192
190
|
|
|
193
191
|
if ( patWord.exec( line ) !== null ) break;
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
192
|
+
const nx = parseFloat( result[ 1 ] );
|
|
193
|
+
const ny = parseFloat( result[ 2 ] );
|
|
194
|
+
const nz = parseFloat( result[ 3 ] );
|
|
197
195
|
normals.push( nx, ny, nz );
|
|
198
196
|
|
|
199
197
|
}
|
|
@@ -254,7 +252,7 @@
|
|
|
254
252
|
|
|
255
253
|
}
|
|
256
254
|
|
|
257
|
-
|
|
255
|
+
let geometry = new THREE.BufferGeometry();
|
|
258
256
|
geometry.setIndex( indices );
|
|
259
257
|
geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( positions, 3 ) );
|
|
260
258
|
|
|
@@ -277,17 +275,17 @@
|
|
|
277
275
|
|
|
278
276
|
// cell
|
|
279
277
|
geometry = geometry.toNonIndexed();
|
|
280
|
-
|
|
278
|
+
const numTriangles = geometry.attributes.position.count / 3;
|
|
281
279
|
|
|
282
280
|
if ( colors.length === numTriangles * 3 ) {
|
|
283
281
|
|
|
284
|
-
|
|
282
|
+
const newColors = [];
|
|
285
283
|
|
|
286
|
-
for (
|
|
284
|
+
for ( let i = 0; i < numTriangles; i ++ ) {
|
|
287
285
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
286
|
+
const r = colors[ 3 * i + 0 ];
|
|
287
|
+
const g = colors[ 3 * i + 1 ];
|
|
288
|
+
const b = colors[ 3 * i + 2 ];
|
|
291
289
|
newColors.push( r, g, b );
|
|
292
290
|
newColors.push( r, g, b );
|
|
293
291
|
newColors.push( r, g, b );
|
|
@@ -306,22 +304,19 @@
|
|
|
306
304
|
|
|
307
305
|
function parseBinary( data ) {
|
|
308
306
|
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
var dataView = new DataView( data ); // Points and normals, by default, are empty
|
|
312
|
-
|
|
313
|
-
var points = [];
|
|
314
|
-
var normals = [];
|
|
315
|
-
var indices = []; // Going to make a big array of strings
|
|
307
|
+
const buffer = new Uint8Array( data );
|
|
308
|
+
const dataView = new DataView( data ); // Points and normals, by default, are empty
|
|
316
309
|
|
|
317
|
-
|
|
318
|
-
|
|
310
|
+
let points = [];
|
|
311
|
+
let normals = [];
|
|
312
|
+
let indices = [];
|
|
313
|
+
let index = 0;
|
|
319
314
|
|
|
320
315
|
function findString( buffer, start ) {
|
|
321
316
|
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
317
|
+
let index = start;
|
|
318
|
+
let c = buffer[ index ];
|
|
319
|
+
const s = [];
|
|
325
320
|
|
|
326
321
|
while ( c !== 10 ) {
|
|
327
322
|
|
|
@@ -340,7 +335,7 @@
|
|
|
340
335
|
|
|
341
336
|
}
|
|
342
337
|
|
|
343
|
-
|
|
338
|
+
let state, line;
|
|
344
339
|
|
|
345
340
|
while ( true ) {
|
|
346
341
|
|
|
@@ -350,20 +345,19 @@
|
|
|
350
345
|
|
|
351
346
|
if ( line.indexOf( 'DATASET' ) === 0 ) {
|
|
352
347
|
|
|
353
|
-
|
|
348
|
+
const dataset = line.split( ' ' )[ 1 ];
|
|
354
349
|
if ( dataset !== 'POLYDATA' ) throw new Error( 'Unsupported DATASET type: ' + dataset );
|
|
355
350
|
|
|
356
351
|
} else if ( line.indexOf( 'POINTS' ) === 0 ) {
|
|
357
352
|
|
|
358
|
-
|
|
353
|
+
// Add the points
|
|
354
|
+
const numberOfPoints = parseInt( line.split( ' ' )[ 1 ], 10 ); // Each point is 3 4-byte floats
|
|
359
355
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
count = numberOfPoints * 4 * 3;
|
|
356
|
+
const count = numberOfPoints * 4 * 3;
|
|
363
357
|
points = new Float32Array( numberOfPoints * 3 );
|
|
364
|
-
pointIndex = state.next;
|
|
358
|
+
let pointIndex = state.next;
|
|
365
359
|
|
|
366
|
-
for ( i = 0; i < numberOfPoints; i ++ ) {
|
|
360
|
+
for ( let i = 0; i < numberOfPoints; i ++ ) {
|
|
367
361
|
|
|
368
362
|
points[ 3 * i ] = dataView.getFloat32( pointIndex, false );
|
|
369
363
|
points[ 3 * i + 1 ] = dataView.getFloat32( pointIndex + 4, false );
|
|
@@ -377,22 +371,22 @@
|
|
|
377
371
|
|
|
378
372
|
} else if ( line.indexOf( 'TRIANGLE_STRIPS' ) === 0 ) {
|
|
379
373
|
|
|
380
|
-
|
|
381
|
-
|
|
374
|
+
const numberOfStrips = parseInt( line.split( ' ' )[ 1 ], 10 );
|
|
375
|
+
const size = parseInt( line.split( ' ' )[ 2 ], 10 ); // 4 byte integers
|
|
382
376
|
|
|
383
|
-
count = size * 4;
|
|
377
|
+
const count = size * 4;
|
|
384
378
|
indices = new Uint32Array( 3 * size - 9 * numberOfStrips );
|
|
385
|
-
|
|
386
|
-
pointIndex = state.next;
|
|
379
|
+
let indicesIndex = 0;
|
|
380
|
+
let pointIndex = state.next;
|
|
387
381
|
|
|
388
|
-
for ( i = 0; i < numberOfStrips; i ++ ) {
|
|
382
|
+
for ( let i = 0; i < numberOfStrips; i ++ ) {
|
|
389
383
|
|
|
390
384
|
// For each strip, read the first value, then record that many more points
|
|
391
|
-
|
|
392
|
-
|
|
385
|
+
const indexCount = dataView.getInt32( pointIndex, false );
|
|
386
|
+
const strip = [];
|
|
393
387
|
pointIndex += 4;
|
|
394
388
|
|
|
395
|
-
for ( s = 0; s < indexCount; s ++ ) {
|
|
389
|
+
for ( let s = 0; s < indexCount; s ++ ) {
|
|
396
390
|
|
|
397
391
|
strip.push( dataView.getInt32( pointIndex, false ) );
|
|
398
392
|
pointIndex += 4;
|
|
@@ -400,7 +394,7 @@
|
|
|
400
394
|
} // retrieves the n-2 triangles from the triangle strip
|
|
401
395
|
|
|
402
396
|
|
|
403
|
-
for (
|
|
397
|
+
for ( let j = 0; j < indexCount - 2; j ++ ) {
|
|
404
398
|
|
|
405
399
|
if ( j % 2 ) {
|
|
406
400
|
|
|
@@ -425,22 +419,22 @@
|
|
|
425
419
|
|
|
426
420
|
} else if ( line.indexOf( 'POLYGONS' ) === 0 ) {
|
|
427
421
|
|
|
428
|
-
|
|
429
|
-
|
|
422
|
+
const numberOfStrips = parseInt( line.split( ' ' )[ 1 ], 10 );
|
|
423
|
+
const size = parseInt( line.split( ' ' )[ 2 ], 10 ); // 4 byte integers
|
|
430
424
|
|
|
431
|
-
count = size * 4;
|
|
425
|
+
const count = size * 4;
|
|
432
426
|
indices = new Uint32Array( 3 * size - 9 * numberOfStrips );
|
|
433
|
-
|
|
434
|
-
pointIndex = state.next;
|
|
427
|
+
let indicesIndex = 0;
|
|
428
|
+
let pointIndex = state.next;
|
|
435
429
|
|
|
436
|
-
for ( i = 0; i < numberOfStrips; i ++ ) {
|
|
430
|
+
for ( let i = 0; i < numberOfStrips; i ++ ) {
|
|
437
431
|
|
|
438
432
|
// For each strip, read the first value, then record that many more points
|
|
439
|
-
|
|
440
|
-
|
|
433
|
+
const indexCount = dataView.getInt32( pointIndex, false );
|
|
434
|
+
const strip = [];
|
|
441
435
|
pointIndex += 4;
|
|
442
436
|
|
|
443
|
-
for ( s = 0; s < indexCount; s ++ ) {
|
|
437
|
+
for ( let s = 0; s < indexCount; s ++ ) {
|
|
444
438
|
|
|
445
439
|
strip.push( dataView.getInt32( pointIndex, false ) );
|
|
446
440
|
pointIndex += 4;
|
|
@@ -448,7 +442,7 @@
|
|
|
448
442
|
} // divide the polygon in n-2 triangle
|
|
449
443
|
|
|
450
444
|
|
|
451
|
-
for (
|
|
445
|
+
for ( let j = 1; j < indexCount - 1; j ++ ) {
|
|
452
446
|
|
|
453
447
|
indices[ indicesIndex ++ ] = strip[ 0 ];
|
|
454
448
|
indices[ indicesIndex ++ ] = strip[ j ];
|
|
@@ -463,15 +457,15 @@
|
|
|
463
457
|
|
|
464
458
|
} else if ( line.indexOf( 'POINT_DATA' ) === 0 ) {
|
|
465
459
|
|
|
466
|
-
numberOfPoints = parseInt( line.split( ' ' )[ 1 ], 10 ); // Grab the next line
|
|
460
|
+
const numberOfPoints = parseInt( line.split( ' ' )[ 1 ], 10 ); // Grab the next line
|
|
467
461
|
|
|
468
462
|
state = findString( buffer, state.next ); // Now grab the binary data
|
|
469
463
|
|
|
470
|
-
count = numberOfPoints * 4 * 3;
|
|
464
|
+
const count = numberOfPoints * 4 * 3;
|
|
471
465
|
normals = new Float32Array( numberOfPoints * 3 );
|
|
472
|
-
pointIndex = state.next;
|
|
466
|
+
let pointIndex = state.next;
|
|
473
467
|
|
|
474
|
-
for ( i = 0; i < numberOfPoints; i ++ ) {
|
|
468
|
+
for ( let i = 0; i < numberOfPoints; i ++ ) {
|
|
475
469
|
|
|
476
470
|
normals[ 3 * i ] = dataView.getFloat32( pointIndex, false );
|
|
477
471
|
normals[ 3 * i + 1 ] = dataView.getFloat32( pointIndex + 4, false );
|
|
@@ -496,7 +490,7 @@
|
|
|
496
490
|
|
|
497
491
|
}
|
|
498
492
|
|
|
499
|
-
|
|
493
|
+
const geometry = new THREE.BufferGeometry();
|
|
500
494
|
geometry.setIndex( new THREE.BufferAttribute( indices, 1 ) );
|
|
501
495
|
geometry.setAttribute( 'position', new THREE.BufferAttribute( points, 3 ) );
|
|
502
496
|
|
|
@@ -522,7 +516,7 @@
|
|
|
522
516
|
|
|
523
517
|
function Int32Concat( first, second ) {
|
|
524
518
|
|
|
525
|
-
|
|
519
|
+
const firstLength = first.length,
|
|
526
520
|
result = new Int32Array( firstLength + second.length );
|
|
527
521
|
result.set( first );
|
|
528
522
|
result.set( second, firstLength );
|
|
@@ -536,7 +530,7 @@
|
|
|
536
530
|
function xmlToJson( xml ) {
|
|
537
531
|
|
|
538
532
|
// Create the return object
|
|
539
|
-
|
|
533
|
+
let obj = {};
|
|
540
534
|
|
|
541
535
|
if ( xml.nodeType === 1 ) {
|
|
542
536
|
|
|
@@ -548,9 +542,9 @@
|
|
|
548
542
|
|
|
549
543
|
obj[ 'attributes' ] = {};
|
|
550
544
|
|
|
551
|
-
for (
|
|
545
|
+
for ( let j = 0; j < xml.attributes.length; j ++ ) {
|
|
552
546
|
|
|
553
|
-
|
|
547
|
+
const attribute = xml.attributes.item( j );
|
|
554
548
|
obj[ 'attributes' ][ attribute.nodeName ] = attribute.nodeValue.trim();
|
|
555
549
|
|
|
556
550
|
}
|
|
@@ -569,26 +563,26 @@
|
|
|
569
563
|
|
|
570
564
|
if ( xml.hasChildNodes() ) {
|
|
571
565
|
|
|
572
|
-
for (
|
|
566
|
+
for ( let i = 0; i < xml.childNodes.length; i ++ ) {
|
|
573
567
|
|
|
574
|
-
|
|
575
|
-
|
|
568
|
+
const item = xml.childNodes.item( i );
|
|
569
|
+
const nodeName = item.nodeName;
|
|
576
570
|
|
|
577
571
|
if ( typeof obj[ nodeName ] === 'undefined' ) {
|
|
578
572
|
|
|
579
|
-
|
|
573
|
+
const tmp = xmlToJson( item );
|
|
580
574
|
if ( tmp !== '' ) obj[ nodeName ] = tmp;
|
|
581
575
|
|
|
582
576
|
} else {
|
|
583
577
|
|
|
584
578
|
if ( typeof obj[ nodeName ].push === 'undefined' ) {
|
|
585
579
|
|
|
586
|
-
|
|
580
|
+
const old = obj[ nodeName ];
|
|
587
581
|
obj[ nodeName ] = [ old ];
|
|
588
582
|
|
|
589
583
|
}
|
|
590
584
|
|
|
591
|
-
|
|
585
|
+
const tmp = xmlToJson( item );
|
|
592
586
|
if ( tmp !== '' ) obj[ nodeName ].push( tmp );
|
|
593
587
|
|
|
594
588
|
}
|
|
@@ -604,20 +598,11 @@
|
|
|
604
598
|
|
|
605
599
|
function Base64toByteArray( b64 ) {
|
|
606
600
|
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
var revLookup = [];
|
|
611
|
-
var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
612
|
-
var len = code.length;
|
|
613
|
-
|
|
614
|
-
for ( i = 0; i < len; i ++ ) {
|
|
615
|
-
|
|
616
|
-
lookup[ i ] = code[ i ];
|
|
617
|
-
|
|
618
|
-
}
|
|
601
|
+
const Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
|
|
602
|
+
const revLookup = [];
|
|
603
|
+
const code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
619
604
|
|
|
620
|
-
for ( i = 0; i <
|
|
605
|
+
for ( let i = 0, l = code.length; i < l; ++ i ) {
|
|
621
606
|
|
|
622
607
|
revLookup[ code.charCodeAt( i ) ] = i;
|
|
623
608
|
|
|
@@ -625,8 +610,7 @@
|
|
|
625
610
|
|
|
626
611
|
revLookup[ '-'.charCodeAt( 0 ) ] = 62;
|
|
627
612
|
revLookup[ '_'.charCodeAt( 0 ) ] = 63;
|
|
628
|
-
|
|
629
|
-
var len = b64.length;
|
|
613
|
+
const len = b64.length;
|
|
630
614
|
|
|
631
615
|
if ( len % 4 > 0 ) {
|
|
632
616
|
|
|
@@ -634,14 +618,15 @@
|
|
|
634
618
|
|
|
635
619
|
}
|
|
636
620
|
|
|
637
|
-
placeHolders = b64[ len - 2 ] === '=' ? 2 : b64[ len - 1 ] === '=' ? 1 : 0;
|
|
638
|
-
arr = new Arr( len * 3 / 4 - placeHolders );
|
|
639
|
-
l = placeHolders > 0 ? len - 4 : len;
|
|
640
|
-
|
|
621
|
+
const placeHolders = b64[ len - 2 ] === '=' ? 2 : b64[ len - 1 ] === '=' ? 1 : 0;
|
|
622
|
+
const arr = new Arr( len * 3 / 4 - placeHolders );
|
|
623
|
+
const l = placeHolders > 0 ? len - 4 : len;
|
|
624
|
+
let L = 0;
|
|
625
|
+
let i, j;
|
|
641
626
|
|
|
642
627
|
for ( i = 0, j = 0; i < l; i += 4, j += 3 ) {
|
|
643
628
|
|
|
644
|
-
tmp = revLookup[ b64.charCodeAt( i ) ] << 18 | revLookup[ b64.charCodeAt( i + 1 ) ] << 12 | revLookup[ b64.charCodeAt( i + 2 ) ] << 6 | revLookup[ b64.charCodeAt( i + 3 ) ];
|
|
629
|
+
const tmp = revLookup[ b64.charCodeAt( i ) ] << 18 | revLookup[ b64.charCodeAt( i + 1 ) ] << 12 | revLookup[ b64.charCodeAt( i + 2 ) ] << 6 | revLookup[ b64.charCodeAt( i + 3 ) ];
|
|
645
630
|
arr[ L ++ ] = ( tmp & 0xFF0000 ) >> 16;
|
|
646
631
|
arr[ L ++ ] = ( tmp & 0xFF00 ) >> 8;
|
|
647
632
|
arr[ L ++ ] = tmp & 0xFF;
|
|
@@ -650,12 +635,12 @@
|
|
|
650
635
|
|
|
651
636
|
if ( placeHolders === 2 ) {
|
|
652
637
|
|
|
653
|
-
tmp = revLookup[ b64.charCodeAt( i ) ] << 2 | revLookup[ b64.charCodeAt( i + 1 ) ] >> 4;
|
|
638
|
+
const tmp = revLookup[ b64.charCodeAt( i ) ] << 2 | revLookup[ b64.charCodeAt( i + 1 ) ] >> 4;
|
|
654
639
|
arr[ L ++ ] = tmp & 0xFF;
|
|
655
640
|
|
|
656
641
|
} else if ( placeHolders === 1 ) {
|
|
657
642
|
|
|
658
|
-
tmp = revLookup[ b64.charCodeAt( i ) ] << 10 | revLookup[ b64.charCodeAt( i + 1 ) ] << 4 | revLookup[ b64.charCodeAt( i + 2 ) ] >> 2;
|
|
643
|
+
const tmp = revLookup[ b64.charCodeAt( i ) ] << 10 | revLookup[ b64.charCodeAt( i + 1 ) ] << 4 | revLookup[ b64.charCodeAt( i + 2 ) ] >> 2;
|
|
659
644
|
arr[ L ++ ] = tmp >> 8 & 0xFF;
|
|
660
645
|
arr[ L ++ ] = tmp & 0xFF;
|
|
661
646
|
|
|
@@ -667,7 +652,7 @@
|
|
|
667
652
|
|
|
668
653
|
function parseDataArray( ele, compressed ) {
|
|
669
654
|
|
|
670
|
-
|
|
655
|
+
let numBytes = 0;
|
|
671
656
|
|
|
672
657
|
if ( json.attributes.header_type === 'UInt64' ) {
|
|
673
658
|
|
|
@@ -677,20 +662,19 @@
|
|
|
677
662
|
|
|
678
663
|
numBytes = 4;
|
|
679
664
|
|
|
680
|
-
}
|
|
665
|
+
}
|
|
681
666
|
|
|
667
|
+
let txt, content; // Check the format
|
|
682
668
|
|
|
683
669
|
if ( ele.attributes.format === 'binary' && compressed ) {
|
|
684
670
|
|
|
685
|
-
var rawData, content, byteData, blocks, cSizeStart, headerSize, padding, dataOffsets, currentOffset;
|
|
686
|
-
|
|
687
671
|
if ( ele.attributes.type === 'Float32' ) {
|
|
688
672
|
|
|
689
|
-
|
|
673
|
+
txt = new Float32Array();
|
|
690
674
|
|
|
691
|
-
} else if ( ele.attributes.type === 'Int64' ) {
|
|
675
|
+
} else if ( ele.attributes.type === 'Int32' || ele.attributes.type === 'Int64' ) {
|
|
692
676
|
|
|
693
|
-
|
|
677
|
+
txt = new Int32Array();
|
|
694
678
|
|
|
695
679
|
} // VTP data with the header has the following structure:
|
|
696
680
|
// [#blocks][#u-size][#p-size][#c-size-1][#c-size-2]...[#c-size-#blocks][DATA]
|
|
@@ -705,34 +689,36 @@
|
|
|
705
689
|
// computed by summing the compressed block sizes from preceding blocks according to the header.
|
|
706
690
|
|
|
707
691
|
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
692
|
+
const textNode = ele[ '#text' ];
|
|
693
|
+
const rawData = Array.isArray( textNode ) ? textNode[ 0 ] : textNode;
|
|
694
|
+
const byteData = Base64toByteArray( rawData ); // Each data point consists of 8 bits regardless of the header type
|
|
711
695
|
|
|
712
|
-
|
|
696
|
+
const dataPointSize = 8;
|
|
697
|
+
let blocks = byteData[ 0 ];
|
|
713
698
|
|
|
714
|
-
|
|
699
|
+
for ( let i = 1; i < numBytes - 1; i ++ ) {
|
|
700
|
+
|
|
701
|
+
blocks = blocks | byteData[ i ] << i * dataPointSize;
|
|
715
702
|
|
|
716
703
|
}
|
|
717
704
|
|
|
718
|
-
headerSize = ( blocks + 3 ) * numBytes;
|
|
719
|
-
padding = headerSize % 3 > 0 ? 3 - headerSize % 3 : 0;
|
|
705
|
+
let headerSize = ( blocks + 3 ) * numBytes;
|
|
706
|
+
const padding = headerSize % 3 > 0 ? 3 - headerSize % 3 : 0;
|
|
720
707
|
headerSize = headerSize + padding;
|
|
721
|
-
dataOffsets = [];
|
|
722
|
-
currentOffset = headerSize;
|
|
708
|
+
const dataOffsets = [];
|
|
709
|
+
let currentOffset = headerSize;
|
|
723
710
|
dataOffsets.push( currentOffset ); // Get the blocks sizes after the compression.
|
|
724
711
|
// There are three blocks before c-size-i, so we skip 3*numBytes
|
|
725
712
|
|
|
726
|
-
cSizeStart = 3 * numBytes;
|
|
713
|
+
const cSizeStart = 3 * numBytes;
|
|
727
714
|
|
|
728
|
-
for (
|
|
715
|
+
for ( let i = 0; i < blocks; i ++ ) {
|
|
729
716
|
|
|
730
|
-
|
|
717
|
+
let currentBlockSize = byteData[ i * numBytes + cSizeStart ];
|
|
731
718
|
|
|
732
|
-
for (
|
|
719
|
+
for ( let j = 1; j < numBytes - 1; j ++ ) {
|
|
733
720
|
|
|
734
|
-
|
|
735
|
-
currentBlockSize = currentBlockSize | byteData[ i * numBytes + cSizeStart + j ] << j * 8;
|
|
721
|
+
currentBlockSize = currentBlockSize | byteData[ i * numBytes + cSizeStart + j ] << j * dataPointSize;
|
|
736
722
|
|
|
737
723
|
}
|
|
738
724
|
|
|
@@ -741,9 +727,9 @@
|
|
|
741
727
|
|
|
742
728
|
}
|
|
743
729
|
|
|
744
|
-
for (
|
|
730
|
+
for ( let i = 0; i < dataOffsets.length - 1; i ++ ) {
|
|
745
731
|
|
|
746
|
-
|
|
732
|
+
const data = fflate.unzlibSync( byteData.slice( dataOffsets[ i ], dataOffsets[ i + 1 ] ) ); // eslint-disable-line no-undef
|
|
747
733
|
|
|
748
734
|
content = data.buffer;
|
|
749
735
|
|
|
@@ -752,7 +738,7 @@
|
|
|
752
738
|
content = new Float32Array( content );
|
|
753
739
|
txt = Float32Concat( txt, content );
|
|
754
740
|
|
|
755
|
-
} else if ( ele.attributes.type === 'Int64' ) {
|
|
741
|
+
} else if ( ele.attributes.type === 'Int32' || ele.attributes.type === 'Int64' ) {
|
|
756
742
|
|
|
757
743
|
content = new Int32Array( content );
|
|
758
744
|
txt = Int32Concat( txt, content );
|
|
@@ -781,7 +767,7 @@
|
|
|
781
767
|
|
|
782
768
|
if ( ele.attributes.format === 'binary' && ! compressed ) {
|
|
783
769
|
|
|
784
|
-
|
|
770
|
+
content = Base64toByteArray( ele[ '#text' ] ); // VTP data for the uncompressed case has the following structure:
|
|
785
771
|
// [#bytes][DATA]
|
|
786
772
|
// where "[#bytes]" is an integer value specifying the number of bytes in the block of data following it.
|
|
787
773
|
|
|
@@ -791,7 +777,7 @@
|
|
|
791
777
|
|
|
792
778
|
if ( ele[ '#text' ] ) {
|
|
793
779
|
|
|
794
|
-
|
|
780
|
+
content = ele[ '#text' ].split( /\s+/ ).filter( function ( el ) {
|
|
795
781
|
|
|
796
782
|
if ( el !== '' ) return el;
|
|
797
783
|
|
|
@@ -799,7 +785,7 @@
|
|
|
799
785
|
|
|
800
786
|
} else {
|
|
801
787
|
|
|
802
|
-
|
|
788
|
+
content = new Int32Array( 0 ).buffer;
|
|
803
789
|
|
|
804
790
|
}
|
|
805
791
|
|
|
@@ -809,15 +795,15 @@
|
|
|
809
795
|
|
|
810
796
|
if ( ele.attributes.type === 'Float32' ) {
|
|
811
797
|
|
|
812
|
-
|
|
798
|
+
txt = new Float32Array( content );
|
|
813
799
|
|
|
814
800
|
} else if ( ele.attributes.type === 'Int32' ) {
|
|
815
801
|
|
|
816
|
-
|
|
802
|
+
txt = new Int32Array( content );
|
|
817
803
|
|
|
818
804
|
} else if ( ele.attributes.type === 'Int64' ) {
|
|
819
805
|
|
|
820
|
-
|
|
806
|
+
txt = new Int32Array( content );
|
|
821
807
|
|
|
822
808
|
if ( ele.attributes.format === 'binary' ) {
|
|
823
809
|
|
|
@@ -840,84 +826,47 @@
|
|
|
840
826
|
// Get Dom
|
|
841
827
|
|
|
842
828
|
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
if ( window.DOMParser ) {
|
|
846
|
-
|
|
847
|
-
try {
|
|
848
|
-
|
|
849
|
-
dom = new DOMParser().parseFromString( stringFile, 'text/xml' );
|
|
850
|
-
|
|
851
|
-
} catch ( e ) {
|
|
852
|
-
|
|
853
|
-
dom = null;
|
|
854
|
-
|
|
855
|
-
}
|
|
856
|
-
|
|
857
|
-
} else if ( window.ActiveXObject ) {
|
|
858
|
-
|
|
859
|
-
try {
|
|
860
|
-
|
|
861
|
-
dom = new ActiveXObject( 'Microsoft.XMLDOM' ); // eslint-disable-line no-undef
|
|
862
|
-
|
|
863
|
-
dom.async = false;
|
|
864
|
-
|
|
865
|
-
if ( ! dom.loadXML() ) {
|
|
866
|
-
|
|
867
|
-
throw new Error( dom.parseError.reason + dom.parseError.srcText );
|
|
868
|
-
|
|
869
|
-
}
|
|
870
|
-
|
|
871
|
-
} catch ( e ) {
|
|
872
|
-
|
|
873
|
-
dom = null;
|
|
874
|
-
|
|
875
|
-
}
|
|
876
|
-
|
|
877
|
-
} else {
|
|
878
|
-
|
|
879
|
-
throw new Error( 'Cannot parse xml string!' );
|
|
880
|
-
|
|
881
|
-
} // Get the doc
|
|
829
|
+
const dom = new DOMParser().parseFromString( stringFile, 'application/xml' ); // Get the doc
|
|
882
830
|
|
|
831
|
+
const doc = dom.documentElement; // Convert to json
|
|
883
832
|
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
var normals = [];
|
|
889
|
-
var indices = [];
|
|
833
|
+
const json = xmlToJson( doc );
|
|
834
|
+
let points = [];
|
|
835
|
+
let normals = [];
|
|
836
|
+
let indices = [];
|
|
890
837
|
|
|
891
838
|
if ( json.PolyData ) {
|
|
892
839
|
|
|
893
|
-
|
|
894
|
-
|
|
840
|
+
const piece = json.PolyData.Piece;
|
|
841
|
+
const compressed = json.attributes.hasOwnProperty( 'compressor' ); // Can be optimized
|
|
895
842
|
// Loop through the sections
|
|
896
843
|
|
|
897
|
-
|
|
844
|
+
const sections = [ 'PointData', 'Points', 'Strips', 'Polys' ]; // +['CellData', 'Verts', 'Lines'];
|
|
898
845
|
|
|
899
|
-
|
|
900
|
-
|
|
846
|
+
let sectionIndex = 0;
|
|
847
|
+
const numberOfSections = sections.length;
|
|
901
848
|
|
|
902
849
|
while ( sectionIndex < numberOfSections ) {
|
|
903
850
|
|
|
904
|
-
|
|
851
|
+
const section = piece[ sections[ sectionIndex ] ]; // If it has a DataArray in it
|
|
905
852
|
|
|
906
853
|
if ( section && section.DataArray ) {
|
|
907
854
|
|
|
908
855
|
// Depending on the number of DataArrays
|
|
856
|
+
let arr;
|
|
857
|
+
|
|
909
858
|
if ( Object.prototype.toString.call( section.DataArray ) === '[object Array]' ) {
|
|
910
859
|
|
|
911
|
-
|
|
860
|
+
arr = section.DataArray;
|
|
912
861
|
|
|
913
862
|
} else {
|
|
914
863
|
|
|
915
|
-
|
|
864
|
+
arr = [ section.DataArray ];
|
|
916
865
|
|
|
917
866
|
}
|
|
918
867
|
|
|
919
|
-
|
|
920
|
-
|
|
868
|
+
let dataArrayIndex = 0;
|
|
869
|
+
const numberOfDataArrays = arr.length;
|
|
921
870
|
|
|
922
871
|
while ( dataArrayIndex < numberOfDataArrays ) {
|
|
923
872
|
|
|
@@ -936,18 +885,22 @@
|
|
|
936
885
|
|
|
937
886
|
// if iti is point data
|
|
938
887
|
case 'PointData':
|
|
939
|
-
|
|
940
|
-
var normalsName = section.attributes.Normals;
|
|
888
|
+
{
|
|
941
889
|
|
|
942
|
-
|
|
890
|
+
const numberOfPoints = parseInt( piece.attributes.NumberOfPoints );
|
|
891
|
+
const normalsName = section.attributes.Normals;
|
|
943
892
|
|
|
944
|
-
|
|
893
|
+
if ( numberOfPoints > 0 ) {
|
|
945
894
|
|
|
946
|
-
|
|
895
|
+
for ( let i = 0, len = arr.length; i < len; i ++ ) {
|
|
947
896
|
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
897
|
+
if ( normalsName === arr[ i ].attributes.Name ) {
|
|
898
|
+
|
|
899
|
+
const components = arr[ i ].attributes.NumberOfComponents;
|
|
900
|
+
normals = new Float32Array( numberOfPoints * components );
|
|
901
|
+
normals.set( arr[ i ].text, 0 );
|
|
902
|
+
|
|
903
|
+
}
|
|
951
904
|
|
|
952
905
|
}
|
|
953
906
|
|
|
@@ -959,13 +912,17 @@
|
|
|
959
912
|
// if it is points
|
|
960
913
|
|
|
961
914
|
case 'Points':
|
|
962
|
-
|
|
915
|
+
{
|
|
916
|
+
|
|
917
|
+
const numberOfPoints = parseInt( piece.attributes.NumberOfPoints );
|
|
918
|
+
|
|
919
|
+
if ( numberOfPoints > 0 ) {
|
|
963
920
|
|
|
964
|
-
|
|
921
|
+
const components = section.DataArray.attributes.NumberOfComponents;
|
|
922
|
+
points = new Float32Array( numberOfPoints * components );
|
|
923
|
+
points.set( section.DataArray.text, 0 );
|
|
965
924
|
|
|
966
|
-
|
|
967
|
-
points = new Float32Array( numberOfPoints * components );
|
|
968
|
-
points.set( section.DataArray.text, 0 );
|
|
925
|
+
}
|
|
969
926
|
|
|
970
927
|
}
|
|
971
928
|
|
|
@@ -973,46 +930,50 @@
|
|
|
973
930
|
// if it is strips
|
|
974
931
|
|
|
975
932
|
case 'Strips':
|
|
976
|
-
|
|
933
|
+
{
|
|
977
934
|
|
|
978
|
-
|
|
935
|
+
const numberOfStrips = parseInt( piece.attributes.NumberOfStrips );
|
|
979
936
|
|
|
980
|
-
|
|
981
|
-
var offset = new Int32Array( section.DataArray[ 1 ].text.length );
|
|
982
|
-
connectivity.set( section.DataArray[ 0 ].text, 0 );
|
|
983
|
-
offset.set( section.DataArray[ 1 ].text, 0 );
|
|
984
|
-
var size = numberOfStrips + connectivity.length;
|
|
985
|
-
indices = new Uint32Array( 3 * size - 9 * numberOfStrips );
|
|
986
|
-
var indicesIndex = 0;
|
|
937
|
+
if ( numberOfStrips > 0 ) {
|
|
987
938
|
|
|
988
|
-
|
|
939
|
+
const connectivity = new Int32Array( section.DataArray[ 0 ].text.length );
|
|
940
|
+
const offset = new Int32Array( section.DataArray[ 1 ].text.length );
|
|
941
|
+
connectivity.set( section.DataArray[ 0 ].text, 0 );
|
|
942
|
+
offset.set( section.DataArray[ 1 ].text, 0 );
|
|
943
|
+
const size = numberOfStrips + connectivity.length;
|
|
944
|
+
indices = new Uint32Array( 3 * size - 9 * numberOfStrips );
|
|
945
|
+
let indicesIndex = 0;
|
|
989
946
|
|
|
990
|
-
|
|
947
|
+
for ( let i = 0, len = numberOfStrips; i < len; i ++ ) {
|
|
991
948
|
|
|
992
|
-
|
|
949
|
+
const strip = [];
|
|
993
950
|
|
|
994
|
-
|
|
995
|
-
if ( i > 0 ) len0 = offset[ i - 1 ];
|
|
951
|
+
for ( let s = 0, len1 = offset[ i ], len0 = 0; s < len1 - len0; s ++ ) {
|
|
996
952
|
|
|
997
|
-
|
|
953
|
+
strip.push( connectivity[ s ] );
|
|
954
|
+
if ( i > 0 ) len0 = offset[ i - 1 ];
|
|
998
955
|
|
|
999
|
-
|
|
956
|
+
}
|
|
1000
957
|
|
|
1001
|
-
|
|
958
|
+
for ( let j = 0, len1 = offset[ i ], len0 = 0; j < len1 - len0 - 2; j ++ ) {
|
|
1002
959
|
|
|
1003
|
-
|
|
1004
|
-
indices[ indicesIndex ++ ] = strip[ j + 2 ];
|
|
1005
|
-
indices[ indicesIndex ++ ] = strip[ j + 1 ];
|
|
960
|
+
if ( j % 2 ) {
|
|
1006
961
|
|
|
1007
|
-
|
|
962
|
+
indices[ indicesIndex ++ ] = strip[ j ];
|
|
963
|
+
indices[ indicesIndex ++ ] = strip[ j + 2 ];
|
|
964
|
+
indices[ indicesIndex ++ ] = strip[ j + 1 ];
|
|
1008
965
|
|
|
1009
|
-
|
|
1010
|
-
indices[ indicesIndex ++ ] = strip[ j + 1 ];
|
|
1011
|
-
indices[ indicesIndex ++ ] = strip[ j + 2 ];
|
|
966
|
+
} else {
|
|
1012
967
|
|
|
1013
|
-
|
|
968
|
+
indices[ indicesIndex ++ ] = strip[ j ];
|
|
969
|
+
indices[ indicesIndex ++ ] = strip[ j + 1 ];
|
|
970
|
+
indices[ indicesIndex ++ ] = strip[ j + 2 ];
|
|
1014
971
|
|
|
1015
|
-
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
if ( i > 0 ) len0 = offset[ i - 1 ];
|
|
975
|
+
|
|
976
|
+
}
|
|
1016
977
|
|
|
1017
978
|
}
|
|
1018
979
|
|
|
@@ -1024,48 +985,52 @@
|
|
|
1024
985
|
// if it is polys
|
|
1025
986
|
|
|
1026
987
|
case 'Polys':
|
|
1027
|
-
|
|
988
|
+
{
|
|
1028
989
|
|
|
1029
|
-
|
|
990
|
+
const numberOfPolys = parseInt( piece.attributes.NumberOfPolys );
|
|
1030
991
|
|
|
1031
|
-
|
|
1032
|
-
var offset = new Int32Array( section.DataArray[ 1 ].text.length );
|
|
1033
|
-
connectivity.set( section.DataArray[ 0 ].text, 0 );
|
|
1034
|
-
offset.set( section.DataArray[ 1 ].text, 0 );
|
|
1035
|
-
var size = numberOfPolys + connectivity.length;
|
|
1036
|
-
indices = new Uint32Array( 3 * size - 9 * numberOfPolys );
|
|
1037
|
-
var indicesIndex = 0,
|
|
1038
|
-
connectivityIndex = 0;
|
|
1039
|
-
var i = 0,
|
|
1040
|
-
len = numberOfPolys,
|
|
1041
|
-
len0 = 0;
|
|
992
|
+
if ( numberOfPolys > 0 ) {
|
|
1042
993
|
|
|
1043
|
-
|
|
994
|
+
const connectivity = new Int32Array( section.DataArray[ 0 ].text.length );
|
|
995
|
+
const offset = new Int32Array( section.DataArray[ 1 ].text.length );
|
|
996
|
+
connectivity.set( section.DataArray[ 0 ].text, 0 );
|
|
997
|
+
offset.set( section.DataArray[ 1 ].text, 0 );
|
|
998
|
+
const size = numberOfPolys + connectivity.length;
|
|
999
|
+
indices = new Uint32Array( 3 * size - 9 * numberOfPolys );
|
|
1000
|
+
let indicesIndex = 0,
|
|
1001
|
+
connectivityIndex = 0;
|
|
1002
|
+
let i = 0,
|
|
1003
|
+
len0 = 0;
|
|
1004
|
+
const len = numberOfPolys;
|
|
1044
1005
|
|
|
1045
|
-
|
|
1046
|
-
var s = 0,
|
|
1047
|
-
len1 = offset[ i ];
|
|
1006
|
+
while ( i < len ) {
|
|
1048
1007
|
|
|
1049
|
-
|
|
1008
|
+
const poly = [];
|
|
1009
|
+
let s = 0;
|
|
1010
|
+
const len1 = offset[ i ];
|
|
1050
1011
|
|
|
1051
|
-
|
|
1052
|
-
s ++;
|
|
1012
|
+
while ( s < len1 - len0 ) {
|
|
1053
1013
|
|
|
1054
|
-
|
|
1014
|
+
poly.push( connectivity[ connectivityIndex ++ ] );
|
|
1015
|
+
s ++;
|
|
1055
1016
|
|
|
1056
|
-
|
|
1017
|
+
}
|
|
1057
1018
|
|
|
1058
|
-
|
|
1019
|
+
let j = 1;
|
|
1059
1020
|
|
|
1060
|
-
|
|
1061
|
-
indices[ indicesIndex ++ ] = poly[ j ];
|
|
1062
|
-
indices[ indicesIndex ++ ] = poly[ j + 1 ];
|
|
1063
|
-
j ++;
|
|
1021
|
+
while ( j < len1 - len0 - 1 ) {
|
|
1064
1022
|
|
|
1065
|
-
|
|
1023
|
+
indices[ indicesIndex ++ ] = poly[ 0 ];
|
|
1024
|
+
indices[ indicesIndex ++ ] = poly[ j ];
|
|
1025
|
+
indices[ indicesIndex ++ ] = poly[ j + 1 ];
|
|
1026
|
+
j ++;
|
|
1066
1027
|
|
|
1067
|
-
|
|
1068
|
-
|
|
1028
|
+
}
|
|
1029
|
+
|
|
1030
|
+
i ++;
|
|
1031
|
+
len0 = offset[ i - 1 ];
|
|
1032
|
+
|
|
1033
|
+
}
|
|
1069
1034
|
|
|
1070
1035
|
}
|
|
1071
1036
|
|
|
@@ -1084,7 +1049,7 @@
|
|
|
1084
1049
|
|
|
1085
1050
|
}
|
|
1086
1051
|
|
|
1087
|
-
|
|
1052
|
+
const geometry = new THREE.BufferGeometry();
|
|
1088
1053
|
geometry.setIndex( new THREE.BufferAttribute( indices, 1 ) );
|
|
1089
1054
|
geometry.setAttribute( 'position', new THREE.BufferAttribute( points, 3 ) );
|
|
1090
1055
|
|
|
@@ -1105,7 +1070,7 @@
|
|
|
1105
1070
|
} // get the 5 first lines of the files to check if there is the key word binary
|
|
1106
1071
|
|
|
1107
1072
|
|
|
1108
|
-
|
|
1073
|
+
const meta = THREE.LoaderUtils.decodeText( new Uint8Array( data, 0, 250 ) ).split( '\n' );
|
|
1109
1074
|
|
|
1110
1075
|
if ( meta[ 0 ].indexOf( 'xml' ) !== - 1 ) {
|
|
1111
1076
|
|