three-stdlib 2.15.0 → 2.15.2
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/animation/AnimationClipCreator.js +32 -52
- package/animation/AnimationClipCreator.mjs +57 -0
- package/animation/CCDIKSolver.js +66 -161
- package/animation/CCDIKSolver.mjs +234 -0
- package/animation/MMDAnimationHelper.js +150 -341
- package/animation/MMDAnimationHelper.mjs +514 -0
- package/animation/MMDPhysics.js +154 -361
- package/animation/MMDPhysics.mjs +769 -0
- package/cameras/CinematicCamera.js +67 -77
- package/cameras/CinematicCamera.mjs +129 -0
- package/controls/ArcballControls.js +544 -1449
- package/controls/ArcballControls.mjs +1737 -0
- package/controls/DeviceOrientationControls.js +52 -97
- package/controls/DeviceOrientationControls.mjs +74 -0
- package/controls/DragControls.js +85 -187
- package/controls/DragControls.mjs +172 -0
- package/controls/FirstPersonControls.js +123 -193
- package/controls/FirstPersonControls.mjs +220 -0
- package/controls/FlyControls.js +82 -152
- package/controls/FlyControls.mjs +239 -0
- package/controls/OrbitControls.js +232 -481
- package/controls/OrbitControls.mjs +731 -0
- package/controls/PointerLockControls.js +63 -99
- package/controls/PointerLockControls.mjs +88 -0
- package/controls/TrackballControls.js +211 -383
- package/controls/TrackballControls.mjs +481 -0
- package/controls/TransformControls.js +575 -782
- package/controls/TransformControls.mjs +1068 -0
- package/controls/experimental/CameraControls.js +329 -609
- package/controls/experimental/CameraControls.mjs +673 -0
- package/csm/CSM.js +47 -108
- package/csm/CSM.mjs +244 -0
- package/csm/CSMFrustum.js +14 -29
- package/csm/CSMFrustum.mjs +75 -0
- package/csm/CSMHelper.js +20 -34
- package/csm/CSMHelper.mjs +114 -0
- package/csm/CSMShader.js +7 -11
- package/csm/CSMShader.mjs +251 -0
- package/curves/CurveExtras.js +73 -115
- package/curves/CurveExtras.mjs +224 -0
- package/curves/NURBSCurve.js +15 -43
- package/curves/NURBSCurve.mjs +35 -0
- package/curves/NURBSSurface.js +11 -27
- package/curves/NURBSSurface.mjs +28 -0
- package/curves/NURBSUtils.js +54 -203
- package/curves/NURBSUtils.mjs +226 -0
- package/deprecated/Geometry.js +191 -486
- package/deprecated/Geometry.mjs +966 -0
- package/effects/AnaglyphEffect.js +95 -60
- package/effects/AnaglyphEffect.mjs +120 -0
- package/effects/AsciiEffect.js +80 -110
- package/effects/AsciiEffect.mjs +173 -0
- package/effects/OutlineEffect.js +121 -204
- package/effects/OutlineEffect.mjs +295 -0
- package/effects/ParallaxBarrierEffect.js +39 -38
- package/effects/ParallaxBarrierEffect.mjs +64 -0
- package/effects/PeppersGhostEffect.js +19 -68
- package/effects/PeppersGhostEffect.mjs +85 -0
- package/effects/StereoEffect.js +12 -16
- package/effects/StereoEffect.mjs +32 -0
- package/environments/RoomEnvironment.js +52 -47
- package/environments/RoomEnvironment.mjs +78 -0
- package/exporters/ColladaExporter.js +115 -241
- package/exporters/ColladaExporter.mjs +299 -0
- package/exporters/DRACOExporter.js +67 -121
- package/exporters/DRACOExporter.mjs +132 -0
- package/exporters/GLTFExporter.js +463 -1014
- package/exporters/GLTFExporter.mjs +1381 -0
- package/exporters/MMDExporter.js +44 -102
- package/exporters/MMDExporter.mjs +102 -0
- package/exporters/OBJExporter.js +78 -140
- package/exporters/OBJExporter.mjs +166 -0
- package/exporters/PLYExporter.js +93 -154
- package/exporters/PLYExporter.mjs +278 -0
- package/exporters/STLExporter.js +30 -81
- package/exporters/STLExporter.mjs +129 -0
- package/exporters/USDZExporter.js +84 -144
- package/exporters/USDZExporter.mjs +328 -0
- package/geometries/BoxLineGeometry.js +7 -14
- package/geometries/BoxLineGeometry.mjs +45 -0
- package/geometries/ConvexGeometry.js +15 -24
- package/geometries/ConvexGeometry.mjs +29 -0
- package/geometries/DecalGeometry.js +108 -162
- package/geometries/DecalGeometry.mjs +184 -0
- package/geometries/LightningStrike.js +101 -294
- package/geometries/LightningStrike.mjs +547 -0
- package/geometries/ParametricGeometries.js +26 -76
- package/geometries/ParametricGeometries.mjs +129 -0
- package/geometries/ParametricGeometry.js +24 -48
- package/geometries/ParametricGeometry.mjs +63 -0
- package/geometries/RoundedBoxGeometry.js +33 -64
- package/geometries/RoundedBoxGeometry.mjs +91 -0
- package/geometries/TeapotGeometry.js +1434 -174
- package/geometries/TeapotGeometry.mjs +1557 -0
- package/geometries/TextGeometry.js +9 -17
- package/geometries/TextGeometry.mjs +23 -0
- package/helpers/LightProbeHelper.js +53 -21
- package/helpers/LightProbeHelper.mjs +72 -0
- package/helpers/PositionalAudioHelper.js +23 -30
- package/helpers/PositionalAudioHelper.mjs +68 -0
- package/helpers/RectAreaLightHelper.js +17 -33
- package/helpers/RectAreaLightHelper.mjs +44 -0
- package/helpers/VertexNormalsHelper.js +20 -41
- package/helpers/VertexNormalsHelper.mjs +54 -0
- package/helpers/VertexTangentsHelper.js +18 -36
- package/helpers/VertexTangentsHelper.mjs +45 -0
- package/index.d.ts +54 -0
- package/index.js +968 -333
- package/index.mjs +968 -0
- package/interactive/SelectionBox.js +31 -46
- package/interactive/SelectionBox.mjs +137 -0
- package/interactive/SelectionHelper.js +16 -21
- package/interactive/SelectionHelper.mjs +54 -0
- package/libs/MeshoptDecoder.js +147 -58
- package/libs/MeshoptDecoder.mjs +210 -0
- package/libs/MotionControllers.js +66 -208
- package/libs/MotionControllers.mjs +261 -0
- package/lights/LightProbeGenerator.js +40 -96
- package/lights/LightProbeGenerator.mjs +145 -0
- package/lights/RectAreaLightUniformsLib.js +32842 -9
- package/lights/RectAreaLightUniformsLib.mjs +32842 -0
- package/lines/Line2.js +9 -12
- package/lines/Line2.mjs +13 -0
- package/lines/LineGeometry.js +7 -19
- package/lines/LineGeometry.mjs +44 -0
- package/lines/LineMaterial.js +51 -89
- package/lines/LineMaterial.mjs +539 -0
- package/lines/LineSegments2.js +56 -165
- package/lines/LineSegments2.mjs +202 -0
- package/lines/LineSegmentsGeometry.js +29 -71
- package/lines/LineSegmentsGeometry.mjs +124 -0
- package/lines/Wireframe.js +15 -29
- package/lines/Wireframe.mjs +31 -0
- package/lines/WireframeGeometry2.js +8 -9
- package/lines/WireframeGeometry2.mjs +13 -0
- package/loaders/3DMLoader.js +234 -469
- package/loaders/3DMLoader.mjs +802 -0
- package/loaders/3MFLoader.js +340 -555
- package/loaders/3MFLoader.mjs +837 -0
- package/loaders/AMFLoader.js +114 -219
- package/loaders/AMFLoader.mjs +284 -0
- package/loaders/AssimpLoader.js +328 -725
- package/loaders/AssimpLoader.mjs +1396 -0
- package/loaders/BVHLoader.js +94 -200
- package/loaders/BVHLoader.mjs +207 -0
- package/loaders/BasisTextureLoader.js +229 -357
- package/loaders/BasisTextureLoader.mjs +474 -0
- package/loaders/ColladaLoader.js +932 -1522
- package/loaders/ColladaLoader.mjs +2403 -0
- package/loaders/DDSLoader.js +42 -108
- package/loaders/DDSLoader.mjs +148 -0
- package/loaders/DRACOLoader.js +103 -210
- package/loaders/DRACOLoader.mjs +340 -0
- package/loaders/EXRLoader.js +461 -809
- package/loaders/EXRLoader.mjs +1351 -0
- package/loaders/FBXLoader.js +842 -1397
- package/loaders/FBXLoader.mjs +2362 -0
- package/loaders/FontLoader.js +33 -66
- package/loaders/FontLoader.mjs +111 -0
- package/loaders/GCodeLoader.js +63 -111
- package/loaders/GCodeLoader.mjs +141 -0
- package/loaders/GLTFLoader.js +771 -1484
- package/loaders/GLTFLoader.mjs +2316 -0
- package/loaders/HDRCubeTextureLoader.js +45 -50
- package/loaders/HDRCubeTextureLoader.mjs +77 -0
- package/loaders/KMZLoader.js +42 -55
- package/loaders/KMZLoader.mjs +75 -0
- package/loaders/KTX2Loader.js +229 -362
- package/loaders/KTX2Loader.mjs +427 -0
- package/loaders/KTXLoader.js +37 -99
- package/loaders/KTXLoader.mjs +87 -0
- package/loaders/LDrawLoader.js +313 -746
- package/loaders/LDrawLoader.mjs +1409 -0
- package/loaders/LUT3dlLoader.js +50 -62
- package/loaders/LUT3dlLoader.mjs +100 -0
- package/loaders/LUTCubeLoader.js +45 -56
- package/loaders/LUTCubeLoader.mjs +104 -0
- package/loaders/LWOLoader.js +227 -339
- package/loaders/LWOLoader.mjs +625 -0
- package/loaders/LottieLoader.js +36 -38
- package/loaders/LottieLoader.mjs +47 -0
- package/loaders/MD2Loader.js +248 -91
- package/loaders/MD2Loader.mjs +359 -0
- package/loaders/MDDLoader.js +25 -45
- package/loaders/MDDLoader.mjs +58 -0
- package/loaders/MMDLoader.js +359 -795
- package/loaders/MMDLoader.mjs +998 -0
- package/loaders/MTLLoader.js +91 -201
- package/loaders/MTLLoader.mjs +280 -0
- package/loaders/NRRDLoader.js +182 -263
- package/loaders/NRRDLoader.mjs +401 -0
- package/loaders/NodeMaterialLoader.js +121 -14
- package/loaders/NodeMaterialLoader.mjs +146 -0
- package/loaders/OBJLoader.js +161 -283
- package/loaders/OBJLoader.mjs +487 -0
- package/loaders/PCDLoader.js +145 -164
- package/loaders/PCDLoader.mjs +248 -0
- package/loaders/PDBLoader.js +45 -63
- package/loaders/PDBLoader.mjs +246 -0
- package/loaders/PLYLoader.js +106 -203
- package/loaders/PLYLoader.mjs +317 -0
- package/loaders/PRWMLoader.js +73 -110
- package/loaders/PRWMLoader.mjs +160 -0
- package/loaders/PVRLoader.js +32 -93
- package/loaders/PVRLoader.mjs +131 -0
- package/loaders/RGBELoader.js +96 -233
- package/loaders/RGBELoader.mjs +244 -0
- package/loaders/RGBMLoader.js +344 -514
- package/loaders/RGBMLoader.mjs +998 -0
- package/loaders/STLLoader.js +59 -165
- package/loaders/STLLoader.mjs +190 -0
- package/loaders/SVGLoader.js +481 -851
- package/loaders/SVGLoader.mjs +1709 -0
- package/loaders/TDSLoader.js +137 -527
- package/loaders/TDSLoader.mjs +480 -0
- package/loaders/TGALoader.js +94 -205
- package/loaders/TGALoader.mjs +285 -0
- package/loaders/TTFLoader.js +58 -79
- package/loaders/TTFLoader.mjs +131 -0
- package/loaders/TiltLoader.js +129 -167
- package/loaders/TiltLoader.mjs +373 -0
- package/loaders/VOXLoader.js +320 -84
- package/loaders/VOXLoader.mjs +431 -0
- package/loaders/VRMLLoader.js +786 -1268
- package/loaders/VRMLLoader.mjs +2093 -0
- package/loaders/VRMLoader.js +23 -31
- package/loaders/VRMLoader.mjs +38 -0
- package/loaders/VTKLoader.js +219 -407
- package/loaders/VTKLoader.mjs +646 -0
- package/loaders/XLoader.js +1083 -1259
- package/loaders/XLoader.mjs +1258 -0
- package/loaders/XYZLoader.js +28 -34
- package/loaders/XYZLoader.mjs +60 -0
- package/loaders/lwo/IFFParser.js +238 -492
- package/loaders/lwo/IFFParser.mjs +697 -0
- package/loaders/lwo/LWO2Parser.js +176 -279
- package/loaders/lwo/LWO2Parser.mjs +327 -0
- package/loaders/lwo/LWO3Parser.js +160 -247
- package/loaders/lwo/LWO3Parser.mjs +298 -0
- package/math/Capsule.js +56 -43
- package/math/Capsule.mjs +100 -0
- package/math/ColorConverter.js +18 -32
- package/math/ColorConverter.mjs +51 -0
- package/math/ConvexHull.js +515 -739
- package/math/ConvexHull.mjs +574 -0
- package/math/ImprovedNoise.js +282 -32
- package/math/ImprovedNoise.mjs +302 -0
- package/math/Lut.js +51 -35
- package/math/Lut.mjs +135 -0
- package/math/MeshSurfaceSampler.js +25 -68
- package/math/MeshSurfaceSampler.mjs +107 -0
- package/math/OBB.js +91 -152
- package/math/OBB.mjs +235 -0
- package/math/Octree.js +76 -139
- package/math/Octree.mjs +278 -0
- package/math/SimplexNoise.js +217 -238
- package/math/SimplexNoise.mjs +425 -0
- package/misc/ConvexObjectBreaker.js +79 -185
- package/misc/ConvexObjectBreaker.mjs +292 -0
- package/misc/GPUComputationRenderer.js +69 -194
- package/misc/GPUComputationRenderer.mjs +171 -0
- package/misc/Gyroscope.js +16 -22
- package/misc/Gyroscope.mjs +35 -0
- package/misc/MD2Character.js +52 -74
- package/misc/MD2Character.mjs +162 -0
- package/misc/MD2CharacterComplex.js +112 -163
- package/misc/MD2CharacterComplex.mjs +328 -0
- package/misc/MorphAnimMesh.js +20 -28
- package/misc/MorphAnimMesh.mjs +40 -0
- package/misc/MorphBlendMesh.js +45 -69
- package/misc/MorphBlendMesh.mjs +179 -0
- package/misc/ProgressiveLightmap.js +70 -187
- package/misc/ProgressiveLightmap.mjs +166 -0
- package/misc/RollerCoaster.js +106 -135
- package/misc/RollerCoaster.mjs +346 -0
- package/misc/TubePainter.js +74 -92
- package/misc/TubePainter.mjs +123 -0
- package/misc/Volume.js +108 -270
- package/misc/Volume.mjs +244 -0
- package/misc/VolumeSlice.js +34 -122
- package/misc/VolumeSlice.mjs +106 -0
- package/misc/WebGL.js +37 -34
- package/misc/WebGL.mjs +74 -0
- package/modifiers/CurveModifier.js +46 -151
- package/modifiers/CurveModifier.mjs +182 -0
- package/modifiers/EdgeSplitModifier.js +46 -90
- package/modifiers/EdgeSplitModifier.mjs +162 -0
- package/modifiers/SimplifyModifier.js +77 -202
- package/modifiers/SimplifyModifier.mjs +282 -0
- package/modifiers/TessellateModifier.js +65 -90
- package/modifiers/TessellateModifier.mjs +206 -0
- package/nodes/Nodes.js +274 -140
- package/nodes/Nodes.mjs +400 -0
- package/nodes/ShaderNode.js +296 -196
- package/nodes/ShaderNode.mjs +408 -0
- package/nodes/accessors/BufferNode.js +4 -8
- package/nodes/accessors/BufferNode.mjs +15 -0
- package/nodes/accessors/CameraNode.js +20 -25
- package/nodes/accessors/CameraNode.mjs +44 -0
- package/nodes/accessors/CubeTextureNode.js +14 -26
- package/nodes/accessors/CubeTextureNode.mjs +42 -0
- package/nodes/accessors/MaterialNode.js +43 -53
- package/nodes/accessors/MaterialNode.mjs +71 -0
- package/nodes/accessors/MaterialReferenceNode.js +3 -6
- package/nodes/accessors/MaterialReferenceNode.mjs +14 -0
- package/nodes/accessors/ModelNode.js +3 -5
- package/nodes/accessors/ModelNode.mjs +9 -0
- package/nodes/accessors/ModelViewProjectionNode.js +14 -13
- package/nodes/accessors/ModelViewProjectionNode.mjs +24 -0
- package/nodes/accessors/NormalNode.js +40 -39
- package/nodes/accessors/NormalNode.mjs +62 -0
- package/nodes/accessors/Object3DNode.js +40 -50
- package/nodes/accessors/Object3DNode.mjs +76 -0
- package/nodes/accessors/PointUVNode.js +5 -9
- package/nodes/accessors/PointUVNode.mjs +13 -0
- package/nodes/accessors/PositionNode.js +42 -41
- package/nodes/accessors/PositionNode.mjs +65 -0
- package/nodes/accessors/ReferenceNode.js +10 -17
- package/nodes/accessors/ReferenceNode.mjs +37 -0
- package/nodes/accessors/ReflectNode.js +23 -26
- package/nodes/accessors/ReflectNode.mjs +43 -0
- package/nodes/accessors/SkinningNode.js +46 -48
- package/nodes/accessors/SkinningNode.mjs +58 -0
- package/nodes/accessors/TextureNode.js +14 -29
- package/nodes/accessors/TextureNode.mjs +54 -0
- package/nodes/accessors/UVNode.js +5 -11
- package/nodes/accessors/UVNode.mjs +23 -0
- package/nodes/core/ArrayUniformNode.js +3 -7
- package/nodes/core/ArrayUniformNode.mjs +14 -0
- package/nodes/core/AttributeNode.js +5 -12
- package/nodes/core/AttributeNode.mjs +30 -0
- package/nodes/core/BypassNode.js +5 -12
- package/nodes/core/BypassNode.mjs +22 -0
- package/nodes/core/CodeNode.js +4 -12
- package/nodes/core/CodeNode.mjs +28 -0
- package/nodes/core/ConstNode.js +3 -7
- package/nodes/core/ConstNode.mjs +14 -0
- package/nodes/core/ContextNode.js +3 -8
- package/nodes/core/ContextNode.mjs +22 -0
- package/nodes/core/ExpressionNode.js +5 -9
- package/nodes/core/ExpressionNode.mjs +19 -0
- package/nodes/core/FunctionCallNode.js +6 -15
- package/nodes/core/FunctionCallNode.mjs +37 -0
- package/nodes/core/FunctionNode.js +10 -25
- package/nodes/core/FunctionNode.mjs +56 -0
- package/nodes/core/InputNode.js +12 -23
- package/nodes/core/InputNode.mjs +38 -0
- package/nodes/core/Node.js +35 -75
- package/nodes/core/Node.mjs +139 -0
- package/nodes/core/NodeAttribute.js +2 -4
- package/nodes/core/NodeAttribute.mjs +10 -0
- package/nodes/core/NodeBuilder.js +110 -224
- package/nodes/core/NodeBuilder.mjs +395 -0
- package/nodes/core/NodeCode.js +4 -7
- package/nodes/core/NodeCode.mjs +11 -0
- package/nodes/core/NodeFrame.js +9 -12
- package/nodes/core/NodeFrame.mjs +35 -0
- package/nodes/core/NodeFunctionInput.js +3 -5
- package/nodes/core/NodeFunctionInput.mjs +13 -0
- package/nodes/core/NodeKeywords.js +5 -16
- package/nodes/core/NodeKeywords.mjs +44 -0
- package/nodes/core/NodeUniform.js +3 -7
- package/nodes/core/NodeUniform.mjs +18 -0
- package/nodes/core/NodeUtils.js +39 -43
- package/nodes/core/NodeUtils.mjs +57 -0
- package/nodes/core/NodeVar.js +2 -4
- package/nodes/core/NodeVar.mjs +10 -0
- package/nodes/core/NodeVary.js +2 -4
- package/nodes/core/NodeVary.mjs +10 -0
- package/nodes/core/PropertyNode.js +4 -10
- package/nodes/core/PropertyNode.mjs +21 -0
- package/nodes/core/TempNode.js +5 -11
- package/nodes/core/TempNode.mjs +25 -0
- package/nodes/core/UniformNode.js +4 -10
- package/nodes/core/UniformNode.mjs +23 -0
- package/nodes/core/VarNode.js +3 -11
- package/nodes/core/VarNode.mjs +31 -0
- package/nodes/core/VaryNode.js +6 -15
- package/nodes/core/VaryNode.mjs +30 -0
- package/nodes/core/constants.js +20 -7
- package/nodes/core/constants.mjs +24 -0
- package/nodes/display/ColorSpaceNode.js +34 -38
- package/nodes/display/ColorSpaceNode.mjs +63 -0
- package/nodes/display/NormalMapNode.js +35 -53
- package/nodes/display/NormalMapNode.mjs +54 -0
- package/nodes/fog/FogNode.js +5 -9
- package/nodes/fog/FogNode.mjs +15 -0
- package/nodes/fog/FogRangeNode.js +5 -9
- package/nodes/fog/FogRangeNode.mjs +17 -0
- package/nodes/functions/BSDFs.js +61 -118
- package/nodes/functions/BSDFs.mjs +64 -0
- package/nodes/lights/LightContextNode.js +14 -23
- package/nodes/lights/LightContextNode.mjs +35 -0
- package/nodes/lights/LightNode.js +27 -31
- package/nodes/lights/LightNode.mjs +58 -0
- package/nodes/lights/LightsNode.js +9 -28
- package/nodes/lights/LightsNode.mjs +59 -0
- package/nodes/loaders/NodeLoader.js +27 -42
- package/nodes/loaders/NodeLoader.mjs +66 -0
- package/nodes/loaders/NodeMaterialLoader.js +4 -10
- package/nodes/loaders/NodeMaterialLoader.mjs +24 -0
- package/nodes/loaders/NodeObjectLoader.js +9 -19
- package/nodes/loaders/NodeObjectLoader.mjs +40 -0
- package/nodes/materials/LineBasicNodeMaterial.js +5 -10
- package/nodes/materials/LineBasicNodeMaterial.mjs +27 -0
- package/nodes/materials/Materials.js +14 -17
- package/nodes/materials/Materials.mjs +28 -0
- package/nodes/materials/MeshBasicNodeMaterial.js +5 -10
- package/nodes/materials/MeshBasicNodeMaterial.mjs +28 -0
- package/nodes/materials/MeshStandardNodeMaterial.js +5 -8
- package/nodes/materials/MeshStandardNodeMaterial.mjs +41 -0
- package/nodes/materials/NodeMaterial.js +20 -36
- package/nodes/materials/NodeMaterial.mjs +64 -0
- package/nodes/materials/PointsNodeMaterial.js +5 -10
- package/nodes/materials/PointsNodeMaterial.mjs +30 -0
- package/nodes/math/CondNode.js +11 -23
- package/nodes/math/CondNode.mjs +38 -0
- package/nodes/math/MathNode.js +98 -142
- package/nodes/math/MathNode.mjs +163 -0
- package/nodes/math/OperatorNode.js +24 -46
- package/nodes/math/OperatorNode.mjs +103 -0
- package/nodes/procedural/CheckerNode.js +13 -19
- package/nodes/procedural/CheckerNode.mjs +21 -0
- package/nodes/utils/ArrayElementNode.js +4 -8
- package/nodes/utils/ArrayElementNode.mjs +19 -0
- package/nodes/utils/ConvertNode.js +3 -8
- package/nodes/utils/ConvertNode.mjs +25 -0
- package/nodes/utils/JoinNode.js +7 -11
- package/nodes/utils/JoinNode.mjs +26 -0
- package/nodes/utils/MatcapUVNode.js +8 -11
- package/nodes/utils/MatcapUVNode.mjs +16 -0
- package/nodes/utils/OscNode.js +27 -33
- package/nodes/utils/OscNode.mjs +50 -0
- package/nodes/utils/SplitNode.js +6 -20
- package/nodes/utils/SplitNode.mjs +45 -0
- package/nodes/utils/SpriteSheetUVNode.js +23 -23
- package/nodes/utils/SpriteSheetUVNode.mjs +40 -0
- package/nodes/utils/TimerNode.js +20 -24
- package/nodes/utils/TimerNode.mjs +44 -0
- package/objects/GroundProjectedEnv.js +22 -37
- package/objects/GroundProjectedEnv.mjs +130 -0
- package/objects/Lensflare.js +86 -156
- package/objects/Lensflare.mjs +262 -0
- package/objects/LightningStorm.js +38 -102
- package/objects/LightningStorm.mjs +110 -0
- package/objects/MarchingCubes.js +150 -303
- package/objects/MarchingCubes.mjs +457 -0
- package/objects/Reflector.js +50 -72
- package/objects/Reflector.mjs +166 -0
- package/objects/ReflectorForSSRPass.js +80 -131
- package/objects/ReflectorForSSRPass.mjs +247 -0
- package/objects/ReflectorRTT.js +6 -7
- package/objects/ReflectorRTT.mjs +10 -0
- package/objects/Refractor.js +64 -106
- package/objects/Refractor.mjs +178 -0
- package/objects/ShadowMesh.js +8 -17
- package/objects/ShadowMesh.mjs +41 -0
- package/objects/Sky.js +119 -80
- package/objects/Sky.mjs +124 -0
- package/objects/Water.js +83 -127
- package/objects/Water.mjs +235 -0
- package/objects/Water2.js +72 -108
- package/objects/Water2.mjs +252 -0
- package/offscreen/jank.js +10 -14
- package/offscreen/jank.mjs +27 -0
- package/offscreen/offscreen.js +4 -5
- package/offscreen/offscreen.mjs +5 -0
- package/offscreen/scene.js +45 -48
- package/offscreen/scene.mjs +52 -0
- package/package.json +3 -3
- package/physics/AmmoPhysics.js +30 -71
- package/physics/AmmoPhysics.mjs +165 -0
- package/postprocessing/AdaptiveToneMappingPass.js +97 -123
- package/postprocessing/AdaptiveToneMappingPass.mjs +221 -0
- package/postprocessing/AfterimagePass.js +28 -49
- package/postprocessing/AfterimagePass.mjs +55 -0
- package/postprocessing/BloomPass.js +43 -69
- package/postprocessing/BloomPass.mjs +90 -0
- package/postprocessing/BokehPass.js +39 -69
- package/postprocessing/BokehPass.mjs +76 -0
- package/postprocessing/ClearPass.js +10 -25
- package/postprocessing/ClearPass.mjs +27 -0
- package/postprocessing/CubeTexturePass.js +28 -27
- package/postprocessing/CubeTexturePass.mjs +49 -0
- package/postprocessing/DotScreenPass.js +24 -32
- package/postprocessing/DotScreenPass.mjs +40 -0
- package/postprocessing/EffectComposer.js +39 -86
- package/postprocessing/EffectComposer.mjs +139 -0
- package/postprocessing/FilmPass.js +25 -30
- package/postprocessing/FilmPass.mjs +42 -0
- package/postprocessing/GlitchPass.js +38 -61
- package/postprocessing/GlitchPass.mjs +75 -0
- package/postprocessing/HalftonePass.js +19 -39
- package/postprocessing/HalftonePass.mjs +44 -0
- package/postprocessing/LUTPass.js +13 -38
- package/postprocessing/LUTPass.mjs +136 -0
- package/postprocessing/MaskPass.js +19 -38
- package/postprocessing/MaskPass.mjs +60 -0
- package/postprocessing/OutlinePass.js +135 -277
- package/postprocessing/OutlinePass.mjs +438 -0
- package/postprocessing/Pass.js +20 -44
- package/postprocessing/Pass.mjs +37 -0
- package/postprocessing/RenderPass.js +13 -36
- package/postprocessing/RenderPass.mjs +48 -0
- package/postprocessing/RenderPixelatedPass.js +44 -58
- package/postprocessing/RenderPixelatedPass.mjs +199 -0
- package/postprocessing/SAOPass.js +154 -189
- package/postprocessing/SAOPass.mjs +282 -0
- package/postprocessing/SMAAPass.js +64 -84
- package/postprocessing/SMAAPass.mjs +112 -0
- package/postprocessing/SSAARenderPass.js +121 -69
- package/postprocessing/SSAARenderPass.mjs +170 -0
- package/postprocessing/SSAOPass.js +123 -172
- package/postprocessing/SSAOPass.mjs +265 -0
- package/postprocessing/SSRPass.js +211 -280
- package/postprocessing/SSRPass.mjs +432 -0
- package/postprocessing/SavePass.js +20 -25
- package/postprocessing/SavePass.mjs +37 -0
- package/postprocessing/ShaderPass.js +14 -30
- package/postprocessing/ShaderPass.mjs +39 -0
- package/postprocessing/TAARenderPass.js +42 -61
- package/postprocessing/TAARenderPass.mjs +88 -0
- package/postprocessing/TexturePass.js +21 -22
- package/postprocessing/TexturePass.mjs +39 -0
- package/postprocessing/UnrealBloomPass.js +105 -213
- package/postprocessing/UnrealBloomPass.mjs +220 -0
- package/renderers/CSS2DRenderer.js +44 -56
- package/renderers/CSS2DRenderer.mjs +112 -0
- package/renderers/CSS3DRenderer.js +53 -86
- package/renderers/CSS3DRenderer.mjs +133 -0
- package/renderers/Projector.js +107 -274
- package/renderers/Projector.mjs +511 -0
- package/renderers/SVGRenderer.js +72 -182
- package/renderers/SVGRenderer.mjs +306 -0
- package/renderers/nodes/accessors/CameraNode.js +29 -40
- package/renderers/nodes/accessors/CameraNode.mjs +63 -0
- package/renderers/nodes/accessors/ModelNode.js +28 -37
- package/renderers/nodes/accessors/ModelNode.mjs +61 -0
- package/renderers/nodes/accessors/ModelViewProjectionNode.js +10 -23
- package/renderers/nodes/accessors/ModelViewProjectionNode.mjs +21 -0
- package/renderers/nodes/accessors/NormalNode.js +35 -45
- package/renderers/nodes/accessors/NormalNode.mjs +61 -0
- package/renderers/nodes/accessors/PositionNode.js +18 -19
- package/renderers/nodes/accessors/PositionNode.mjs +30 -0
- package/renderers/nodes/accessors/UVNode.js +5 -10
- package/renderers/nodes/accessors/UVNode.mjs +13 -0
- package/renderers/nodes/core/AttributeNode.js +5 -14
- package/renderers/nodes/core/AttributeNode.mjs +35 -0
- package/renderers/nodes/core/InputNode.js +4 -14
- package/renderers/nodes/core/InputNode.mjs +31 -0
- package/renderers/nodes/core/Node.js +7 -17
- package/renderers/nodes/core/Node.mjs +34 -0
- package/renderers/nodes/core/NodeAttribute.js +3 -6
- package/renderers/nodes/core/NodeAttribute.mjs +10 -0
- package/renderers/nodes/core/NodeBuilder.js +87 -154
- package/renderers/nodes/core/NodeBuilder.mjs +243 -0
- package/renderers/nodes/core/NodeFrame.js +9 -12
- package/renderers/nodes/core/NodeFrame.mjs +35 -0
- package/renderers/nodes/core/NodeSlot.js +2 -3
- package/renderers/nodes/core/NodeSlot.mjs +10 -0
- package/renderers/nodes/core/NodeUniform.js +4 -9
- package/renderers/nodes/core/NodeUniform.mjs +18 -0
- package/renderers/nodes/core/NodeVary.js +4 -7
- package/renderers/nodes/core/NodeVary.mjs +11 -0
- package/renderers/nodes/core/VaryNode.js +6 -12
- package/renderers/nodes/core/VaryNode.mjs +22 -0
- package/renderers/nodes/core/constants.js +16 -13
- package/renderers/nodes/core/constants.mjs +22 -0
- package/renderers/nodes/inputs/ColorNode.js +5 -11
- package/renderers/nodes/inputs/ColorNode.mjs +11 -0
- package/renderers/nodes/inputs/FloatNode.js +5 -11
- package/renderers/nodes/inputs/FloatNode.mjs +11 -0
- package/renderers/nodes/inputs/Matrix3Node.js +7 -13
- package/renderers/nodes/inputs/Matrix3Node.mjs +12 -0
- package/renderers/nodes/inputs/Matrix4Node.js +7 -13
- package/renderers/nodes/inputs/Matrix4Node.mjs +12 -0
- package/renderers/nodes/inputs/TextureNode.js +7 -15
- package/renderers/nodes/inputs/TextureNode.mjs +20 -0
- package/renderers/nodes/inputs/Vector2Node.js +5 -11
- package/renderers/nodes/inputs/Vector2Node.mjs +11 -0
- package/renderers/nodes/inputs/Vector3Node.js +7 -13
- package/renderers/nodes/inputs/Vector3Node.mjs +12 -0
- package/renderers/nodes/inputs/Vector4Node.js +7 -13
- package/renderers/nodes/inputs/Vector4Node.mjs +12 -0
- package/renderers/nodes/math/MathNode.js +20 -30
- package/renderers/nodes/math/MathNode.mjs +55 -0
- package/renderers/nodes/math/OperatorNode.js +4 -20
- package/renderers/nodes/math/OperatorNode.mjs +42 -0
- package/renderers/nodes/utils/SwitchNode.js +4 -9
- package/renderers/nodes/utils/SwitchNode.mjs +20 -0
- package/renderers/nodes/utils/TimerNode.js +5 -10
- package/renderers/nodes/utils/TimerNode.mjs +14 -0
- package/renderers/webgpu/WebGPU.js +14 -16
- package/renderers/webgpu/WebGPU.mjs +24 -0
- package/renderers/webgpu/WebGPUAttributes.js +16 -23
- package/renderers/webgpu/WebGPUAttributes.mjs +69 -0
- package/renderers/webgpu/WebGPUBackground.js +13 -30
- package/renderers/webgpu/WebGPUBackground.mjs +61 -0
- package/renderers/webgpu/WebGPUBinding.js +4 -7
- package/renderers/webgpu/WebGPUBinding.mjs +14 -0
- package/renderers/webgpu/WebGPUBindings.js +21 -57
- package/renderers/webgpu/WebGPUBindings.mjs +155 -0
- package/renderers/webgpu/WebGPUComputePipelines.js +14 -25
- package/renderers/webgpu/WebGPUComputePipelines.mjs +44 -0
- package/renderers/webgpu/WebGPUGeometries.js +5 -15
- package/renderers/webgpu/WebGPUGeometries.mjs +41 -0
- package/renderers/webgpu/WebGPUInfo.js +3 -8
- package/renderers/webgpu/WebGPUInfo.mjs +46 -0
- package/renderers/webgpu/WebGPUObjects.js +5 -10
- package/renderers/webgpu/WebGPUObjects.mjs +25 -0
- package/renderers/webgpu/WebGPUProperties.js +5 -11
- package/renderers/webgpu/WebGPUProperties.mjs +22 -0
- package/renderers/webgpu/WebGPURenderLists.js +20 -36
- package/renderers/webgpu/WebGPURenderLists.mjs +119 -0
- package/renderers/webgpu/WebGPURenderPipelines.js +260 -387
- package/renderers/webgpu/WebGPURenderPipelines.mjs +545 -0
- package/renderers/webgpu/WebGPURenderer.js +124 -262
- package/renderers/webgpu/WebGPURenderer.mjs +574 -0
- package/renderers/webgpu/WebGPUSampledTexture.js +18 -31
- package/renderers/webgpu/WebGPUSampledTexture.mjs +40 -0
- package/renderers/webgpu/WebGPUSampler.js +7 -12
- package/renderers/webgpu/WebGPUSampler.mjs +15 -0
- package/renderers/webgpu/WebGPUStorageBuffer.js +7 -12
- package/renderers/webgpu/WebGPUStorageBuffer.mjs +15 -0
- package/renderers/webgpu/WebGPUTextureRenderer.js +5 -11
- package/renderers/webgpu/WebGPUTextureRenderer.mjs +23 -0
- package/renderers/webgpu/WebGPUTextureUtils.js +29 -40
- package/renderers/webgpu/WebGPUTextureUtils.mjs +98 -0
- package/renderers/webgpu/WebGPUTextures.js +186 -333
- package/renderers/webgpu/WebGPUTextures.mjs +484 -0
- package/renderers/webgpu/WebGPUUniform.js +25 -51
- package/renderers/webgpu/WebGPUUniform.mjs +81 -0
- package/renderers/webgpu/WebGPUUniformsGroup.js +32 -72
- package/renderers/webgpu/WebGPUUniformsGroup.mjs +176 -0
- package/renderers/webgpu/constants.js +190 -181
- package/renderers/webgpu/constants.mjs +230 -0
- package/renderers/webgpu/nodes/ShaderLib.js +2 -2
- package/renderers/webgpu/nodes/ShaderLib.mjs +42 -0
- package/renderers/webgpu/nodes/WebGPUNodeBuilder.js +53 -124
- package/renderers/webgpu/nodes/WebGPUNodeBuilder.mjs +165 -0
- package/renderers/webgpu/nodes/WebGPUNodeUniform.js +17 -31
- package/renderers/webgpu/nodes/WebGPUNodeUniform.mjs +73 -0
- package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +8 -9
- package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.mjs +15 -0
- package/renderers/webgpu/nodes/WebGPUNodes.js +7 -45
- package/renderers/webgpu/nodes/WebGPUNodes.mjs +40 -0
- package/shaders/ACESFilmicToneMappingShader.js +44 -24
- package/shaders/ACESFilmicToneMappingShader.mjs +48 -0
- package/shaders/AfterimageShader.js +28 -18
- package/shaders/AfterimageShader.mjs +32 -0
- package/shaders/BasicShader.js +9 -7
- package/shaders/BasicShader.mjs +12 -0
- package/shaders/BleachBypassShader.js +31 -15
- package/shaders/BleachBypassShader.mjs +35 -0
- package/shaders/BlendShader.js +26 -19
- package/shaders/BlendShader.mjs +30 -0
- package/shaders/BokehShader.js +98 -36
- package/shaders/BokehShader.mjs +106 -0
- package/shaders/BokehShader2.js +261 -90
- package/shaders/BokehShader2.mjs +269 -0
- package/shaders/BrightnessContrastShader.js +28 -19
- package/shaders/BrightnessContrastShader.mjs +32 -0
- package/shaders/ColorCorrectionShader.js +26 -22
- package/shaders/ColorCorrectionShader.mjs +30 -0
- package/shaders/ColorifyShader.js +24 -16
- package/shaders/ColorifyShader.mjs +28 -0
- package/shaders/ConvolutionShader.js +40 -36
- package/shaders/ConvolutionShader.mjs +55 -0
- package/shaders/CopyShader.js +21 -13
- package/shaders/CopyShader.mjs +25 -0
- package/shaders/DOFMipMapShader.js +28 -21
- package/shaders/DOFMipMapShader.mjs +32 -0
- package/shaders/DepthLimitedBlurShader.js +85 -40
- package/shaders/DepthLimitedBlurShader.mjs +114 -0
- package/shaders/DigitalGlitch.js +74 -46
- package/shaders/DigitalGlitch.mjs +78 -0
- package/shaders/DotScreenShader.js +35 -27
- package/shaders/DotScreenShader.mjs +39 -0
- package/shaders/FXAAShader.js +1094 -19
- package/shaders/FXAAShader.mjs +1098 -0
- package/shaders/FilmShader.js +38 -52
- package/shaders/FilmShader.mjs +42 -0
- package/shaders/FocusShader.js +51 -24
- package/shaders/FocusShader.mjs +55 -0
- package/shaders/FreiChenShader.js +57 -24
- package/shaders/FreiChenShader.mjs +61 -0
- package/shaders/FresnelShader.js +43 -22
- package/shaders/FresnelShader.mjs +47 -0
- package/shaders/GammaCorrectionShader.js +19 -11
- package/shaders/GammaCorrectionShader.mjs +23 -0
- package/shaders/GodRaysShader.js +103 -94
- package/shaders/GodRaysShader.mjs +146 -0
- package/shaders/HalftoneShader.js +208 -65
- package/shaders/HalftoneShader.mjs +212 -0
- package/shaders/HorizontalBlurShader.js +7 -23
- package/shaders/HorizontalBlurShader.mjs +43 -0
- package/shaders/HorizontalTiltShiftShader.js +33 -21
- package/shaders/HorizontalTiltShiftShader.mjs +37 -0
- package/shaders/HueSaturationShader.js +37 -21
- package/shaders/HueSaturationShader.mjs +41 -0
- package/shaders/KaleidoShader.js +30 -22
- package/shaders/KaleidoShader.mjs +34 -0
- package/shaders/LuminosityHighPassShader.js +33 -27
- package/shaders/LuminosityHighPassShader.mjs +37 -0
- package/shaders/LuminosityShader.js +21 -11
- package/shaders/LuminosityShader.mjs +25 -0
- package/shaders/MirrorShader.js +31 -16
- package/shaders/MirrorShader.mjs +35 -0
- package/shaders/NormalMapShader.js +27 -23
- package/shaders/NormalMapShader.mjs +31 -0
- package/shaders/ParallaxShader.js +107 -48
- package/shaders/ParallaxShader.mjs +113 -0
- package/shaders/PixelShader.js +24 -16
- package/shaders/PixelShader.mjs +28 -0
- package/shaders/RGBShiftShader.js +26 -22
- package/shaders/RGBShiftShader.mjs +30 -0
- package/shaders/SAOShader.js +132 -48
- package/shaders/SAOShader.mjs +144 -0
- package/shaders/SMAAShader.js +256 -135
- package/shaders/SMAAShader.mjs +272 -0
- package/shaders/SSAOShader.js +153 -81
- package/shaders/SSAOShader.mjs +172 -0
- package/shaders/SSRShader.js +32 -87
- package/shaders/SSRShader.mjs +324 -0
- package/shaders/SepiaShader.js +25 -15
- package/shaders/SepiaShader.mjs +29 -0
- package/shaders/SobelOperatorShader.js +40 -29
- package/shaders/SobelOperatorShader.mjs +44 -0
- package/shaders/SubsurfaceScatteringShader.js +53 -39
- package/shaders/SubsurfaceScatteringShader.mjs +59 -0
- package/shaders/TechnicolorShader.js +20 -13
- package/shaders/TechnicolorShader.mjs +24 -0
- package/shaders/ToneMapShader.js +44 -28
- package/shaders/ToneMapShader.mjs +48 -0
- package/shaders/ToonShader.js +172 -96
- package/shaders/ToonShader.mjs +188 -0
- package/shaders/TriangleBlurShader.js +32 -23
- package/shaders/TriangleBlurShader.mjs +36 -0
- package/shaders/UnpackDepthRGBAShader.js +22 -14
- package/shaders/UnpackDepthRGBAShader.mjs +26 -0
- package/shaders/VerticalBlurShader.js +7 -23
- package/shaders/VerticalBlurShader.mjs +44 -0
- package/shaders/VerticalTiltShiftShader.js +33 -21
- package/shaders/VerticalTiltShiftShader.mjs +37 -0
- package/shaders/VignetteShader.js +24 -28
- package/shaders/VignetteShader.mjs +28 -0
- package/shaders/VolumeShader.js +174 -77
- package/shaders/VolumeShader.mjs +178 -0
- package/shaders/WaterRefractionShader.js +38 -6
- package/shaders/WaterRefractionShader.mjs +57 -0
- package/shaders/types.js +1 -1
- package/{custom.d.js → shaders/types.mjs} +0 -0
- package/textures/FlakesTexture.js +8 -10
- package/textures/FlakesTexture.mjs +30 -0
- package/types/helpers.js +3 -2
- package/types/helpers.mjs +4 -0
- package/utils/BufferGeometryUtils.js +251 -325
- package/utils/BufferGeometryUtils.mjs +570 -0
- package/utils/GeometryCompressionUtils.js +241 -239
- package/utils/GeometryCompressionUtils.mjs +547 -0
- package/utils/GeometryUtils.js +41 -94
- package/utils/GeometryUtils.mjs +108 -0
- package/utils/RoughnessMipmapper.js +38 -82
- package/utils/RoughnessMipmapper.mjs +213 -0
- package/utils/SceneUtils.js +15 -20
- package/utils/SceneUtils.mjs +36 -0
- package/utils/ShadowMapViewer.js +49 -95
- package/utils/ShadowMapViewer.mjs +114 -0
- package/utils/SkeletonUtils.js +74 -165
- package/utils/SkeletonUtils.mjs +292 -0
- package/utils/UVsDebug.js +32 -62
- package/utils/UVsDebug.mjs +85 -0
- package/utils/WorkerPool.js +13 -33
- package/utils/WorkerPool.mjs +62 -0
- package/webxr/ARButton.js +72 -98
- package/webxr/ARButton.mjs +119 -0
- package/webxr/OculusHandModel.js +18 -37
- package/webxr/OculusHandModel.mjs +71 -0
- package/webxr/OculusHandPointerModel.js +58 -80
- package/webxr/OculusHandPointerModel.mjs +207 -0
- package/webxr/Text2D.js +37 -19
- package/webxr/Text2D.mjs +31 -0
- package/webxr/VRButton.js +59 -90
- package/webxr/VRButton.mjs +105 -0
- package/webxr/XRControllerModelFactory.js +58 -116
- package/webxr/XRControllerModelFactory.mjs +146 -0
- package/webxr/XREstimatedLight.js +39 -66
- package/webxr/XREstimatedLight.mjs +126 -0
- package/webxr/XRHandMeshModel.js +40 -29
- package/webxr/XRHandMeshModel.mjs +73 -0
- package/webxr/XRHandModelFactory.js +28 -31
- package/webxr/XRHandModelFactory.mjs +61 -0
- package/webxr/XRHandPrimitiveModel.js +41 -27
- package/webxr/XRHandPrimitiveModel.mjs +68 -0
- package/BufferGeometryUtils-1a7a235c.js +0 -655
- package/BufferGeometryUtils-971dfde3.js +0 -1
- package/Nodes-4f766d71.js +0 -471
- package/Nodes-9aa16d74.js +0 -1
- package/animation/AnimationClipCreator.cjs.js +0 -1
- package/animation/CCDIKSolver.cjs.js +0 -1
- package/animation/MMDAnimationHelper.cjs.js +0 -1
- package/animation/MMDPhysics.cjs.js +0 -1
- package/cameras/CinematicCamera.cjs.js +0 -1
- package/controls/ArcballControls.cjs.js +0 -1
- package/controls/DeviceOrientationControls.cjs.js +0 -1
- package/controls/DragControls.cjs.js +0 -1
- package/controls/FirstPersonControls.cjs.js +0 -1
- package/controls/FlyControls.cjs.js +0 -1
- package/controls/OrbitControls.cjs.js +0 -1
- package/controls/PointerLockControls.cjs.js +0 -1
- package/controls/TrackballControls.cjs.js +0 -1
- package/controls/TransformControls.cjs.js +0 -1
- package/controls/experimental/CameraControls.cjs.js +0 -1
- package/csm/CSM.cjs.js +0 -1
- package/csm/CSMFrustum.cjs.js +0 -1
- package/csm/CSMHelper.cjs.js +0 -1
- package/csm/CSMShader.cjs.js +0 -1
- package/curves/CurveExtras.cjs.js +0 -1
- package/curves/NURBSCurve.cjs.js +0 -1
- package/curves/NURBSSurface.cjs.js +0 -1
- package/curves/NURBSUtils.cjs.js +0 -1
- package/custom.d.cjs.js +0 -1
- package/deprecated/Geometry.cjs.js +0 -1
- package/effects/AnaglyphEffect.cjs.js +0 -1
- package/effects/AsciiEffect.cjs.js +0 -1
- package/effects/OutlineEffect.cjs.js +0 -1
- package/effects/ParallaxBarrierEffect.cjs.js +0 -1
- package/effects/PeppersGhostEffect.cjs.js +0 -1
- package/effects/StereoEffect.cjs.js +0 -1
- package/environments/RoomEnvironment.cjs.js +0 -1
- package/exporters/ColladaExporter.cjs.js +0 -1
- package/exporters/DRACOExporter.cjs.js +0 -1
- package/exporters/GLTFExporter.cjs.js +0 -1
- package/exporters/MMDExporter.cjs.js +0 -1
- package/exporters/OBJExporter.cjs.js +0 -1
- package/exporters/PLYExporter.cjs.js +0 -1
- package/exporters/STLExporter.cjs.js +0 -1
- package/exporters/USDZExporter.cjs.js +0 -1
- package/geometries/BoxLineGeometry.cjs.js +0 -1
- package/geometries/ConvexGeometry.cjs.js +0 -1
- package/geometries/DecalGeometry.cjs.js +0 -1
- package/geometries/LightningStrike.cjs.js +0 -1
- package/geometries/ParametricGeometries.cjs.js +0 -1
- package/geometries/ParametricGeometry.cjs.js +0 -1
- package/geometries/RoundedBoxGeometry.cjs.js +0 -1
- package/geometries/TeapotGeometry.cjs.js +0 -1
- package/geometries/TextGeometry.cjs.js +0 -1
- package/helpers/LightProbeHelper.cjs.js +0 -1
- package/helpers/PositionalAudioHelper.cjs.js +0 -1
- package/helpers/RectAreaLightHelper.cjs.js +0 -1
- package/helpers/VertexNormalsHelper.cjs.js +0 -1
- package/helpers/VertexTangentsHelper.cjs.js +0 -1
- package/index.cjs.js +0 -1
- package/interactive/InteractiveGroup.cjs.js +0 -1
- package/interactive/InteractiveGroup.d.ts +0 -5
- package/interactive/InteractiveGroup.js +0 -87
- package/interactive/SelectionBox.cjs.js +0 -1
- package/interactive/SelectionHelper.cjs.js +0 -1
- package/libs/MeshoptDecoder.cjs.js +0 -1
- package/libs/MotionControllers.cjs.js +0 -1
- package/lights/LightProbeGenerator.cjs.js +0 -1
- package/lights/RectAreaLightUniformsLib.cjs.js +0 -1
- package/lines/Line2.cjs.js +0 -1
- package/lines/LineGeometry.cjs.js +0 -1
- package/lines/LineMaterial.cjs.js +0 -1
- package/lines/LineSegments2.cjs.js +0 -1
- package/lines/LineSegmentsGeometry.cjs.js +0 -1
- package/lines/Wireframe.cjs.js +0 -1
- package/lines/WireframeGeometry2.cjs.js +0 -1
- package/loaders/3DMLoader.cjs.js +0 -1
- package/loaders/3MFLoader.cjs.js +0 -1
- package/loaders/AMFLoader.cjs.js +0 -1
- package/loaders/AssimpLoader.cjs.js +0 -1
- package/loaders/BVHLoader.cjs.js +0 -1
- package/loaders/BasisTextureLoader.cjs.js +0 -1
- package/loaders/ColladaLoader.cjs.js +0 -1
- package/loaders/DDSLoader.cjs.js +0 -1
- package/loaders/DRACOLoader.cjs.js +0 -1
- package/loaders/EXRLoader.cjs.js +0 -1
- package/loaders/FBXLoader.cjs.js +0 -1
- package/loaders/FontLoader.cjs.js +0 -1
- package/loaders/GCodeLoader.cjs.js +0 -1
- package/loaders/GLTFLoader.cjs.js +0 -1
- package/loaders/HDRCubeTextureLoader.cjs.js +0 -1
- package/loaders/KMZLoader.cjs.js +0 -1
- package/loaders/KTX2Loader.cjs.js +0 -1
- package/loaders/KTXLoader.cjs.js +0 -1
- package/loaders/LDrawLoader.cjs.js +0 -1
- package/loaders/LUT3dlLoader.cjs.js +0 -1
- package/loaders/LUTCubeLoader.cjs.js +0 -1
- package/loaders/LWOLoader.cjs.js +0 -1
- package/loaders/LottieLoader.cjs.js +0 -1
- package/loaders/MD2Loader.cjs.js +0 -1
- package/loaders/MDDLoader.cjs.js +0 -1
- package/loaders/MMDLoader.cjs.js +0 -1
- package/loaders/MTLLoader.cjs.js +0 -1
- package/loaders/NRRDLoader.cjs.js +0 -1
- package/loaders/NodeMaterialLoader.cjs.js +0 -1
- package/loaders/OBJLoader.cjs.js +0 -1
- package/loaders/PCDLoader.cjs.js +0 -1
- package/loaders/PDBLoader.cjs.js +0 -1
- package/loaders/PLYLoader.cjs.js +0 -1
- package/loaders/PRWMLoader.cjs.js +0 -1
- package/loaders/PVRLoader.cjs.js +0 -1
- package/loaders/RGBELoader.cjs.js +0 -1
- package/loaders/RGBMLoader.cjs.js +0 -1
- package/loaders/STLLoader.cjs.js +0 -1
- package/loaders/SVGLoader.cjs.js +0 -1
- package/loaders/TDSLoader.cjs.js +0 -1
- package/loaders/TGALoader.cjs.js +0 -1
- package/loaders/TTFLoader.cjs.js +0 -1
- package/loaders/TiltLoader.cjs.js +0 -1
- package/loaders/VOXLoader.cjs.js +0 -1
- package/loaders/VRMLLoader.cjs.js +0 -1
- package/loaders/VRMLoader.cjs.js +0 -1
- package/loaders/VTKLoader.cjs.js +0 -1
- package/loaders/XLoader.cjs.js +0 -1
- package/loaders/XYZLoader.cjs.js +0 -1
- package/loaders/lwo/IFFParser.cjs.js +0 -1
- package/loaders/lwo/LWO2Parser.cjs.js +0 -1
- package/loaders/lwo/LWO3Parser.cjs.js +0 -1
- package/math/Capsule.cjs.js +0 -1
- package/math/ColorConverter.cjs.js +0 -1
- package/math/ConvexHull.cjs.js +0 -1
- package/math/ImprovedNoise.cjs.js +0 -1
- package/math/Lut.cjs.js +0 -1
- package/math/MeshSurfaceSampler.cjs.js +0 -1
- package/math/OBB.cjs.js +0 -1
- package/math/Octree.cjs.js +0 -1
- package/math/SimplexNoise.cjs.js +0 -1
- package/misc/ConvexObjectBreaker.cjs.js +0 -1
- package/misc/GPUComputationRenderer.cjs.js +0 -1
- package/misc/Gyroscope.cjs.js +0 -1
- package/misc/MD2Character.cjs.js +0 -1
- package/misc/MD2CharacterComplex.cjs.js +0 -1
- package/misc/MorphAnimMesh.cjs.js +0 -1
- package/misc/MorphBlendMesh.cjs.js +0 -1
- package/misc/ProgressiveLightmap.cjs.js +0 -1
- package/misc/RollerCoaster.cjs.js +0 -1
- package/misc/TubePainter.cjs.js +0 -1
- package/misc/Volume.cjs.js +0 -1
- package/misc/VolumeSlice.cjs.js +0 -1
- package/misc/WebGL.cjs.js +0 -1
- package/modifiers/CurveModifier.cjs.js +0 -1
- package/modifiers/EdgeSplitModifier.cjs.js +0 -1
- package/modifiers/SimplifyModifier.cjs.js +0 -1
- package/modifiers/TessellateModifier.cjs.js +0 -1
- package/nodes/Nodes.cjs.js +0 -1
- package/nodes/ShaderNode.cjs.js +0 -1
- package/nodes/accessors/BufferNode.cjs.js +0 -1
- package/nodes/accessors/CameraNode.cjs.js +0 -1
- package/nodes/accessors/CubeTextureNode.cjs.js +0 -1
- package/nodes/accessors/MaterialNode.cjs.js +0 -1
- package/nodes/accessors/MaterialReferenceNode.cjs.js +0 -1
- package/nodes/accessors/ModelNode.cjs.js +0 -1
- package/nodes/accessors/ModelViewProjectionNode.cjs.js +0 -1
- package/nodes/accessors/NormalNode.cjs.js +0 -1
- package/nodes/accessors/Object3DNode.cjs.js +0 -1
- package/nodes/accessors/PointUVNode.cjs.js +0 -1
- package/nodes/accessors/PositionNode.cjs.js +0 -1
- package/nodes/accessors/ReferenceNode.cjs.js +0 -1
- package/nodes/accessors/ReflectNode.cjs.js +0 -1
- package/nodes/accessors/SkinningNode.cjs.js +0 -1
- package/nodes/accessors/TextureNode.cjs.js +0 -1
- package/nodes/accessors/UVNode.cjs.js +0 -1
- package/nodes/core/ArrayUniformNode.cjs.js +0 -1
- package/nodes/core/AttributeNode.cjs.js +0 -1
- package/nodes/core/BypassNode.cjs.js +0 -1
- package/nodes/core/CodeNode.cjs.js +0 -1
- package/nodes/core/ConstNode.cjs.js +0 -1
- package/nodes/core/ContextNode.cjs.js +0 -1
- package/nodes/core/ExpressionNode.cjs.js +0 -1
- package/nodes/core/FunctionCallNode.cjs.js +0 -1
- package/nodes/core/FunctionNode.cjs.js +0 -1
- package/nodes/core/InputNode.cjs.js +0 -1
- package/nodes/core/Node.cjs.js +0 -1
- package/nodes/core/NodeAttribute.cjs.js +0 -1
- package/nodes/core/NodeBuilder.cjs.js +0 -1
- package/nodes/core/NodeCode.cjs.js +0 -1
- package/nodes/core/NodeFrame.cjs.js +0 -1
- package/nodes/core/NodeFunction.cjs.js +0 -1
- package/nodes/core/NodeFunction.js +0 -17
- package/nodes/core/NodeFunctionInput.cjs.js +0 -1
- package/nodes/core/NodeKeywords.cjs.js +0 -1
- package/nodes/core/NodeParser.cjs.js +0 -1
- package/nodes/core/NodeParser.js +0 -8
- package/nodes/core/NodeUniform.cjs.js +0 -1
- package/nodes/core/NodeUtils.cjs.js +0 -1
- package/nodes/core/NodeVar.cjs.js +0 -1
- package/nodes/core/NodeVary.cjs.js +0 -1
- package/nodes/core/PropertyNode.cjs.js +0 -1
- package/nodes/core/TempNode.cjs.js +0 -1
- package/nodes/core/UniformNode.cjs.js +0 -1
- package/nodes/core/VarNode.cjs.js +0 -1
- package/nodes/core/VaryNode.cjs.js +0 -1
- package/nodes/core/constants.cjs.js +0 -1
- package/nodes/display/ColorSpaceNode.cjs.js +0 -1
- package/nodes/display/NormalMapNode.cjs.js +0 -1
- package/nodes/fog/FogNode.cjs.js +0 -1
- package/nodes/fog/FogRangeNode.cjs.js +0 -1
- package/nodes/functions/BSDFs.cjs.js +0 -1
- package/nodes/functions/PhysicalMaterialFunctions.cjs.js +0 -1
- package/nodes/functions/PhysicalMaterialFunctions.js +0 -57
- package/nodes/lights/LightContextNode.cjs.js +0 -1
- package/nodes/lights/LightNode.cjs.js +0 -1
- package/nodes/lights/LightsNode.cjs.js +0 -1
- package/nodes/loaders/NodeLoader.cjs.js +0 -1
- package/nodes/loaders/NodeMaterialLoader.cjs.js +0 -1
- package/nodes/loaders/NodeObjectLoader.cjs.js +0 -1
- package/nodes/materials/LineBasicNodeMaterial.cjs.js +0 -1
- package/nodes/materials/Materials.cjs.js +0 -1
- package/nodes/materials/MeshBasicNodeMaterial.cjs.js +0 -1
- package/nodes/materials/MeshStandardNodeMaterial.cjs.js +0 -1
- package/nodes/materials/NodeMaterial.cjs.js +0 -1
- package/nodes/materials/PointsNodeMaterial.cjs.js +0 -1
- package/nodes/math/CondNode.cjs.js +0 -1
- package/nodes/math/MathNode.cjs.js +0 -1
- package/nodes/math/OperatorNode.cjs.js +0 -1
- package/nodes/parsers/GLSLNodeFunction.cjs.js +0 -1
- package/nodes/parsers/GLSLNodeFunction.js +0 -101
- package/nodes/parsers/GLSLNodeParser.cjs.js +0 -1
- package/nodes/parsers/GLSLNodeParser.js +0 -13
- package/nodes/parsers/WGSLNodeFunction.cjs.js +0 -1
- package/nodes/parsers/WGSLNodeFunction.js +0 -71
- package/nodes/parsers/WGSLNodeParser.cjs.js +0 -1
- package/nodes/parsers/WGSLNodeParser.js +0 -13
- package/nodes/procedural/CheckerNode.cjs.js +0 -1
- package/nodes/utils/ArrayElementNode.cjs.js +0 -1
- package/nodes/utils/ConvertNode.cjs.js +0 -1
- package/nodes/utils/JoinNode.cjs.js +0 -1
- package/nodes/utils/MatcapUVNode.cjs.js +0 -1
- package/nodes/utils/OscNode.cjs.js +0 -1
- package/nodes/utils/SplitNode.cjs.js +0 -1
- package/nodes/utils/SpriteSheetUVNode.cjs.js +0 -1
- package/nodes/utils/TimerNode.cjs.js +0 -1
- package/objects/GroundProjectedEnv.cjs.js +0 -1
- package/objects/Lensflare.cjs.js +0 -1
- package/objects/LightningStorm.cjs.js +0 -1
- package/objects/MarchingCubes.cjs.js +0 -1
- package/objects/Reflector.cjs.js +0 -1
- package/objects/ReflectorForSSRPass.cjs.js +0 -1
- package/objects/ReflectorRTT.cjs.js +0 -1
- package/objects/Refractor.cjs.js +0 -1
- package/objects/ShadowMesh.cjs.js +0 -1
- package/objects/Sky.cjs.js +0 -1
- package/objects/Water.cjs.js +0 -1
- package/objects/Water2.cjs.js +0 -1
- package/offscreen/jank.cjs.js +0 -1
- package/offscreen/offscreen.cjs.js +0 -1
- package/offscreen/scene.cjs.js +0 -1
- package/physics/AmmoPhysics.cjs.js +0 -1
- package/postprocessing/AdaptiveToneMappingPass.cjs.js +0 -1
- package/postprocessing/AfterimagePass.cjs.js +0 -1
- package/postprocessing/BloomPass.cjs.js +0 -1
- package/postprocessing/BokehPass.cjs.js +0 -1
- package/postprocessing/ClearPass.cjs.js +0 -1
- package/postprocessing/CubeTexturePass.cjs.js +0 -1
- package/postprocessing/DotScreenPass.cjs.js +0 -1
- package/postprocessing/EffectComposer.cjs.js +0 -1
- package/postprocessing/FilmPass.cjs.js +0 -1
- package/postprocessing/GlitchPass.cjs.js +0 -1
- package/postprocessing/HalftonePass.cjs.js +0 -1
- package/postprocessing/LUTPass.cjs.js +0 -1
- package/postprocessing/MaskPass.cjs.js +0 -1
- package/postprocessing/OutlinePass.cjs.js +0 -1
- package/postprocessing/Pass.cjs.js +0 -1
- package/postprocessing/RenderPass.cjs.js +0 -1
- package/postprocessing/RenderPixelatedPass.cjs.js +0 -1
- package/postprocessing/SAOPass.cjs.js +0 -1
- package/postprocessing/SMAAPass.cjs.js +0 -1
- package/postprocessing/SSAARenderPass.cjs.js +0 -1
- package/postprocessing/SSAOPass.cjs.js +0 -1
- package/postprocessing/SSRPass.cjs.js +0 -1
- package/postprocessing/SavePass.cjs.js +0 -1
- package/postprocessing/ShaderPass.cjs.js +0 -1
- package/postprocessing/TAARenderPass.cjs.js +0 -1
- package/postprocessing/TexturePass.cjs.js +0 -1
- package/postprocessing/UnrealBloomPass.cjs.js +0 -1
- package/renderers/CSS2DRenderer.cjs.js +0 -1
- package/renderers/CSS3DRenderer.cjs.js +0 -1
- package/renderers/Projector.cjs.js +0 -1
- package/renderers/SVGRenderer.cjs.js +0 -1
- package/renderers/nodes/accessors/CameraNode.cjs.js +0 -1
- package/renderers/nodes/accessors/ModelNode.cjs.js +0 -1
- package/renderers/nodes/accessors/ModelViewProjectionNode.cjs.js +0 -1
- package/renderers/nodes/accessors/NormalNode.cjs.js +0 -1
- package/renderers/nodes/accessors/PositionNode.cjs.js +0 -1
- package/renderers/nodes/accessors/UVNode.cjs.js +0 -1
- package/renderers/nodes/core/AttributeNode.cjs.js +0 -1
- package/renderers/nodes/core/InputNode.cjs.js +0 -1
- package/renderers/nodes/core/Node.cjs.js +0 -1
- package/renderers/nodes/core/NodeAttribute.cjs.js +0 -1
- package/renderers/nodes/core/NodeBuilder.cjs.js +0 -1
- package/renderers/nodes/core/NodeFrame.cjs.js +0 -1
- package/renderers/nodes/core/NodeSlot.cjs.js +0 -1
- package/renderers/nodes/core/NodeUniform.cjs.js +0 -1
- package/renderers/nodes/core/NodeVary.cjs.js +0 -1
- package/renderers/nodes/core/VaryNode.cjs.js +0 -1
- package/renderers/nodes/core/constants.cjs.js +0 -1
- package/renderers/nodes/inputs/ColorNode.cjs.js +0 -1
- package/renderers/nodes/inputs/FloatNode.cjs.js +0 -1
- package/renderers/nodes/inputs/Matrix3Node.cjs.js +0 -1
- package/renderers/nodes/inputs/Matrix4Node.cjs.js +0 -1
- package/renderers/nodes/inputs/TextureNode.cjs.js +0 -1
- package/renderers/nodes/inputs/Vector2Node.cjs.js +0 -1
- package/renderers/nodes/inputs/Vector3Node.cjs.js +0 -1
- package/renderers/nodes/inputs/Vector4Node.cjs.js +0 -1
- package/renderers/nodes/math/MathNode.cjs.js +0 -1
- package/renderers/nodes/math/OperatorNode.cjs.js +0 -1
- package/renderers/nodes/utils/SwitchNode.cjs.js +0 -1
- package/renderers/nodes/utils/TimerNode.cjs.js +0 -1
- package/renderers/webgpu/WebGPU.cjs.js +0 -1
- package/renderers/webgpu/WebGPUAttributes.cjs.js +0 -1
- package/renderers/webgpu/WebGPUBackground.cjs.js +0 -1
- package/renderers/webgpu/WebGPUBinding.cjs.js +0 -1
- package/renderers/webgpu/WebGPUBindings.cjs.js +0 -1
- package/renderers/webgpu/WebGPUComputePipelines.cjs.js +0 -1
- package/renderers/webgpu/WebGPUGeometries.cjs.js +0 -1
- package/renderers/webgpu/WebGPUInfo.cjs.js +0 -1
- package/renderers/webgpu/WebGPUObjects.cjs.js +0 -1
- package/renderers/webgpu/WebGPUProperties.cjs.js +0 -1
- package/renderers/webgpu/WebGPURenderLists.cjs.js +0 -1
- package/renderers/webgpu/WebGPURenderPipelines.cjs.js +0 -1
- package/renderers/webgpu/WebGPURenderer.cjs.js +0 -1
- package/renderers/webgpu/WebGPUSampledTexture.cjs.js +0 -1
- package/renderers/webgpu/WebGPUSampler.cjs.js +0 -1
- package/renderers/webgpu/WebGPUStorageBuffer.cjs.js +0 -1
- package/renderers/webgpu/WebGPUTextureRenderer.cjs.js +0 -1
- package/renderers/webgpu/WebGPUTextureUtils.cjs.js +0 -1
- package/renderers/webgpu/WebGPUTextures.cjs.js +0 -1
- package/renderers/webgpu/WebGPUUniform.cjs.js +0 -1
- package/renderers/webgpu/WebGPUUniformsGroup.cjs.js +0 -1
- package/renderers/webgpu/constants.cjs.js +0 -1
- package/renderers/webgpu/nodes/ShaderLib.cjs.js +0 -1
- package/renderers/webgpu/nodes/WebGPUNodeBuilder.cjs.js +0 -1
- package/renderers/webgpu/nodes/WebGPUNodeUniform.cjs.js +0 -1
- package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.cjs.js +0 -1
- package/renderers/webgpu/nodes/WebGPUNodes.cjs.js +0 -1
- package/shaders/ACESFilmicToneMappingShader.cjs.js +0 -1
- package/shaders/AfterimageShader.cjs.js +0 -1
- package/shaders/BasicShader.cjs.js +0 -1
- package/shaders/BleachBypassShader.cjs.js +0 -1
- package/shaders/BlendShader.cjs.js +0 -1
- package/shaders/BokehShader.cjs.js +0 -1
- package/shaders/BokehShader2.cjs.js +0 -1
- package/shaders/BrightnessContrastShader.cjs.js +0 -1
- package/shaders/ColorCorrectionShader.cjs.js +0 -1
- package/shaders/ColorifyShader.cjs.js +0 -1
- package/shaders/ConvolutionShader.cjs.js +0 -1
- package/shaders/CopyShader.cjs.js +0 -1
- package/shaders/DOFMipMapShader.cjs.js +0 -1
- package/shaders/DepthLimitedBlurShader.cjs.js +0 -1
- package/shaders/DigitalGlitch.cjs.js +0 -1
- package/shaders/DotScreenShader.cjs.js +0 -1
- package/shaders/FXAAShader.cjs.js +0 -1
- package/shaders/FilmShader.cjs.js +0 -1
- package/shaders/FocusShader.cjs.js +0 -1
- package/shaders/FreiChenShader.cjs.js +0 -1
- package/shaders/FresnelShader.cjs.js +0 -1
- package/shaders/GammaCorrectionShader.cjs.js +0 -1
- package/shaders/GodRaysShader.cjs.js +0 -1
- package/shaders/HalftoneShader.cjs.js +0 -1
- package/shaders/HorizontalBlurShader.cjs.js +0 -1
- package/shaders/HorizontalTiltShiftShader.cjs.js +0 -1
- package/shaders/HueSaturationShader.cjs.js +0 -1
- package/shaders/KaleidoShader.cjs.js +0 -1
- package/shaders/LuminosityHighPassShader.cjs.js +0 -1
- package/shaders/LuminosityShader.cjs.js +0 -1
- package/shaders/MirrorShader.cjs.js +0 -1
- package/shaders/NormalMapShader.cjs.js +0 -1
- package/shaders/ParallaxShader.cjs.js +0 -1
- package/shaders/PixelShader.cjs.js +0 -1
- package/shaders/RGBShiftShader.cjs.js +0 -1
- package/shaders/SAOShader.cjs.js +0 -1
- package/shaders/SMAAShader.cjs.js +0 -1
- package/shaders/SSAOShader.cjs.js +0 -1
- package/shaders/SSRShader.cjs.js +0 -1
- package/shaders/SepiaShader.cjs.js +0 -1
- package/shaders/SobelOperatorShader.cjs.js +0 -1
- package/shaders/SubsurfaceScatteringShader.cjs.js +0 -1
- package/shaders/TechnicolorShader.cjs.js +0 -1
- package/shaders/ToneMapShader.cjs.js +0 -1
- package/shaders/ToonShader.cjs.js +0 -1
- package/shaders/TriangleBlurShader.cjs.js +0 -1
- package/shaders/UnpackDepthRGBAShader.cjs.js +0 -1
- package/shaders/VerticalBlurShader.cjs.js +0 -1
- package/shaders/VerticalTiltShiftShader.cjs.js +0 -1
- package/shaders/VignetteShader.cjs.js +0 -1
- package/shaders/VolumeShader.cjs.js +0 -1
- package/shaders/WaterRefractionShader.cjs.js +0 -1
- package/shaders/index.cjs.js +0 -1
- package/shaders/index.d.ts +0 -54
- package/shaders/index.js +0 -53
- package/shaders/types.cjs.js +0 -1
- package/textures/FlakesTexture.cjs.js +0 -1
- package/types/helpers.cjs.js +0 -1
- package/types/shared.cjs.js +0 -1
- package/types/shared.js +0 -1
- package/types/utils.cjs.js +0 -1
- package/types/utils.js +0 -1
- package/utils/BufferGeometryUtils.cjs.js +0 -1
- package/utils/GeometryCompressionUtils.cjs.js +0 -1
- package/utils/GeometryUtils.cjs.js +0 -1
- package/utils/LDrawUtils.cjs.js +0 -1
- package/utils/LDrawUtils.d.ts +0 -5
- package/utils/LDrawUtils.js +0 -144
- package/utils/RoughnessMipmapper.cjs.js +0 -1
- package/utils/SceneUtils.cjs.js +0 -1
- package/utils/ShadowMapViewer.cjs.js +0 -1
- package/utils/SkeletonUtils.cjs.js +0 -1
- package/utils/UVsDebug.cjs.js +0 -1
- package/utils/WorkerPool.cjs.js +0 -1
- package/webxr/ARButton.cjs.js +0 -1
- package/webxr/OculusHandModel.cjs.js +0 -1
- package/webxr/OculusHandPointerModel.cjs.js +0 -1
- package/webxr/Text2D.cjs.js +0 -1
- package/webxr/VRButton.cjs.js +0 -1
- package/webxr/XRControllerModelFactory.cjs.js +0 -1
- package/webxr/XREstimatedLight.cjs.js +0 -1
- package/webxr/XRHandMeshModel.cjs.js +0 -1
- package/webxr/XRHandModelFactory.cjs.js +0 -1
- package/webxr/XRHandPrimitiveModel.cjs.js +0 -1
package/loaders/3MFLoader.js
CHANGED
|
@@ -1,78 +1,62 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
* 3D Manufacturing Format (3MF) specification: https://3mf.io/specification/
|
|
7
|
-
*
|
|
8
|
-
* The following features from the core specification are supported:
|
|
9
|
-
*
|
|
10
|
-
* - 3D Models
|
|
11
|
-
* - Object Resources (Meshes and Components)
|
|
12
|
-
* - Material Resources (Base Materials)
|
|
13
|
-
*
|
|
14
|
-
* 3MF Materials and Properties Extension are only partially supported.
|
|
15
|
-
*
|
|
16
|
-
* - Texture 2D
|
|
17
|
-
* - Texture 2D Groups
|
|
18
|
-
* - Color Groups (Vertex Colors)
|
|
19
|
-
* - Metallic Display Properties (PBR)
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
class ThreeMFLoader extends Loader {
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const THREE = require("three");
|
|
4
|
+
const fflate = require("fflate");
|
|
5
|
+
class ThreeMFLoader extends THREE.Loader {
|
|
23
6
|
constructor(manager) {
|
|
24
7
|
super(manager);
|
|
25
8
|
this.availableExtensions = [];
|
|
26
9
|
}
|
|
27
|
-
|
|
28
10
|
load(url, onLoad, onProgress, onError) {
|
|
29
11
|
const scope = this;
|
|
30
|
-
const loader = new FileLoader(scope.manager);
|
|
12
|
+
const loader = new THREE.FileLoader(scope.manager);
|
|
31
13
|
loader.setPath(scope.path);
|
|
32
|
-
loader.setResponseType(
|
|
14
|
+
loader.setResponseType("arraybuffer");
|
|
33
15
|
loader.setRequestHeader(scope.requestHeader);
|
|
34
16
|
loader.setWithCredentials(scope.withCredentials);
|
|
35
|
-
loader.load(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
17
|
+
loader.load(
|
|
18
|
+
url,
|
|
19
|
+
function(buffer) {
|
|
20
|
+
try {
|
|
21
|
+
onLoad(scope.parse(buffer));
|
|
22
|
+
} catch (e) {
|
|
23
|
+
if (onError) {
|
|
24
|
+
onError(e);
|
|
25
|
+
} else {
|
|
26
|
+
console.error(e);
|
|
27
|
+
}
|
|
28
|
+
scope.manager.itemError(url);
|
|
43
29
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
30
|
+
},
|
|
31
|
+
onProgress,
|
|
32
|
+
onError
|
|
33
|
+
);
|
|
48
34
|
}
|
|
49
|
-
|
|
50
35
|
parse(data) {
|
|
51
36
|
const scope = this;
|
|
52
|
-
const textureLoader = new TextureLoader(this.manager);
|
|
53
|
-
|
|
54
|
-
function loadDocument(data) {
|
|
37
|
+
const textureLoader = new THREE.TextureLoader(this.manager);
|
|
38
|
+
function loadDocument(data2) {
|
|
55
39
|
let zip = null;
|
|
56
40
|
let file = null;
|
|
57
41
|
let relsName;
|
|
58
42
|
let modelRelsName;
|
|
59
43
|
const modelPartNames = [];
|
|
44
|
+
const printTicketPartNames = [];
|
|
60
45
|
const texturesPartNames = [];
|
|
46
|
+
const otherPartNames = [];
|
|
61
47
|
let modelRels;
|
|
62
48
|
const modelParts = {};
|
|
63
49
|
const printTicketParts = {};
|
|
64
50
|
const texturesParts = {};
|
|
65
51
|
const otherParts = {};
|
|
66
|
-
|
|
67
52
|
try {
|
|
68
|
-
zip = unzipSync(new Uint8Array(
|
|
53
|
+
zip = fflate.unzipSync(new Uint8Array(data2));
|
|
69
54
|
} catch (e) {
|
|
70
55
|
if (e instanceof ReferenceError) {
|
|
71
|
-
console.error(
|
|
56
|
+
console.error("THREE.3MFLoader: fflate missing and file is compressed.");
|
|
72
57
|
return null;
|
|
73
58
|
}
|
|
74
59
|
}
|
|
75
|
-
|
|
76
60
|
for (file in zip) {
|
|
77
61
|
if (file.match(/\_rels\/.rels$/)) {
|
|
78
62
|
relsName = file;
|
|
@@ -80,585 +64,454 @@ class ThreeMFLoader extends Loader {
|
|
|
80
64
|
modelRelsName = file;
|
|
81
65
|
} else if (file.match(/^3D\/.*\.model$/)) {
|
|
82
66
|
modelPartNames.push(file);
|
|
83
|
-
} else if (file.match(/^3D\/Metadata\/.*\.xml$/))
|
|
67
|
+
} else if (file.match(/^3D\/Metadata\/.*\.xml$/)) {
|
|
68
|
+
printTicketPartNames.push(file);
|
|
69
|
+
} else if (file.match(/^3D\/Textures?\/.*/)) {
|
|
84
70
|
texturesPartNames.push(file);
|
|
85
|
-
} else if (file.match(/^3D\/Other\/.*/))
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
71
|
+
} else if (file.match(/^3D\/Other\/.*/)) {
|
|
72
|
+
otherPartNames.push(file);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
89
75
|
const relsView = zip[relsName];
|
|
90
|
-
const relsFileText = LoaderUtils.decodeText(relsView);
|
|
91
|
-
const rels = parseRelsXml(relsFileText);
|
|
92
|
-
|
|
76
|
+
const relsFileText = THREE.LoaderUtils.decodeText(relsView);
|
|
77
|
+
const rels = parseRelsXml(relsFileText);
|
|
93
78
|
if (modelRelsName) {
|
|
94
|
-
const
|
|
95
|
-
const
|
|
96
|
-
modelRels = parseRelsXml(
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
79
|
+
const relsView2 = zip[modelRelsName];
|
|
80
|
+
const relsFileText2 = THREE.LoaderUtils.decodeText(relsView2);
|
|
81
|
+
modelRels = parseRelsXml(relsFileText2);
|
|
82
|
+
}
|
|
100
83
|
for (let i = 0; i < modelPartNames.length; i++) {
|
|
101
84
|
const modelPart = modelPartNames[i];
|
|
102
85
|
const view = zip[modelPart];
|
|
103
|
-
const fileText = LoaderUtils.decodeText(view);
|
|
104
|
-
const xmlData = new DOMParser().parseFromString(fileText,
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
console.error('THREE.3MFLoader: Error loading 3MF - no 3MF document found: ', modelPart);
|
|
86
|
+
const fileText = THREE.LoaderUtils.decodeText(view);
|
|
87
|
+
const xmlData = new DOMParser().parseFromString(fileText, "application/xml");
|
|
88
|
+
if (xmlData.documentElement.nodeName.toLowerCase() !== "model") {
|
|
89
|
+
console.error("THREE.3MFLoader: Error loading 3MF - no 3MF document found: ", modelPart);
|
|
108
90
|
}
|
|
109
|
-
|
|
110
|
-
const modelNode = xmlData.querySelector('model');
|
|
91
|
+
const modelNode = xmlData.querySelector("model");
|
|
111
92
|
const extensions = {};
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
const attr = modelNode.attributes[i];
|
|
115
|
-
|
|
93
|
+
for (let i2 = 0; i2 < modelNode.attributes.length; i2++) {
|
|
94
|
+
const attr = modelNode.attributes[i2];
|
|
116
95
|
if (attr.name.match(/^xmlns:(.+)$/)) {
|
|
117
96
|
extensions[attr.value] = RegExp.$1;
|
|
118
97
|
}
|
|
119
98
|
}
|
|
120
|
-
|
|
121
99
|
const modelData = parseModelNode(modelNode);
|
|
122
|
-
modelData[
|
|
123
|
-
|
|
100
|
+
modelData["xml"] = modelNode;
|
|
124
101
|
if (0 < Object.keys(extensions).length) {
|
|
125
|
-
modelData[
|
|
102
|
+
modelData["extensions"] = extensions;
|
|
126
103
|
}
|
|
127
|
-
|
|
128
104
|
modelParts[modelPart] = modelData;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
|
|
105
|
+
}
|
|
132
106
|
for (let i = 0; i < texturesPartNames.length; i++) {
|
|
133
107
|
const texturesPartName = texturesPartNames[i];
|
|
134
108
|
texturesParts[texturesPartName] = zip[texturesPartName].buffer;
|
|
135
109
|
}
|
|
136
|
-
|
|
137
110
|
return {
|
|
138
|
-
rels
|
|
139
|
-
modelRels
|
|
111
|
+
rels,
|
|
112
|
+
modelRels,
|
|
140
113
|
model: modelParts,
|
|
141
114
|
printTicket: printTicketParts,
|
|
142
115
|
texture: texturesParts,
|
|
143
116
|
other: otherParts
|
|
144
117
|
};
|
|
145
118
|
}
|
|
146
|
-
|
|
147
119
|
function parseRelsXml(relsFileText) {
|
|
148
120
|
const relationships = [];
|
|
149
|
-
const relsXmlData = new DOMParser().parseFromString(relsFileText,
|
|
150
|
-
const relsNodes = relsXmlData.querySelectorAll(
|
|
151
|
-
|
|
121
|
+
const relsXmlData = new DOMParser().parseFromString(relsFileText, "application/xml");
|
|
122
|
+
const relsNodes = relsXmlData.querySelectorAll("Relationship");
|
|
152
123
|
for (let i = 0; i < relsNodes.length; i++) {
|
|
153
124
|
const relsNode = relsNodes[i];
|
|
154
125
|
const relationship = {
|
|
155
|
-
target: relsNode.getAttribute(
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
//required
|
|
159
|
-
type: relsNode.getAttribute('Type') //required
|
|
160
|
-
|
|
126
|
+
target: relsNode.getAttribute("Target"),
|
|
127
|
+
id: relsNode.getAttribute("Id"),
|
|
128
|
+
type: relsNode.getAttribute("Type")
|
|
161
129
|
};
|
|
162
130
|
relationships.push(relationship);
|
|
163
131
|
}
|
|
164
|
-
|
|
165
132
|
return relationships;
|
|
166
133
|
}
|
|
167
|
-
|
|
168
134
|
function parseMetadataNodes(metadataNodes) {
|
|
169
135
|
const metadataData = {};
|
|
170
|
-
|
|
171
136
|
for (let i = 0; i < metadataNodes.length; i++) {
|
|
172
137
|
const metadataNode = metadataNodes[i];
|
|
173
|
-
const name = metadataNode.getAttribute(
|
|
174
|
-
const validNames = [
|
|
175
|
-
|
|
138
|
+
const name = metadataNode.getAttribute("name");
|
|
139
|
+
const validNames = [
|
|
140
|
+
"Title",
|
|
141
|
+
"Designer",
|
|
142
|
+
"Description",
|
|
143
|
+
"Copyright",
|
|
144
|
+
"LicenseTerms",
|
|
145
|
+
"Rating",
|
|
146
|
+
"CreationDate",
|
|
147
|
+
"ModificationDate"
|
|
148
|
+
];
|
|
176
149
|
if (0 <= validNames.indexOf(name)) {
|
|
177
150
|
metadataData[name] = metadataNode.textContent;
|
|
178
151
|
}
|
|
179
152
|
}
|
|
180
|
-
|
|
181
153
|
return metadataData;
|
|
182
154
|
}
|
|
183
|
-
|
|
184
155
|
function parseBasematerialsNode(basematerialsNode) {
|
|
185
156
|
const basematerialsData = {
|
|
186
|
-
id: basematerialsNode.getAttribute(
|
|
187
|
-
// required
|
|
157
|
+
id: basematerialsNode.getAttribute("id"),
|
|
188
158
|
basematerials: []
|
|
189
159
|
};
|
|
190
|
-
const basematerialNodes = basematerialsNode.querySelectorAll(
|
|
191
|
-
|
|
160
|
+
const basematerialNodes = basematerialsNode.querySelectorAll("base");
|
|
192
161
|
for (let i = 0; i < basematerialNodes.length; i++) {
|
|
193
162
|
const basematerialNode = basematerialNodes[i];
|
|
194
163
|
const basematerialData = parseBasematerialNode(basematerialNode);
|
|
195
|
-
basematerialData.index = i;
|
|
196
|
-
|
|
164
|
+
basematerialData.index = i;
|
|
197
165
|
basematerialsData.basematerials.push(basematerialData);
|
|
198
166
|
}
|
|
199
|
-
|
|
200
167
|
return basematerialsData;
|
|
201
168
|
}
|
|
202
|
-
|
|
203
169
|
function parseTexture2DNode(texture2DNode) {
|
|
204
170
|
const texture2dData = {
|
|
205
|
-
id: texture2DNode.getAttribute(
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
tilestyleu: texture2DNode.getAttribute('tilestyleu'),
|
|
212
|
-
tilestylev: texture2DNode.getAttribute('tilestylev'),
|
|
213
|
-
filter: texture2DNode.getAttribute('filter')
|
|
171
|
+
id: texture2DNode.getAttribute("id"),
|
|
172
|
+
path: texture2DNode.getAttribute("path"),
|
|
173
|
+
contenttype: texture2DNode.getAttribute("contenttype"),
|
|
174
|
+
tilestyleu: texture2DNode.getAttribute("tilestyleu"),
|
|
175
|
+
tilestylev: texture2DNode.getAttribute("tilestylev"),
|
|
176
|
+
filter: texture2DNode.getAttribute("filter")
|
|
214
177
|
};
|
|
215
178
|
return texture2dData;
|
|
216
179
|
}
|
|
217
|
-
|
|
218
180
|
function parseTextures2DGroupNode(texture2DGroupNode) {
|
|
219
181
|
const texture2DGroupData = {
|
|
220
|
-
id: texture2DGroupNode.getAttribute(
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
// required
|
|
224
|
-
displaypropertiesid: texture2DGroupNode.getAttribute('displaypropertiesid')
|
|
182
|
+
id: texture2DGroupNode.getAttribute("id"),
|
|
183
|
+
texid: texture2DGroupNode.getAttribute("texid"),
|
|
184
|
+
displaypropertiesid: texture2DGroupNode.getAttribute("displaypropertiesid")
|
|
225
185
|
};
|
|
226
|
-
const tex2coordNodes = texture2DGroupNode.querySelectorAll(
|
|
186
|
+
const tex2coordNodes = texture2DGroupNode.querySelectorAll("tex2coord");
|
|
227
187
|
const uvs = [];
|
|
228
|
-
|
|
229
188
|
for (let i = 0; i < tex2coordNodes.length; i++) {
|
|
230
189
|
const tex2coordNode = tex2coordNodes[i];
|
|
231
|
-
const u = tex2coordNode.getAttribute(
|
|
232
|
-
const v = tex2coordNode.getAttribute(
|
|
190
|
+
const u = tex2coordNode.getAttribute("u");
|
|
191
|
+
const v = tex2coordNode.getAttribute("v");
|
|
233
192
|
uvs.push(parseFloat(u), parseFloat(v));
|
|
234
193
|
}
|
|
235
|
-
|
|
236
|
-
texture2DGroupData['uvs'] = new Float32Array(uvs);
|
|
194
|
+
texture2DGroupData["uvs"] = new Float32Array(uvs);
|
|
237
195
|
return texture2DGroupData;
|
|
238
196
|
}
|
|
239
|
-
|
|
240
197
|
function parseColorGroupNode(colorGroupNode) {
|
|
241
198
|
const colorGroupData = {
|
|
242
|
-
id: colorGroupNode.getAttribute(
|
|
243
|
-
|
|
244
|
-
displaypropertiesid: colorGroupNode.getAttribute('displaypropertiesid')
|
|
199
|
+
id: colorGroupNode.getAttribute("id"),
|
|
200
|
+
displaypropertiesid: colorGroupNode.getAttribute("displaypropertiesid")
|
|
245
201
|
};
|
|
246
|
-
const colorNodes = colorGroupNode.querySelectorAll(
|
|
202
|
+
const colorNodes = colorGroupNode.querySelectorAll("color");
|
|
247
203
|
const colors = [];
|
|
248
|
-
const colorObject = new Color();
|
|
249
|
-
|
|
204
|
+
const colorObject = new THREE.Color();
|
|
250
205
|
for (let i = 0; i < colorNodes.length; i++) {
|
|
251
206
|
const colorNode = colorNodes[i];
|
|
252
|
-
const color = colorNode.getAttribute(
|
|
207
|
+
const color = colorNode.getAttribute("color");
|
|
253
208
|
colorObject.setStyle(color.substring(0, 7));
|
|
254
|
-
colorObject.convertSRGBToLinear();
|
|
255
|
-
|
|
209
|
+
colorObject.convertSRGBToLinear();
|
|
256
210
|
colors.push(colorObject.r, colorObject.g, colorObject.b);
|
|
257
211
|
}
|
|
258
|
-
|
|
259
|
-
colorGroupData['colors'] = new Float32Array(colors);
|
|
212
|
+
colorGroupData["colors"] = new Float32Array(colors);
|
|
260
213
|
return colorGroupData;
|
|
261
214
|
}
|
|
262
|
-
|
|
263
215
|
function parseMetallicDisplaypropertiesNode(metallicDisplaypropetiesNode) {
|
|
264
216
|
const metallicDisplaypropertiesData = {
|
|
265
|
-
id: metallicDisplaypropetiesNode.getAttribute(
|
|
266
|
-
|
|
217
|
+
id: metallicDisplaypropetiesNode.getAttribute("id")
|
|
267
218
|
};
|
|
268
|
-
const metallicNodes = metallicDisplaypropetiesNode.querySelectorAll(
|
|
219
|
+
const metallicNodes = metallicDisplaypropetiesNode.querySelectorAll("pbmetallic");
|
|
269
220
|
const metallicData = [];
|
|
270
|
-
|
|
271
221
|
for (let i = 0; i < metallicNodes.length; i++) {
|
|
272
222
|
const metallicNode = metallicNodes[i];
|
|
273
223
|
metallicData.push({
|
|
274
|
-
name: metallicNode.getAttribute(
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
// required
|
|
278
|
-
roughness: parseFloat(metallicNode.getAttribute('roughness')) // required
|
|
279
|
-
|
|
224
|
+
name: metallicNode.getAttribute("name"),
|
|
225
|
+
metallicness: parseFloat(metallicNode.getAttribute("metallicness")),
|
|
226
|
+
roughness: parseFloat(metallicNode.getAttribute("roughness"))
|
|
280
227
|
});
|
|
281
228
|
}
|
|
282
|
-
|
|
283
229
|
metallicDisplaypropertiesData.data = metallicData;
|
|
284
230
|
return metallicDisplaypropertiesData;
|
|
285
231
|
}
|
|
286
|
-
|
|
287
232
|
function parseBasematerialNode(basematerialNode) {
|
|
288
233
|
const basematerialData = {};
|
|
289
|
-
basematerialData[
|
|
290
|
-
|
|
291
|
-
basematerialData[
|
|
292
|
-
|
|
293
|
-
basematerialData['displaypropertiesid'] = basematerialNode.getAttribute('displaypropertiesid');
|
|
234
|
+
basematerialData["name"] = basematerialNode.getAttribute("name");
|
|
235
|
+
basematerialData["displaycolor"] = basematerialNode.getAttribute("displaycolor");
|
|
236
|
+
basematerialData["displaypropertiesid"] = basematerialNode.getAttribute("displaypropertiesid");
|
|
294
237
|
return basematerialData;
|
|
295
238
|
}
|
|
296
|
-
|
|
297
239
|
function parseMeshNode(meshNode) {
|
|
298
240
|
const meshData = {};
|
|
299
241
|
const vertices = [];
|
|
300
|
-
const vertexNodes = meshNode.querySelectorAll(
|
|
301
|
-
|
|
242
|
+
const vertexNodes = meshNode.querySelectorAll("vertices vertex");
|
|
302
243
|
for (let i = 0; i < vertexNodes.length; i++) {
|
|
303
244
|
const vertexNode = vertexNodes[i];
|
|
304
|
-
const x = vertexNode.getAttribute(
|
|
305
|
-
const y = vertexNode.getAttribute(
|
|
306
|
-
const z = vertexNode.getAttribute(
|
|
245
|
+
const x = vertexNode.getAttribute("x");
|
|
246
|
+
const y = vertexNode.getAttribute("y");
|
|
247
|
+
const z = vertexNode.getAttribute("z");
|
|
307
248
|
vertices.push(parseFloat(x), parseFloat(y), parseFloat(z));
|
|
308
249
|
}
|
|
309
|
-
|
|
310
|
-
meshData['vertices'] = new Float32Array(vertices);
|
|
250
|
+
meshData["vertices"] = new Float32Array(vertices);
|
|
311
251
|
const triangleProperties = [];
|
|
312
252
|
const triangles = [];
|
|
313
|
-
const triangleNodes = meshNode.querySelectorAll(
|
|
314
|
-
|
|
253
|
+
const triangleNodes = meshNode.querySelectorAll("triangles triangle");
|
|
315
254
|
for (let i = 0; i < triangleNodes.length; i++) {
|
|
316
255
|
const triangleNode = triangleNodes[i];
|
|
317
|
-
const v1 = triangleNode.getAttribute(
|
|
318
|
-
const v2 = triangleNode.getAttribute(
|
|
319
|
-
const v3 = triangleNode.getAttribute(
|
|
320
|
-
const p1 = triangleNode.getAttribute(
|
|
321
|
-
const p2 = triangleNode.getAttribute(
|
|
322
|
-
const p3 = triangleNode.getAttribute(
|
|
323
|
-
const pid = triangleNode.getAttribute(
|
|
256
|
+
const v1 = triangleNode.getAttribute("v1");
|
|
257
|
+
const v2 = triangleNode.getAttribute("v2");
|
|
258
|
+
const v3 = triangleNode.getAttribute("v3");
|
|
259
|
+
const p1 = triangleNode.getAttribute("p1");
|
|
260
|
+
const p2 = triangleNode.getAttribute("p2");
|
|
261
|
+
const p3 = triangleNode.getAttribute("p3");
|
|
262
|
+
const pid = triangleNode.getAttribute("pid");
|
|
324
263
|
const triangleProperty = {};
|
|
325
|
-
triangleProperty[
|
|
326
|
-
triangleProperty[
|
|
327
|
-
triangleProperty[
|
|
328
|
-
triangles.push(triangleProperty[
|
|
329
|
-
|
|
264
|
+
triangleProperty["v1"] = parseInt(v1, 10);
|
|
265
|
+
triangleProperty["v2"] = parseInt(v2, 10);
|
|
266
|
+
triangleProperty["v3"] = parseInt(v3, 10);
|
|
267
|
+
triangles.push(triangleProperty["v1"], triangleProperty["v2"], triangleProperty["v3"]);
|
|
330
268
|
if (p1) {
|
|
331
|
-
triangleProperty[
|
|
269
|
+
triangleProperty["p1"] = parseInt(p1, 10);
|
|
332
270
|
}
|
|
333
|
-
|
|
334
271
|
if (p2) {
|
|
335
|
-
triangleProperty[
|
|
272
|
+
triangleProperty["p2"] = parseInt(p2, 10);
|
|
336
273
|
}
|
|
337
|
-
|
|
338
274
|
if (p3) {
|
|
339
|
-
triangleProperty[
|
|
275
|
+
triangleProperty["p3"] = parseInt(p3, 10);
|
|
340
276
|
}
|
|
341
|
-
|
|
342
277
|
if (pid) {
|
|
343
|
-
triangleProperty[
|
|
278
|
+
triangleProperty["pid"] = pid;
|
|
344
279
|
}
|
|
345
|
-
|
|
346
280
|
if (0 < Object.keys(triangleProperty).length) {
|
|
347
281
|
triangleProperties.push(triangleProperty);
|
|
348
282
|
}
|
|
349
283
|
}
|
|
350
|
-
|
|
351
|
-
meshData[
|
|
352
|
-
meshData['triangles'] = new Uint32Array(triangles);
|
|
284
|
+
meshData["triangleProperties"] = triangleProperties;
|
|
285
|
+
meshData["triangles"] = new Uint32Array(triangles);
|
|
353
286
|
return meshData;
|
|
354
287
|
}
|
|
355
|
-
|
|
356
288
|
function parseComponentsNode(componentsNode) {
|
|
357
289
|
const components = [];
|
|
358
|
-
const componentNodes = componentsNode.querySelectorAll(
|
|
359
|
-
|
|
290
|
+
const componentNodes = componentsNode.querySelectorAll("component");
|
|
360
291
|
for (let i = 0; i < componentNodes.length; i++) {
|
|
361
292
|
const componentNode = componentNodes[i];
|
|
362
293
|
const componentData = parseComponentNode(componentNode);
|
|
363
294
|
components.push(componentData);
|
|
364
295
|
}
|
|
365
|
-
|
|
366
296
|
return components;
|
|
367
297
|
}
|
|
368
|
-
|
|
369
298
|
function parseComponentNode(componentNode) {
|
|
370
299
|
const componentData = {};
|
|
371
|
-
componentData[
|
|
372
|
-
|
|
373
|
-
const transform = componentNode.getAttribute('transform');
|
|
374
|
-
|
|
300
|
+
componentData["objectId"] = componentNode.getAttribute("objectid");
|
|
301
|
+
const transform = componentNode.getAttribute("transform");
|
|
375
302
|
if (transform) {
|
|
376
|
-
componentData[
|
|
303
|
+
componentData["transform"] = parseTransform(transform);
|
|
377
304
|
}
|
|
378
|
-
|
|
379
305
|
return componentData;
|
|
380
306
|
}
|
|
381
|
-
|
|
382
307
|
function parseTransform(transform) {
|
|
383
308
|
const t = [];
|
|
384
|
-
transform.split(
|
|
309
|
+
transform.split(" ").forEach(function(s) {
|
|
385
310
|
t.push(parseFloat(s));
|
|
386
311
|
});
|
|
387
|
-
const matrix = new Matrix4();
|
|
388
|
-
matrix.set(t[0], t[3], t[6], t[9], t[1], t[4], t[7], t[10], t[2], t[5], t[8], t[11], 0
|
|
312
|
+
const matrix = new THREE.Matrix4();
|
|
313
|
+
matrix.set(t[0], t[3], t[6], t[9], t[1], t[4], t[7], t[10], t[2], t[5], t[8], t[11], 0, 0, 0, 1);
|
|
389
314
|
return matrix;
|
|
390
315
|
}
|
|
391
|
-
|
|
392
316
|
function parseObjectNode(objectNode) {
|
|
393
317
|
const objectData = {
|
|
394
|
-
type: objectNode.getAttribute(
|
|
318
|
+
type: objectNode.getAttribute("type")
|
|
395
319
|
};
|
|
396
|
-
const id = objectNode.getAttribute(
|
|
397
|
-
|
|
320
|
+
const id = objectNode.getAttribute("id");
|
|
398
321
|
if (id) {
|
|
399
|
-
objectData[
|
|
322
|
+
objectData["id"] = id;
|
|
400
323
|
}
|
|
401
|
-
|
|
402
|
-
const pid = objectNode.getAttribute('pid');
|
|
403
|
-
|
|
324
|
+
const pid = objectNode.getAttribute("pid");
|
|
404
325
|
if (pid) {
|
|
405
|
-
objectData[
|
|
326
|
+
objectData["pid"] = pid;
|
|
406
327
|
}
|
|
407
|
-
|
|
408
|
-
const pindex = objectNode.getAttribute('pindex');
|
|
409
|
-
|
|
328
|
+
const pindex = objectNode.getAttribute("pindex");
|
|
410
329
|
if (pindex) {
|
|
411
|
-
objectData[
|
|
330
|
+
objectData["pindex"] = pindex;
|
|
412
331
|
}
|
|
413
|
-
|
|
414
|
-
const thumbnail = objectNode.getAttribute('thumbnail');
|
|
415
|
-
|
|
332
|
+
const thumbnail = objectNode.getAttribute("thumbnail");
|
|
416
333
|
if (thumbnail) {
|
|
417
|
-
objectData[
|
|
334
|
+
objectData["thumbnail"] = thumbnail;
|
|
418
335
|
}
|
|
419
|
-
|
|
420
|
-
const partnumber = objectNode.getAttribute('partnumber');
|
|
421
|
-
|
|
336
|
+
const partnumber = objectNode.getAttribute("partnumber");
|
|
422
337
|
if (partnumber) {
|
|
423
|
-
objectData[
|
|
338
|
+
objectData["partnumber"] = partnumber;
|
|
424
339
|
}
|
|
425
|
-
|
|
426
|
-
const name = objectNode.getAttribute('name');
|
|
427
|
-
|
|
340
|
+
const name = objectNode.getAttribute("name");
|
|
428
341
|
if (name) {
|
|
429
|
-
objectData[
|
|
342
|
+
objectData["name"] = name;
|
|
430
343
|
}
|
|
431
|
-
|
|
432
|
-
const meshNode = objectNode.querySelector('mesh');
|
|
433
|
-
|
|
344
|
+
const meshNode = objectNode.querySelector("mesh");
|
|
434
345
|
if (meshNode) {
|
|
435
|
-
objectData[
|
|
346
|
+
objectData["mesh"] = parseMeshNode(meshNode);
|
|
436
347
|
}
|
|
437
|
-
|
|
438
|
-
const componentsNode = objectNode.querySelector('components');
|
|
439
|
-
|
|
348
|
+
const componentsNode = objectNode.querySelector("components");
|
|
440
349
|
if (componentsNode) {
|
|
441
|
-
objectData[
|
|
350
|
+
objectData["components"] = parseComponentsNode(componentsNode);
|
|
442
351
|
}
|
|
443
|
-
|
|
444
352
|
return objectData;
|
|
445
353
|
}
|
|
446
|
-
|
|
447
354
|
function parseResourcesNode(resourcesNode) {
|
|
448
355
|
const resourcesData = {};
|
|
449
|
-
resourcesData[
|
|
450
|
-
const basematerialsNodes = resourcesNode.querySelectorAll(
|
|
451
|
-
|
|
356
|
+
resourcesData["basematerials"] = {};
|
|
357
|
+
const basematerialsNodes = resourcesNode.querySelectorAll("basematerials");
|
|
452
358
|
for (let i = 0; i < basematerialsNodes.length; i++) {
|
|
453
359
|
const basematerialsNode = basematerialsNodes[i];
|
|
454
360
|
const basematerialsData = parseBasematerialsNode(basematerialsNode);
|
|
455
|
-
resourcesData[
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
resourcesData['texture2d'] = {};
|
|
460
|
-
const textures2DNodes = resourcesNode.querySelectorAll('texture2d');
|
|
461
|
-
|
|
361
|
+
resourcesData["basematerials"][basematerialsData["id"]] = basematerialsData;
|
|
362
|
+
}
|
|
363
|
+
resourcesData["texture2d"] = {};
|
|
364
|
+
const textures2DNodes = resourcesNode.querySelectorAll("texture2d");
|
|
462
365
|
for (let i = 0; i < textures2DNodes.length; i++) {
|
|
463
366
|
const textures2DNode = textures2DNodes[i];
|
|
464
367
|
const texture2DData = parseTexture2DNode(textures2DNode);
|
|
465
|
-
resourcesData[
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
resourcesData['colorgroup'] = {};
|
|
470
|
-
const colorGroupNodes = resourcesNode.querySelectorAll('colorgroup');
|
|
471
|
-
|
|
368
|
+
resourcesData["texture2d"][texture2DData["id"]] = texture2DData;
|
|
369
|
+
}
|
|
370
|
+
resourcesData["colorgroup"] = {};
|
|
371
|
+
const colorGroupNodes = resourcesNode.querySelectorAll("colorgroup");
|
|
472
372
|
for (let i = 0; i < colorGroupNodes.length; i++) {
|
|
473
373
|
const colorGroupNode = colorGroupNodes[i];
|
|
474
374
|
const colorGroupData = parseColorGroupNode(colorGroupNode);
|
|
475
|
-
resourcesData[
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
resourcesData['pbmetallicdisplayproperties'] = {};
|
|
480
|
-
const pbmetallicdisplaypropertiesNodes = resourcesNode.querySelectorAll('pbmetallicdisplayproperties');
|
|
481
|
-
|
|
375
|
+
resourcesData["colorgroup"][colorGroupData["id"]] = colorGroupData;
|
|
376
|
+
}
|
|
377
|
+
resourcesData["pbmetallicdisplayproperties"] = {};
|
|
378
|
+
const pbmetallicdisplaypropertiesNodes = resourcesNode.querySelectorAll("pbmetallicdisplayproperties");
|
|
482
379
|
for (let i = 0; i < pbmetallicdisplaypropertiesNodes.length; i++) {
|
|
483
380
|
const pbmetallicdisplaypropertiesNode = pbmetallicdisplaypropertiesNodes[i];
|
|
484
381
|
const pbmetallicdisplaypropertiesData = parseMetallicDisplaypropertiesNode(pbmetallicdisplaypropertiesNode);
|
|
485
|
-
resourcesData[
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
resourcesData['texture2dgroup'] = {};
|
|
490
|
-
const textures2DGroupNodes = resourcesNode.querySelectorAll('texture2dgroup');
|
|
491
|
-
|
|
382
|
+
resourcesData["pbmetallicdisplayproperties"][pbmetallicdisplaypropertiesData["id"]] = pbmetallicdisplaypropertiesData;
|
|
383
|
+
}
|
|
384
|
+
resourcesData["texture2dgroup"] = {};
|
|
385
|
+
const textures2DGroupNodes = resourcesNode.querySelectorAll("texture2dgroup");
|
|
492
386
|
for (let i = 0; i < textures2DGroupNodes.length; i++) {
|
|
493
387
|
const textures2DGroupNode = textures2DGroupNodes[i];
|
|
494
388
|
const textures2DGroupData = parseTextures2DGroupNode(textures2DGroupNode);
|
|
495
|
-
resourcesData[
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
resourcesData['object'] = {};
|
|
500
|
-
const objectNodes = resourcesNode.querySelectorAll('object');
|
|
501
|
-
|
|
389
|
+
resourcesData["texture2dgroup"][textures2DGroupData["id"]] = textures2DGroupData;
|
|
390
|
+
}
|
|
391
|
+
resourcesData["object"] = {};
|
|
392
|
+
const objectNodes = resourcesNode.querySelectorAll("object");
|
|
502
393
|
for (let i = 0; i < objectNodes.length; i++) {
|
|
503
394
|
const objectNode = objectNodes[i];
|
|
504
395
|
const objectData = parseObjectNode(objectNode);
|
|
505
|
-
resourcesData[
|
|
396
|
+
resourcesData["object"][objectData["id"]] = objectData;
|
|
506
397
|
}
|
|
507
|
-
|
|
508
398
|
return resourcesData;
|
|
509
399
|
}
|
|
510
|
-
|
|
511
400
|
function parseBuildNode(buildNode) {
|
|
512
401
|
const buildData = [];
|
|
513
|
-
const itemNodes = buildNode.querySelectorAll(
|
|
514
|
-
|
|
402
|
+
const itemNodes = buildNode.querySelectorAll("item");
|
|
515
403
|
for (let i = 0; i < itemNodes.length; i++) {
|
|
516
404
|
const itemNode = itemNodes[i];
|
|
517
405
|
const buildItem = {
|
|
518
|
-
objectId: itemNode.getAttribute(
|
|
406
|
+
objectId: itemNode.getAttribute("objectid")
|
|
519
407
|
};
|
|
520
|
-
const transform = itemNode.getAttribute(
|
|
521
|
-
|
|
408
|
+
const transform = itemNode.getAttribute("transform");
|
|
522
409
|
if (transform) {
|
|
523
|
-
buildItem[
|
|
410
|
+
buildItem["transform"] = parseTransform(transform);
|
|
524
411
|
}
|
|
525
|
-
|
|
526
412
|
buildData.push(buildItem);
|
|
527
413
|
}
|
|
528
|
-
|
|
529
414
|
return buildData;
|
|
530
415
|
}
|
|
531
|
-
|
|
532
416
|
function parseModelNode(modelNode) {
|
|
533
|
-
const modelData = {
|
|
534
|
-
|
|
535
|
-
};
|
|
536
|
-
const metadataNodes = modelNode.querySelectorAll('metadata');
|
|
537
|
-
|
|
417
|
+
const modelData = { unit: modelNode.getAttribute("unit") || "millimeter" };
|
|
418
|
+
const metadataNodes = modelNode.querySelectorAll("metadata");
|
|
538
419
|
if (metadataNodes) {
|
|
539
|
-
modelData[
|
|
420
|
+
modelData["metadata"] = parseMetadataNodes(metadataNodes);
|
|
540
421
|
}
|
|
541
|
-
|
|
542
|
-
const resourcesNode = modelNode.querySelector('resources');
|
|
543
|
-
|
|
422
|
+
const resourcesNode = modelNode.querySelector("resources");
|
|
544
423
|
if (resourcesNode) {
|
|
545
|
-
modelData[
|
|
424
|
+
modelData["resources"] = parseResourcesNode(resourcesNode);
|
|
546
425
|
}
|
|
547
|
-
|
|
548
|
-
const buildNode = modelNode.querySelector('build');
|
|
549
|
-
|
|
426
|
+
const buildNode = modelNode.querySelector("build");
|
|
550
427
|
if (buildNode) {
|
|
551
|
-
modelData[
|
|
428
|
+
modelData["build"] = parseBuildNode(buildNode);
|
|
552
429
|
}
|
|
553
|
-
|
|
554
430
|
return modelData;
|
|
555
431
|
}
|
|
556
|
-
|
|
557
|
-
function buildTexture(texture2dgroup, objects, modelData, textureData) {
|
|
432
|
+
function buildTexture(texture2dgroup, objects2, modelData, textureData) {
|
|
558
433
|
const texid = texture2dgroup.texid;
|
|
559
434
|
const texture2ds = modelData.resources.texture2d;
|
|
560
435
|
const texture2d = texture2ds[texid];
|
|
561
|
-
|
|
562
436
|
if (texture2d) {
|
|
563
|
-
const
|
|
437
|
+
const data2 = textureData[texture2d.path];
|
|
564
438
|
const type = texture2d.contenttype;
|
|
565
|
-
const blob = new Blob([
|
|
566
|
-
type: type
|
|
567
|
-
});
|
|
439
|
+
const blob = new Blob([data2], { type });
|
|
568
440
|
const sourceURI = URL.createObjectURL(blob);
|
|
569
|
-
const texture = textureLoader.load(sourceURI, function
|
|
441
|
+
const texture = textureLoader.load(sourceURI, function() {
|
|
570
442
|
URL.revokeObjectURL(sourceURI);
|
|
571
443
|
});
|
|
572
|
-
texture.encoding = sRGBEncoding;
|
|
573
|
-
|
|
444
|
+
texture.encoding = THREE.sRGBEncoding;
|
|
574
445
|
switch (texture2d.tilestyleu) {
|
|
575
|
-
case
|
|
576
|
-
texture.wrapS = RepeatWrapping;
|
|
446
|
+
case "wrap":
|
|
447
|
+
texture.wrapS = THREE.RepeatWrapping;
|
|
577
448
|
break;
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
texture.wrapS = MirroredRepeatWrapping;
|
|
449
|
+
case "mirror":
|
|
450
|
+
texture.wrapS = THREE.MirroredRepeatWrapping;
|
|
581
451
|
break;
|
|
582
|
-
|
|
583
|
-
case
|
|
584
|
-
|
|
585
|
-
texture.wrapS = ClampToEdgeWrapping;
|
|
452
|
+
case "none":
|
|
453
|
+
case "clamp":
|
|
454
|
+
texture.wrapS = THREE.ClampToEdgeWrapping;
|
|
586
455
|
break;
|
|
587
|
-
|
|
588
456
|
default:
|
|
589
|
-
texture.wrapS = RepeatWrapping;
|
|
457
|
+
texture.wrapS = THREE.RepeatWrapping;
|
|
590
458
|
}
|
|
591
|
-
|
|
592
459
|
switch (texture2d.tilestylev) {
|
|
593
|
-
case
|
|
594
|
-
texture.wrapT = RepeatWrapping;
|
|
460
|
+
case "wrap":
|
|
461
|
+
texture.wrapT = THREE.RepeatWrapping;
|
|
595
462
|
break;
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
texture.wrapT = MirroredRepeatWrapping;
|
|
463
|
+
case "mirror":
|
|
464
|
+
texture.wrapT = THREE.MirroredRepeatWrapping;
|
|
599
465
|
break;
|
|
600
|
-
|
|
601
|
-
case
|
|
602
|
-
|
|
603
|
-
texture.wrapT = ClampToEdgeWrapping;
|
|
466
|
+
case "none":
|
|
467
|
+
case "clamp":
|
|
468
|
+
texture.wrapT = THREE.ClampToEdgeWrapping;
|
|
604
469
|
break;
|
|
605
|
-
|
|
606
470
|
default:
|
|
607
|
-
texture.wrapT = RepeatWrapping;
|
|
471
|
+
texture.wrapT = THREE.RepeatWrapping;
|
|
608
472
|
}
|
|
609
|
-
|
|
610
473
|
switch (texture2d.filter) {
|
|
611
|
-
case
|
|
612
|
-
texture.magFilter = LinearFilter;
|
|
613
|
-
texture.minFilter = LinearMipmapLinearFilter;
|
|
474
|
+
case "auto":
|
|
475
|
+
texture.magFilter = THREE.LinearFilter;
|
|
476
|
+
texture.minFilter = THREE.LinearMipmapLinearFilter;
|
|
614
477
|
break;
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
texture.
|
|
618
|
-
texture.minFilter = LinearFilter;
|
|
478
|
+
case "linear":
|
|
479
|
+
texture.magFilter = THREE.LinearFilter;
|
|
480
|
+
texture.minFilter = THREE.LinearFilter;
|
|
619
481
|
break;
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
texture.
|
|
623
|
-
texture.minFilter = NearestFilter;
|
|
482
|
+
case "nearest":
|
|
483
|
+
texture.magFilter = THREE.NearestFilter;
|
|
484
|
+
texture.minFilter = THREE.NearestFilter;
|
|
624
485
|
break;
|
|
625
|
-
|
|
626
486
|
default:
|
|
627
|
-
texture.magFilter = LinearFilter;
|
|
628
|
-
texture.minFilter = LinearMipmapLinearFilter;
|
|
487
|
+
texture.magFilter = THREE.LinearFilter;
|
|
488
|
+
texture.minFilter = THREE.LinearMipmapLinearFilter;
|
|
629
489
|
}
|
|
630
|
-
|
|
631
490
|
return texture;
|
|
632
491
|
} else {
|
|
633
492
|
return null;
|
|
634
493
|
}
|
|
635
494
|
}
|
|
636
|
-
|
|
637
|
-
function buildBasematerialsMeshes(basematerials, triangleProperties, meshData, objects, modelData, textureData, objectData) {
|
|
495
|
+
function buildBasematerialsMeshes(basematerials, triangleProperties, meshData, objects2, modelData, textureData, objectData) {
|
|
638
496
|
const objectPindex = objectData.pindex;
|
|
639
497
|
const materialMap = {};
|
|
640
|
-
|
|
641
498
|
for (let i = 0, l = triangleProperties.length; i < l; i++) {
|
|
642
499
|
const triangleProperty = triangleProperties[i];
|
|
643
|
-
const pindex = triangleProperty.p1 !==
|
|
644
|
-
if (materialMap[pindex] ===
|
|
500
|
+
const pindex = triangleProperty.p1 !== void 0 ? triangleProperty.p1 : objectPindex;
|
|
501
|
+
if (materialMap[pindex] === void 0)
|
|
502
|
+
materialMap[pindex] = [];
|
|
645
503
|
materialMap[pindex].push(triangleProperty);
|
|
646
|
-
}
|
|
647
|
-
|
|
648
|
-
|
|
504
|
+
}
|
|
649
505
|
const keys = Object.keys(materialMap);
|
|
650
506
|
const meshes = [];
|
|
651
|
-
|
|
652
507
|
for (let i = 0, l = keys.length; i < l; i++) {
|
|
653
508
|
const materialIndex = keys[i];
|
|
654
509
|
const trianglePropertiesProps = materialMap[materialIndex];
|
|
655
510
|
const basematerialData = basematerials.basematerials[materialIndex];
|
|
656
|
-
const material = getBuild(basematerialData,
|
|
657
|
-
|
|
658
|
-
const geometry = new BufferGeometry();
|
|
511
|
+
const material = getBuild(basematerialData, objects2, modelData, textureData, objectData, buildBasematerial);
|
|
512
|
+
const geometry = new THREE.BufferGeometry();
|
|
659
513
|
const positionData = [];
|
|
660
514
|
const vertices = meshData.vertices;
|
|
661
|
-
|
|
662
515
|
for (let j = 0, jl = trianglePropertiesProps.length; j < jl; j++) {
|
|
663
516
|
const triangleProperty = trianglePropertiesProps[j];
|
|
664
517
|
positionData.push(vertices[triangleProperty.v1 * 3 + 0]);
|
|
@@ -671,24 +524,18 @@ class ThreeMFLoader extends Loader {
|
|
|
671
524
|
positionData.push(vertices[triangleProperty.v3 * 3 + 1]);
|
|
672
525
|
positionData.push(vertices[triangleProperty.v3 * 3 + 2]);
|
|
673
526
|
}
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
const mesh = new Mesh(geometry, material);
|
|
527
|
+
geometry.setAttribute("position", new THREE.Float32BufferAttribute(positionData, 3));
|
|
528
|
+
const mesh = new THREE.Mesh(geometry, material);
|
|
678
529
|
meshes.push(mesh);
|
|
679
530
|
}
|
|
680
|
-
|
|
681
531
|
return meshes;
|
|
682
532
|
}
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
// geometry
|
|
686
|
-
const geometry = new BufferGeometry();
|
|
533
|
+
function buildTexturedMesh(texture2dgroup, triangleProperties, meshData, objects2, modelData, textureData, objectData) {
|
|
534
|
+
const geometry = new THREE.BufferGeometry();
|
|
687
535
|
const positionData = [];
|
|
688
536
|
const uvData = [];
|
|
689
537
|
const vertices = meshData.vertices;
|
|
690
538
|
const uvs = texture2dgroup.uvs;
|
|
691
|
-
|
|
692
539
|
for (let i = 0, l = triangleProperties.length; i < l; i++) {
|
|
693
540
|
const triangleProperty = triangleProperties[i];
|
|
694
541
|
positionData.push(vertices[triangleProperty.v1 * 3 + 0]);
|
|
@@ -699,8 +546,7 @@ class ThreeMFLoader extends Loader {
|
|
|
699
546
|
positionData.push(vertices[triangleProperty.v2 * 3 + 2]);
|
|
700
547
|
positionData.push(vertices[triangleProperty.v3 * 3 + 0]);
|
|
701
548
|
positionData.push(vertices[triangleProperty.v3 * 3 + 1]);
|
|
702
|
-
positionData.push(vertices[triangleProperty.v3 * 3 + 2]);
|
|
703
|
-
|
|
549
|
+
positionData.push(vertices[triangleProperty.v3 * 3 + 2]);
|
|
704
550
|
uvData.push(uvs[triangleProperty.p1 * 2 + 0]);
|
|
705
551
|
uvData.push(uvs[triangleProperty.p1 * 2 + 1]);
|
|
706
552
|
uvData.push(uvs[triangleProperty.p2 * 2 + 0]);
|
|
@@ -708,28 +554,19 @@ class ThreeMFLoader extends Loader {
|
|
|
708
554
|
uvData.push(uvs[triangleProperty.p3 * 2 + 0]);
|
|
709
555
|
uvData.push(uvs[triangleProperty.p3 * 2 + 1]);
|
|
710
556
|
}
|
|
711
|
-
|
|
712
|
-
geometry.setAttribute(
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
const
|
|
716
|
-
const material = new MeshPhongMaterial({
|
|
717
|
-
map: texture,
|
|
718
|
-
flatShading: true
|
|
719
|
-
}); // mesh
|
|
720
|
-
|
|
721
|
-
const mesh = new Mesh(geometry, material);
|
|
557
|
+
geometry.setAttribute("position", new THREE.Float32BufferAttribute(positionData, 3));
|
|
558
|
+
geometry.setAttribute("uv", new THREE.Float32BufferAttribute(uvData, 2));
|
|
559
|
+
const texture = getBuild(texture2dgroup, objects2, modelData, textureData, objectData, buildTexture);
|
|
560
|
+
const material = new THREE.MeshPhongMaterial({ map: texture, flatShading: true });
|
|
561
|
+
const mesh = new THREE.Mesh(geometry, material);
|
|
722
562
|
return mesh;
|
|
723
563
|
}
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
// geometry
|
|
727
|
-
const geometry = new BufferGeometry();
|
|
564
|
+
function buildVertexColorMesh(colorgroup, triangleProperties, meshData, objects2, modelData, objectData) {
|
|
565
|
+
const geometry = new THREE.BufferGeometry();
|
|
728
566
|
const positionData = [];
|
|
729
567
|
const colorData = [];
|
|
730
568
|
const vertices = meshData.vertices;
|
|
731
569
|
const colors = colorgroup.colors;
|
|
732
|
-
|
|
733
570
|
for (let i = 0, l = triangleProperties.length; i < l; i++) {
|
|
734
571
|
const triangleProperty = triangleProperties[i];
|
|
735
572
|
const v1 = triangleProperty.v1;
|
|
@@ -743,11 +580,10 @@ class ThreeMFLoader extends Loader {
|
|
|
743
580
|
positionData.push(vertices[v2 * 3 + 2]);
|
|
744
581
|
positionData.push(vertices[v3 * 3 + 0]);
|
|
745
582
|
positionData.push(vertices[v3 * 3 + 1]);
|
|
746
|
-
positionData.push(vertices[v3 * 3 + 2]);
|
|
747
|
-
|
|
748
|
-
const
|
|
749
|
-
const
|
|
750
|
-
const p3 = triangleProperty.p3 !== undefined ? triangleProperty.p3 : p1;
|
|
583
|
+
positionData.push(vertices[v3 * 3 + 2]);
|
|
584
|
+
const p1 = triangleProperty.p1 !== void 0 ? triangleProperty.p1 : objectData.pindex;
|
|
585
|
+
const p2 = triangleProperty.p2 !== void 0 ? triangleProperty.p2 : p1;
|
|
586
|
+
const p3 = triangleProperty.p3 !== void 0 ? triangleProperty.p3 : p1;
|
|
751
587
|
colorData.push(colors[p1 * 3 + 0]);
|
|
752
588
|
colorData.push(colors[p1 * 3 + 1]);
|
|
753
589
|
colorData.push(colors[p1 * 3 + 2]);
|
|
@@ -758,295 +594,244 @@ class ThreeMFLoader extends Loader {
|
|
|
758
594
|
colorData.push(colors[p3 * 3 + 1]);
|
|
759
595
|
colorData.push(colors[p3 * 3 + 2]);
|
|
760
596
|
}
|
|
761
|
-
|
|
762
|
-
geometry.setAttribute(
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
const material = new MeshPhongMaterial({
|
|
766
|
-
vertexColors: true,
|
|
767
|
-
flatShading: true
|
|
768
|
-
}); // mesh
|
|
769
|
-
|
|
770
|
-
const mesh = new Mesh(geometry, material);
|
|
597
|
+
geometry.setAttribute("position", new THREE.Float32BufferAttribute(positionData, 3));
|
|
598
|
+
geometry.setAttribute("color", new THREE.Float32BufferAttribute(colorData, 3));
|
|
599
|
+
const material = new THREE.MeshPhongMaterial({ vertexColors: true, flatShading: true });
|
|
600
|
+
const mesh = new THREE.Mesh(geometry, material);
|
|
771
601
|
return mesh;
|
|
772
602
|
}
|
|
773
|
-
|
|
774
603
|
function buildDefaultMesh(meshData) {
|
|
775
|
-
const geometry = new BufferGeometry();
|
|
776
|
-
geometry.setIndex(new BufferAttribute(meshData[
|
|
777
|
-
geometry.setAttribute(
|
|
778
|
-
const material = new MeshPhongMaterial({
|
|
779
|
-
|
|
780
|
-
flatShading: true
|
|
781
|
-
});
|
|
782
|
-
const mesh = new Mesh(geometry, material);
|
|
604
|
+
const geometry = new THREE.BufferGeometry();
|
|
605
|
+
geometry.setIndex(new THREE.BufferAttribute(meshData["triangles"], 1));
|
|
606
|
+
geometry.setAttribute("position", new THREE.BufferAttribute(meshData["vertices"], 3));
|
|
607
|
+
const material = new THREE.MeshPhongMaterial({ color: 11184895, flatShading: true });
|
|
608
|
+
const mesh = new THREE.Mesh(geometry, material);
|
|
783
609
|
return mesh;
|
|
784
610
|
}
|
|
785
|
-
|
|
786
|
-
function buildMeshes(resourceMap, meshData, objects, modelData, textureData, objectData) {
|
|
611
|
+
function buildMeshes(resourceMap, meshData, objects2, modelData, textureData, objectData) {
|
|
787
612
|
const keys = Object.keys(resourceMap);
|
|
788
613
|
const meshes = [];
|
|
789
|
-
|
|
790
614
|
for (let i = 0, il = keys.length; i < il; i++) {
|
|
791
615
|
const resourceId = keys[i];
|
|
792
616
|
const triangleProperties = resourceMap[resourceId];
|
|
793
617
|
const resourceType = getResourceType(resourceId, modelData);
|
|
794
|
-
|
|
795
618
|
switch (resourceType) {
|
|
796
|
-
case
|
|
619
|
+
case "material":
|
|
797
620
|
const basematerials = modelData.resources.basematerials[resourceId];
|
|
798
|
-
const newMeshes = buildBasematerialsMeshes(
|
|
799
|
-
|
|
621
|
+
const newMeshes = buildBasematerialsMeshes(
|
|
622
|
+
basematerials,
|
|
623
|
+
triangleProperties,
|
|
624
|
+
meshData,
|
|
625
|
+
objects2,
|
|
626
|
+
modelData,
|
|
627
|
+
textureData,
|
|
628
|
+
objectData
|
|
629
|
+
);
|
|
800
630
|
for (let j = 0, jl = newMeshes.length; j < jl; j++) {
|
|
801
631
|
meshes.push(newMeshes[j]);
|
|
802
632
|
}
|
|
803
|
-
|
|
804
633
|
break;
|
|
805
|
-
|
|
806
|
-
case 'texture':
|
|
634
|
+
case "texture":
|
|
807
635
|
const texture2dgroup = modelData.resources.texture2dgroup[resourceId];
|
|
808
|
-
meshes.push(
|
|
636
|
+
meshes.push(
|
|
637
|
+
buildTexturedMesh(
|
|
638
|
+
texture2dgroup,
|
|
639
|
+
triangleProperties,
|
|
640
|
+
meshData,
|
|
641
|
+
objects2,
|
|
642
|
+
modelData,
|
|
643
|
+
textureData,
|
|
644
|
+
objectData
|
|
645
|
+
)
|
|
646
|
+
);
|
|
809
647
|
break;
|
|
810
|
-
|
|
811
|
-
case 'vertexColors':
|
|
648
|
+
case "vertexColors":
|
|
812
649
|
const colorgroup = modelData.resources.colorgroup[resourceId];
|
|
813
|
-
meshes.push(buildVertexColorMesh(colorgroup, triangleProperties, meshData,
|
|
650
|
+
meshes.push(buildVertexColorMesh(colorgroup, triangleProperties, meshData, objects2, modelData, objectData));
|
|
814
651
|
break;
|
|
815
|
-
|
|
816
|
-
case 'default':
|
|
652
|
+
case "default":
|
|
817
653
|
meshes.push(buildDefaultMesh(meshData));
|
|
818
654
|
break;
|
|
819
|
-
|
|
820
655
|
default:
|
|
821
|
-
console.error(
|
|
656
|
+
console.error("THREE.3MFLoader: Unsupported resource type.");
|
|
822
657
|
}
|
|
823
658
|
}
|
|
824
|
-
|
|
825
659
|
return meshes;
|
|
826
660
|
}
|
|
827
|
-
|
|
828
661
|
function getResourceType(pid, modelData) {
|
|
829
|
-
if (modelData.resources.texture2dgroup[pid] !==
|
|
830
|
-
return
|
|
831
|
-
} else if (modelData.resources.basematerials[pid] !==
|
|
832
|
-
return
|
|
833
|
-
} else if (modelData.resources.colorgroup[pid] !==
|
|
834
|
-
return
|
|
835
|
-
} else if (pid ===
|
|
836
|
-
return
|
|
662
|
+
if (modelData.resources.texture2dgroup[pid] !== void 0) {
|
|
663
|
+
return "texture";
|
|
664
|
+
} else if (modelData.resources.basematerials[pid] !== void 0) {
|
|
665
|
+
return "material";
|
|
666
|
+
} else if (modelData.resources.colorgroup[pid] !== void 0) {
|
|
667
|
+
return "vertexColors";
|
|
668
|
+
} else if (pid === "default") {
|
|
669
|
+
return "default";
|
|
837
670
|
} else {
|
|
838
|
-
return
|
|
671
|
+
return void 0;
|
|
839
672
|
}
|
|
840
673
|
}
|
|
841
|
-
|
|
842
674
|
function analyzeObject(modelData, meshData, objectData) {
|
|
843
675
|
const resourceMap = {};
|
|
844
|
-
const triangleProperties = meshData[
|
|
676
|
+
const triangleProperties = meshData["triangleProperties"];
|
|
845
677
|
const objectPid = objectData.pid;
|
|
846
|
-
|
|
847
678
|
for (let i = 0, l = triangleProperties.length; i < l; i++) {
|
|
848
679
|
const triangleProperty = triangleProperties[i];
|
|
849
|
-
let pid = triangleProperty.pid !==
|
|
850
|
-
if (pid ===
|
|
851
|
-
|
|
680
|
+
let pid = triangleProperty.pid !== void 0 ? triangleProperty.pid : objectPid;
|
|
681
|
+
if (pid === void 0)
|
|
682
|
+
pid = "default";
|
|
683
|
+
if (resourceMap[pid] === void 0)
|
|
684
|
+
resourceMap[pid] = [];
|
|
852
685
|
resourceMap[pid].push(triangleProperty);
|
|
853
686
|
}
|
|
854
|
-
|
|
855
687
|
return resourceMap;
|
|
856
688
|
}
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
const group = new Group();
|
|
689
|
+
function buildGroup(meshData, objects2, modelData, textureData, objectData) {
|
|
690
|
+
const group = new THREE.Group();
|
|
860
691
|
const resourceMap = analyzeObject(modelData, meshData, objectData);
|
|
861
|
-
const meshes = buildMeshes(resourceMap, meshData,
|
|
862
|
-
|
|
692
|
+
const meshes = buildMeshes(resourceMap, meshData, objects2, modelData, textureData, objectData);
|
|
863
693
|
for (let i = 0, l = meshes.length; i < l; i++) {
|
|
864
694
|
group.add(meshes[i]);
|
|
865
695
|
}
|
|
866
|
-
|
|
867
696
|
return group;
|
|
868
697
|
}
|
|
869
|
-
|
|
870
698
|
function applyExtensions(extensions, meshData, modelXml) {
|
|
871
699
|
if (!extensions) {
|
|
872
700
|
return;
|
|
873
701
|
}
|
|
874
|
-
|
|
875
702
|
const availableExtensions = [];
|
|
876
703
|
const keys = Object.keys(extensions);
|
|
877
|
-
|
|
878
704
|
for (let i = 0; i < keys.length; i++) {
|
|
879
705
|
const ns = keys[i];
|
|
880
|
-
|
|
881
706
|
for (let j = 0; j < scope.availableExtensions.length; j++) {
|
|
882
707
|
const extension = scope.availableExtensions[j];
|
|
883
|
-
|
|
884
708
|
if (extension.ns === ns) {
|
|
885
709
|
availableExtensions.push(extension);
|
|
886
710
|
}
|
|
887
711
|
}
|
|
888
712
|
}
|
|
889
|
-
|
|
890
713
|
for (let i = 0; i < availableExtensions.length; i++) {
|
|
891
714
|
const extension = availableExtensions[i];
|
|
892
|
-
extension.apply(modelXml, extensions[extension[
|
|
715
|
+
extension.apply(modelXml, extensions[extension["ns"]], meshData);
|
|
893
716
|
}
|
|
894
717
|
}
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
return
|
|
718
|
+
function getBuild(data2, objects2, modelData, textureData, objectData, builder) {
|
|
719
|
+
if (data2.build !== void 0)
|
|
720
|
+
return data2.build;
|
|
721
|
+
data2.build = builder(data2, objects2, modelData, textureData, objectData);
|
|
722
|
+
return data2.build;
|
|
900
723
|
}
|
|
901
|
-
|
|
902
|
-
function buildBasematerial(materialData, objects, modelData) {
|
|
724
|
+
function buildBasematerial(materialData, objects2, modelData) {
|
|
903
725
|
let material;
|
|
904
726
|
const displaypropertiesid = materialData.displaypropertiesid;
|
|
905
727
|
const pbmetallicdisplayproperties = modelData.resources.pbmetallicdisplayproperties;
|
|
906
|
-
|
|
907
|
-
if (displaypropertiesid !== null && pbmetallicdisplayproperties[displaypropertiesid] !== undefined) {
|
|
908
|
-
// metallic display property, use StandardMaterial
|
|
728
|
+
if (displaypropertiesid !== null && pbmetallicdisplayproperties[displaypropertiesid] !== void 0) {
|
|
909
729
|
const pbmetallicdisplayproperty = pbmetallicdisplayproperties[displaypropertiesid];
|
|
910
730
|
const metallicData = pbmetallicdisplayproperty.data[materialData.index];
|
|
911
|
-
material = new MeshStandardMaterial({
|
|
731
|
+
material = new THREE.MeshStandardMaterial({
|
|
912
732
|
flatShading: true,
|
|
913
733
|
roughness: metallicData.roughness,
|
|
914
734
|
metalness: metallicData.metallicness
|
|
915
735
|
});
|
|
916
736
|
} else {
|
|
917
|
-
|
|
918
|
-
material = new MeshPhongMaterial({
|
|
919
|
-
flatShading: true
|
|
920
|
-
});
|
|
737
|
+
material = new THREE.MeshPhongMaterial({ flatShading: true });
|
|
921
738
|
}
|
|
922
|
-
|
|
923
|
-
material.name = materialData.name; // displaycolor MUST be specified with a value of a 6 or 8 digit hexadecimal number, e.g. "#RRGGBB" or "#RRGGBBAA"
|
|
924
|
-
|
|
739
|
+
material.name = materialData.name;
|
|
925
740
|
const displaycolor = materialData.displaycolor;
|
|
926
741
|
const color = displaycolor.substring(0, 7);
|
|
927
742
|
material.color.setStyle(color);
|
|
928
|
-
material.color.convertSRGBToLinear();
|
|
929
|
-
// process alpha if set
|
|
930
|
-
|
|
743
|
+
material.color.convertSRGBToLinear();
|
|
931
744
|
if (displaycolor.length === 9) {
|
|
932
745
|
material.opacity = parseInt(displaycolor.charAt(7) + displaycolor.charAt(8), 16) / 255;
|
|
933
746
|
}
|
|
934
|
-
|
|
935
747
|
return material;
|
|
936
748
|
}
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
const composite = new Group();
|
|
940
|
-
|
|
749
|
+
function buildComposite(compositeData, objects2, modelData, textureData) {
|
|
750
|
+
const composite = new THREE.Group();
|
|
941
751
|
for (let j = 0; j < compositeData.length; j++) {
|
|
942
752
|
const component = compositeData[j];
|
|
943
|
-
let
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
build = objects[component.objectId];
|
|
753
|
+
let build2 = objects2[component.objectId];
|
|
754
|
+
if (build2 === void 0) {
|
|
755
|
+
buildObject(component.objectId, objects2, modelData, textureData);
|
|
756
|
+
build2 = objects2[component.objectId];
|
|
948
757
|
}
|
|
949
|
-
|
|
950
|
-
const object3D = build.clone(); // apply component transform
|
|
951
|
-
|
|
758
|
+
const object3D = build2.clone();
|
|
952
759
|
const transform = component.transform;
|
|
953
|
-
|
|
954
760
|
if (transform) {
|
|
955
761
|
object3D.applyMatrix4(transform);
|
|
956
762
|
}
|
|
957
|
-
|
|
958
763
|
composite.add(object3D);
|
|
959
764
|
}
|
|
960
|
-
|
|
961
765
|
return composite;
|
|
962
766
|
}
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
const
|
|
969
|
-
const extensions = modelData['extensions'];
|
|
970
|
-
const modelXml = modelData['xml'];
|
|
767
|
+
function buildObject(objectId, objects2, modelData, textureData) {
|
|
768
|
+
const objectData = modelData["resources"]["object"][objectId];
|
|
769
|
+
if (objectData["mesh"]) {
|
|
770
|
+
const meshData = objectData["mesh"];
|
|
771
|
+
const extensions = modelData["extensions"];
|
|
772
|
+
const modelXml = modelData["xml"];
|
|
971
773
|
applyExtensions(extensions, meshData, modelXml);
|
|
972
|
-
|
|
774
|
+
objects2[objectData.id] = getBuild(meshData, objects2, modelData, textureData, objectData, buildGroup);
|
|
973
775
|
} else {
|
|
974
|
-
const compositeData = objectData[
|
|
975
|
-
|
|
776
|
+
const compositeData = objectData["components"];
|
|
777
|
+
objects2[objectData.id] = getBuild(compositeData, objects2, modelData, textureData, objectData, buildComposite);
|
|
976
778
|
}
|
|
977
779
|
}
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
const
|
|
981
|
-
const
|
|
982
|
-
const objects = {};
|
|
780
|
+
function buildObjects(data3mf2) {
|
|
781
|
+
const modelsData = data3mf2.model;
|
|
782
|
+
const modelRels = data3mf2.modelRels;
|
|
783
|
+
const objects2 = {};
|
|
983
784
|
const modelsKeys = Object.keys(modelsData);
|
|
984
|
-
const textureData = {};
|
|
985
|
-
|
|
785
|
+
const textureData = {};
|
|
986
786
|
if (modelRels) {
|
|
987
787
|
for (let i = 0, l = modelRels.length; i < l; i++) {
|
|
988
788
|
const modelRel = modelRels[i];
|
|
989
789
|
const textureKey = modelRel.target.substring(1);
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
textureData[modelRel.target] = data3mf.texture[textureKey];
|
|
790
|
+
if (data3mf2.texture[textureKey]) {
|
|
791
|
+
textureData[modelRel.target] = data3mf2.texture[textureKey];
|
|
993
792
|
}
|
|
994
793
|
}
|
|
995
|
-
}
|
|
996
|
-
|
|
997
|
-
|
|
794
|
+
}
|
|
998
795
|
for (let i = 0; i < modelsKeys.length; i++) {
|
|
999
796
|
const modelsKey = modelsKeys[i];
|
|
1000
797
|
const modelData = modelsData[modelsKey];
|
|
1001
|
-
const objectIds = Object.keys(modelData[
|
|
1002
|
-
|
|
798
|
+
const objectIds = Object.keys(modelData["resources"]["object"]);
|
|
1003
799
|
for (let j = 0; j < objectIds.length; j++) {
|
|
1004
800
|
const objectId = objectIds[j];
|
|
1005
|
-
buildObject(objectId,
|
|
801
|
+
buildObject(objectId, objects2, modelData, textureData);
|
|
1006
802
|
}
|
|
1007
803
|
}
|
|
1008
|
-
|
|
1009
|
-
return objects;
|
|
804
|
+
return objects2;
|
|
1010
805
|
}
|
|
1011
|
-
|
|
1012
806
|
function fetch3DModelPart(rels) {
|
|
1013
807
|
for (let i = 0; i < rels.length; i++) {
|
|
1014
808
|
const rel = rels[i];
|
|
1015
|
-
const extension = rel.target.split(
|
|
1016
|
-
if (extension.toLowerCase() ===
|
|
809
|
+
const extension = rel.target.split(".").pop();
|
|
810
|
+
if (extension.toLowerCase() === "model")
|
|
811
|
+
return rel;
|
|
1017
812
|
}
|
|
1018
813
|
}
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
const
|
|
1022
|
-
const
|
|
1023
|
-
const buildData = data3mf.model[relationship['target'].substring(1)]['build'];
|
|
1024
|
-
|
|
814
|
+
function build(objects2, data3mf2) {
|
|
815
|
+
const group = new THREE.Group();
|
|
816
|
+
const relationship = fetch3DModelPart(data3mf2["rels"]);
|
|
817
|
+
const buildData = data3mf2.model[relationship["target"].substring(1)]["build"];
|
|
1025
818
|
for (let i = 0; i < buildData.length; i++) {
|
|
1026
819
|
const buildItem = buildData[i];
|
|
1027
|
-
const object3D =
|
|
1028
|
-
|
|
1029
|
-
const transform = buildItem['transform'];
|
|
1030
|
-
|
|
820
|
+
const object3D = objects2[buildItem["objectId"]];
|
|
821
|
+
const transform = buildItem["transform"];
|
|
1031
822
|
if (transform) {
|
|
1032
823
|
object3D.applyMatrix4(transform);
|
|
1033
824
|
}
|
|
1034
|
-
|
|
1035
825
|
group.add(object3D);
|
|
1036
826
|
}
|
|
1037
|
-
|
|
1038
827
|
return group;
|
|
1039
828
|
}
|
|
1040
|
-
|
|
1041
829
|
const data3mf = loadDocument(data);
|
|
1042
830
|
const objects = buildObjects(data3mf);
|
|
1043
831
|
return build(objects, data3mf);
|
|
1044
832
|
}
|
|
1045
|
-
|
|
1046
833
|
addExtension(extension) {
|
|
1047
834
|
this.availableExtensions.push(extension);
|
|
1048
835
|
}
|
|
1049
|
-
|
|
1050
836
|
}
|
|
1051
|
-
|
|
1052
|
-
export { ThreeMFLoader };
|
|
837
|
+
exports.ThreeMFLoader = ThreeMFLoader;
|