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/deprecated/Geometry.js
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
const _obj = new
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { Matrix4, Object3D, Vector3, EventDispatcher, MathUtils, Matrix3, Color, Box3, Sphere, BufferGeometry, BufferAttribute, Float32BufferAttribute, Vector2 } from 'three';
|
|
2
|
+
|
|
3
|
+
const _m1 = new Matrix4();
|
|
4
|
+
|
|
5
|
+
const _obj = new Object3D();
|
|
6
|
+
|
|
7
|
+
const _offset = new Vector3();
|
|
8
|
+
|
|
9
|
+
class Geometry extends EventDispatcher {
|
|
8
10
|
constructor() {
|
|
9
11
|
super();
|
|
10
12
|
this.isGeometry = true;
|
|
11
|
-
this.uuid =
|
|
12
|
-
this.name =
|
|
13
|
-
this.type =
|
|
13
|
+
this.uuid = MathUtils.generateUUID();
|
|
14
|
+
this.name = '';
|
|
15
|
+
this.type = 'Geometry';
|
|
14
16
|
this.vertices = [];
|
|
15
17
|
this.colors = [];
|
|
16
18
|
this.faces = [];
|
|
@@ -21,7 +23,8 @@ class Geometry extends THREE.EventDispatcher {
|
|
|
21
23
|
this.skinIndices = [];
|
|
22
24
|
this.lineDistances = [];
|
|
23
25
|
this.boundingBox = null;
|
|
24
|
-
this.boundingSphere = null;
|
|
26
|
+
this.boundingSphere = null; // update flags
|
|
27
|
+
|
|
25
28
|
this.elementsNeedUpdate = false;
|
|
26
29
|
this.verticesNeedUpdate = false;
|
|
27
30
|
this.uvsNeedUpdate = false;
|
|
@@ -30,113 +33,136 @@ class Geometry extends THREE.EventDispatcher {
|
|
|
30
33
|
this.lineDistancesNeedUpdate = false;
|
|
31
34
|
this.groupsNeedUpdate = false;
|
|
32
35
|
}
|
|
36
|
+
|
|
33
37
|
applyMatrix4(matrix) {
|
|
34
|
-
const normalMatrix = new
|
|
38
|
+
const normalMatrix = new Matrix3().getNormalMatrix(matrix);
|
|
39
|
+
|
|
35
40
|
for (let i = 0, il = this.vertices.length; i < il; i++) {
|
|
36
41
|
const vertex = this.vertices[i];
|
|
37
42
|
vertex.applyMatrix4(matrix);
|
|
38
43
|
}
|
|
44
|
+
|
|
39
45
|
for (let i = 0, il = this.faces.length; i < il; i++) {
|
|
40
46
|
const face = this.faces[i];
|
|
41
47
|
face.normal.applyMatrix3(normalMatrix).normalize();
|
|
48
|
+
|
|
42
49
|
for (let j = 0, jl = face.vertexNormals.length; j < jl; j++) {
|
|
43
50
|
face.vertexNormals[j].applyMatrix3(normalMatrix).normalize();
|
|
44
51
|
}
|
|
45
52
|
}
|
|
53
|
+
|
|
46
54
|
if (this.boundingBox !== null) {
|
|
47
55
|
this.computeBoundingBox();
|
|
48
56
|
}
|
|
57
|
+
|
|
49
58
|
if (this.boundingSphere !== null) {
|
|
50
59
|
this.computeBoundingSphere();
|
|
51
60
|
}
|
|
61
|
+
|
|
52
62
|
this.verticesNeedUpdate = true;
|
|
53
63
|
this.normalsNeedUpdate = true;
|
|
54
64
|
return this;
|
|
55
65
|
}
|
|
66
|
+
|
|
56
67
|
rotateX(angle) {
|
|
68
|
+
// rotate geometry around world x-axis
|
|
57
69
|
_m1.makeRotationX(angle);
|
|
70
|
+
|
|
58
71
|
this.applyMatrix4(_m1);
|
|
59
72
|
return this;
|
|
60
73
|
}
|
|
74
|
+
|
|
61
75
|
rotateY(angle) {
|
|
76
|
+
// rotate geometry around world y-axis
|
|
62
77
|
_m1.makeRotationY(angle);
|
|
78
|
+
|
|
63
79
|
this.applyMatrix4(_m1);
|
|
64
80
|
return this;
|
|
65
81
|
}
|
|
82
|
+
|
|
66
83
|
rotateZ(angle) {
|
|
84
|
+
// rotate geometry around world z-axis
|
|
67
85
|
_m1.makeRotationZ(angle);
|
|
86
|
+
|
|
68
87
|
this.applyMatrix4(_m1);
|
|
69
88
|
return this;
|
|
70
89
|
}
|
|
90
|
+
|
|
71
91
|
translate(x, y, z) {
|
|
92
|
+
// translate geometry
|
|
72
93
|
_m1.makeTranslation(x, y, z);
|
|
94
|
+
|
|
73
95
|
this.applyMatrix4(_m1);
|
|
74
96
|
return this;
|
|
75
97
|
}
|
|
98
|
+
|
|
76
99
|
scale(x, y, z) {
|
|
100
|
+
// scale geometry
|
|
77
101
|
_m1.makeScale(x, y, z);
|
|
102
|
+
|
|
78
103
|
this.applyMatrix4(_m1);
|
|
79
104
|
return this;
|
|
80
105
|
}
|
|
106
|
+
|
|
81
107
|
lookAt(vector) {
|
|
82
108
|
_obj.lookAt(vector);
|
|
109
|
+
|
|
83
110
|
_obj.updateMatrix();
|
|
111
|
+
|
|
84
112
|
this.applyMatrix4(_obj.matrix);
|
|
85
113
|
return this;
|
|
86
114
|
}
|
|
115
|
+
|
|
87
116
|
fromBufferGeometry(geometry) {
|
|
88
117
|
const scope = this;
|
|
89
|
-
const index = geometry.index !== null ? geometry.index :
|
|
118
|
+
const index = geometry.index !== null ? geometry.index : undefined;
|
|
90
119
|
const attributes = geometry.attributes;
|
|
91
|
-
|
|
92
|
-
|
|
120
|
+
|
|
121
|
+
if (attributes.position === undefined) {
|
|
122
|
+
console.error('THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.');
|
|
93
123
|
return this;
|
|
94
124
|
}
|
|
125
|
+
|
|
95
126
|
const position = attributes.position;
|
|
96
127
|
const normal = attributes.normal;
|
|
97
128
|
const color = attributes.color;
|
|
98
129
|
const uv = attributes.uv;
|
|
99
130
|
const uv2 = attributes.uv2;
|
|
100
|
-
if (uv2 !==
|
|
101
|
-
|
|
131
|
+
if (uv2 !== undefined) this.faceVertexUvs[1] = [];
|
|
132
|
+
|
|
102
133
|
for (let i = 0; i < position.count; i++) {
|
|
103
|
-
scope.vertices.push(new
|
|
104
|
-
|
|
105
|
-
|
|
134
|
+
scope.vertices.push(new Vector3().fromBufferAttribute(position, i));
|
|
135
|
+
|
|
136
|
+
if (color !== undefined) {
|
|
137
|
+
scope.colors.push(new Color().fromBufferAttribute(color, i));
|
|
106
138
|
}
|
|
107
139
|
}
|
|
140
|
+
|
|
108
141
|
function addFace(a, b, c, materialIndex) {
|
|
109
|
-
const vertexColors = color ===
|
|
110
|
-
const vertexNormals = normal ===
|
|
111
|
-
new THREE.Vector3().fromBufferAttribute(normal, a),
|
|
112
|
-
new THREE.Vector3().fromBufferAttribute(normal, b),
|
|
113
|
-
new THREE.Vector3().fromBufferAttribute(normal, c)
|
|
114
|
-
];
|
|
142
|
+
const vertexColors = color === undefined ? [] : [scope.colors[a].clone(), scope.colors[b].clone(), scope.colors[c].clone()];
|
|
143
|
+
const vertexNormals = normal === undefined ? [] : [new Vector3().fromBufferAttribute(normal, a), new Vector3().fromBufferAttribute(normal, b), new Vector3().fromBufferAttribute(normal, c)];
|
|
115
144
|
const face = new Face3(a, b, c, vertexNormals, vertexColors, materialIndex);
|
|
116
145
|
scope.faces.push(face);
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
new THREE.Vector2().fromBufferAttribute(uv, b),
|
|
121
|
-
new THREE.Vector2().fromBufferAttribute(uv, c)
|
|
122
|
-
]);
|
|
146
|
+
|
|
147
|
+
if (uv !== undefined) {
|
|
148
|
+
scope.faceVertexUvs[0].push([new Vector2().fromBufferAttribute(uv, a), new Vector2().fromBufferAttribute(uv, b), new Vector2().fromBufferAttribute(uv, c)]);
|
|
123
149
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
new THREE.Vector2().fromBufferAttribute(uv2, b),
|
|
128
|
-
new THREE.Vector2().fromBufferAttribute(uv2, c)
|
|
129
|
-
]);
|
|
150
|
+
|
|
151
|
+
if (uv2 !== undefined) {
|
|
152
|
+
scope.faceVertexUvs[1].push([new Vector2().fromBufferAttribute(uv2, a), new Vector2().fromBufferAttribute(uv2, b), new Vector2().fromBufferAttribute(uv2, c)]);
|
|
130
153
|
}
|
|
131
154
|
}
|
|
155
|
+
|
|
132
156
|
const groups = geometry.groups;
|
|
157
|
+
|
|
133
158
|
if (groups.length > 0) {
|
|
134
159
|
for (let i = 0; i < groups.length; i++) {
|
|
135
160
|
const group = groups[i];
|
|
136
161
|
const start = group.start;
|
|
137
162
|
const count = group.count;
|
|
163
|
+
|
|
138
164
|
for (let j = start, jl = start + count; j < jl; j += 3) {
|
|
139
|
-
if (index !==
|
|
165
|
+
if (index !== undefined) {
|
|
140
166
|
addFace(index.getX(j), index.getX(j + 1), index.getX(j + 2), group.materialIndex);
|
|
141
167
|
} else {
|
|
142
168
|
addFace(j, j + 1, j + 2, group.materialIndex);
|
|
@@ -144,7 +170,7 @@ class Geometry extends THREE.EventDispatcher {
|
|
|
144
170
|
}
|
|
145
171
|
}
|
|
146
172
|
} else {
|
|
147
|
-
if (index !==
|
|
173
|
+
if (index !== undefined) {
|
|
148
174
|
for (let i = 0; i < index.count; i += 3) {
|
|
149
175
|
addFace(index.getX(i), index.getX(i + 1), index.getX(i + 2));
|
|
150
176
|
}
|
|
@@ -154,33 +180,42 @@ class Geometry extends THREE.EventDispatcher {
|
|
|
154
180
|
}
|
|
155
181
|
}
|
|
156
182
|
}
|
|
183
|
+
|
|
157
184
|
this.computeFaceNormals();
|
|
185
|
+
|
|
158
186
|
if (geometry.boundingBox !== null) {
|
|
159
187
|
this.boundingBox = geometry.boundingBox.clone();
|
|
160
188
|
}
|
|
189
|
+
|
|
161
190
|
if (geometry.boundingSphere !== null) {
|
|
162
191
|
this.boundingSphere = geometry.boundingSphere.clone();
|
|
163
192
|
}
|
|
193
|
+
|
|
164
194
|
return this;
|
|
165
195
|
}
|
|
196
|
+
|
|
166
197
|
center() {
|
|
167
198
|
this.computeBoundingBox();
|
|
168
199
|
this.boundingBox.getCenter(_offset).negate();
|
|
169
200
|
this.translate(_offset.x, _offset.y, _offset.z);
|
|
170
201
|
return this;
|
|
171
202
|
}
|
|
203
|
+
|
|
172
204
|
normalize() {
|
|
173
205
|
this.computeBoundingSphere();
|
|
174
206
|
const center = this.boundingSphere.center;
|
|
175
207
|
const radius = this.boundingSphere.radius;
|
|
176
|
-
const s = radius === 0 ? 1 : 1 / radius;
|
|
177
|
-
const matrix = new
|
|
208
|
+
const s = radius === 0 ? 1 : 1.0 / radius;
|
|
209
|
+
const matrix = new Matrix4();
|
|
178
210
|
matrix.set(s, 0, 0, -s * center.x, 0, s, 0, -s * center.y, 0, 0, s, -s * center.z, 0, 0, 0, 1);
|
|
179
211
|
this.applyMatrix4(matrix);
|
|
180
212
|
return this;
|
|
181
213
|
}
|
|
214
|
+
|
|
182
215
|
computeFaceNormals() {
|
|
183
|
-
const cb = new
|
|
216
|
+
const cb = new Vector3(),
|
|
217
|
+
ab = new Vector3();
|
|
218
|
+
|
|
184
219
|
for (let f = 0, fl = this.faces.length; f < fl; f++) {
|
|
185
220
|
const face = this.faces[f];
|
|
186
221
|
const vA = this.vertices[face.a];
|
|
@@ -193,13 +228,20 @@ class Geometry extends THREE.EventDispatcher {
|
|
|
193
228
|
face.normal.copy(cb);
|
|
194
229
|
}
|
|
195
230
|
}
|
|
231
|
+
|
|
196
232
|
computeVertexNormals(areaWeighted = true) {
|
|
197
233
|
const vertices = new Array(this.vertices.length);
|
|
234
|
+
|
|
198
235
|
for (let v = 0, vl = this.vertices.length; v < vl; v++) {
|
|
199
|
-
vertices[v] = new
|
|
236
|
+
vertices[v] = new Vector3();
|
|
200
237
|
}
|
|
238
|
+
|
|
201
239
|
if (areaWeighted) {
|
|
202
|
-
|
|
240
|
+
// vertex normals weighted by triangle areas
|
|
241
|
+
// http://www.iquilezles.org/www/articles/normals/normals.htm
|
|
242
|
+
const cb = new Vector3(),
|
|
243
|
+
ab = new Vector3();
|
|
244
|
+
|
|
203
245
|
for (let f = 0, fl = this.faces.length; f < fl; f++) {
|
|
204
246
|
const face = this.faces[f];
|
|
205
247
|
const vA = this.vertices[face.a];
|
|
@@ -214,6 +256,7 @@ class Geometry extends THREE.EventDispatcher {
|
|
|
214
256
|
}
|
|
215
257
|
} else {
|
|
216
258
|
this.computeFaceNormals();
|
|
259
|
+
|
|
217
260
|
for (let f = 0, fl = this.faces.length; f < fl; f++) {
|
|
218
261
|
const face = this.faces[f];
|
|
219
262
|
vertices[face.a].add(face.normal);
|
|
@@ -221,12 +264,15 @@ class Geometry extends THREE.EventDispatcher {
|
|
|
221
264
|
vertices[face.c].add(face.normal);
|
|
222
265
|
}
|
|
223
266
|
}
|
|
267
|
+
|
|
224
268
|
for (let v = 0, vl = this.vertices.length; v < vl; v++) {
|
|
225
269
|
vertices[v].normalize();
|
|
226
270
|
}
|
|
271
|
+
|
|
227
272
|
for (let f = 0, fl = this.faces.length; f < fl; f++) {
|
|
228
273
|
const face = this.faces[f];
|
|
229
274
|
const vertexNormals = face.vertexNormals;
|
|
275
|
+
|
|
230
276
|
if (vertexNormals.length === 3) {
|
|
231
277
|
vertexNormals[0].copy(vertices[face.a]);
|
|
232
278
|
vertexNormals[1].copy(vertices[face.b]);
|
|
@@ -237,15 +283,19 @@ class Geometry extends THREE.EventDispatcher {
|
|
|
237
283
|
vertexNormals[2] = vertices[face.c].clone();
|
|
238
284
|
}
|
|
239
285
|
}
|
|
286
|
+
|
|
240
287
|
if (this.faces.length > 0) {
|
|
241
288
|
this.normalsNeedUpdate = true;
|
|
242
289
|
}
|
|
243
290
|
}
|
|
291
|
+
|
|
244
292
|
computeFlatVertexNormals() {
|
|
245
293
|
this.computeFaceNormals();
|
|
294
|
+
|
|
246
295
|
for (let f = 0, fl = this.faces.length; f < fl; f++) {
|
|
247
296
|
const face = this.faces[f];
|
|
248
297
|
const vertexNormals = face.vertexNormals;
|
|
298
|
+
|
|
249
299
|
if (vertexNormals.length === 3) {
|
|
250
300
|
vertexNormals[0].copy(face.normal);
|
|
251
301
|
vertexNormals[1].copy(face.normal);
|
|
@@ -256,20 +306,27 @@ class Geometry extends THREE.EventDispatcher {
|
|
|
256
306
|
vertexNormals[2] = face.normal.clone();
|
|
257
307
|
}
|
|
258
308
|
}
|
|
309
|
+
|
|
259
310
|
if (this.faces.length > 0) {
|
|
260
311
|
this.normalsNeedUpdate = true;
|
|
261
312
|
}
|
|
262
313
|
}
|
|
314
|
+
|
|
263
315
|
computeMorphNormals() {
|
|
316
|
+
// save original normals
|
|
317
|
+
// - create temp variables on first access
|
|
318
|
+
// otherwise just copy (for faster repeated calls)
|
|
264
319
|
for (let f = 0, fl = this.faces.length; f < fl; f++) {
|
|
265
320
|
const face = this.faces[f];
|
|
321
|
+
|
|
266
322
|
if (!face.__originalFaceNormal) {
|
|
267
323
|
face.__originalFaceNormal = face.normal.clone();
|
|
268
324
|
} else {
|
|
269
325
|
face.__originalFaceNormal.copy(face.normal);
|
|
270
326
|
}
|
|
271
|
-
|
|
272
|
-
|
|
327
|
+
|
|
328
|
+
if (!face.__originalVertexNormals) face.__originalVertexNormals = [];
|
|
329
|
+
|
|
273
330
|
for (let i = 0, il = face.vertexNormals.length; i < il; i++) {
|
|
274
331
|
if (!face.__originalVertexNormals[i]) {
|
|
275
332
|
face.__originalVertexNormals[i] = face.vertexNormals[i].clone();
|
|
@@ -277,31 +334,40 @@ class Geometry extends THREE.EventDispatcher {
|
|
|
277
334
|
face.__originalVertexNormals[i].copy(face.vertexNormals[i]);
|
|
278
335
|
}
|
|
279
336
|
}
|
|
280
|
-
}
|
|
337
|
+
} // use temp geometry to compute face and vertex normals for each morph
|
|
338
|
+
|
|
339
|
+
|
|
281
340
|
const tmpGeo = new Geometry();
|
|
282
341
|
tmpGeo.faces = this.faces;
|
|
342
|
+
|
|
283
343
|
for (let i = 0, il = this.morphTargets.length; i < il; i++) {
|
|
344
|
+
// create on first access
|
|
284
345
|
if (!this.morphNormals[i]) {
|
|
285
346
|
this.morphNormals[i] = {};
|
|
286
347
|
this.morphNormals[i].faceNormals = [];
|
|
287
348
|
this.morphNormals[i].vertexNormals = [];
|
|
288
349
|
const dstNormalsFace = this.morphNormals[i].faceNormals;
|
|
289
350
|
const dstNormalsVertex = this.morphNormals[i].vertexNormals;
|
|
351
|
+
|
|
290
352
|
for (let f = 0, fl = this.faces.length; f < fl; f++) {
|
|
291
|
-
const faceNormal = new
|
|
353
|
+
const faceNormal = new Vector3();
|
|
292
354
|
const vertexNormals = {
|
|
293
|
-
a: new
|
|
294
|
-
b: new
|
|
295
|
-
c: new
|
|
355
|
+
a: new Vector3(),
|
|
356
|
+
b: new Vector3(),
|
|
357
|
+
c: new Vector3()
|
|
296
358
|
};
|
|
297
359
|
dstNormalsFace.push(faceNormal);
|
|
298
360
|
dstNormalsVertex.push(vertexNormals);
|
|
299
361
|
}
|
|
300
362
|
}
|
|
301
|
-
|
|
302
|
-
|
|
363
|
+
|
|
364
|
+
const morphNormals = this.morphNormals[i]; // set vertices to morph target
|
|
365
|
+
|
|
366
|
+
tmpGeo.vertices = this.morphTargets[i].vertices; // compute morph normals
|
|
367
|
+
|
|
303
368
|
tmpGeo.computeFaceNormals();
|
|
304
|
-
tmpGeo.computeVertexNormals();
|
|
369
|
+
tmpGeo.computeVertexNormals(); // store morph normals
|
|
370
|
+
|
|
305
371
|
for (let f = 0, fl = this.faces.length; f < fl; f++) {
|
|
306
372
|
const face = this.faces[f];
|
|
307
373
|
const faceNormal = morphNormals.faceNormals[f];
|
|
@@ -311,113 +377,165 @@ class Geometry extends THREE.EventDispatcher {
|
|
|
311
377
|
vertexNormals.b.copy(face.vertexNormals[1]);
|
|
312
378
|
vertexNormals.c.copy(face.vertexNormals[2]);
|
|
313
379
|
}
|
|
314
|
-
}
|
|
380
|
+
} // restore original normals
|
|
381
|
+
|
|
382
|
+
|
|
315
383
|
for (let f = 0, fl = this.faces.length; f < fl; f++) {
|
|
316
384
|
const face = this.faces[f];
|
|
317
385
|
face.normal = face.__originalFaceNormal;
|
|
318
386
|
face.vertexNormals = face.__originalVertexNormals;
|
|
319
387
|
}
|
|
320
388
|
}
|
|
389
|
+
|
|
321
390
|
computeBoundingBox() {
|
|
322
391
|
if (this.boundingBox === null) {
|
|
323
|
-
this.boundingBox = new
|
|
392
|
+
this.boundingBox = new Box3();
|
|
324
393
|
}
|
|
394
|
+
|
|
325
395
|
this.boundingBox.setFromPoints(this.vertices);
|
|
326
396
|
}
|
|
397
|
+
|
|
327
398
|
computeBoundingSphere() {
|
|
328
399
|
if (this.boundingSphere === null) {
|
|
329
|
-
this.boundingSphere = new
|
|
400
|
+
this.boundingSphere = new Sphere();
|
|
330
401
|
}
|
|
402
|
+
|
|
331
403
|
this.boundingSphere.setFromPoints(this.vertices);
|
|
332
404
|
}
|
|
405
|
+
|
|
333
406
|
merge(geometry, matrix, materialIndexOffset = 0) {
|
|
334
407
|
if (!(geometry && geometry.isGeometry)) {
|
|
335
|
-
console.error(
|
|
408
|
+
console.error('THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry);
|
|
336
409
|
return;
|
|
337
410
|
}
|
|
411
|
+
|
|
338
412
|
let normalMatrix;
|
|
339
|
-
const vertexOffset = this.vertices.length,
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
413
|
+
const vertexOffset = this.vertices.length,
|
|
414
|
+
vertices1 = this.vertices,
|
|
415
|
+
vertices2 = geometry.vertices,
|
|
416
|
+
faces1 = this.faces,
|
|
417
|
+
faces2 = geometry.faces,
|
|
418
|
+
colors1 = this.colors,
|
|
419
|
+
colors2 = geometry.colors;
|
|
420
|
+
|
|
421
|
+
if (matrix !== undefined) {
|
|
422
|
+
normalMatrix = new Matrix3().getNormalMatrix(matrix);
|
|
423
|
+
} // vertices
|
|
424
|
+
|
|
425
|
+
|
|
343
426
|
for (let i = 0, il = vertices2.length; i < il; i++) {
|
|
344
427
|
const vertex = vertices2[i];
|
|
345
428
|
const vertexCopy = vertex.clone();
|
|
346
|
-
if (matrix !==
|
|
347
|
-
vertexCopy.applyMatrix4(matrix);
|
|
429
|
+
if (matrix !== undefined) vertexCopy.applyMatrix4(matrix);
|
|
348
430
|
vertices1.push(vertexCopy);
|
|
349
|
-
}
|
|
431
|
+
} // colors
|
|
432
|
+
|
|
433
|
+
|
|
350
434
|
for (let i = 0, il = colors2.length; i < il; i++) {
|
|
351
435
|
colors1.push(colors2[i].clone());
|
|
352
|
-
}
|
|
436
|
+
} // faces
|
|
437
|
+
|
|
438
|
+
|
|
353
439
|
for (let i = 0, il = faces2.length; i < il; i++) {
|
|
354
440
|
const face = faces2[i];
|
|
355
441
|
let normal, color;
|
|
356
|
-
const faceVertexNormals = face.vertexNormals,
|
|
442
|
+
const faceVertexNormals = face.vertexNormals,
|
|
443
|
+
faceVertexColors = face.vertexColors;
|
|
357
444
|
const faceCopy = new Face3(face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset);
|
|
358
445
|
faceCopy.normal.copy(face.normal);
|
|
359
|
-
|
|
446
|
+
|
|
447
|
+
if (normalMatrix !== undefined) {
|
|
360
448
|
faceCopy.normal.applyMatrix3(normalMatrix).normalize();
|
|
361
449
|
}
|
|
450
|
+
|
|
362
451
|
for (let j = 0, jl = faceVertexNormals.length; j < jl; j++) {
|
|
363
452
|
normal = faceVertexNormals[j].clone();
|
|
364
|
-
|
|
453
|
+
|
|
454
|
+
if (normalMatrix !== undefined) {
|
|
365
455
|
normal.applyMatrix3(normalMatrix).normalize();
|
|
366
456
|
}
|
|
457
|
+
|
|
367
458
|
faceCopy.vertexNormals.push(normal);
|
|
368
459
|
}
|
|
460
|
+
|
|
369
461
|
faceCopy.color.copy(face.color);
|
|
462
|
+
|
|
370
463
|
for (let j = 0, jl = faceVertexColors.length; j < jl; j++) {
|
|
371
464
|
color = faceVertexColors[j];
|
|
372
465
|
faceCopy.vertexColors.push(color.clone());
|
|
373
466
|
}
|
|
467
|
+
|
|
374
468
|
faceCopy.materialIndex = face.materialIndex + materialIndexOffset;
|
|
375
469
|
faces1.push(faceCopy);
|
|
376
|
-
}
|
|
470
|
+
} // uvs
|
|
471
|
+
|
|
472
|
+
|
|
377
473
|
for (let i = 0, il = geometry.faceVertexUvs.length; i < il; i++) {
|
|
378
474
|
const faceVertexUvs2 = geometry.faceVertexUvs[i];
|
|
379
|
-
if (this.faceVertexUvs[i] ===
|
|
380
|
-
|
|
475
|
+
if (this.faceVertexUvs[i] === undefined) this.faceVertexUvs[i] = [];
|
|
476
|
+
|
|
381
477
|
for (let j = 0, jl = faceVertexUvs2.length; j < jl; j++) {
|
|
382
|
-
const uvs2 = faceVertexUvs2[j],
|
|
478
|
+
const uvs2 = faceVertexUvs2[j],
|
|
479
|
+
uvsCopy = [];
|
|
480
|
+
|
|
383
481
|
for (let k = 0, kl = uvs2.length; k < kl; k++) {
|
|
384
482
|
uvsCopy.push(uvs2[k].clone());
|
|
385
483
|
}
|
|
484
|
+
|
|
386
485
|
this.faceVertexUvs[i].push(uvsCopy);
|
|
387
486
|
}
|
|
388
487
|
}
|
|
389
488
|
}
|
|
489
|
+
|
|
390
490
|
mergeMesh(mesh) {
|
|
391
491
|
if (!(mesh && mesh.isMesh)) {
|
|
392
|
-
console.error(
|
|
492
|
+
console.error('THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh);
|
|
393
493
|
return;
|
|
394
494
|
}
|
|
395
|
-
|
|
396
|
-
|
|
495
|
+
|
|
496
|
+
if (mesh.matrixAutoUpdate) mesh.updateMatrix();
|
|
397
497
|
this.merge(mesh.geometry, mesh.matrix);
|
|
398
498
|
}
|
|
499
|
+
/*
|
|
500
|
+
* Checks for duplicate vertices with hashmap.
|
|
501
|
+
* Duplicated vertices are removed
|
|
502
|
+
* and faces' vertices are updated.
|
|
503
|
+
*/
|
|
504
|
+
|
|
505
|
+
|
|
399
506
|
mergeVertices(precisionPoints = 4) {
|
|
400
|
-
const verticesMap = {};
|
|
401
|
-
|
|
507
|
+
const verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)
|
|
508
|
+
|
|
509
|
+
const unique = [],
|
|
510
|
+
changes = [];
|
|
402
511
|
const precision = Math.pow(10, precisionPoints);
|
|
512
|
+
|
|
403
513
|
for (let i = 0, il = this.vertices.length; i < il; i++) {
|
|
404
514
|
const v = this.vertices[i];
|
|
405
515
|
const key = `${Math.round(v.x * precision)}_${Math.round(v.y * precision)}_${Math.round(v.z * precision)}`;
|
|
406
|
-
|
|
516
|
+
|
|
517
|
+
if (verticesMap[key] === undefined) {
|
|
407
518
|
verticesMap[key] = i;
|
|
408
519
|
unique.push(this.vertices[i]);
|
|
409
520
|
changes[i] = unique.length - 1;
|
|
410
521
|
} else {
|
|
522
|
+
//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);
|
|
411
523
|
changes[i] = changes[verticesMap[key]];
|
|
412
524
|
}
|
|
413
|
-
}
|
|
525
|
+
} // if faces are completely degenerate after merging vertices, we
|
|
526
|
+
// have to remove them from the geometry.
|
|
527
|
+
|
|
528
|
+
|
|
414
529
|
const faceIndicesToRemove = [];
|
|
530
|
+
|
|
415
531
|
for (let i = 0, il = this.faces.length; i < il; i++) {
|
|
416
532
|
const face = this.faces[i];
|
|
417
533
|
face.a = changes[face.a];
|
|
418
534
|
face.b = changes[face.b];
|
|
419
535
|
face.c = changes[face.c];
|
|
420
|
-
const indices = [face.a, face.b, face.c];
|
|
536
|
+
const indices = [face.a, face.b, face.c]; // if any duplicate vertices are found in a Face3
|
|
537
|
+
// we have to remove the face as nothing can be saved
|
|
538
|
+
|
|
421
539
|
for (let n = 0; n < 3; n++) {
|
|
422
540
|
if (indices[n] === indices[(n + 1) % 3]) {
|
|
423
541
|
faceIndicesToRemove.push(i);
|
|
@@ -425,79 +543,94 @@ class Geometry extends THREE.EventDispatcher {
|
|
|
425
543
|
}
|
|
426
544
|
}
|
|
427
545
|
}
|
|
546
|
+
|
|
428
547
|
for (let i = faceIndicesToRemove.length - 1; i >= 0; i--) {
|
|
429
548
|
const idx = faceIndicesToRemove[i];
|
|
430
549
|
this.faces.splice(idx, 1);
|
|
550
|
+
|
|
431
551
|
for (let j = 0, jl = this.faceVertexUvs.length; j < jl; j++) {
|
|
432
552
|
this.faceVertexUvs[j].splice(idx, 1);
|
|
433
553
|
}
|
|
434
|
-
}
|
|
554
|
+
} // Use unique set of vertices
|
|
555
|
+
|
|
556
|
+
|
|
435
557
|
const diff = this.vertices.length - unique.length;
|
|
436
558
|
this.vertices = unique;
|
|
437
559
|
return diff;
|
|
438
560
|
}
|
|
561
|
+
|
|
439
562
|
setFromPoints(points) {
|
|
440
563
|
this.vertices = [];
|
|
564
|
+
|
|
441
565
|
for (let i = 0, l = points.length; i < l; i++) {
|
|
442
566
|
const point = points[i];
|
|
443
|
-
this.vertices.push(new
|
|
567
|
+
this.vertices.push(new Vector3(point.x, point.y, point.z || 0));
|
|
444
568
|
}
|
|
569
|
+
|
|
445
570
|
return this;
|
|
446
571
|
}
|
|
572
|
+
|
|
447
573
|
sortFacesByMaterialIndex() {
|
|
448
574
|
const faces = this.faces;
|
|
449
|
-
const length = faces.length;
|
|
575
|
+
const length = faces.length; // tag faces
|
|
576
|
+
|
|
450
577
|
for (let i = 0; i < length; i++) {
|
|
451
578
|
faces[i]._id = i;
|
|
452
|
-
}
|
|
579
|
+
} // sort faces
|
|
580
|
+
|
|
581
|
+
|
|
453
582
|
function materialIndexSort(a, b) {
|
|
454
583
|
return a.materialIndex - b.materialIndex;
|
|
455
584
|
}
|
|
456
|
-
|
|
585
|
+
|
|
586
|
+
faces.sort(materialIndexSort); // sort uvs
|
|
587
|
+
|
|
457
588
|
const uvs1 = this.faceVertexUvs[0];
|
|
458
589
|
const uvs2 = this.faceVertexUvs[1];
|
|
459
590
|
let newUvs1, newUvs2;
|
|
460
|
-
if (uvs1 && uvs1.length === length)
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
newUvs2 = [];
|
|
591
|
+
if (uvs1 && uvs1.length === length) newUvs1 = [];
|
|
592
|
+
if (uvs2 && uvs2.length === length) newUvs2 = [];
|
|
593
|
+
|
|
464
594
|
for (let i = 0; i < length; i++) {
|
|
465
595
|
const id = faces[i]._id;
|
|
466
|
-
if (newUvs1)
|
|
467
|
-
|
|
468
|
-
if (newUvs2)
|
|
469
|
-
newUvs2.push(uvs2[id]);
|
|
596
|
+
if (newUvs1) newUvs1.push(uvs1[id]);
|
|
597
|
+
if (newUvs2) newUvs2.push(uvs2[id]);
|
|
470
598
|
}
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
if (newUvs2)
|
|
474
|
-
this.faceVertexUvs[1] = newUvs2;
|
|
599
|
+
|
|
600
|
+
if (newUvs1) this.faceVertexUvs[0] = newUvs1;
|
|
601
|
+
if (newUvs2) this.faceVertexUvs[1] = newUvs2;
|
|
475
602
|
}
|
|
603
|
+
|
|
476
604
|
toJSON() {
|
|
477
605
|
const data = {
|
|
478
606
|
metadata: {
|
|
479
607
|
version: 4.5,
|
|
480
|
-
type:
|
|
481
|
-
generator:
|
|
608
|
+
type: 'Geometry',
|
|
609
|
+
generator: 'Geometry.toJSON'
|
|
482
610
|
}
|
|
483
|
-
};
|
|
611
|
+
}; // standard Geometry serialization
|
|
612
|
+
|
|
484
613
|
data.uuid = this.uuid;
|
|
485
614
|
data.type = this.type;
|
|
486
|
-
if (this.name !==
|
|
487
|
-
|
|
488
|
-
if (this.parameters !==
|
|
615
|
+
if (this.name !== '') data.name = this.name;
|
|
616
|
+
|
|
617
|
+
if (this.parameters !== undefined) {
|
|
489
618
|
const parameters = this.parameters;
|
|
619
|
+
|
|
490
620
|
for (let key in parameters) {
|
|
491
|
-
if (parameters[key] !==
|
|
492
|
-
data[key] = parameters[key];
|
|
621
|
+
if (parameters[key] !== undefined) data[key] = parameters[key];
|
|
493
622
|
}
|
|
623
|
+
|
|
494
624
|
return data;
|
|
495
625
|
}
|
|
626
|
+
|
|
496
627
|
const vertices = [];
|
|
628
|
+
|
|
497
629
|
for (let i = 0; i < this.vertices.length; i++) {
|
|
498
630
|
const vertex = this.vertices[i];
|
|
499
631
|
vertices.push(vertex.x, vertex.y, vertex.z);
|
|
500
632
|
}
|
|
633
|
+
|
|
501
634
|
const faces = [];
|
|
502
635
|
const normals = [];
|
|
503
636
|
const normalsHash = {};
|
|
@@ -505,17 +638,20 @@ class Geometry extends THREE.EventDispatcher {
|
|
|
505
638
|
const colorsHash = {};
|
|
506
639
|
const uvs = [];
|
|
507
640
|
const uvsHash = {};
|
|
641
|
+
|
|
508
642
|
for (let i = 0; i < this.faces.length; i++) {
|
|
509
643
|
const face = this.faces[i];
|
|
510
644
|
const hasMaterial = true;
|
|
511
|
-
const hasFaceUv = false;
|
|
512
|
-
|
|
645
|
+
const hasFaceUv = false; // deprecated
|
|
646
|
+
|
|
647
|
+
const hasFaceVertexUv = this.faceVertexUvs[0][i] !== undefined;
|
|
513
648
|
const hasFaceNormal = face.normal.length() > 0;
|
|
514
649
|
const hasFaceVertexNormal = face.vertexNormals.length > 0;
|
|
515
650
|
const hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;
|
|
516
651
|
const hasFaceVertexColor = face.vertexColors.length > 0;
|
|
517
652
|
let faceType = 0;
|
|
518
|
-
faceType = setBit(faceType, 0, 0);
|
|
653
|
+
faceType = setBit(faceType, 0, 0); // isQuad
|
|
654
|
+
|
|
519
655
|
faceType = setBit(faceType, 1, hasMaterial);
|
|
520
656
|
faceType = setBit(faceType, 2, hasFaceUv);
|
|
521
657
|
faceType = setBit(faceType, 3, hasFaceVertexUv);
|
|
@@ -526,69 +662,101 @@ class Geometry extends THREE.EventDispatcher {
|
|
|
526
662
|
faces.push(faceType);
|
|
527
663
|
faces.push(face.a, face.b, face.c);
|
|
528
664
|
faces.push(face.materialIndex);
|
|
665
|
+
|
|
529
666
|
if (hasFaceVertexUv) {
|
|
530
667
|
const faceVertexUvs = this.faceVertexUvs[0][i];
|
|
531
668
|
faces.push(getUvIndex(faceVertexUvs[0]), getUvIndex(faceVertexUvs[1]), getUvIndex(faceVertexUvs[2]));
|
|
532
669
|
}
|
|
670
|
+
|
|
533
671
|
if (hasFaceNormal) {
|
|
534
672
|
faces.push(getNormalIndex(face.normal));
|
|
535
673
|
}
|
|
674
|
+
|
|
536
675
|
if (hasFaceVertexNormal) {
|
|
537
676
|
const vertexNormals = face.vertexNormals;
|
|
538
677
|
faces.push(getNormalIndex(vertexNormals[0]), getNormalIndex(vertexNormals[1]), getNormalIndex(vertexNormals[2]));
|
|
539
678
|
}
|
|
679
|
+
|
|
540
680
|
if (hasFaceColor) {
|
|
541
681
|
faces.push(getColorIndex(face.color));
|
|
542
682
|
}
|
|
683
|
+
|
|
543
684
|
if (hasFaceVertexColor) {
|
|
544
685
|
const vertexColors = face.vertexColors;
|
|
545
686
|
faces.push(getColorIndex(vertexColors[0]), getColorIndex(vertexColors[1]), getColorIndex(vertexColors[2]));
|
|
546
687
|
}
|
|
547
688
|
}
|
|
689
|
+
|
|
548
690
|
function setBit(value, position, enabled) {
|
|
549
691
|
return enabled ? value | 1 << position : value & ~(1 << position);
|
|
550
692
|
}
|
|
693
|
+
|
|
551
694
|
function getNormalIndex(normal) {
|
|
552
695
|
const hash = normal.x.toString() + normal.y.toString() + normal.z.toString();
|
|
553
|
-
|
|
696
|
+
|
|
697
|
+
if (normalsHash[hash] !== undefined) {
|
|
554
698
|
return normalsHash[hash];
|
|
555
699
|
}
|
|
700
|
+
|
|
556
701
|
normalsHash[hash] = normals.length / 3;
|
|
557
702
|
normals.push(normal.x, normal.y, normal.z);
|
|
558
703
|
return normalsHash[hash];
|
|
559
704
|
}
|
|
705
|
+
|
|
560
706
|
function getColorIndex(color) {
|
|
561
707
|
const hash = color.r.toString() + color.g.toString() + color.b.toString();
|
|
562
|
-
|
|
708
|
+
|
|
709
|
+
if (colorsHash[hash] !== undefined) {
|
|
563
710
|
return colorsHash[hash];
|
|
564
711
|
}
|
|
712
|
+
|
|
565
713
|
colorsHash[hash] = colors.length;
|
|
566
714
|
colors.push(color.getHex());
|
|
567
715
|
return colorsHash[hash];
|
|
568
716
|
}
|
|
717
|
+
|
|
569
718
|
function getUvIndex(uv) {
|
|
570
719
|
const hash = uv.x.toString() + uv.y.toString();
|
|
571
|
-
|
|
720
|
+
|
|
721
|
+
if (uvsHash[hash] !== undefined) {
|
|
572
722
|
return uvsHash[hash];
|
|
573
723
|
}
|
|
724
|
+
|
|
574
725
|
uvsHash[hash] = uvs.length / 2;
|
|
575
726
|
uvs.push(uv.x, uv.y);
|
|
576
727
|
return uvsHash[hash];
|
|
577
728
|
}
|
|
729
|
+
|
|
578
730
|
data.data = {};
|
|
579
731
|
data.data.vertices = vertices;
|
|
580
732
|
data.data.normals = normals;
|
|
581
|
-
if (colors.length > 0)
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
data.data.uvs = [uvs];
|
|
733
|
+
if (colors.length > 0) data.data.colors = colors;
|
|
734
|
+
if (uvs.length > 0) data.data.uvs = [uvs]; // temporal backward compatibility
|
|
735
|
+
|
|
585
736
|
data.data.faces = faces;
|
|
586
737
|
return data;
|
|
587
738
|
}
|
|
739
|
+
|
|
588
740
|
clone() {
|
|
741
|
+
/*
|
|
742
|
+
// Handle primitives
|
|
743
|
+
const parameters = this.parameters;
|
|
744
|
+
if ( parameters !== undefined ) {
|
|
745
|
+
const values = [];
|
|
746
|
+
for ( const key in parameters ) {
|
|
747
|
+
values.push( parameters[ key ] );
|
|
748
|
+
}
|
|
749
|
+
const geometry = Object.create( this.constructor.prototype );
|
|
750
|
+
this.constructor.apply( geometry, values );
|
|
751
|
+
return geometry;
|
|
752
|
+
}
|
|
753
|
+
return new this.constructor().copy( this );
|
|
754
|
+
*/
|
|
589
755
|
return new Geometry().copy(this);
|
|
590
756
|
}
|
|
757
|
+
|
|
591
758
|
copy(source) {
|
|
759
|
+
// reset
|
|
592
760
|
this.vertices = [];
|
|
593
761
|
this.colors = [];
|
|
594
762
|
this.faces = [];
|
|
@@ -599,57 +767,87 @@ class Geometry extends THREE.EventDispatcher {
|
|
|
599
767
|
this.skinIndices = [];
|
|
600
768
|
this.lineDistances = [];
|
|
601
769
|
this.boundingBox = null;
|
|
602
|
-
this.boundingSphere = null;
|
|
603
|
-
|
|
770
|
+
this.boundingSphere = null; // name
|
|
771
|
+
|
|
772
|
+
this.name = source.name; // vertices
|
|
773
|
+
|
|
604
774
|
const vertices = source.vertices;
|
|
775
|
+
|
|
605
776
|
for (let i = 0, il = vertices.length; i < il; i++) {
|
|
606
777
|
this.vertices.push(vertices[i].clone());
|
|
607
|
-
}
|
|
778
|
+
} // colors
|
|
779
|
+
|
|
780
|
+
|
|
608
781
|
const colors = source.colors;
|
|
782
|
+
|
|
609
783
|
for (let i = 0, il = colors.length; i < il; i++) {
|
|
610
784
|
this.colors.push(colors[i].clone());
|
|
611
|
-
}
|
|
785
|
+
} // faces
|
|
786
|
+
|
|
787
|
+
|
|
612
788
|
const faces = source.faces;
|
|
789
|
+
|
|
613
790
|
for (let i = 0, il = faces.length; i < il; i++) {
|
|
614
791
|
this.faces.push(faces[i].clone());
|
|
615
|
-
}
|
|
792
|
+
} // face vertex uvs
|
|
793
|
+
|
|
794
|
+
|
|
616
795
|
for (let i = 0, il = source.faceVertexUvs.length; i < il; i++) {
|
|
617
796
|
const faceVertexUvs = source.faceVertexUvs[i];
|
|
618
|
-
|
|
797
|
+
|
|
798
|
+
if (this.faceVertexUvs[i] === undefined) {
|
|
619
799
|
this.faceVertexUvs[i] = [];
|
|
620
800
|
}
|
|
801
|
+
|
|
621
802
|
for (let j = 0, jl = faceVertexUvs.length; j < jl; j++) {
|
|
622
|
-
const uvs = faceVertexUvs[j],
|
|
803
|
+
const uvs = faceVertexUvs[j],
|
|
804
|
+
uvsCopy = [];
|
|
805
|
+
|
|
623
806
|
for (let k = 0, kl = uvs.length; k < kl; k++) {
|
|
624
807
|
const uv = uvs[k];
|
|
625
808
|
uvsCopy.push(uv.clone());
|
|
626
809
|
}
|
|
810
|
+
|
|
627
811
|
this.faceVertexUvs[i].push(uvsCopy);
|
|
628
812
|
}
|
|
629
|
-
}
|
|
813
|
+
} // morph targets
|
|
814
|
+
|
|
815
|
+
|
|
630
816
|
const morphTargets = source.morphTargets;
|
|
817
|
+
|
|
631
818
|
for (let i = 0, il = morphTargets.length; i < il; i++) {
|
|
632
819
|
const morphTarget = {};
|
|
633
|
-
morphTarget.name = morphTargets[i].name;
|
|
634
|
-
|
|
820
|
+
morphTarget.name = morphTargets[i].name; // vertices
|
|
821
|
+
|
|
822
|
+
if (morphTargets[i].vertices !== undefined) {
|
|
635
823
|
morphTarget.vertices = [];
|
|
824
|
+
|
|
636
825
|
for (let j = 0, jl = morphTargets[i].vertices.length; j < jl; j++) {
|
|
637
826
|
morphTarget.vertices.push(morphTargets[i].vertices[j].clone());
|
|
638
827
|
}
|
|
639
|
-
}
|
|
640
|
-
|
|
828
|
+
} // normals
|
|
829
|
+
|
|
830
|
+
|
|
831
|
+
if (morphTargets[i].normals !== undefined) {
|
|
641
832
|
morphTarget.normals = [];
|
|
833
|
+
|
|
642
834
|
for (let j = 0, jl = morphTargets[i].normals.length; j < jl; j++) {
|
|
643
835
|
morphTarget.normals.push(morphTargets[i].normals[j].clone());
|
|
644
836
|
}
|
|
645
837
|
}
|
|
838
|
+
|
|
646
839
|
this.morphTargets.push(morphTarget);
|
|
647
|
-
}
|
|
840
|
+
} // morph normals
|
|
841
|
+
|
|
842
|
+
|
|
648
843
|
const morphNormals = source.morphNormals;
|
|
844
|
+
|
|
649
845
|
for (let i = 0, il = morphNormals.length; i < il; i++) {
|
|
650
|
-
const morphNormal = {};
|
|
651
|
-
|
|
846
|
+
const morphNormal = {}; // vertex normals
|
|
847
|
+
|
|
848
|
+
if (morphNormals[i].vertexNormals !== undefined) {
|
|
652
849
|
morphNormal.vertexNormals = [];
|
|
850
|
+
|
|
653
851
|
for (let j = 0, jl = morphNormals[i].vertexNormals.length; j < jl; j++) {
|
|
654
852
|
const srcVertexNormal = morphNormals[i].vertexNormals[j];
|
|
655
853
|
const destVertexNormal = {};
|
|
@@ -658,35 +856,56 @@ class Geometry extends THREE.EventDispatcher {
|
|
|
658
856
|
destVertexNormal.c = srcVertexNormal.c.clone();
|
|
659
857
|
morphNormal.vertexNormals.push(destVertexNormal);
|
|
660
858
|
}
|
|
661
|
-
}
|
|
662
|
-
|
|
859
|
+
} // face normals
|
|
860
|
+
|
|
861
|
+
|
|
862
|
+
if (morphNormals[i].faceNormals !== undefined) {
|
|
663
863
|
morphNormal.faceNormals = [];
|
|
864
|
+
|
|
664
865
|
for (let j = 0, jl = morphNormals[i].faceNormals.length; j < jl; j++) {
|
|
665
866
|
morphNormal.faceNormals.push(morphNormals[i].faceNormals[j].clone());
|
|
666
867
|
}
|
|
667
868
|
}
|
|
869
|
+
|
|
668
870
|
this.morphNormals.push(morphNormal);
|
|
669
|
-
}
|
|
871
|
+
} // skin weights
|
|
872
|
+
|
|
873
|
+
|
|
670
874
|
const skinWeights = source.skinWeights;
|
|
875
|
+
|
|
671
876
|
for (let i = 0, il = skinWeights.length; i < il; i++) {
|
|
672
877
|
this.skinWeights.push(skinWeights[i].clone());
|
|
673
|
-
}
|
|
878
|
+
} // skin indices
|
|
879
|
+
|
|
880
|
+
|
|
674
881
|
const skinIndices = source.skinIndices;
|
|
882
|
+
|
|
675
883
|
for (let i = 0, il = skinIndices.length; i < il; i++) {
|
|
676
884
|
this.skinIndices.push(skinIndices[i].clone());
|
|
677
|
-
}
|
|
885
|
+
} // line distances
|
|
886
|
+
|
|
887
|
+
|
|
678
888
|
const lineDistances = source.lineDistances;
|
|
889
|
+
|
|
679
890
|
for (let i = 0, il = lineDistances.length; i < il; i++) {
|
|
680
891
|
this.lineDistances.push(lineDistances[i]);
|
|
681
|
-
}
|
|
892
|
+
} // bounding box
|
|
893
|
+
|
|
894
|
+
|
|
682
895
|
const boundingBox = source.boundingBox;
|
|
896
|
+
|
|
683
897
|
if (boundingBox !== null) {
|
|
684
898
|
this.boundingBox = boundingBox.clone();
|
|
685
|
-
}
|
|
899
|
+
} // bounding sphere
|
|
900
|
+
|
|
901
|
+
|
|
686
902
|
const boundingSphere = source.boundingSphere;
|
|
903
|
+
|
|
687
904
|
if (boundingSphere !== null) {
|
|
688
905
|
this.boundingSphere = boundingSphere.clone();
|
|
689
|
-
}
|
|
906
|
+
} // update flags
|
|
907
|
+
|
|
908
|
+
|
|
690
909
|
this.elementsNeedUpdate = source.elementsNeedUpdate;
|
|
691
910
|
this.verticesNeedUpdate = source.verticesNeedUpdate;
|
|
692
911
|
this.uvsNeedUpdate = source.uvsNeedUpdate;
|
|
@@ -696,94 +915,123 @@ class Geometry extends THREE.EventDispatcher {
|
|
|
696
915
|
this.groupsNeedUpdate = source.groupsNeedUpdate;
|
|
697
916
|
return this;
|
|
698
917
|
}
|
|
918
|
+
|
|
699
919
|
toBufferGeometry() {
|
|
700
920
|
const geometry = new DirectGeometry().fromGeometry(this);
|
|
701
|
-
const buffergeometry = new
|
|
921
|
+
const buffergeometry = new BufferGeometry();
|
|
702
922
|
const positions = new Float32Array(geometry.vertices.length * 3);
|
|
703
|
-
buffergeometry.setAttribute(
|
|
923
|
+
buffergeometry.setAttribute('position', new BufferAttribute(positions, 3).copyVector3sArray(geometry.vertices));
|
|
924
|
+
|
|
704
925
|
if (geometry.normals.length > 0) {
|
|
705
926
|
const normals = new Float32Array(geometry.normals.length * 3);
|
|
706
|
-
buffergeometry.setAttribute(
|
|
927
|
+
buffergeometry.setAttribute('normal', new BufferAttribute(normals, 3).copyVector3sArray(geometry.normals));
|
|
707
928
|
}
|
|
929
|
+
|
|
708
930
|
if (geometry.colors.length > 0) {
|
|
709
931
|
const colors = new Float32Array(geometry.colors.length * 3);
|
|
710
|
-
buffergeometry.setAttribute(
|
|
932
|
+
buffergeometry.setAttribute('color', new BufferAttribute(colors, 3).copyColorsArray(geometry.colors));
|
|
711
933
|
}
|
|
934
|
+
|
|
712
935
|
if (geometry.uvs.length > 0) {
|
|
713
936
|
const uvs = new Float32Array(geometry.uvs.length * 2);
|
|
714
|
-
buffergeometry.setAttribute(
|
|
937
|
+
buffergeometry.setAttribute('uv', new BufferAttribute(uvs, 2).copyVector2sArray(geometry.uvs));
|
|
715
938
|
}
|
|
939
|
+
|
|
716
940
|
if (geometry.uvs2.length > 0) {
|
|
717
941
|
const uvs2 = new Float32Array(geometry.uvs2.length * 2);
|
|
718
|
-
buffergeometry.setAttribute(
|
|
719
|
-
}
|
|
720
|
-
|
|
942
|
+
buffergeometry.setAttribute('uv2', new BufferAttribute(uvs2, 2).copyVector2sArray(geometry.uvs2));
|
|
943
|
+
} // groups
|
|
944
|
+
|
|
945
|
+
|
|
946
|
+
buffergeometry.groups = geometry.groups; // morphs
|
|
947
|
+
|
|
721
948
|
for (let name in geometry.morphTargets) {
|
|
722
949
|
const array = [];
|
|
723
950
|
const morphTargets = geometry.morphTargets[name];
|
|
951
|
+
|
|
724
952
|
for (let i = 0, l = morphTargets.length; i < l; i++) {
|
|
725
953
|
const morphTarget = morphTargets[i];
|
|
726
|
-
const attribute = new
|
|
954
|
+
const attribute = new Float32BufferAttribute(morphTarget.data.length * 3, 3);
|
|
727
955
|
attribute.name = morphTarget.name;
|
|
728
956
|
array.push(attribute.copyVector3sArray(morphTarget.data));
|
|
729
957
|
}
|
|
958
|
+
|
|
730
959
|
buffergeometry.morphAttributes[name] = array;
|
|
731
|
-
}
|
|
960
|
+
} // skinning
|
|
961
|
+
|
|
962
|
+
|
|
732
963
|
if (geometry.skinIndices.length > 0) {
|
|
733
|
-
const skinIndices = new
|
|
734
|
-
buffergeometry.setAttribute(
|
|
964
|
+
const skinIndices = new Float32BufferAttribute(geometry.skinIndices.length * 4, 4);
|
|
965
|
+
buffergeometry.setAttribute('skinIndex', skinIndices.copyVector4sArray(geometry.skinIndices));
|
|
735
966
|
}
|
|
967
|
+
|
|
736
968
|
if (geometry.skinWeights.length > 0) {
|
|
737
|
-
const skinWeights = new
|
|
738
|
-
buffergeometry.setAttribute(
|
|
739
|
-
}
|
|
969
|
+
const skinWeights = new Float32BufferAttribute(geometry.skinWeights.length * 4, 4);
|
|
970
|
+
buffergeometry.setAttribute('skinWeight', skinWeights.copyVector4sArray(geometry.skinWeights));
|
|
971
|
+
} //
|
|
972
|
+
|
|
973
|
+
|
|
740
974
|
if (geometry.boundingSphere !== null) {
|
|
741
975
|
buffergeometry.boundingSphere = geometry.boundingSphere.clone();
|
|
742
976
|
}
|
|
977
|
+
|
|
743
978
|
if (geometry.boundingBox !== null) {
|
|
744
979
|
buffergeometry.boundingBox = geometry.boundingBox.clone();
|
|
745
980
|
}
|
|
981
|
+
|
|
746
982
|
return buffergeometry;
|
|
747
983
|
}
|
|
984
|
+
|
|
748
985
|
computeTangents() {
|
|
749
|
-
console.error(
|
|
986
|
+
console.error('THREE.Geometry: .computeTangents() has been removed.');
|
|
750
987
|
}
|
|
988
|
+
|
|
751
989
|
computeLineDistances() {
|
|
752
|
-
console.error(
|
|
753
|
-
"THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead."
|
|
754
|
-
);
|
|
990
|
+
console.error('THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.');
|
|
755
991
|
}
|
|
992
|
+
|
|
756
993
|
applyMatrix(matrix) {
|
|
757
|
-
console.warn(
|
|
994
|
+
console.warn('THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4().');
|
|
758
995
|
return this.applyMatrix4(matrix);
|
|
759
996
|
}
|
|
997
|
+
|
|
760
998
|
dispose() {
|
|
761
|
-
this.dispatchEvent({
|
|
999
|
+
this.dispatchEvent({
|
|
1000
|
+
type: 'dispose'
|
|
1001
|
+
});
|
|
762
1002
|
}
|
|
1003
|
+
|
|
763
1004
|
}
|
|
764
|
-
|
|
765
|
-
|
|
1005
|
+
|
|
1006
|
+
Geometry.createBufferGeometryFromObject = object => {
|
|
1007
|
+
let buffergeometry = new BufferGeometry();
|
|
766
1008
|
const geometry = object.geometry;
|
|
1009
|
+
|
|
767
1010
|
if (object.isPoints || object.isLine) {
|
|
768
|
-
const positions = new
|
|
769
|
-
const colors = new
|
|
770
|
-
buffergeometry.setAttribute(
|
|
771
|
-
buffergeometry.setAttribute(
|
|
1011
|
+
const positions = new Float32BufferAttribute(geometry.vertices.length * 3, 3);
|
|
1012
|
+
const colors = new Float32BufferAttribute(geometry.colors.length * 3, 3);
|
|
1013
|
+
buffergeometry.setAttribute('position', positions.copyVector3sArray(geometry.vertices));
|
|
1014
|
+
buffergeometry.setAttribute('color', colors.copyColorsArray(geometry.colors));
|
|
1015
|
+
|
|
772
1016
|
if (geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length) {
|
|
773
|
-
const lineDistances = new
|
|
774
|
-
buffergeometry.setAttribute(
|
|
1017
|
+
const lineDistances = new Float32BufferAttribute(geometry.lineDistances.length, 1);
|
|
1018
|
+
buffergeometry.setAttribute('lineDistance', lineDistances.copyArray(geometry.lineDistances));
|
|
775
1019
|
}
|
|
1020
|
+
|
|
776
1021
|
if (geometry.boundingSphere !== null) {
|
|
777
1022
|
buffergeometry.boundingSphere = geometry.boundingSphere.clone();
|
|
778
1023
|
}
|
|
1024
|
+
|
|
779
1025
|
if (geometry.boundingBox !== null) {
|
|
780
1026
|
buffergeometry.boundingBox = geometry.boundingBox.clone();
|
|
781
1027
|
}
|
|
782
1028
|
} else if (object.isMesh) {
|
|
783
1029
|
buffergeometry = geometry.toBufferGeometry();
|
|
784
1030
|
}
|
|
1031
|
+
|
|
785
1032
|
return buffergeometry;
|
|
786
1033
|
};
|
|
1034
|
+
|
|
787
1035
|
class DirectGeometry {
|
|
788
1036
|
constructor() {
|
|
789
1037
|
this.vertices = [];
|
|
@@ -794,158 +1042,201 @@ class DirectGeometry {
|
|
|
794
1042
|
this.groups = [];
|
|
795
1043
|
this.morphTargets = {};
|
|
796
1044
|
this.skinWeights = [];
|
|
797
|
-
this.skinIndices = [];
|
|
1045
|
+
this.skinIndices = []; // this.lineDistances = [];
|
|
1046
|
+
|
|
798
1047
|
this.boundingBox = null;
|
|
799
|
-
this.boundingSphere = null;
|
|
1048
|
+
this.boundingSphere = null; // update flags
|
|
1049
|
+
|
|
800
1050
|
this.verticesNeedUpdate = false;
|
|
801
1051
|
this.normalsNeedUpdate = false;
|
|
802
1052
|
this.colorsNeedUpdate = false;
|
|
803
1053
|
this.uvsNeedUpdate = false;
|
|
804
1054
|
this.groupsNeedUpdate = false;
|
|
805
1055
|
}
|
|
1056
|
+
|
|
806
1057
|
computeGroups(geometry) {
|
|
807
1058
|
const groups = [];
|
|
808
1059
|
let group, i;
|
|
809
|
-
let materialIndex =
|
|
1060
|
+
let materialIndex = undefined;
|
|
810
1061
|
const faces = geometry.faces;
|
|
1062
|
+
|
|
811
1063
|
for (i = 0; i < faces.length; i++) {
|
|
812
|
-
const face = faces[i];
|
|
1064
|
+
const face = faces[i]; // materials
|
|
1065
|
+
|
|
813
1066
|
if (face.materialIndex !== materialIndex) {
|
|
814
1067
|
materialIndex = face.materialIndex;
|
|
815
|
-
|
|
1068
|
+
|
|
1069
|
+
if (group !== undefined) {
|
|
816
1070
|
group.count = i * 3 - group.start;
|
|
817
1071
|
groups.push(group);
|
|
818
1072
|
}
|
|
1073
|
+
|
|
819
1074
|
group = {
|
|
820
1075
|
start: i * 3,
|
|
821
1076
|
materialIndex
|
|
822
1077
|
};
|
|
823
1078
|
}
|
|
824
1079
|
}
|
|
825
|
-
|
|
1080
|
+
|
|
1081
|
+
if (group !== undefined) {
|
|
826
1082
|
group.count = i * 3 - group.start;
|
|
827
1083
|
groups.push(group);
|
|
828
1084
|
}
|
|
1085
|
+
|
|
829
1086
|
this.groups = groups;
|
|
830
1087
|
}
|
|
1088
|
+
|
|
831
1089
|
fromGeometry(geometry) {
|
|
832
1090
|
const faces = geometry.faces;
|
|
833
1091
|
const vertices = geometry.vertices;
|
|
834
1092
|
const faceVertexUvs = geometry.faceVertexUvs;
|
|
835
1093
|
const hasFaceVertexUv = faceVertexUvs[0] && faceVertexUvs[0].length > 0;
|
|
836
|
-
const hasFaceVertexUv2 = faceVertexUvs[1] && faceVertexUvs[1].length > 0;
|
|
1094
|
+
const hasFaceVertexUv2 = faceVertexUvs[1] && faceVertexUvs[1].length > 0; // morphs
|
|
1095
|
+
|
|
837
1096
|
const morphTargets = geometry.morphTargets;
|
|
838
1097
|
const morphTargetsLength = morphTargets.length;
|
|
839
1098
|
let morphTargetsPosition;
|
|
1099
|
+
|
|
840
1100
|
if (morphTargetsLength > 0) {
|
|
841
1101
|
morphTargetsPosition = [];
|
|
1102
|
+
|
|
842
1103
|
for (let i = 0; i < morphTargetsLength; i++) {
|
|
843
1104
|
morphTargetsPosition[i] = {
|
|
844
1105
|
name: morphTargets[i].name,
|
|
845
1106
|
data: []
|
|
846
1107
|
};
|
|
847
1108
|
}
|
|
1109
|
+
|
|
848
1110
|
this.morphTargets.position = morphTargetsPosition;
|
|
849
1111
|
}
|
|
1112
|
+
|
|
850
1113
|
const morphNormals = geometry.morphNormals;
|
|
851
1114
|
const morphNormalsLength = morphNormals.length;
|
|
852
1115
|
let morphTargetsNormal;
|
|
1116
|
+
|
|
853
1117
|
if (morphNormalsLength > 0) {
|
|
854
1118
|
morphTargetsNormal = [];
|
|
1119
|
+
|
|
855
1120
|
for (let i = 0; i < morphNormalsLength; i++) {
|
|
856
1121
|
morphTargetsNormal[i] = {
|
|
857
1122
|
name: morphNormals[i].name,
|
|
858
1123
|
data: []
|
|
859
1124
|
};
|
|
860
1125
|
}
|
|
1126
|
+
|
|
861
1127
|
this.morphTargets.normal = morphTargetsNormal;
|
|
862
|
-
}
|
|
1128
|
+
} // skins
|
|
1129
|
+
|
|
1130
|
+
|
|
863
1131
|
const skinIndices = geometry.skinIndices;
|
|
864
1132
|
const skinWeights = geometry.skinWeights;
|
|
865
1133
|
const hasSkinIndices = skinIndices.length === vertices.length;
|
|
866
|
-
const hasSkinWeights = skinWeights.length === vertices.length;
|
|
1134
|
+
const hasSkinWeights = skinWeights.length === vertices.length; //
|
|
1135
|
+
|
|
867
1136
|
if (vertices.length > 0 && faces.length === 0) {
|
|
868
|
-
console.error(
|
|
1137
|
+
console.error('THREE.DirectGeometry: Faceless geometries are not supported.');
|
|
869
1138
|
}
|
|
1139
|
+
|
|
870
1140
|
for (let i = 0; i < faces.length; i++) {
|
|
871
1141
|
const face = faces[i];
|
|
872
1142
|
this.vertices.push(vertices[face.a], vertices[face.b], vertices[face.c]);
|
|
873
1143
|
const vertexNormals = face.vertexNormals;
|
|
1144
|
+
|
|
874
1145
|
if (vertexNormals.length === 3) {
|
|
875
1146
|
this.normals.push(vertexNormals[0], vertexNormals[1], vertexNormals[2]);
|
|
876
1147
|
} else {
|
|
877
1148
|
const normal = face.normal;
|
|
878
1149
|
this.normals.push(normal, normal, normal);
|
|
879
1150
|
}
|
|
1151
|
+
|
|
880
1152
|
const vertexColors = face.vertexColors;
|
|
1153
|
+
|
|
881
1154
|
if (vertexColors.length === 3) {
|
|
882
1155
|
this.colors.push(vertexColors[0], vertexColors[1], vertexColors[2]);
|
|
883
1156
|
} else {
|
|
884
1157
|
const color = face.color;
|
|
885
1158
|
this.colors.push(color, color, color);
|
|
886
1159
|
}
|
|
1160
|
+
|
|
887
1161
|
if (hasFaceVertexUv === true) {
|
|
888
1162
|
const vertexUvs = faceVertexUvs[0][i];
|
|
889
|
-
|
|
1163
|
+
|
|
1164
|
+
if (vertexUvs !== undefined) {
|
|
890
1165
|
this.uvs.push(vertexUvs[0], vertexUvs[1], vertexUvs[2]);
|
|
891
1166
|
} else {
|
|
892
|
-
console.warn(
|
|
893
|
-
this.uvs.push(new
|
|
1167
|
+
console.warn('THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i);
|
|
1168
|
+
this.uvs.push(new Vector2(), new Vector2(), new Vector2());
|
|
894
1169
|
}
|
|
895
1170
|
}
|
|
1171
|
+
|
|
896
1172
|
if (hasFaceVertexUv2 === true) {
|
|
897
1173
|
const vertexUvs = faceVertexUvs[1][i];
|
|
898
|
-
|
|
1174
|
+
|
|
1175
|
+
if (vertexUvs !== undefined) {
|
|
899
1176
|
this.uvs2.push(vertexUvs[0], vertexUvs[1], vertexUvs[2]);
|
|
900
1177
|
} else {
|
|
901
|
-
console.warn(
|
|
902
|
-
this.uvs2.push(new
|
|
1178
|
+
console.warn('THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i);
|
|
1179
|
+
this.uvs2.push(new Vector2(), new Vector2(), new Vector2());
|
|
903
1180
|
}
|
|
904
|
-
}
|
|
1181
|
+
} // morphs
|
|
1182
|
+
|
|
1183
|
+
|
|
905
1184
|
for (let j = 0; j < morphTargetsLength; j++) {
|
|
906
1185
|
const morphTarget = morphTargets[j].vertices;
|
|
907
1186
|
morphTargetsPosition[j].data.push(morphTarget[face.a], morphTarget[face.b], morphTarget[face.c]);
|
|
908
1187
|
}
|
|
1188
|
+
|
|
909
1189
|
for (let j = 0; j < morphNormalsLength; j++) {
|
|
910
1190
|
const morphNormal = morphNormals[j].vertexNormals[i];
|
|
911
1191
|
morphTargetsNormal[j].data.push(morphNormal.a, morphNormal.b, morphNormal.c);
|
|
912
|
-
}
|
|
1192
|
+
} // skins
|
|
1193
|
+
|
|
1194
|
+
|
|
913
1195
|
if (hasSkinIndices) {
|
|
914
1196
|
this.skinIndices.push(skinIndices[face.a], skinIndices[face.b], skinIndices[face.c]);
|
|
915
1197
|
}
|
|
1198
|
+
|
|
916
1199
|
if (hasSkinWeights) {
|
|
917
1200
|
this.skinWeights.push(skinWeights[face.a], skinWeights[face.b], skinWeights[face.c]);
|
|
918
1201
|
}
|
|
919
1202
|
}
|
|
1203
|
+
|
|
920
1204
|
this.computeGroups(geometry);
|
|
921
1205
|
this.verticesNeedUpdate = geometry.verticesNeedUpdate;
|
|
922
1206
|
this.normalsNeedUpdate = geometry.normalsNeedUpdate;
|
|
923
1207
|
this.colorsNeedUpdate = geometry.colorsNeedUpdate;
|
|
924
1208
|
this.uvsNeedUpdate = geometry.uvsNeedUpdate;
|
|
925
1209
|
this.groupsNeedUpdate = geometry.groupsNeedUpdate;
|
|
1210
|
+
|
|
926
1211
|
if (geometry.boundingSphere !== null) {
|
|
927
1212
|
this.boundingSphere = geometry.boundingSphere.clone();
|
|
928
1213
|
}
|
|
1214
|
+
|
|
929
1215
|
if (geometry.boundingBox !== null) {
|
|
930
1216
|
this.boundingBox = geometry.boundingBox.clone();
|
|
931
1217
|
}
|
|
1218
|
+
|
|
932
1219
|
return this;
|
|
933
1220
|
}
|
|
1221
|
+
|
|
934
1222
|
}
|
|
1223
|
+
|
|
935
1224
|
class Face3 {
|
|
936
1225
|
constructor(a, b, c, normal, color, materialIndex = 0) {
|
|
937
1226
|
this.a = a;
|
|
938
1227
|
this.b = b;
|
|
939
1228
|
this.c = c;
|
|
940
|
-
this.normal = normal && normal.isVector3 ? normal : new
|
|
1229
|
+
this.normal = normal && normal.isVector3 ? normal : new Vector3();
|
|
941
1230
|
this.vertexNormals = Array.isArray(normal) ? normal : [];
|
|
942
|
-
this.color = color && color.isColor ? color : new
|
|
1231
|
+
this.color = color && color.isColor ? color : new Color();
|
|
943
1232
|
this.vertexColors = Array.isArray(color) ? color : [];
|
|
944
1233
|
this.materialIndex = materialIndex;
|
|
945
1234
|
}
|
|
1235
|
+
|
|
946
1236
|
clone() {
|
|
947
1237
|
return new this.constructor().copy(this);
|
|
948
1238
|
}
|
|
1239
|
+
|
|
949
1240
|
copy(source) {
|
|
950
1241
|
this.a = source.a;
|
|
951
1242
|
this.b = source.b;
|
|
@@ -953,14 +1244,18 @@ class Face3 {
|
|
|
953
1244
|
this.normal.copy(source.normal);
|
|
954
1245
|
this.color.copy(source.color);
|
|
955
1246
|
this.materialIndex = source.materialIndex;
|
|
1247
|
+
|
|
956
1248
|
for (let i = 0, il = source.vertexNormals.length; i < il; i++) {
|
|
957
1249
|
this.vertexNormals[i] = source.vertexNormals[i].clone();
|
|
958
1250
|
}
|
|
1251
|
+
|
|
959
1252
|
for (let i = 0, il = source.vertexColors.length; i < il; i++) {
|
|
960
1253
|
this.vertexColors[i] = source.vertexColors[i].clone();
|
|
961
1254
|
}
|
|
1255
|
+
|
|
962
1256
|
return this;
|
|
963
1257
|
}
|
|
1258
|
+
|
|
964
1259
|
}
|
|
965
|
-
|
|
966
|
-
|
|
1260
|
+
|
|
1261
|
+
export { Face3, Geometry };
|