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/math/ConvexHull.js
CHANGED
|
@@ -1,46 +1,75 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { Vector3, Line3, Plane, Triangle } from 'three';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Ported from: https://github.com/maurizzzio/quickhull3d/ by Mauricio Poppe (https://github.com/maurizzzio)
|
|
5
|
+
*/
|
|
6
|
+
|
|
4
7
|
const Visible = 0;
|
|
5
8
|
const Deleted = 1;
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
9
|
+
|
|
10
|
+
const _v1 = new Vector3();
|
|
11
|
+
|
|
12
|
+
const _line3 = new Line3();
|
|
13
|
+
|
|
14
|
+
const _plane = new Plane();
|
|
15
|
+
|
|
16
|
+
const _closestPoint = new Vector3();
|
|
17
|
+
|
|
18
|
+
const _triangle = new Triangle();
|
|
19
|
+
|
|
11
20
|
class ConvexHull {
|
|
12
21
|
constructor() {
|
|
13
22
|
this.tolerance = -1;
|
|
14
|
-
this.faces = [];
|
|
15
|
-
|
|
23
|
+
this.faces = []; // the generated faces of the convex hull
|
|
24
|
+
|
|
25
|
+
this.newFaces = []; // this array holds the faces that are generated within a single iteration
|
|
26
|
+
// the vertex lists work as follows:
|
|
27
|
+
//
|
|
28
|
+
// let 'a' and 'b' be 'Face' instances
|
|
29
|
+
// let 'v' be points wrapped as instance of 'Vertex'
|
|
30
|
+
//
|
|
31
|
+
// [v, v, ..., v, v, v, ...]
|
|
32
|
+
// ^ ^
|
|
33
|
+
// | |
|
|
34
|
+
// a.outside b.outside
|
|
35
|
+
//
|
|
36
|
+
|
|
16
37
|
this.assigned = new VertexList();
|
|
17
38
|
this.unassigned = new VertexList();
|
|
18
|
-
this.vertices = [];
|
|
39
|
+
this.vertices = []; // vertices of the hull (internal representation of given geometry data)
|
|
19
40
|
}
|
|
41
|
+
|
|
20
42
|
setFromPoints(points) {
|
|
43
|
+
// The algorithm needs at least four points.
|
|
21
44
|
if (points.length >= 4) {
|
|
22
45
|
this.makeEmpty();
|
|
46
|
+
|
|
23
47
|
for (let i = 0, l = points.length; i < l; i++) {
|
|
24
48
|
this.vertices.push(new VertexNode(points[i]));
|
|
25
49
|
}
|
|
50
|
+
|
|
26
51
|
this.compute();
|
|
27
52
|
}
|
|
53
|
+
|
|
28
54
|
return this;
|
|
29
55
|
}
|
|
56
|
+
|
|
30
57
|
setFromObject(object) {
|
|
31
58
|
const points = [];
|
|
32
59
|
object.updateMatrixWorld(true);
|
|
33
|
-
object.traverse(function(node) {
|
|
60
|
+
object.traverse(function (node) {
|
|
34
61
|
const geometry = node.geometry;
|
|
35
|
-
|
|
62
|
+
|
|
63
|
+
if (geometry !== undefined) {
|
|
36
64
|
if (geometry.isGeometry) {
|
|
37
|
-
console.error(
|
|
65
|
+
console.error('THREE.ConvexHull no longer supports Geometry. Use THREE.BufferGeometry instead.');
|
|
38
66
|
return;
|
|
39
67
|
} else if (geometry.isBufferGeometry) {
|
|
40
68
|
const attribute = geometry.attributes.position;
|
|
41
|
-
|
|
69
|
+
|
|
70
|
+
if (attribute !== undefined) {
|
|
42
71
|
for (let i = 0, l = attribute.count; i < l; i++) {
|
|
43
|
-
const point = new
|
|
72
|
+
const point = new Vector3();
|
|
44
73
|
point.fromBufferAttribute(attribute, i).applyMatrix4(node.matrixWorld);
|
|
45
74
|
points.push(point);
|
|
46
75
|
}
|
|
@@ -50,392 +79,577 @@ class ConvexHull {
|
|
|
50
79
|
});
|
|
51
80
|
return this.setFromPoints(points);
|
|
52
81
|
}
|
|
82
|
+
|
|
53
83
|
containsPoint(point) {
|
|
54
84
|
const faces = this.faces;
|
|
85
|
+
|
|
55
86
|
for (let i = 0, l = faces.length; i < l; i++) {
|
|
56
|
-
const face = faces[i];
|
|
57
|
-
|
|
58
|
-
|
|
87
|
+
const face = faces[i]; // compute signed distance and check on what half space the point lies
|
|
88
|
+
|
|
89
|
+
if (face.distanceToPoint(point) > this.tolerance) return false;
|
|
59
90
|
}
|
|
91
|
+
|
|
60
92
|
return true;
|
|
61
93
|
}
|
|
94
|
+
|
|
62
95
|
intersectRay(ray, target) {
|
|
96
|
+
// based on "Fast Ray-Convex Polyhedron Intersection" by Eric Haines, GRAPHICS GEMS II
|
|
63
97
|
const faces = this.faces;
|
|
64
98
|
let tNear = -Infinity;
|
|
65
99
|
let tFar = Infinity;
|
|
100
|
+
|
|
66
101
|
for (let i = 0, l = faces.length; i < l; i++) {
|
|
67
|
-
const face = faces[i];
|
|
102
|
+
const face = faces[i]; // interpret faces as planes for the further computation
|
|
103
|
+
|
|
68
104
|
const vN = face.distanceToPoint(ray.origin);
|
|
69
|
-
const vD = face.normal.dot(ray.direction);
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
105
|
+
const vD = face.normal.dot(ray.direction); // if the origin is on the positive side of a plane (so the plane can "see" the origin) and
|
|
106
|
+
// the ray is turned away or parallel to the plane, there is no intersection
|
|
107
|
+
|
|
108
|
+
if (vN > 0 && vD >= 0) return null; // compute the distance from the ray’s origin to the intersection with the plane
|
|
109
|
+
|
|
110
|
+
const t = vD !== 0 ? -vN / vD : 0; // only proceed if the distance is positive. a negative distance means the intersection point
|
|
111
|
+
// lies "behind" the origin
|
|
112
|
+
|
|
113
|
+
if (t <= 0) continue; // now categorized plane as front-facing or back-facing
|
|
114
|
+
|
|
75
115
|
if (vD > 0) {
|
|
116
|
+
// plane faces away from the ray, so this plane is a back-face
|
|
76
117
|
tFar = Math.min(t, tFar);
|
|
77
118
|
} else {
|
|
119
|
+
// front-face
|
|
78
120
|
tNear = Math.max(t, tNear);
|
|
79
121
|
}
|
|
122
|
+
|
|
80
123
|
if (tNear > tFar) {
|
|
124
|
+
// if tNear ever is greater than tFar, the ray must miss the convex hull
|
|
81
125
|
return null;
|
|
82
126
|
}
|
|
83
|
-
}
|
|
127
|
+
} // evaluate intersection point
|
|
128
|
+
// always try tNear first since its the closer intersection point
|
|
129
|
+
|
|
130
|
+
|
|
84
131
|
if (tNear !== -Infinity) {
|
|
85
132
|
ray.at(tNear, target);
|
|
86
133
|
} else {
|
|
87
134
|
ray.at(tFar, target);
|
|
88
135
|
}
|
|
136
|
+
|
|
89
137
|
return target;
|
|
90
138
|
}
|
|
139
|
+
|
|
91
140
|
intersectsRay(ray) {
|
|
92
141
|
return this.intersectRay(ray, _v1) !== null;
|
|
93
142
|
}
|
|
143
|
+
|
|
94
144
|
makeEmpty() {
|
|
95
145
|
this.faces = [];
|
|
96
146
|
this.vertices = [];
|
|
97
147
|
return this;
|
|
98
|
-
}
|
|
148
|
+
} // Adds a vertex to the 'assigned' list of vertices and assigns it to the given face
|
|
149
|
+
|
|
150
|
+
|
|
99
151
|
addVertexToFace(vertex, face) {
|
|
100
152
|
vertex.face = face;
|
|
153
|
+
|
|
101
154
|
if (face.outside === null) {
|
|
102
155
|
this.assigned.append(vertex);
|
|
103
156
|
} else {
|
|
104
157
|
this.assigned.insertBefore(face.outside, vertex);
|
|
105
158
|
}
|
|
159
|
+
|
|
106
160
|
face.outside = vertex;
|
|
107
161
|
return this;
|
|
108
|
-
}
|
|
162
|
+
} // Removes a vertex from the 'assigned' list of vertices and from the given face
|
|
163
|
+
|
|
164
|
+
|
|
109
165
|
removeVertexFromFace(vertex, face) {
|
|
110
166
|
if (vertex === face.outside) {
|
|
167
|
+
// fix face.outside link
|
|
111
168
|
if (vertex.next !== null && vertex.next.face === face) {
|
|
169
|
+
// face has at least 2 outside vertices, move the 'outside' reference
|
|
112
170
|
face.outside = vertex.next;
|
|
113
171
|
} else {
|
|
172
|
+
// vertex was the only outside vertex that face had
|
|
114
173
|
face.outside = null;
|
|
115
174
|
}
|
|
116
175
|
}
|
|
176
|
+
|
|
117
177
|
this.assigned.remove(vertex);
|
|
118
178
|
return this;
|
|
119
|
-
}
|
|
179
|
+
} // Removes all the visible vertices that a given face is able to see which are stored in the 'assigned' vertext list
|
|
180
|
+
|
|
181
|
+
|
|
120
182
|
removeAllVerticesFromFace(face) {
|
|
121
183
|
if (face.outside !== null) {
|
|
184
|
+
// reference to the first and last vertex of this face
|
|
122
185
|
const start = face.outside;
|
|
123
186
|
let end = face.outside;
|
|
187
|
+
|
|
124
188
|
while (end.next !== null && end.next.face === face) {
|
|
125
189
|
end = end.next;
|
|
126
190
|
}
|
|
127
|
-
|
|
191
|
+
|
|
192
|
+
this.assigned.removeSubList(start, end); // fix references
|
|
193
|
+
|
|
128
194
|
start.prev = end.next = null;
|
|
129
195
|
face.outside = null;
|
|
130
196
|
return start;
|
|
131
197
|
}
|
|
132
|
-
}
|
|
198
|
+
} // Removes all the visible vertices that 'face' is able to see
|
|
199
|
+
|
|
200
|
+
|
|
133
201
|
deleteFaceVertices(face, absorbingFace) {
|
|
134
202
|
const faceVertices = this.removeAllVerticesFromFace(face);
|
|
135
|
-
|
|
136
|
-
|
|
203
|
+
|
|
204
|
+
if (faceVertices !== undefined) {
|
|
205
|
+
if (absorbingFace === undefined) {
|
|
206
|
+
// mark the vertices to be reassigned to some other face
|
|
137
207
|
this.unassigned.appendChain(faceVertices);
|
|
138
208
|
} else {
|
|
209
|
+
// if there's an absorbing face try to assign as many vertices as possible to it
|
|
139
210
|
let vertex = faceVertices;
|
|
211
|
+
|
|
140
212
|
do {
|
|
213
|
+
// we need to buffer the subsequent vertex at this point because the 'vertex.next' reference
|
|
214
|
+
// will be changed by upcoming method calls
|
|
141
215
|
const nextVertex = vertex.next;
|
|
142
|
-
const distance = absorbingFace.distanceToPoint(vertex.point);
|
|
216
|
+
const distance = absorbingFace.distanceToPoint(vertex.point); // check if 'vertex' is able to see 'absorbingFace'
|
|
217
|
+
|
|
143
218
|
if (distance > this.tolerance) {
|
|
144
219
|
this.addVertexToFace(vertex, absorbingFace);
|
|
145
220
|
} else {
|
|
146
221
|
this.unassigned.append(vertex);
|
|
147
|
-
}
|
|
222
|
+
} // now assign next vertex
|
|
223
|
+
|
|
224
|
+
|
|
148
225
|
vertex = nextVertex;
|
|
149
226
|
} while (vertex !== null);
|
|
150
227
|
}
|
|
151
228
|
}
|
|
229
|
+
|
|
152
230
|
return this;
|
|
153
|
-
}
|
|
231
|
+
} // Reassigns as many vertices as possible from the unassigned list to the new faces
|
|
232
|
+
|
|
233
|
+
|
|
154
234
|
resolveUnassignedPoints(newFaces) {
|
|
155
235
|
if (this.unassigned.isEmpty() === false) {
|
|
156
236
|
let vertex = this.unassigned.first();
|
|
237
|
+
|
|
157
238
|
do {
|
|
239
|
+
// buffer 'next' reference, see .deleteFaceVertices()
|
|
158
240
|
const nextVertex = vertex.next;
|
|
159
241
|
let maxDistance = this.tolerance;
|
|
160
242
|
let maxFace = null;
|
|
243
|
+
|
|
161
244
|
for (let i = 0; i < newFaces.length; i++) {
|
|
162
245
|
const face = newFaces[i];
|
|
246
|
+
|
|
163
247
|
if (face.mark === Visible) {
|
|
164
248
|
const distance = face.distanceToPoint(vertex.point);
|
|
249
|
+
|
|
165
250
|
if (distance > maxDistance) {
|
|
166
251
|
maxDistance = distance;
|
|
167
252
|
maxFace = face;
|
|
168
253
|
}
|
|
169
|
-
|
|
170
|
-
|
|
254
|
+
|
|
255
|
+
if (maxDistance > 1000 * this.tolerance) break;
|
|
171
256
|
}
|
|
172
|
-
}
|
|
257
|
+
} // 'maxFace' can be null e.g. if there are identical vertices
|
|
258
|
+
|
|
259
|
+
|
|
173
260
|
if (maxFace !== null) {
|
|
174
261
|
this.addVertexToFace(vertex, maxFace);
|
|
175
262
|
}
|
|
263
|
+
|
|
176
264
|
vertex = nextVertex;
|
|
177
265
|
} while (vertex !== null);
|
|
178
266
|
}
|
|
267
|
+
|
|
179
268
|
return this;
|
|
180
|
-
}
|
|
269
|
+
} // Computes the extremes of a simplex which will be the initial hull
|
|
270
|
+
|
|
271
|
+
|
|
181
272
|
computeExtremes() {
|
|
182
|
-
const min = new
|
|
183
|
-
const max = new
|
|
273
|
+
const min = new Vector3();
|
|
274
|
+
const max = new Vector3();
|
|
184
275
|
const minVertices = [];
|
|
185
|
-
const maxVertices = [];
|
|
276
|
+
const maxVertices = []; // initially assume that the first vertex is the min/max
|
|
277
|
+
|
|
186
278
|
for (let i = 0; i < 3; i++) {
|
|
187
279
|
minVertices[i] = maxVertices[i] = this.vertices[0];
|
|
188
280
|
}
|
|
281
|
+
|
|
189
282
|
min.copy(this.vertices[0].point);
|
|
190
|
-
max.copy(this.vertices[0].point);
|
|
283
|
+
max.copy(this.vertices[0].point); // compute the min/max vertex on all six directions
|
|
284
|
+
|
|
191
285
|
for (let i = 0, l = this.vertices.length; i < l; i++) {
|
|
192
286
|
const vertex = this.vertices[i];
|
|
193
|
-
const point = vertex.point;
|
|
287
|
+
const point = vertex.point; // update the min coordinates
|
|
288
|
+
|
|
194
289
|
for (let j = 0; j < 3; j++) {
|
|
195
290
|
if (point.getComponent(j) < min.getComponent(j)) {
|
|
196
291
|
min.setComponent(j, point.getComponent(j));
|
|
197
292
|
minVertices[j] = vertex;
|
|
198
293
|
}
|
|
199
|
-
}
|
|
294
|
+
} // update the max coordinates
|
|
295
|
+
|
|
296
|
+
|
|
200
297
|
for (let j = 0; j < 3; j++) {
|
|
201
298
|
if (point.getComponent(j) > max.getComponent(j)) {
|
|
202
299
|
max.setComponent(j, point.getComponent(j));
|
|
203
300
|
maxVertices[j] = vertex;
|
|
204
301
|
}
|
|
205
302
|
}
|
|
206
|
-
}
|
|
303
|
+
} // use min/max vectors to compute an optimal epsilon
|
|
304
|
+
|
|
305
|
+
|
|
207
306
|
this.tolerance = 3 * Number.EPSILON * (Math.max(Math.abs(min.x), Math.abs(max.x)) + Math.max(Math.abs(min.y), Math.abs(max.y)) + Math.max(Math.abs(min.z), Math.abs(max.z)));
|
|
208
|
-
return {
|
|
209
|
-
|
|
307
|
+
return {
|
|
308
|
+
min: minVertices,
|
|
309
|
+
max: maxVertices
|
|
310
|
+
};
|
|
311
|
+
} // Computes the initial simplex assigning to its faces all the points
|
|
312
|
+
// that are candidates to form part of the hull
|
|
313
|
+
|
|
314
|
+
|
|
210
315
|
computeInitialHull() {
|
|
211
316
|
const vertices = this.vertices;
|
|
212
317
|
const extremes = this.computeExtremes();
|
|
213
318
|
const min = extremes.min;
|
|
214
|
-
const max = extremes.max;
|
|
319
|
+
const max = extremes.max; // 1. Find the two vertices 'v0' and 'v1' with the greatest 1d separation
|
|
320
|
+
// (max.x - min.x)
|
|
321
|
+
// (max.y - min.y)
|
|
322
|
+
// (max.z - min.z)
|
|
323
|
+
|
|
215
324
|
let maxDistance = 0;
|
|
216
325
|
let index = 0;
|
|
326
|
+
|
|
217
327
|
for (let i = 0; i < 3; i++) {
|
|
218
328
|
const distance = max[i].point.getComponent(i) - min[i].point.getComponent(i);
|
|
329
|
+
|
|
219
330
|
if (distance > maxDistance) {
|
|
220
331
|
maxDistance = distance;
|
|
221
332
|
index = i;
|
|
222
333
|
}
|
|
223
334
|
}
|
|
335
|
+
|
|
224
336
|
const v0 = min[index];
|
|
225
337
|
const v1 = max[index];
|
|
226
338
|
let v2;
|
|
227
|
-
let v3;
|
|
339
|
+
let v3; // 2. The next vertex 'v2' is the one farthest to the line formed by 'v0' and 'v1'
|
|
340
|
+
|
|
228
341
|
maxDistance = 0;
|
|
342
|
+
|
|
229
343
|
_line3.set(v0.point, v1.point);
|
|
344
|
+
|
|
230
345
|
for (let i = 0, l = this.vertices.length; i < l; i++) {
|
|
231
346
|
const vertex = vertices[i];
|
|
347
|
+
|
|
232
348
|
if (vertex !== v0 && vertex !== v1) {
|
|
233
349
|
_line3.closestPointToPoint(vertex.point, true, _closestPoint);
|
|
350
|
+
|
|
234
351
|
const distance = _closestPoint.distanceToSquared(vertex.point);
|
|
352
|
+
|
|
235
353
|
if (distance > maxDistance) {
|
|
236
354
|
maxDistance = distance;
|
|
237
355
|
v2 = vertex;
|
|
238
356
|
}
|
|
239
357
|
}
|
|
240
|
-
}
|
|
358
|
+
} // 3. The next vertex 'v3' is the one farthest to the plane 'v0', 'v1', 'v2'
|
|
359
|
+
|
|
360
|
+
|
|
241
361
|
maxDistance = -1;
|
|
362
|
+
|
|
242
363
|
_plane.setFromCoplanarPoints(v0.point, v1.point, v2.point);
|
|
364
|
+
|
|
243
365
|
for (let i = 0, l = this.vertices.length; i < l; i++) {
|
|
244
366
|
const vertex = vertices[i];
|
|
367
|
+
|
|
245
368
|
if (vertex !== v0 && vertex !== v1 && vertex !== v2) {
|
|
246
369
|
const distance = Math.abs(_plane.distanceToPoint(vertex.point));
|
|
370
|
+
|
|
247
371
|
if (distance > maxDistance) {
|
|
248
372
|
maxDistance = distance;
|
|
249
373
|
v3 = vertex;
|
|
250
374
|
}
|
|
251
375
|
}
|
|
252
376
|
}
|
|
377
|
+
|
|
253
378
|
const faces = [];
|
|
379
|
+
|
|
254
380
|
if (_plane.distanceToPoint(v3.point) < 0) {
|
|
255
|
-
|
|
381
|
+
// the face is not able to see the point so 'plane.normal' is pointing outside the tetrahedron
|
|
382
|
+
faces.push(Face.create(v0, v1, v2), Face.create(v3, v1, v0), Face.create(v3, v2, v1), Face.create(v3, v0, v2)); // set the twin edge
|
|
383
|
+
|
|
256
384
|
for (let i = 0; i < 3; i++) {
|
|
257
|
-
const j = (i + 1) % 3;
|
|
258
|
-
|
|
385
|
+
const j = (i + 1) % 3; // join face[ i ] i > 0, with the first face
|
|
386
|
+
|
|
387
|
+
faces[i + 1].getEdge(2).setTwin(faces[0].getEdge(j)); // join face[ i ] with face[ i + 1 ], 1 <= i <= 3
|
|
388
|
+
|
|
259
389
|
faces[i + 1].getEdge(1).setTwin(faces[j + 1].getEdge(0));
|
|
260
390
|
}
|
|
261
391
|
} else {
|
|
262
|
-
|
|
392
|
+
// the face is able to see the point so 'plane.normal' is pointing inside the tetrahedron
|
|
393
|
+
faces.push(Face.create(v0, v2, v1), Face.create(v3, v0, v1), Face.create(v3, v1, v2), Face.create(v3, v2, v0)); // set the twin edge
|
|
394
|
+
|
|
263
395
|
for (let i = 0; i < 3; i++) {
|
|
264
|
-
const j = (i + 1) % 3;
|
|
265
|
-
|
|
396
|
+
const j = (i + 1) % 3; // join face[ i ] i > 0, with the first face
|
|
397
|
+
|
|
398
|
+
faces[i + 1].getEdge(2).setTwin(faces[0].getEdge((3 - i) % 3)); // join face[ i ] with face[ i + 1 ]
|
|
399
|
+
|
|
266
400
|
faces[i + 1].getEdge(0).setTwin(faces[j + 1].getEdge(1));
|
|
267
401
|
}
|
|
268
|
-
}
|
|
402
|
+
} // the initial hull is the tetrahedron
|
|
403
|
+
|
|
404
|
+
|
|
269
405
|
for (let i = 0; i < 4; i++) {
|
|
270
406
|
this.faces.push(faces[i]);
|
|
271
|
-
}
|
|
407
|
+
} // initial assignment of vertices to the faces of the tetrahedron
|
|
408
|
+
|
|
409
|
+
|
|
272
410
|
for (let i = 0, l = vertices.length; i < l; i++) {
|
|
273
411
|
const vertex = vertices[i];
|
|
412
|
+
|
|
274
413
|
if (vertex !== v0 && vertex !== v1 && vertex !== v2 && vertex !== v3) {
|
|
275
414
|
maxDistance = this.tolerance;
|
|
276
415
|
let maxFace = null;
|
|
416
|
+
|
|
277
417
|
for (let j = 0; j < 4; j++) {
|
|
278
418
|
const distance = this.faces[j].distanceToPoint(vertex.point);
|
|
419
|
+
|
|
279
420
|
if (distance > maxDistance) {
|
|
280
421
|
maxDistance = distance;
|
|
281
422
|
maxFace = this.faces[j];
|
|
282
423
|
}
|
|
283
424
|
}
|
|
425
|
+
|
|
284
426
|
if (maxFace !== null) {
|
|
285
427
|
this.addVertexToFace(vertex, maxFace);
|
|
286
428
|
}
|
|
287
429
|
}
|
|
288
430
|
}
|
|
431
|
+
|
|
289
432
|
return this;
|
|
290
|
-
}
|
|
433
|
+
} // Removes inactive faces
|
|
434
|
+
|
|
435
|
+
|
|
291
436
|
reindexFaces() {
|
|
292
437
|
const activeFaces = [];
|
|
438
|
+
|
|
293
439
|
for (let i = 0; i < this.faces.length; i++) {
|
|
294
440
|
const face = this.faces[i];
|
|
441
|
+
|
|
295
442
|
if (face.mark === Visible) {
|
|
296
443
|
activeFaces.push(face);
|
|
297
444
|
}
|
|
298
445
|
}
|
|
446
|
+
|
|
299
447
|
this.faces = activeFaces;
|
|
300
448
|
return this;
|
|
301
|
-
}
|
|
449
|
+
} // Finds the next vertex to create faces with the current hull
|
|
450
|
+
|
|
451
|
+
|
|
302
452
|
nextVertexToAdd() {
|
|
453
|
+
// if the 'assigned' list of vertices is empty, no vertices are left. return with 'undefined'
|
|
303
454
|
if (this.assigned.isEmpty() === false) {
|
|
304
|
-
let eyeVertex,
|
|
455
|
+
let eyeVertex,
|
|
456
|
+
maxDistance = 0; // grap the first available face and start with the first visible vertex of that face
|
|
457
|
+
|
|
305
458
|
const eyeFace = this.assigned.first().face;
|
|
306
|
-
let vertex = eyeFace.outside;
|
|
459
|
+
let vertex = eyeFace.outside; // now calculate the farthest vertex that face can see
|
|
460
|
+
|
|
307
461
|
do {
|
|
308
462
|
const distance = eyeFace.distanceToPoint(vertex.point);
|
|
463
|
+
|
|
309
464
|
if (distance > maxDistance) {
|
|
310
465
|
maxDistance = distance;
|
|
311
466
|
eyeVertex = vertex;
|
|
312
467
|
}
|
|
468
|
+
|
|
313
469
|
vertex = vertex.next;
|
|
314
470
|
} while (vertex !== null && vertex.face === eyeFace);
|
|
471
|
+
|
|
315
472
|
return eyeVertex;
|
|
316
473
|
}
|
|
317
|
-
}
|
|
474
|
+
} // Computes a chain of half edges in CCW order called the 'horizon'.
|
|
475
|
+
// For an edge to be part of the horizon it must join a face that can see
|
|
476
|
+
// 'eyePoint' and a face that cannot see 'eyePoint'.
|
|
477
|
+
|
|
478
|
+
|
|
318
479
|
computeHorizon(eyePoint, crossEdge, face, horizon) {
|
|
480
|
+
// moves face's vertices to the 'unassigned' vertex list
|
|
319
481
|
this.deleteFaceVertices(face);
|
|
320
482
|
face.mark = Deleted;
|
|
321
483
|
let edge;
|
|
484
|
+
|
|
322
485
|
if (crossEdge === null) {
|
|
323
486
|
edge = crossEdge = face.getEdge(0);
|
|
324
487
|
} else {
|
|
488
|
+
// start from the next edge since 'crossEdge' was already analyzed
|
|
489
|
+
// (actually 'crossEdge.twin' was the edge who called this method recursively)
|
|
325
490
|
edge = crossEdge.next;
|
|
326
491
|
}
|
|
492
|
+
|
|
327
493
|
do {
|
|
328
494
|
const twinEdge = edge.twin;
|
|
329
495
|
const oppositeFace = twinEdge.face;
|
|
496
|
+
|
|
330
497
|
if (oppositeFace.mark === Visible) {
|
|
331
498
|
if (oppositeFace.distanceToPoint(eyePoint) > this.tolerance) {
|
|
499
|
+
// the opposite face can see the vertex, so proceed with next edge
|
|
332
500
|
this.computeHorizon(eyePoint, twinEdge, oppositeFace, horizon);
|
|
333
501
|
} else {
|
|
502
|
+
// the opposite face can't see the vertex, so this edge is part of the horizon
|
|
334
503
|
horizon.push(edge);
|
|
335
504
|
}
|
|
336
505
|
}
|
|
506
|
+
|
|
337
507
|
edge = edge.next;
|
|
338
508
|
} while (edge !== crossEdge);
|
|
509
|
+
|
|
339
510
|
return this;
|
|
340
|
-
}
|
|
511
|
+
} // Creates a face with the vertices 'eyeVertex.point', 'horizonEdge.tail' and 'horizonEdge.head' in CCW order
|
|
512
|
+
|
|
513
|
+
|
|
341
514
|
addAdjoiningFace(eyeVertex, horizonEdge) {
|
|
515
|
+
// all the half edges are created in ccw order thus the face is always pointing outside the hull
|
|
342
516
|
const face = Face.create(eyeVertex, horizonEdge.tail(), horizonEdge.head());
|
|
343
|
-
this.faces.push(face);
|
|
517
|
+
this.faces.push(face); // join face.getEdge( - 1 ) with the horizon's opposite edge face.getEdge( - 1 ) = face.getEdge( 2 )
|
|
518
|
+
|
|
344
519
|
face.getEdge(-1).setTwin(horizonEdge.twin);
|
|
345
|
-
return face.getEdge(0);
|
|
346
|
-
}
|
|
520
|
+
return face.getEdge(0); // the half edge whose vertex is the eyeVertex
|
|
521
|
+
} // Adds 'horizon.length' faces to the hull, each face will be linked with the
|
|
522
|
+
// horizon opposite face and the face on the left/right
|
|
523
|
+
|
|
524
|
+
|
|
347
525
|
addNewFaces(eyeVertex, horizon) {
|
|
348
526
|
this.newFaces = [];
|
|
349
527
|
let firstSideEdge = null;
|
|
350
528
|
let previousSideEdge = null;
|
|
529
|
+
|
|
351
530
|
for (let i = 0; i < horizon.length; i++) {
|
|
352
|
-
const horizonEdge = horizon[i];
|
|
531
|
+
const horizonEdge = horizon[i]; // returns the right side edge
|
|
532
|
+
|
|
353
533
|
const sideEdge = this.addAdjoiningFace(eyeVertex, horizonEdge);
|
|
534
|
+
|
|
354
535
|
if (firstSideEdge === null) {
|
|
355
536
|
firstSideEdge = sideEdge;
|
|
356
537
|
} else {
|
|
538
|
+
// joins face.getEdge( 1 ) with previousFace.getEdge( 0 )
|
|
357
539
|
sideEdge.next.setTwin(previousSideEdge);
|
|
358
540
|
}
|
|
541
|
+
|
|
359
542
|
this.newFaces.push(sideEdge.face);
|
|
360
543
|
previousSideEdge = sideEdge;
|
|
361
|
-
}
|
|
544
|
+
} // perform final join of new faces
|
|
545
|
+
|
|
546
|
+
|
|
362
547
|
firstSideEdge.next.setTwin(previousSideEdge);
|
|
363
548
|
return this;
|
|
364
|
-
}
|
|
549
|
+
} // Adds a vertex to the hull
|
|
550
|
+
|
|
551
|
+
|
|
365
552
|
addVertexToHull(eyeVertex) {
|
|
366
553
|
const horizon = [];
|
|
367
|
-
this.unassigned.clear();
|
|
554
|
+
this.unassigned.clear(); // remove 'eyeVertex' from 'eyeVertex.face' so that it can't be added to the 'unassigned' vertex list
|
|
555
|
+
|
|
368
556
|
this.removeVertexFromFace(eyeVertex, eyeVertex.face);
|
|
369
557
|
this.computeHorizon(eyeVertex.point, null, eyeVertex.face, horizon);
|
|
370
|
-
this.addNewFaces(eyeVertex, horizon);
|
|
558
|
+
this.addNewFaces(eyeVertex, horizon); // reassign 'unassigned' vertices to the new faces
|
|
559
|
+
|
|
371
560
|
this.resolveUnassignedPoints(this.newFaces);
|
|
372
561
|
return this;
|
|
373
562
|
}
|
|
563
|
+
|
|
374
564
|
cleanup() {
|
|
375
565
|
this.assigned.clear();
|
|
376
566
|
this.unassigned.clear();
|
|
377
567
|
this.newFaces = [];
|
|
378
568
|
return this;
|
|
379
569
|
}
|
|
570
|
+
|
|
380
571
|
compute() {
|
|
381
572
|
let vertex;
|
|
382
|
-
this.computeInitialHull();
|
|
383
|
-
|
|
573
|
+
this.computeInitialHull(); // add all available vertices gradually to the hull
|
|
574
|
+
|
|
575
|
+
while ((vertex = this.nextVertexToAdd()) !== undefined) {
|
|
384
576
|
this.addVertexToHull(vertex);
|
|
385
577
|
}
|
|
578
|
+
|
|
386
579
|
this.reindexFaces();
|
|
387
580
|
this.cleanup();
|
|
388
581
|
return this;
|
|
389
582
|
}
|
|
390
|
-
|
|
583
|
+
|
|
584
|
+
} //
|
|
585
|
+
|
|
586
|
+
|
|
391
587
|
class Face {
|
|
392
588
|
constructor() {
|
|
393
|
-
this.normal = new
|
|
394
|
-
this.midpoint = new
|
|
589
|
+
this.normal = new Vector3();
|
|
590
|
+
this.midpoint = new Vector3();
|
|
395
591
|
this.area = 0;
|
|
396
|
-
this.constant = 0;
|
|
397
|
-
|
|
592
|
+
this.constant = 0; // signed distance from face to the origin
|
|
593
|
+
|
|
594
|
+
this.outside = null; // reference to a vertex in a vertex list this face can see
|
|
595
|
+
|
|
398
596
|
this.mark = Visible;
|
|
399
597
|
this.edge = null;
|
|
400
598
|
}
|
|
599
|
+
|
|
401
600
|
static create(a, b, c) {
|
|
402
601
|
const face = new Face();
|
|
403
602
|
const e0 = new HalfEdge(a, face);
|
|
404
603
|
const e1 = new HalfEdge(b, face);
|
|
405
|
-
const e2 = new HalfEdge(c, face);
|
|
604
|
+
const e2 = new HalfEdge(c, face); // join edges
|
|
605
|
+
|
|
406
606
|
e0.next = e2.prev = e1;
|
|
407
607
|
e1.next = e0.prev = e2;
|
|
408
|
-
e2.next = e1.prev = e0;
|
|
608
|
+
e2.next = e1.prev = e0; // main half edge reference
|
|
609
|
+
|
|
409
610
|
face.edge = e0;
|
|
410
611
|
return face.compute();
|
|
411
612
|
}
|
|
613
|
+
|
|
412
614
|
getEdge(i) {
|
|
413
615
|
let edge = this.edge;
|
|
616
|
+
|
|
414
617
|
while (i > 0) {
|
|
415
618
|
edge = edge.next;
|
|
416
619
|
i--;
|
|
417
620
|
}
|
|
621
|
+
|
|
418
622
|
while (i < 0) {
|
|
419
623
|
edge = edge.prev;
|
|
420
624
|
i++;
|
|
421
625
|
}
|
|
626
|
+
|
|
422
627
|
return edge;
|
|
423
628
|
}
|
|
629
|
+
|
|
424
630
|
compute() {
|
|
425
631
|
const a = this.edge.tail();
|
|
426
632
|
const b = this.edge.head();
|
|
427
633
|
const c = this.edge.next.head();
|
|
634
|
+
|
|
428
635
|
_triangle.set(a.point, b.point, c.point);
|
|
636
|
+
|
|
429
637
|
_triangle.getNormal(this.normal);
|
|
638
|
+
|
|
430
639
|
_triangle.getMidpoint(this.midpoint);
|
|
640
|
+
|
|
431
641
|
this.area = _triangle.getArea();
|
|
432
642
|
this.constant = this.normal.dot(this.midpoint);
|
|
433
643
|
return this;
|
|
434
644
|
}
|
|
645
|
+
|
|
435
646
|
distanceToPoint(point) {
|
|
436
647
|
return this.normal.dot(point) - this.constant;
|
|
437
648
|
}
|
|
438
|
-
|
|
649
|
+
|
|
650
|
+
} // Entity for a Doubly-Connected Edge List (DCEL).
|
|
651
|
+
|
|
652
|
+
|
|
439
653
|
class HalfEdge {
|
|
440
654
|
constructor(vertex, face) {
|
|
441
655
|
this.vertex = vertex;
|
|
@@ -444,131 +658,177 @@ class HalfEdge {
|
|
|
444
658
|
this.twin = null;
|
|
445
659
|
this.face = face;
|
|
446
660
|
}
|
|
661
|
+
|
|
447
662
|
head() {
|
|
448
663
|
return this.vertex;
|
|
449
664
|
}
|
|
665
|
+
|
|
450
666
|
tail() {
|
|
451
667
|
return this.prev ? this.prev.vertex : null;
|
|
452
668
|
}
|
|
669
|
+
|
|
453
670
|
length() {
|
|
454
671
|
const head = this.head();
|
|
455
672
|
const tail = this.tail();
|
|
673
|
+
|
|
456
674
|
if (tail !== null) {
|
|
457
675
|
return tail.point.distanceTo(head.point);
|
|
458
676
|
}
|
|
677
|
+
|
|
459
678
|
return -1;
|
|
460
679
|
}
|
|
680
|
+
|
|
461
681
|
lengthSquared() {
|
|
462
682
|
const head = this.head();
|
|
463
683
|
const tail = this.tail();
|
|
684
|
+
|
|
464
685
|
if (tail !== null) {
|
|
465
686
|
return tail.point.distanceToSquared(head.point);
|
|
466
687
|
}
|
|
688
|
+
|
|
467
689
|
return -1;
|
|
468
690
|
}
|
|
691
|
+
|
|
469
692
|
setTwin(edge) {
|
|
470
693
|
this.twin = edge;
|
|
471
694
|
edge.twin = this;
|
|
472
695
|
return this;
|
|
473
696
|
}
|
|
474
|
-
|
|
697
|
+
|
|
698
|
+
} // A vertex as a double linked list node.
|
|
699
|
+
|
|
700
|
+
|
|
475
701
|
class VertexNode {
|
|
476
702
|
constructor(point) {
|
|
477
703
|
this.point = point;
|
|
478
704
|
this.prev = null;
|
|
479
705
|
this.next = null;
|
|
480
|
-
this.face = null;
|
|
706
|
+
this.face = null; // the face that is able to see this vertex
|
|
481
707
|
}
|
|
482
|
-
|
|
708
|
+
|
|
709
|
+
} // A double linked list that contains vertex nodes.
|
|
710
|
+
|
|
711
|
+
|
|
483
712
|
class VertexList {
|
|
484
713
|
constructor() {
|
|
485
714
|
this.head = null;
|
|
486
715
|
this.tail = null;
|
|
487
716
|
}
|
|
717
|
+
|
|
488
718
|
first() {
|
|
489
719
|
return this.head;
|
|
490
720
|
}
|
|
721
|
+
|
|
491
722
|
last() {
|
|
492
723
|
return this.tail;
|
|
493
724
|
}
|
|
725
|
+
|
|
494
726
|
clear() {
|
|
495
727
|
this.head = this.tail = null;
|
|
496
728
|
return this;
|
|
497
|
-
}
|
|
729
|
+
} // Inserts a vertex before the target vertex
|
|
730
|
+
|
|
731
|
+
|
|
498
732
|
insertBefore(target, vertex) {
|
|
499
733
|
vertex.prev = target.prev;
|
|
500
734
|
vertex.next = target;
|
|
735
|
+
|
|
501
736
|
if (vertex.prev === null) {
|
|
502
737
|
this.head = vertex;
|
|
503
738
|
} else {
|
|
504
739
|
vertex.prev.next = vertex;
|
|
505
740
|
}
|
|
741
|
+
|
|
506
742
|
target.prev = vertex;
|
|
507
743
|
return this;
|
|
508
|
-
}
|
|
744
|
+
} // Inserts a vertex after the target vertex
|
|
745
|
+
|
|
746
|
+
|
|
509
747
|
insertAfter(target, vertex) {
|
|
510
748
|
vertex.prev = target;
|
|
511
749
|
vertex.next = target.next;
|
|
750
|
+
|
|
512
751
|
if (vertex.next === null) {
|
|
513
752
|
this.tail = vertex;
|
|
514
753
|
} else {
|
|
515
754
|
vertex.next.prev = vertex;
|
|
516
755
|
}
|
|
756
|
+
|
|
517
757
|
target.next = vertex;
|
|
518
758
|
return this;
|
|
519
|
-
}
|
|
759
|
+
} // Appends a vertex to the end of the linked list
|
|
760
|
+
|
|
761
|
+
|
|
520
762
|
append(vertex) {
|
|
521
763
|
if (this.head === null) {
|
|
522
764
|
this.head = vertex;
|
|
523
765
|
} else {
|
|
524
766
|
this.tail.next = vertex;
|
|
525
767
|
}
|
|
768
|
+
|
|
526
769
|
vertex.prev = this.tail;
|
|
527
|
-
vertex.next = null;
|
|
770
|
+
vertex.next = null; // the tail has no subsequent vertex
|
|
771
|
+
|
|
528
772
|
this.tail = vertex;
|
|
529
773
|
return this;
|
|
530
|
-
}
|
|
774
|
+
} // Appends a chain of vertices where 'vertex' is the head.
|
|
775
|
+
|
|
776
|
+
|
|
531
777
|
appendChain(vertex) {
|
|
532
778
|
if (this.head === null) {
|
|
533
779
|
this.head = vertex;
|
|
534
780
|
} else {
|
|
535
781
|
this.tail.next = vertex;
|
|
536
782
|
}
|
|
537
|
-
|
|
783
|
+
|
|
784
|
+
vertex.prev = this.tail; // ensure that the 'tail' reference points to the last vertex of the chain
|
|
785
|
+
|
|
538
786
|
while (vertex.next !== null) {
|
|
539
787
|
vertex = vertex.next;
|
|
540
788
|
}
|
|
789
|
+
|
|
541
790
|
this.tail = vertex;
|
|
542
791
|
return this;
|
|
543
|
-
}
|
|
792
|
+
} // Removes a vertex from the linked list
|
|
793
|
+
|
|
794
|
+
|
|
544
795
|
remove(vertex) {
|
|
545
796
|
if (vertex.prev === null) {
|
|
546
797
|
this.head = vertex.next;
|
|
547
798
|
} else {
|
|
548
799
|
vertex.prev.next = vertex.next;
|
|
549
800
|
}
|
|
801
|
+
|
|
550
802
|
if (vertex.next === null) {
|
|
551
803
|
this.tail = vertex.prev;
|
|
552
804
|
} else {
|
|
553
805
|
vertex.next.prev = vertex.prev;
|
|
554
806
|
}
|
|
807
|
+
|
|
555
808
|
return this;
|
|
556
|
-
}
|
|
809
|
+
} // Removes a list of vertices whose 'head' is 'a' and whose 'tail' is b
|
|
810
|
+
|
|
811
|
+
|
|
557
812
|
removeSubList(a, b) {
|
|
558
813
|
if (a.prev === null) {
|
|
559
814
|
this.head = b.next;
|
|
560
815
|
} else {
|
|
561
816
|
a.prev.next = b.next;
|
|
562
817
|
}
|
|
818
|
+
|
|
563
819
|
if (b.next === null) {
|
|
564
820
|
this.tail = a.prev;
|
|
565
821
|
} else {
|
|
566
822
|
b.next.prev = a.prev;
|
|
567
823
|
}
|
|
824
|
+
|
|
568
825
|
return this;
|
|
569
826
|
}
|
|
827
|
+
|
|
570
828
|
isEmpty() {
|
|
571
829
|
return this.head === null;
|
|
572
830
|
}
|
|
831
|
+
|
|
573
832
|
}
|
|
574
|
-
|
|
833
|
+
|
|
834
|
+
export { ConvexHull };
|