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