three-stdlib 2.16.0 → 2.16.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BufferGeometryUtils-1a7a235c.js +655 -0
- package/BufferGeometryUtils-971dfde3.js +1 -0
- package/Nodes-4f766d71.js +471 -0
- package/Nodes-9aa16d74.js +1 -0
- package/animation/AnimationClipCreator.cjs.js +1 -0
- package/animation/AnimationClipCreator.js +52 -32
- package/animation/CCDIKSolver.cjs.js +1 -0
- package/animation/CCDIKSolver.js +143 -64
- package/animation/MMDAnimationHelper.cjs.js +1 -0
- package/animation/MMDAnimationHelper.js +341 -150
- package/animation/MMDPhysics.cjs.js +1 -0
- package/animation/MMDPhysics.js +361 -154
- package/cameras/CinematicCamera.cjs.js +1 -0
- package/cameras/CinematicCamera.js +77 -67
- package/controls/ArcballControls.cjs.js +1 -0
- package/controls/ArcballControls.js +1449 -544
- package/controls/DeviceOrientationControls.cjs.js +1 -0
- package/controls/DeviceOrientationControls.js +97 -52
- package/controls/DragControls.cjs.js +1 -0
- package/controls/DragControls.js +187 -85
- package/controls/FirstPersonControls.cjs.js +1 -0
- package/controls/FirstPersonControls.js +193 -123
- package/controls/FlyControls.cjs.js +1 -0
- package/controls/FlyControls.d.ts +5 -4
- package/controls/FlyControls.js +160 -90
- package/controls/OrbitControls.cjs.js +1 -0
- package/controls/OrbitControls.js +481 -232
- package/controls/PointerLockControls.cjs.js +1 -0
- package/controls/PointerLockControls.js +99 -63
- package/controls/TrackballControls.cjs.js +1 -0
- package/controls/TrackballControls.js +383 -211
- package/controls/TransformControls.cjs.js +1 -0
- package/controls/TransformControls.js +782 -575
- package/controls/experimental/CameraControls.cjs.js +1 -0
- package/controls/experimental/CameraControls.js +609 -329
- package/csm/CSM.cjs.js +1 -0
- package/csm/CSM.js +108 -47
- package/csm/CSMFrustum.cjs.js +1 -0
- package/csm/CSMFrustum.js +29 -14
- package/csm/CSMHelper.cjs.js +1 -0
- package/csm/CSMHelper.js +34 -20
- package/csm/CSMShader.cjs.js +1 -0
- package/csm/CSMShader.js +11 -7
- package/curves/CurveExtras.cjs.js +1 -0
- package/curves/CurveExtras.js +115 -73
- package/curves/NURBSCurve.cjs.js +1 -0
- package/curves/NURBSCurve.js +43 -15
- package/curves/NURBSSurface.cjs.js +1 -0
- package/curves/NURBSSurface.js +27 -11
- package/curves/NURBSUtils.cjs.js +1 -0
- package/curves/NURBSUtils.js +203 -54
- package/custom.d.cjs.js +1 -0
- package/{shaders/types.mjs → custom.d.js} +0 -0
- package/deprecated/Geometry.cjs.js +1 -0
- package/deprecated/Geometry.js +486 -191
- package/effects/AnaglyphEffect.cjs.js +1 -0
- package/effects/AnaglyphEffect.js +60 -95
- package/effects/AsciiEffect.cjs.js +1 -0
- package/effects/AsciiEffect.js +110 -80
- package/effects/OutlineEffect.cjs.js +1 -0
- package/effects/OutlineEffect.js +204 -121
- package/effects/ParallaxBarrierEffect.cjs.js +1 -0
- package/effects/ParallaxBarrierEffect.js +38 -39
- package/effects/PeppersGhostEffect.cjs.js +1 -0
- package/effects/PeppersGhostEffect.js +68 -19
- package/effects/StereoEffect.cjs.js +1 -0
- package/effects/StereoEffect.js +16 -12
- package/environments/RoomEnvironment.cjs.js +1 -0
- package/environments/RoomEnvironment.js +47 -52
- package/exporters/ColladaExporter.cjs.js +1 -0
- package/exporters/ColladaExporter.js +241 -115
- package/exporters/DRACOExporter.cjs.js +1 -0
- package/exporters/DRACOExporter.js +121 -67
- package/exporters/GLTFExporter.cjs.js +1 -0
- package/exporters/GLTFExporter.js +1014 -463
- package/exporters/MMDExporter.cjs.js +1 -0
- package/exporters/MMDExporter.js +102 -44
- package/exporters/OBJExporter.cjs.js +1 -0
- package/exporters/OBJExporter.js +140 -78
- package/exporters/PLYExporter.cjs.js +1 -0
- package/exporters/PLYExporter.js +154 -93
- package/exporters/STLExporter.cjs.js +1 -0
- package/exporters/STLExporter.js +81 -30
- package/exporters/USDZExporter.cjs.js +1 -0
- package/exporters/USDZExporter.js +144 -84
- package/geometries/BoxLineGeometry.cjs.js +1 -0
- package/geometries/BoxLineGeometry.js +14 -7
- package/geometries/ConvexGeometry.cjs.js +1 -0
- package/geometries/ConvexGeometry.js +23 -14
- package/geometries/DecalGeometry.cjs.js +1 -0
- package/geometries/DecalGeometry.js +162 -108
- package/geometries/LightningStrike.cjs.js +1 -0
- package/geometries/LightningStrike.js +294 -101
- package/geometries/ParametricGeometries.cjs.js +1 -0
- package/geometries/ParametricGeometries.js +76 -26
- package/geometries/ParametricGeometry.cjs.js +1 -0
- package/geometries/ParametricGeometry.js +48 -24
- package/geometries/RoundedBoxGeometry.cjs.js +1 -0
- package/geometries/RoundedBoxGeometry.js +64 -33
- package/geometries/TeapotGeometry.cjs.js +1 -0
- package/geometries/TeapotGeometry.js +174 -1434
- package/geometries/TextGeometry.cjs.js +1 -0
- package/geometries/TextGeometry.js +17 -9
- package/helpers/LightProbeHelper.cjs.js +1 -0
- package/helpers/LightProbeHelper.js +21 -53
- package/helpers/PositionalAudioHelper.cjs.js +1 -0
- package/helpers/PositionalAudioHelper.js +30 -23
- package/helpers/RectAreaLightHelper.cjs.js +1 -0
- package/helpers/RectAreaLightHelper.js +33 -17
- package/helpers/VertexNormalsHelper.cjs.js +1 -0
- package/helpers/VertexNormalsHelper.js +41 -20
- package/helpers/VertexTangentsHelper.cjs.js +1 -0
- package/helpers/VertexTangentsHelper.js +36 -18
- package/index.cjs.js +1 -0
- package/index.js +333 -969
- package/interactive/InteractiveGroup.cjs.js +1 -0
- package/interactive/InteractiveGroup.d.ts +5 -0
- package/interactive/InteractiveGroup.js +87 -0
- package/interactive/SelectionBox.cjs.js +1 -0
- package/interactive/SelectionBox.js +46 -31
- package/interactive/SelectionHelper.cjs.js +1 -0
- package/interactive/SelectionHelper.js +21 -16
- package/libs/MeshoptDecoder.cjs.js +1 -0
- package/libs/MeshoptDecoder.js +58 -147
- package/libs/MotionControllers.cjs.js +1 -0
- package/libs/MotionControllers.js +208 -66
- package/lights/LightProbeGenerator.cjs.js +1 -0
- package/lights/LightProbeGenerator.js +96 -40
- package/lights/RectAreaLightUniformsLib.cjs.js +1 -0
- package/lights/RectAreaLightUniformsLib.js +9 -32842
- package/lines/Line2.cjs.js +1 -0
- package/lines/Line2.js +12 -9
- package/lines/LineGeometry.cjs.js +1 -0
- package/lines/LineGeometry.js +19 -7
- package/lines/LineMaterial.cjs.js +1 -0
- package/lines/LineMaterial.js +89 -51
- package/lines/LineSegments2.cjs.js +1 -0
- package/lines/LineSegments2.js +165 -56
- package/lines/LineSegmentsGeometry.cjs.js +1 -0
- package/lines/LineSegmentsGeometry.js +71 -29
- package/lines/Wireframe.cjs.js +1 -0
- package/lines/Wireframe.js +29 -15
- package/lines/WireframeGeometry2.cjs.js +1 -0
- package/lines/WireframeGeometry2.js +9 -8
- package/loaders/3DMLoader.cjs.js +1 -0
- package/loaders/3DMLoader.js +469 -234
- package/loaders/3MFLoader.cjs.js +1 -0
- package/loaders/3MFLoader.js +555 -340
- package/loaders/AMFLoader.cjs.js +1 -0
- package/loaders/AMFLoader.js +219 -114
- package/loaders/AssimpLoader.cjs.js +1 -0
- package/loaders/AssimpLoader.js +725 -328
- package/loaders/BVHLoader.cjs.js +1 -0
- package/loaders/BVHLoader.js +200 -94
- package/loaders/BasisTextureLoader.cjs.js +1 -0
- package/loaders/BasisTextureLoader.js +357 -229
- package/loaders/ColladaLoader.cjs.js +1 -0
- package/loaders/ColladaLoader.js +1522 -932
- package/loaders/DDSLoader.cjs.js +1 -0
- package/loaders/DDSLoader.js +108 -42
- package/loaders/DRACOLoader.cjs.js +1 -0
- package/loaders/DRACOLoader.js +210 -103
- package/loaders/EXRLoader.cjs.js +1 -0
- package/loaders/EXRLoader.js +809 -461
- package/loaders/FBXLoader.cjs.js +1 -0
- package/loaders/FBXLoader.js +1397 -842
- package/loaders/FontLoader.cjs.js +1 -0
- package/loaders/FontLoader.js +66 -33
- package/loaders/GCodeLoader.cjs.js +1 -0
- package/loaders/GCodeLoader.js +111 -63
- package/loaders/GLTFLoader.cjs.js +1 -0
- package/loaders/GLTFLoader.js +1484 -771
- package/loaders/HDRCubeTextureLoader.cjs.js +1 -0
- package/loaders/HDRCubeTextureLoader.js +50 -45
- package/loaders/KMZLoader.cjs.js +1 -0
- package/loaders/KMZLoader.js +55 -42
- package/loaders/KTX2Loader.cjs.js +1 -0
- package/loaders/KTX2Loader.js +362 -229
- package/loaders/KTXLoader.cjs.js +1 -0
- package/loaders/KTXLoader.js +99 -37
- package/loaders/LDrawLoader.cjs.js +1 -0
- package/loaders/LDrawLoader.js +746 -313
- package/loaders/LUT3dlLoader.cjs.js +1 -0
- package/loaders/LUT3dlLoader.js +62 -50
- package/loaders/LUTCubeLoader.cjs.js +1 -0
- package/loaders/LUTCubeLoader.js +56 -45
- package/loaders/LWOLoader.cjs.js +1 -0
- package/loaders/LWOLoader.js +339 -227
- package/loaders/LottieLoader.cjs.js +1 -0
- package/loaders/LottieLoader.js +38 -36
- package/loaders/MD2Loader.cjs.js +1 -0
- package/loaders/MD2Loader.js +91 -248
- package/loaders/MDDLoader.cjs.js +1 -0
- package/loaders/MDDLoader.js +45 -25
- package/loaders/MMDLoader.cjs.js +1 -0
- package/loaders/MMDLoader.js +795 -359
- package/loaders/MTLLoader.cjs.js +1 -0
- package/loaders/MTLLoader.js +201 -91
- package/loaders/NRRDLoader.cjs.js +1 -0
- package/loaders/NRRDLoader.js +263 -182
- package/loaders/NodeMaterialLoader.cjs.js +1 -0
- package/loaders/NodeMaterialLoader.js +14 -121
- package/loaders/OBJLoader.cjs.js +1 -0
- package/loaders/OBJLoader.js +283 -161
- package/loaders/PCDLoader.cjs.js +1 -0
- package/loaders/PCDLoader.js +164 -145
- package/loaders/PDBLoader.cjs.js +1 -0
- package/loaders/PDBLoader.js +63 -45
- package/loaders/PLYLoader.cjs.js +1 -0
- package/loaders/PLYLoader.js +203 -106
- package/loaders/PRWMLoader.cjs.js +1 -0
- package/loaders/PRWMLoader.js +110 -73
- package/loaders/PVRLoader.cjs.js +1 -0
- package/loaders/PVRLoader.js +93 -32
- package/loaders/RGBELoader.cjs.js +1 -0
- package/loaders/RGBELoader.js +233 -96
- package/loaders/RGBMLoader.cjs.js +1 -0
- package/loaders/RGBMLoader.js +514 -344
- package/loaders/STLLoader.cjs.js +1 -0
- package/loaders/STLLoader.js +165 -59
- package/loaders/SVGLoader.cjs.js +1 -0
- package/loaders/SVGLoader.js +851 -481
- package/loaders/TDSLoader.cjs.js +1 -0
- package/loaders/TDSLoader.js +527 -137
- package/loaders/TGALoader.cjs.js +1 -0
- package/loaders/TGALoader.js +205 -94
- package/loaders/TTFLoader.cjs.js +1 -0
- package/loaders/TTFLoader.js +79 -58
- package/loaders/TiltLoader.cjs.js +1 -0
- package/loaders/TiltLoader.js +167 -129
- package/loaders/VOXLoader.cjs.js +1 -0
- package/loaders/VOXLoader.js +84 -320
- package/loaders/VRMLLoader.cjs.js +1 -0
- package/loaders/VRMLLoader.js +1268 -786
- package/loaders/VRMLoader.cjs.js +1 -0
- package/loaders/VRMLoader.js +31 -23
- package/loaders/VTKLoader.cjs.js +1 -0
- package/loaders/VTKLoader.js +407 -219
- package/loaders/XLoader.cjs.js +1 -0
- package/loaders/XLoader.js +1259 -1083
- package/loaders/XYZLoader.cjs.js +1 -0
- package/loaders/XYZLoader.js +34 -28
- package/loaders/lwo/IFFParser.cjs.js +1 -0
- package/loaders/lwo/IFFParser.js +492 -238
- package/loaders/lwo/LWO2Parser.cjs.js +1 -0
- package/loaders/lwo/LWO2Parser.js +279 -176
- package/loaders/lwo/LWO3Parser.cjs.js +1 -0
- package/loaders/lwo/LWO3Parser.js +247 -160
- package/math/Capsule.cjs.js +1 -0
- package/math/Capsule.js +43 -56
- package/math/ColorConverter.cjs.js +1 -0
- package/math/ColorConverter.js +32 -18
- package/math/ConvexHull.cjs.js +1 -0
- package/math/ConvexHull.js +357 -97
- package/math/ImprovedNoise.cjs.js +1 -0
- package/math/ImprovedNoise.js +32 -282
- package/math/Lut.cjs.js +1 -0
- package/math/Lut.js +35 -51
- package/math/MeshSurfaceSampler.cjs.js +1 -0
- package/math/MeshSurfaceSampler.js +68 -25
- package/math/OBB.cjs.js +1 -0
- package/math/OBB.js +152 -91
- package/math/Octree.cjs.js +1 -0
- package/math/Octree.js +139 -76
- package/math/SimplexNoise.cjs.js +1 -0
- package/math/SimplexNoise.js +238 -217
- package/misc/ConvexObjectBreaker.cjs.js +1 -0
- package/misc/ConvexObjectBreaker.js +185 -79
- package/misc/GPUComputationRenderer.cjs.js +1 -0
- package/misc/GPUComputationRenderer.js +194 -69
- package/misc/Gyroscope.cjs.js +1 -0
- package/misc/Gyroscope.js +22 -16
- package/misc/MD2Character.cjs.js +1 -0
- package/misc/MD2Character.js +74 -52
- package/misc/MD2CharacterComplex.cjs.js +1 -0
- package/misc/MD2CharacterComplex.js +163 -112
- package/misc/MorphAnimMesh.cjs.js +1 -0
- package/misc/MorphAnimMesh.js +28 -20
- package/misc/MorphBlendMesh.cjs.js +1 -0
- package/misc/MorphBlendMesh.js +69 -45
- package/misc/ProgressiveLightmap.cjs.js +1 -0
- package/misc/ProgressiveLightmap.js +187 -70
- package/misc/RollerCoaster.cjs.js +1 -0
- package/misc/RollerCoaster.js +135 -106
- package/misc/TubePainter.cjs.js +1 -0
- package/misc/TubePainter.js +92 -74
- package/misc/Volume.cjs.js +1 -0
- package/misc/Volume.js +270 -108
- package/misc/VolumeSlice.cjs.js +1 -0
- package/misc/VolumeSlice.js +122 -34
- package/misc/WebGL.cjs.js +1 -0
- package/misc/WebGL.js +34 -37
- package/modifiers/CurveModifier.cjs.js +1 -0
- package/modifiers/CurveModifier.js +151 -46
- package/modifiers/EdgeSplitModifier.cjs.js +1 -0
- package/modifiers/EdgeSplitModifier.js +90 -46
- package/modifiers/SimplifyModifier.cjs.js +1 -0
- package/modifiers/SimplifyModifier.js +202 -77
- package/modifiers/TessellateModifier.cjs.js +1 -0
- package/modifiers/TessellateModifier.js +90 -65
- package/nodes/Nodes.cjs.js +1 -0
- package/nodes/Nodes.js +140 -274
- package/nodes/ShaderNode.cjs.js +1 -0
- package/nodes/ShaderNode.js +196 -296
- package/nodes/accessors/BufferNode.cjs.js +1 -0
- package/nodes/accessors/BufferNode.js +8 -4
- package/nodes/accessors/CameraNode.cjs.js +1 -0
- package/nodes/accessors/CameraNode.js +25 -20
- package/nodes/accessors/CubeTextureNode.cjs.js +1 -0
- package/nodes/accessors/CubeTextureNode.js +26 -14
- package/nodes/accessors/MaterialNode.cjs.js +1 -0
- package/nodes/accessors/MaterialNode.js +53 -43
- package/nodes/accessors/MaterialReferenceNode.cjs.js +1 -0
- package/nodes/accessors/MaterialReferenceNode.js +6 -3
- package/nodes/accessors/ModelNode.cjs.js +1 -0
- package/nodes/accessors/ModelNode.js +5 -3
- package/nodes/accessors/ModelViewProjectionNode.cjs.js +1 -0
- package/nodes/accessors/ModelViewProjectionNode.js +13 -14
- package/nodes/accessors/NormalNode.cjs.js +1 -0
- package/nodes/accessors/NormalNode.js +39 -40
- package/nodes/accessors/Object3DNode.cjs.js +1 -0
- package/nodes/accessors/Object3DNode.js +50 -40
- package/nodes/accessors/PointUVNode.cjs.js +1 -0
- package/nodes/accessors/PointUVNode.js +9 -5
- package/nodes/accessors/PositionNode.cjs.js +1 -0
- package/nodes/accessors/PositionNode.js +41 -42
- package/nodes/accessors/ReferenceNode.cjs.js +1 -0
- package/nodes/accessors/ReferenceNode.js +17 -10
- package/nodes/accessors/ReflectNode.cjs.js +1 -0
- package/nodes/accessors/ReflectNode.js +26 -23
- package/nodes/accessors/SkinningNode.cjs.js +1 -0
- package/nodes/accessors/SkinningNode.js +48 -46
- package/nodes/accessors/TextureNode.cjs.js +1 -0
- package/nodes/accessors/TextureNode.js +29 -14
- package/nodes/accessors/UVNode.cjs.js +1 -0
- package/nodes/accessors/UVNode.js +11 -5
- package/nodes/core/ArrayUniformNode.cjs.js +1 -0
- package/nodes/core/ArrayUniformNode.js +7 -3
- package/nodes/core/AttributeNode.cjs.js +1 -0
- package/nodes/core/AttributeNode.js +12 -5
- package/nodes/core/BypassNode.cjs.js +1 -0
- package/nodes/core/BypassNode.js +12 -5
- package/nodes/core/CodeNode.cjs.js +1 -0
- package/nodes/core/CodeNode.js +12 -4
- package/nodes/core/ConstNode.cjs.js +1 -0
- package/nodes/core/ConstNode.js +7 -3
- package/nodes/core/ContextNode.cjs.js +1 -0
- package/nodes/core/ContextNode.js +8 -3
- package/nodes/core/ExpressionNode.cjs.js +1 -0
- package/nodes/core/ExpressionNode.js +9 -5
- package/nodes/core/FunctionCallNode.cjs.js +1 -0
- package/nodes/core/FunctionCallNode.js +15 -6
- package/nodes/core/FunctionNode.cjs.js +1 -0
- package/nodes/core/FunctionNode.js +25 -10
- package/nodes/core/InputNode.cjs.js +1 -0
- package/nodes/core/InputNode.js +23 -12
- package/nodes/core/Node.cjs.js +1 -0
- package/nodes/core/Node.js +75 -35
- package/nodes/core/NodeAttribute.cjs.js +1 -0
- package/nodes/core/NodeAttribute.js +4 -2
- package/nodes/core/NodeBuilder.cjs.js +1 -0
- package/nodes/core/NodeBuilder.js +224 -110
- package/nodes/core/NodeCode.cjs.js +1 -0
- package/nodes/core/NodeCode.js +7 -4
- package/nodes/core/NodeFrame.cjs.js +1 -0
- package/nodes/core/NodeFrame.js +12 -9
- package/nodes/core/NodeFunction.cjs.js +1 -0
- package/nodes/core/NodeFunction.js +17 -0
- package/nodes/core/NodeFunctionInput.cjs.js +1 -0
- package/nodes/core/NodeFunctionInput.js +5 -3
- package/nodes/core/NodeKeywords.cjs.js +1 -0
- package/nodes/core/NodeKeywords.js +16 -5
- package/nodes/core/NodeParser.cjs.js +1 -0
- package/nodes/core/NodeParser.js +8 -0
- package/nodes/core/NodeUniform.cjs.js +1 -0
- package/nodes/core/NodeUniform.js +7 -3
- package/nodes/core/NodeUtils.cjs.js +1 -0
- package/nodes/core/NodeUtils.js +43 -39
- package/nodes/core/NodeVar.cjs.js +1 -0
- package/nodes/core/NodeVar.js +4 -2
- package/nodes/core/NodeVary.cjs.js +1 -0
- package/nodes/core/NodeVary.js +4 -2
- package/nodes/core/PropertyNode.cjs.js +1 -0
- package/nodes/core/PropertyNode.js +10 -4
- package/nodes/core/TempNode.cjs.js +1 -0
- package/nodes/core/TempNode.js +11 -5
- package/nodes/core/UniformNode.cjs.js +1 -0
- package/nodes/core/UniformNode.js +10 -4
- package/nodes/core/VarNode.cjs.js +1 -0
- package/nodes/core/VarNode.js +11 -3
- package/nodes/core/VaryNode.cjs.js +1 -0
- package/nodes/core/VaryNode.js +15 -6
- package/nodes/core/constants.cjs.js +1 -0
- package/nodes/core/constants.js +7 -20
- package/nodes/display/ColorSpaceNode.cjs.js +1 -0
- package/nodes/display/ColorSpaceNode.js +38 -34
- package/nodes/display/NormalMapNode.cjs.js +1 -0
- package/nodes/display/NormalMapNode.js +53 -35
- package/nodes/fog/FogNode.cjs.js +1 -0
- package/nodes/fog/FogNode.js +9 -5
- package/nodes/fog/FogRangeNode.cjs.js +1 -0
- package/nodes/fog/FogRangeNode.js +9 -5
- package/nodes/functions/BSDFs.cjs.js +1 -0
- package/nodes/functions/BSDFs.js +118 -61
- package/nodes/functions/PhysicalMaterialFunctions.cjs.js +1 -0
- package/nodes/functions/PhysicalMaterialFunctions.js +57 -0
- package/nodes/lights/LightContextNode.cjs.js +1 -0
- package/nodes/lights/LightContextNode.js +23 -14
- package/nodes/lights/LightNode.cjs.js +1 -0
- package/nodes/lights/LightNode.js +31 -27
- package/nodes/lights/LightsNode.cjs.js +1 -0
- package/nodes/lights/LightsNode.js +28 -9
- package/nodes/loaders/NodeLoader.cjs.js +1 -0
- package/nodes/loaders/NodeLoader.js +42 -27
- package/nodes/loaders/NodeMaterialLoader.cjs.js +1 -0
- package/nodes/loaders/NodeMaterialLoader.js +10 -4
- package/nodes/loaders/NodeObjectLoader.cjs.js +1 -0
- package/nodes/loaders/NodeObjectLoader.js +19 -9
- package/nodes/materials/LineBasicNodeMaterial.cjs.js +1 -0
- package/nodes/materials/LineBasicNodeMaterial.js +10 -5
- package/nodes/materials/Materials.cjs.js +1 -0
- package/nodes/materials/Materials.js +17 -14
- package/nodes/materials/MeshBasicNodeMaterial.cjs.js +1 -0
- package/nodes/materials/MeshBasicNodeMaterial.js +10 -5
- package/nodes/materials/MeshStandardNodeMaterial.cjs.js +1 -0
- package/nodes/materials/MeshStandardNodeMaterial.js +8 -5
- package/nodes/materials/NodeMaterial.cjs.js +1 -0
- package/nodes/materials/NodeMaterial.js +36 -20
- package/nodes/materials/PointsNodeMaterial.cjs.js +1 -0
- package/nodes/materials/PointsNodeMaterial.js +10 -5
- package/nodes/math/CondNode.cjs.js +1 -0
- package/nodes/math/CondNode.js +23 -11
- package/nodes/math/MathNode.cjs.js +1 -0
- package/nodes/math/MathNode.js +142 -98
- package/nodes/math/OperatorNode.cjs.js +1 -0
- package/nodes/math/OperatorNode.js +46 -24
- package/nodes/parsers/GLSLNodeFunction.cjs.js +1 -0
- package/nodes/parsers/GLSLNodeFunction.js +101 -0
- package/nodes/parsers/GLSLNodeParser.cjs.js +1 -0
- package/nodes/parsers/GLSLNodeParser.js +13 -0
- package/nodes/parsers/WGSLNodeFunction.cjs.js +1 -0
- package/nodes/parsers/WGSLNodeFunction.js +71 -0
- package/nodes/parsers/WGSLNodeParser.cjs.js +1 -0
- package/nodes/parsers/WGSLNodeParser.js +13 -0
- package/nodes/procedural/CheckerNode.cjs.js +1 -0
- package/nodes/procedural/CheckerNode.js +19 -13
- package/nodes/utils/ArrayElementNode.cjs.js +1 -0
- package/nodes/utils/ArrayElementNode.js +8 -4
- package/nodes/utils/ConvertNode.cjs.js +1 -0
- package/nodes/utils/ConvertNode.js +8 -3
- package/nodes/utils/JoinNode.cjs.js +1 -0
- package/nodes/utils/JoinNode.js +11 -7
- package/nodes/utils/MatcapUVNode.cjs.js +1 -0
- package/nodes/utils/MatcapUVNode.js +11 -8
- package/nodes/utils/OscNode.cjs.js +1 -0
- package/nodes/utils/OscNode.js +33 -27
- package/nodes/utils/SplitNode.cjs.js +1 -0
- package/nodes/utils/SplitNode.js +20 -6
- package/nodes/utils/SpriteSheetUVNode.cjs.js +1 -0
- package/nodes/utils/SpriteSheetUVNode.js +23 -23
- package/nodes/utils/TimerNode.cjs.js +1 -0
- package/nodes/utils/TimerNode.js +24 -20
- package/objects/GroundProjectedEnv.cjs.js +1 -0
- package/objects/GroundProjectedEnv.js +37 -22
- package/objects/Lensflare.cjs.js +1 -0
- package/objects/Lensflare.js +156 -86
- package/objects/LightningStorm.cjs.js +1 -0
- package/objects/LightningStorm.js +102 -38
- package/objects/MarchingCubes.cjs.js +1 -0
- package/objects/MarchingCubes.js +303 -150
- package/objects/Reflector.cjs.js +1 -0
- package/objects/Reflector.js +72 -50
- package/objects/ReflectorForSSRPass.cjs.js +1 -0
- package/objects/ReflectorForSSRPass.js +131 -80
- package/objects/ReflectorRTT.cjs.js +1 -0
- package/objects/ReflectorRTT.js +7 -6
- package/objects/Refractor.cjs.js +1 -0
- package/objects/Refractor.js +106 -64
- package/objects/ShadowMesh.cjs.js +1 -0
- package/objects/ShadowMesh.js +17 -8
- package/objects/Sky.cjs.js +1 -0
- package/objects/Sky.js +80 -119
- package/objects/Water.cjs.js +1 -0
- package/objects/Water.js +127 -83
- package/objects/Water2.cjs.js +1 -0
- package/objects/Water2.js +108 -72
- package/offscreen/jank.cjs.js +1 -0
- package/offscreen/jank.js +14 -10
- package/offscreen/offscreen.cjs.js +1 -0
- package/offscreen/offscreen.js +5 -4
- package/offscreen/scene.cjs.js +1 -0
- package/offscreen/scene.js +48 -45
- package/package.json +3 -3
- package/physics/AmmoPhysics.cjs.js +1 -0
- package/physics/AmmoPhysics.js +71 -30
- package/postprocessing/AdaptiveToneMappingPass.cjs.js +1 -0
- package/postprocessing/AdaptiveToneMappingPass.js +123 -97
- package/postprocessing/AfterimagePass.cjs.js +1 -0
- package/postprocessing/AfterimagePass.js +49 -28
- package/postprocessing/BloomPass.cjs.js +1 -0
- package/postprocessing/BloomPass.js +69 -43
- package/postprocessing/BokehPass.cjs.js +1 -0
- package/postprocessing/BokehPass.js +69 -39
- package/postprocessing/ClearPass.cjs.js +1 -0
- package/postprocessing/ClearPass.js +25 -10
- package/postprocessing/CubeTexturePass.cjs.js +1 -0
- package/postprocessing/CubeTexturePass.js +27 -28
- package/postprocessing/DotScreenPass.cjs.js +1 -0
- package/postprocessing/DotScreenPass.js +32 -24
- package/postprocessing/EffectComposer.cjs.js +1 -0
- package/postprocessing/EffectComposer.js +86 -39
- package/postprocessing/FilmPass.cjs.js +1 -0
- package/postprocessing/FilmPass.js +30 -25
- package/postprocessing/GlitchPass.cjs.js +1 -0
- package/postprocessing/GlitchPass.js +61 -38
- package/postprocessing/HalftonePass.cjs.js +1 -0
- package/postprocessing/HalftonePass.js +39 -19
- package/postprocessing/LUTPass.cjs.js +1 -0
- package/postprocessing/LUTPass.js +38 -13
- package/postprocessing/MaskPass.cjs.js +1 -0
- package/postprocessing/MaskPass.js +38 -19
- package/postprocessing/OutlinePass.cjs.js +1 -0
- package/postprocessing/OutlinePass.js +277 -135
- package/postprocessing/Pass.cjs.js +1 -0
- package/postprocessing/Pass.js +44 -20
- package/postprocessing/RenderPass.cjs.js +1 -0
- package/postprocessing/RenderPass.js +36 -13
- package/postprocessing/RenderPixelatedPass.cjs.js +1 -0
- package/postprocessing/RenderPixelatedPass.js +58 -44
- package/postprocessing/SAOPass.cjs.js +1 -0
- package/postprocessing/SAOPass.js +189 -154
- package/postprocessing/SMAAPass.cjs.js +1 -0
- package/postprocessing/SMAAPass.js +84 -64
- package/postprocessing/SSAARenderPass.cjs.js +1 -0
- package/postprocessing/SSAARenderPass.js +69 -121
- package/postprocessing/SSAOPass.cjs.js +1 -0
- package/postprocessing/SSAOPass.js +172 -123
- package/postprocessing/SSRPass.cjs.js +1 -0
- package/postprocessing/SSRPass.js +280 -211
- package/postprocessing/SavePass.cjs.js +1 -0
- package/postprocessing/SavePass.js +25 -20
- package/postprocessing/ShaderPass.cjs.js +1 -0
- package/postprocessing/ShaderPass.js +30 -14
- package/postprocessing/TAARenderPass.cjs.js +1 -0
- package/postprocessing/TAARenderPass.js +61 -42
- package/postprocessing/TexturePass.cjs.js +1 -0
- package/postprocessing/TexturePass.js +22 -21
- package/postprocessing/UnrealBloomPass.cjs.js +1 -0
- package/postprocessing/UnrealBloomPass.js +213 -105
- package/renderers/CSS2DRenderer.cjs.js +1 -0
- package/renderers/CSS2DRenderer.js +56 -44
- package/renderers/CSS3DRenderer.cjs.js +1 -0
- package/renderers/CSS3DRenderer.js +86 -53
- package/renderers/Projector.cjs.js +1 -0
- package/renderers/Projector.js +274 -107
- package/renderers/SVGRenderer.cjs.js +1 -0
- package/renderers/SVGRenderer.js +182 -72
- package/renderers/nodes/accessors/CameraNode.cjs.js +1 -0
- package/renderers/nodes/accessors/CameraNode.js +40 -29
- package/renderers/nodes/accessors/ModelNode.cjs.js +1 -0
- package/renderers/nodes/accessors/ModelNode.js +37 -28
- package/renderers/nodes/accessors/ModelViewProjectionNode.cjs.js +1 -0
- package/renderers/nodes/accessors/ModelViewProjectionNode.js +23 -10
- package/renderers/nodes/accessors/NormalNode.cjs.js +1 -0
- package/renderers/nodes/accessors/NormalNode.js +45 -35
- package/renderers/nodes/accessors/PositionNode.cjs.js +1 -0
- package/renderers/nodes/accessors/PositionNode.js +19 -18
- package/renderers/nodes/accessors/UVNode.cjs.js +1 -0
- package/renderers/nodes/accessors/UVNode.js +10 -5
- package/renderers/nodes/core/AttributeNode.cjs.js +1 -0
- package/renderers/nodes/core/AttributeNode.js +14 -5
- package/renderers/nodes/core/InputNode.cjs.js +1 -0
- package/renderers/nodes/core/InputNode.js +14 -4
- package/renderers/nodes/core/Node.cjs.js +1 -0
- package/renderers/nodes/core/Node.js +17 -7
- package/renderers/nodes/core/NodeAttribute.cjs.js +1 -0
- package/renderers/nodes/core/NodeAttribute.js +6 -3
- package/renderers/nodes/core/NodeBuilder.cjs.js +1 -0
- package/renderers/nodes/core/NodeBuilder.js +154 -87
- package/renderers/nodes/core/NodeFrame.cjs.js +1 -0
- package/renderers/nodes/core/NodeFrame.js +12 -9
- package/renderers/nodes/core/NodeSlot.cjs.js +1 -0
- package/renderers/nodes/core/NodeSlot.js +3 -2
- package/renderers/nodes/core/NodeUniform.cjs.js +1 -0
- package/renderers/nodes/core/NodeUniform.js +9 -4
- package/renderers/nodes/core/NodeVary.cjs.js +1 -0
- package/renderers/nodes/core/NodeVary.js +7 -4
- package/renderers/nodes/core/VaryNode.cjs.js +1 -0
- package/renderers/nodes/core/VaryNode.js +12 -6
- package/renderers/nodes/core/constants.cjs.js +1 -0
- package/renderers/nodes/core/constants.js +13 -16
- package/renderers/nodes/inputs/ColorNode.cjs.js +1 -0
- package/renderers/nodes/inputs/ColorNode.js +11 -5
- package/renderers/nodes/inputs/FloatNode.cjs.js +1 -0
- package/renderers/nodes/inputs/FloatNode.js +11 -5
- package/renderers/nodes/inputs/Matrix3Node.cjs.js +1 -0
- package/renderers/nodes/inputs/Matrix3Node.js +13 -7
- package/renderers/nodes/inputs/Matrix4Node.cjs.js +1 -0
- package/renderers/nodes/inputs/Matrix4Node.js +13 -7
- package/renderers/nodes/inputs/TextureNode.cjs.js +1 -0
- package/renderers/nodes/inputs/TextureNode.js +15 -7
- package/renderers/nodes/inputs/Vector2Node.cjs.js +1 -0
- package/renderers/nodes/inputs/Vector2Node.js +11 -5
- package/renderers/nodes/inputs/Vector3Node.cjs.js +1 -0
- package/renderers/nodes/inputs/Vector3Node.js +13 -7
- package/renderers/nodes/inputs/Vector4Node.cjs.js +1 -0
- package/renderers/nodes/inputs/Vector4Node.js +13 -7
- package/renderers/nodes/math/MathNode.cjs.js +1 -0
- package/renderers/nodes/math/MathNode.js +30 -20
- package/renderers/nodes/math/OperatorNode.cjs.js +1 -0
- package/renderers/nodes/math/OperatorNode.js +20 -4
- package/renderers/nodes/utils/SwitchNode.cjs.js +1 -0
- package/renderers/nodes/utils/SwitchNode.js +9 -4
- package/renderers/nodes/utils/TimerNode.cjs.js +1 -0
- package/renderers/nodes/utils/TimerNode.js +10 -5
- package/renderers/webgpu/WebGPU.cjs.js +1 -0
- package/renderers/webgpu/WebGPU.js +16 -14
- package/renderers/webgpu/WebGPUAttributes.cjs.js +1 -0
- package/renderers/webgpu/WebGPUAttributes.js +23 -16
- package/renderers/webgpu/WebGPUBackground.cjs.js +1 -0
- package/renderers/webgpu/WebGPUBackground.js +30 -13
- package/renderers/webgpu/WebGPUBinding.cjs.js +1 -0
- package/renderers/webgpu/WebGPUBinding.js +7 -4
- package/renderers/webgpu/WebGPUBindings.cjs.js +1 -0
- package/renderers/webgpu/WebGPUBindings.js +57 -21
- package/renderers/webgpu/WebGPUComputePipelines.cjs.js +1 -0
- package/renderers/webgpu/WebGPUComputePipelines.js +25 -14
- package/renderers/webgpu/WebGPUGeometries.cjs.js +1 -0
- package/renderers/webgpu/WebGPUGeometries.js +15 -5
- package/renderers/webgpu/WebGPUInfo.cjs.js +1 -0
- package/renderers/webgpu/WebGPUInfo.js +8 -3
- package/renderers/webgpu/WebGPUObjects.cjs.js +1 -0
- package/renderers/webgpu/WebGPUObjects.js +10 -5
- package/renderers/webgpu/WebGPUProperties.cjs.js +1 -0
- package/renderers/webgpu/WebGPUProperties.js +11 -5
- package/renderers/webgpu/WebGPURenderLists.cjs.js +1 -0
- package/renderers/webgpu/WebGPURenderLists.js +36 -20
- package/renderers/webgpu/WebGPURenderPipelines.cjs.js +1 -0
- package/renderers/webgpu/WebGPURenderPipelines.js +387 -260
- package/renderers/webgpu/WebGPURenderer.cjs.js +1 -0
- package/renderers/webgpu/WebGPURenderer.js +262 -124
- package/renderers/webgpu/WebGPUSampledTexture.cjs.js +1 -0
- package/renderers/webgpu/WebGPUSampledTexture.js +31 -18
- package/renderers/webgpu/WebGPUSampler.cjs.js +1 -0
- package/renderers/webgpu/WebGPUSampler.js +12 -7
- package/renderers/webgpu/WebGPUStorageBuffer.cjs.js +1 -0
- package/renderers/webgpu/WebGPUStorageBuffer.js +12 -7
- package/renderers/webgpu/WebGPUTextureRenderer.cjs.js +1 -0
- package/renderers/webgpu/WebGPUTextureRenderer.js +11 -5
- package/renderers/webgpu/WebGPUTextureUtils.cjs.js +1 -0
- package/renderers/webgpu/WebGPUTextureUtils.js +40 -29
- package/renderers/webgpu/WebGPUTextures.cjs.js +1 -0
- package/renderers/webgpu/WebGPUTextures.js +333 -186
- package/renderers/webgpu/WebGPUUniform.cjs.js +1 -0
- package/renderers/webgpu/WebGPUUniform.js +51 -25
- package/renderers/webgpu/WebGPUUniformsGroup.cjs.js +1 -0
- package/renderers/webgpu/WebGPUUniformsGroup.js +72 -32
- package/renderers/webgpu/constants.cjs.js +1 -0
- package/renderers/webgpu/constants.js +181 -190
- package/renderers/webgpu/nodes/ShaderLib.cjs.js +1 -0
- package/renderers/webgpu/nodes/ShaderLib.js +2 -2
- package/renderers/webgpu/nodes/WebGPUNodeBuilder.cjs.js +1 -0
- package/renderers/webgpu/nodes/WebGPUNodeBuilder.js +124 -53
- package/renderers/webgpu/nodes/WebGPUNodeUniform.cjs.js +1 -0
- package/renderers/webgpu/nodes/WebGPUNodeUniform.js +31 -17
- package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.cjs.js +1 -0
- package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +9 -8
- package/renderers/webgpu/nodes/WebGPUNodes.cjs.js +1 -0
- package/renderers/webgpu/nodes/WebGPUNodes.js +45 -7
- package/shaders/ACESFilmicToneMappingShader.cjs.js +1 -0
- package/shaders/ACESFilmicToneMappingShader.js +24 -44
- package/shaders/AfterimageShader.cjs.js +1 -0
- package/shaders/AfterimageShader.js +18 -28
- package/shaders/BasicShader.cjs.js +1 -0
- package/shaders/BasicShader.js +7 -9
- package/shaders/BleachBypassShader.cjs.js +1 -0
- package/shaders/BleachBypassShader.js +15 -31
- package/shaders/BlendShader.cjs.js +1 -0
- package/shaders/BlendShader.js +19 -26
- package/shaders/BokehShader.cjs.js +1 -0
- package/shaders/BokehShader.js +36 -98
- package/shaders/BokehShader2.cjs.js +1 -0
- package/shaders/BokehShader2.js +90 -261
- package/shaders/BrightnessContrastShader.cjs.js +1 -0
- package/shaders/BrightnessContrastShader.js +19 -28
- package/shaders/ColorCorrectionShader.cjs.js +1 -0
- package/shaders/ColorCorrectionShader.js +22 -26
- package/shaders/ColorifyShader.cjs.js +1 -0
- package/shaders/ColorifyShader.js +16 -24
- package/shaders/ConvolutionShader.cjs.js +1 -0
- package/shaders/ConvolutionShader.js +36 -40
- package/shaders/CopyShader.cjs.js +1 -0
- package/shaders/CopyShader.js +13 -21
- package/shaders/DOFMipMapShader.cjs.js +1 -0
- package/shaders/DOFMipMapShader.js +21 -28
- package/shaders/DepthLimitedBlurShader.cjs.js +1 -0
- package/shaders/DepthLimitedBlurShader.js +40 -85
- package/shaders/DigitalGlitch.cjs.js +1 -0
- package/shaders/DigitalGlitch.js +46 -74
- package/shaders/DotScreenShader.cjs.js +1 -0
- package/shaders/DotScreenShader.js +27 -35
- package/shaders/FXAAShader.cjs.js +1 -0
- package/shaders/FXAAShader.js +19 -1094
- package/shaders/FilmShader.cjs.js +1 -0
- package/shaders/FilmShader.js +52 -38
- package/shaders/FocusShader.cjs.js +1 -0
- package/shaders/FocusShader.js +24 -51
- package/shaders/FreiChenShader.cjs.js +1 -0
- package/shaders/FreiChenShader.js +24 -57
- package/shaders/FresnelShader.cjs.js +1 -0
- package/shaders/FresnelShader.js +22 -43
- package/shaders/GammaCorrectionShader.cjs.js +1 -0
- package/shaders/GammaCorrectionShader.js +11 -19
- package/shaders/GodRaysShader.cjs.js +1 -0
- package/shaders/GodRaysShader.js +94 -103
- package/shaders/HalftoneShader.cjs.js +1 -0
- package/shaders/HalftoneShader.js +65 -208
- package/shaders/HorizontalBlurShader.cjs.js +1 -0
- package/shaders/HorizontalBlurShader.js +23 -7
- package/shaders/HorizontalTiltShiftShader.cjs.js +1 -0
- package/shaders/HorizontalTiltShiftShader.js +21 -33
- package/shaders/HueSaturationShader.cjs.js +1 -0
- package/shaders/HueSaturationShader.js +21 -37
- package/shaders/KaleidoShader.cjs.js +1 -0
- package/shaders/KaleidoShader.js +22 -30
- package/shaders/LuminosityHighPassShader.cjs.js +1 -0
- package/shaders/LuminosityHighPassShader.js +27 -33
- package/shaders/LuminosityShader.cjs.js +1 -0
- package/shaders/LuminosityShader.js +11 -21
- package/shaders/MirrorShader.cjs.js +1 -0
- package/shaders/MirrorShader.js +16 -31
- package/shaders/NormalMapShader.cjs.js +1 -0
- package/shaders/NormalMapShader.js +23 -27
- package/shaders/ParallaxShader.cjs.js +1 -0
- package/shaders/ParallaxShader.js +48 -107
- package/shaders/PixelShader.cjs.js +1 -0
- package/shaders/PixelShader.js +16 -24
- package/shaders/RGBShiftShader.cjs.js +1 -0
- package/shaders/RGBShiftShader.js +22 -26
- package/shaders/SAOShader.cjs.js +1 -0
- package/shaders/SAOShader.js +48 -132
- package/shaders/SMAAShader.cjs.js +1 -0
- package/shaders/SMAAShader.js +135 -256
- package/shaders/SSAOShader.cjs.js +1 -0
- package/shaders/SSAOShader.js +81 -153
- package/shaders/SSRShader.cjs.js +1 -0
- package/shaders/SSRShader.js +87 -32
- package/shaders/SepiaShader.cjs.js +1 -0
- package/shaders/SepiaShader.js +15 -25
- package/shaders/SobelOperatorShader.cjs.js +1 -0
- package/shaders/SobelOperatorShader.js +29 -40
- package/shaders/SubsurfaceScatteringShader.cjs.js +1 -0
- package/shaders/SubsurfaceScatteringShader.js +39 -53
- package/shaders/TechnicolorShader.cjs.js +1 -0
- package/shaders/TechnicolorShader.js +13 -20
- package/shaders/ToneMapShader.cjs.js +1 -0
- package/shaders/ToneMapShader.js +28 -44
- package/shaders/ToonShader.cjs.js +1 -0
- package/shaders/ToonShader.js +96 -172
- package/shaders/TriangleBlurShader.cjs.js +1 -0
- package/shaders/TriangleBlurShader.js +23 -32
- package/shaders/UnpackDepthRGBAShader.cjs.js +1 -0
- package/shaders/UnpackDepthRGBAShader.js +14 -22
- package/shaders/VerticalBlurShader.cjs.js +1 -0
- package/shaders/VerticalBlurShader.js +23 -7
- package/shaders/VerticalTiltShiftShader.cjs.js +1 -0
- package/shaders/VerticalTiltShiftShader.js +21 -33
- package/shaders/VignetteShader.cjs.js +1 -0
- package/shaders/VignetteShader.js +28 -24
- package/shaders/VolumeShader.cjs.js +1 -0
- package/shaders/VolumeShader.js +77 -174
- package/shaders/WaterRefractionShader.cjs.js +1 -0
- package/shaders/WaterRefractionShader.js +6 -38
- package/shaders/types.cjs.js +1 -0
- package/shaders/types.js +1 -1
- package/textures/FlakesTexture.cjs.js +1 -0
- package/textures/FlakesTexture.js +10 -8
- package/types/helpers.cjs.js +1 -0
- package/types/helpers.js +2 -3
- package/types/shared.cjs.js +1 -0
- package/types/shared.js +1 -0
- package/types/utils.cjs.js +1 -0
- package/types/utils.js +1 -0
- package/utils/BufferGeometryUtils.cjs.js +1 -0
- package/utils/BufferGeometryUtils.js +325 -251
- package/utils/GeometryCompressionUtils.cjs.js +1 -0
- package/utils/GeometryCompressionUtils.js +239 -241
- package/utils/GeometryUtils.cjs.js +1 -0
- package/utils/GeometryUtils.js +94 -41
- package/utils/LDrawUtils.cjs.js +1 -0
- package/utils/LDrawUtils.d.ts +5 -0
- package/utils/LDrawUtils.js +144 -0
- package/utils/RoughnessMipmapper.cjs.js +1 -0
- package/utils/RoughnessMipmapper.js +82 -38
- package/utils/SceneUtils.cjs.js +1 -0
- package/utils/SceneUtils.js +20 -15
- package/utils/ShadowMapViewer.cjs.js +1 -0
- package/utils/ShadowMapViewer.js +95 -49
- package/utils/SkeletonUtils.cjs.js +1 -0
- package/utils/SkeletonUtils.js +165 -74
- package/utils/UVsDebug.cjs.js +1 -0
- package/utils/UVsDebug.js +62 -32
- package/utils/WorkerPool.cjs.js +1 -0
- package/utils/WorkerPool.js +33 -13
- package/webxr/ARButton.cjs.js +1 -0
- package/webxr/ARButton.js +98 -72
- package/webxr/OculusHandModel.cjs.js +1 -0
- package/webxr/OculusHandModel.js +37 -18
- package/webxr/OculusHandPointerModel.cjs.js +1 -0
- package/webxr/OculusHandPointerModel.js +80 -58
- package/webxr/Text2D.cjs.js +1 -0
- package/webxr/Text2D.js +19 -37
- package/webxr/VRButton.cjs.js +1 -0
- package/webxr/VRButton.js +90 -59
- package/webxr/XRControllerModelFactory.cjs.js +1 -0
- package/webxr/XRControllerModelFactory.js +116 -58
- package/webxr/XREstimatedLight.cjs.js +1 -0
- package/webxr/XREstimatedLight.js +66 -39
- package/webxr/XRHandMeshModel.cjs.js +1 -0
- package/webxr/XRHandMeshModel.js +29 -40
- package/webxr/XRHandModelFactory.cjs.js +1 -0
- package/webxr/XRHandModelFactory.js +31 -28
- package/webxr/XRHandPrimitiveModel.cjs.js +1 -0
- package/webxr/XRHandPrimitiveModel.js +27 -41
- package/animation/AnimationClipCreator.mjs +0 -57
- package/animation/CCDIKSolver.mjs +0 -223
- package/animation/MMDAnimationHelper.mjs +0 -514
- package/animation/MMDPhysics.mjs +0 -769
- package/cameras/CinematicCamera.mjs +0 -129
- package/controls/ArcballControls.mjs +0 -1737
- package/controls/DeviceOrientationControls.mjs +0 -74
- package/controls/DragControls.mjs +0 -172
- package/controls/FirstPersonControls.mjs +0 -220
- package/controls/FlyControls.mjs +0 -239
- package/controls/OrbitControls.mjs +0 -731
- package/controls/PointerLockControls.mjs +0 -88
- package/controls/TrackballControls.mjs +0 -481
- package/controls/TransformControls.mjs +0 -1068
- package/controls/experimental/CameraControls.mjs +0 -673
- package/csm/CSM.mjs +0 -244
- package/csm/CSMFrustum.mjs +0 -75
- package/csm/CSMHelper.mjs +0 -114
- package/csm/CSMShader.mjs +0 -251
- package/curves/CurveExtras.mjs +0 -224
- package/curves/NURBSCurve.mjs +0 -35
- package/curves/NURBSSurface.mjs +0 -28
- package/curves/NURBSUtils.mjs +0 -226
- package/deprecated/Geometry.mjs +0 -966
- package/effects/AnaglyphEffect.mjs +0 -120
- package/effects/AsciiEffect.mjs +0 -173
- package/effects/OutlineEffect.mjs +0 -295
- package/effects/ParallaxBarrierEffect.mjs +0 -64
- package/effects/PeppersGhostEffect.mjs +0 -85
- package/effects/StereoEffect.mjs +0 -32
- package/environments/RoomEnvironment.mjs +0 -78
- package/exporters/ColladaExporter.mjs +0 -299
- package/exporters/DRACOExporter.mjs +0 -132
- package/exporters/GLTFExporter.mjs +0 -1381
- package/exporters/MMDExporter.mjs +0 -102
- package/exporters/OBJExporter.mjs +0 -166
- package/exporters/PLYExporter.mjs +0 -278
- package/exporters/STLExporter.mjs +0 -129
- package/exporters/USDZExporter.mjs +0 -328
- package/geometries/BoxLineGeometry.mjs +0 -45
- package/geometries/ConvexGeometry.mjs +0 -29
- package/geometries/DecalGeometry.mjs +0 -184
- package/geometries/LightningStrike.mjs +0 -547
- package/geometries/ParametricGeometries.mjs +0 -129
- package/geometries/ParametricGeometry.mjs +0 -63
- package/geometries/RoundedBoxGeometry.mjs +0 -91
- package/geometries/TeapotGeometry.mjs +0 -1557
- package/geometries/TextGeometry.mjs +0 -23
- package/helpers/LightProbeHelper.mjs +0 -72
- package/helpers/PositionalAudioHelper.mjs +0 -68
- package/helpers/RectAreaLightHelper.mjs +0 -44
- package/helpers/VertexNormalsHelper.mjs +0 -54
- package/helpers/VertexTangentsHelper.mjs +0 -45
- package/index.mjs +0 -969
- package/interactive/SelectionBox.mjs +0 -137
- package/interactive/SelectionHelper.mjs +0 -54
- package/libs/MeshoptDecoder.mjs +0 -210
- package/libs/MotionControllers.mjs +0 -261
- package/lights/LightProbeGenerator.mjs +0 -145
- package/lights/RectAreaLightUniformsLib.mjs +0 -32842
- package/lines/Line2.mjs +0 -13
- package/lines/LineGeometry.mjs +0 -44
- package/lines/LineMaterial.mjs +0 -539
- package/lines/LineSegments2.mjs +0 -202
- package/lines/LineSegmentsGeometry.mjs +0 -124
- package/lines/Wireframe.mjs +0 -31
- package/lines/WireframeGeometry2.mjs +0 -13
- package/loaders/3DMLoader.mjs +0 -802
- package/loaders/3MFLoader.mjs +0 -837
- package/loaders/AMFLoader.mjs +0 -284
- package/loaders/AssimpLoader.mjs +0 -1396
- package/loaders/BVHLoader.mjs +0 -207
- package/loaders/BasisTextureLoader.mjs +0 -474
- package/loaders/ColladaLoader.mjs +0 -2403
- package/loaders/DDSLoader.mjs +0 -148
- package/loaders/DRACOLoader.mjs +0 -340
- package/loaders/EXRLoader.mjs +0 -1351
- package/loaders/FBXLoader.mjs +0 -2362
- package/loaders/FontLoader.mjs +0 -111
- package/loaders/GCodeLoader.mjs +0 -141
- package/loaders/GLTFLoader.mjs +0 -2316
- package/loaders/HDRCubeTextureLoader.mjs +0 -77
- package/loaders/KMZLoader.mjs +0 -75
- package/loaders/KTX2Loader.mjs +0 -427
- package/loaders/KTXLoader.mjs +0 -87
- package/loaders/LDrawLoader.mjs +0 -1409
- package/loaders/LUT3dlLoader.mjs +0 -100
- package/loaders/LUTCubeLoader.mjs +0 -104
- package/loaders/LWOLoader.mjs +0 -625
- package/loaders/LottieLoader.mjs +0 -47
- package/loaders/MD2Loader.mjs +0 -359
- package/loaders/MDDLoader.mjs +0 -58
- package/loaders/MMDLoader.mjs +0 -998
- package/loaders/MTLLoader.mjs +0 -280
- package/loaders/NRRDLoader.mjs +0 -401
- package/loaders/NodeMaterialLoader.mjs +0 -146
- package/loaders/OBJLoader.mjs +0 -487
- package/loaders/PCDLoader.mjs +0 -248
- package/loaders/PDBLoader.mjs +0 -246
- package/loaders/PLYLoader.mjs +0 -317
- package/loaders/PRWMLoader.mjs +0 -160
- package/loaders/PVRLoader.mjs +0 -131
- package/loaders/RGBELoader.mjs +0 -244
- package/loaders/RGBMLoader.mjs +0 -998
- package/loaders/STLLoader.mjs +0 -190
- package/loaders/SVGLoader.mjs +0 -1709
- package/loaders/TDSLoader.mjs +0 -480
- package/loaders/TGALoader.mjs +0 -285
- package/loaders/TTFLoader.mjs +0 -131
- package/loaders/TiltLoader.mjs +0 -373
- package/loaders/VOXLoader.mjs +0 -431
- package/loaders/VRMLLoader.mjs +0 -2093
- package/loaders/VRMLoader.mjs +0 -38
- package/loaders/VTKLoader.mjs +0 -646
- package/loaders/XLoader.mjs +0 -1258
- package/loaders/XYZLoader.mjs +0 -60
- package/loaders/lwo/IFFParser.mjs +0 -697
- package/loaders/lwo/LWO2Parser.mjs +0 -327
- package/loaders/lwo/LWO3Parser.mjs +0 -298
- package/math/Capsule.mjs +0 -100
- package/math/ColorConverter.mjs +0 -51
- package/math/ConvexHull.mjs +0 -574
- package/math/ImprovedNoise.mjs +0 -302
- package/math/Lut.mjs +0 -135
- package/math/MeshSurfaceSampler.mjs +0 -107
- package/math/OBB.mjs +0 -235
- package/math/Octree.mjs +0 -278
- package/math/SimplexNoise.mjs +0 -425
- package/misc/ConvexObjectBreaker.mjs +0 -292
- package/misc/GPUComputationRenderer.mjs +0 -171
- package/misc/Gyroscope.mjs +0 -35
- package/misc/MD2Character.mjs +0 -162
- package/misc/MD2CharacterComplex.mjs +0 -328
- package/misc/MorphAnimMesh.mjs +0 -40
- package/misc/MorphBlendMesh.mjs +0 -179
- package/misc/ProgressiveLightmap.mjs +0 -166
- package/misc/RollerCoaster.mjs +0 -346
- package/misc/TubePainter.mjs +0 -123
- package/misc/Volume.mjs +0 -244
- package/misc/VolumeSlice.mjs +0 -106
- package/misc/WebGL.mjs +0 -74
- package/modifiers/CurveModifier.mjs +0 -182
- package/modifiers/EdgeSplitModifier.mjs +0 -162
- package/modifiers/SimplifyModifier.mjs +0 -282
- package/modifiers/TessellateModifier.mjs +0 -206
- package/nodes/Nodes.mjs +0 -400
- package/nodes/ShaderNode.mjs +0 -408
- package/nodes/accessors/BufferNode.mjs +0 -15
- package/nodes/accessors/CameraNode.mjs +0 -44
- package/nodes/accessors/CubeTextureNode.mjs +0 -42
- package/nodes/accessors/MaterialNode.mjs +0 -71
- package/nodes/accessors/MaterialReferenceNode.mjs +0 -14
- package/nodes/accessors/ModelNode.mjs +0 -9
- package/nodes/accessors/ModelViewProjectionNode.mjs +0 -24
- package/nodes/accessors/NormalNode.mjs +0 -62
- package/nodes/accessors/Object3DNode.mjs +0 -76
- package/nodes/accessors/PointUVNode.mjs +0 -13
- package/nodes/accessors/PositionNode.mjs +0 -65
- package/nodes/accessors/ReferenceNode.mjs +0 -37
- package/nodes/accessors/ReflectNode.mjs +0 -43
- package/nodes/accessors/SkinningNode.mjs +0 -58
- package/nodes/accessors/TextureNode.mjs +0 -54
- package/nodes/accessors/UVNode.mjs +0 -23
- package/nodes/core/ArrayUniformNode.mjs +0 -14
- package/nodes/core/AttributeNode.mjs +0 -30
- package/nodes/core/BypassNode.mjs +0 -22
- package/nodes/core/CodeNode.mjs +0 -28
- package/nodes/core/ConstNode.mjs +0 -14
- package/nodes/core/ContextNode.mjs +0 -22
- package/nodes/core/ExpressionNode.mjs +0 -19
- package/nodes/core/FunctionCallNode.mjs +0 -37
- package/nodes/core/FunctionNode.mjs +0 -56
- package/nodes/core/InputNode.mjs +0 -38
- package/nodes/core/Node.mjs +0 -139
- package/nodes/core/NodeAttribute.mjs +0 -10
- package/nodes/core/NodeBuilder.mjs +0 -395
- package/nodes/core/NodeCode.mjs +0 -11
- package/nodes/core/NodeFrame.mjs +0 -35
- package/nodes/core/NodeFunctionInput.mjs +0 -13
- package/nodes/core/NodeKeywords.mjs +0 -44
- package/nodes/core/NodeUniform.mjs +0 -18
- package/nodes/core/NodeUtils.mjs +0 -57
- package/nodes/core/NodeVar.mjs +0 -10
- package/nodes/core/NodeVary.mjs +0 -10
- package/nodes/core/PropertyNode.mjs +0 -21
- package/nodes/core/TempNode.mjs +0 -25
- package/nodes/core/UniformNode.mjs +0 -23
- package/nodes/core/VarNode.mjs +0 -31
- package/nodes/core/VaryNode.mjs +0 -30
- package/nodes/core/constants.mjs +0 -24
- package/nodes/display/ColorSpaceNode.mjs +0 -63
- package/nodes/display/NormalMapNode.mjs +0 -54
- package/nodes/fog/FogNode.mjs +0 -15
- package/nodes/fog/FogRangeNode.mjs +0 -17
- package/nodes/functions/BSDFs.mjs +0 -64
- package/nodes/lights/LightContextNode.mjs +0 -35
- package/nodes/lights/LightNode.mjs +0 -58
- package/nodes/lights/LightsNode.mjs +0 -59
- package/nodes/loaders/NodeLoader.mjs +0 -66
- package/nodes/loaders/NodeMaterialLoader.mjs +0 -24
- package/nodes/loaders/NodeObjectLoader.mjs +0 -40
- package/nodes/materials/LineBasicNodeMaterial.mjs +0 -27
- package/nodes/materials/Materials.mjs +0 -28
- package/nodes/materials/MeshBasicNodeMaterial.mjs +0 -28
- package/nodes/materials/MeshStandardNodeMaterial.mjs +0 -41
- package/nodes/materials/NodeMaterial.mjs +0 -64
- package/nodes/materials/PointsNodeMaterial.mjs +0 -30
- package/nodes/math/CondNode.mjs +0 -38
- package/nodes/math/MathNode.mjs +0 -163
- package/nodes/math/OperatorNode.mjs +0 -103
- package/nodes/procedural/CheckerNode.mjs +0 -21
- package/nodes/utils/ArrayElementNode.mjs +0 -19
- package/nodes/utils/ConvertNode.mjs +0 -25
- package/nodes/utils/JoinNode.mjs +0 -26
- package/nodes/utils/MatcapUVNode.mjs +0 -16
- package/nodes/utils/OscNode.mjs +0 -50
- package/nodes/utils/SplitNode.mjs +0 -45
- package/nodes/utils/SpriteSheetUVNode.mjs +0 -40
- package/nodes/utils/TimerNode.mjs +0 -44
- package/objects/GroundProjectedEnv.mjs +0 -130
- package/objects/Lensflare.mjs +0 -262
- package/objects/LightningStorm.mjs +0 -110
- package/objects/MarchingCubes.mjs +0 -457
- package/objects/Reflector.mjs +0 -166
- package/objects/ReflectorForSSRPass.mjs +0 -247
- package/objects/ReflectorRTT.mjs +0 -10
- package/objects/Refractor.mjs +0 -178
- package/objects/ShadowMesh.mjs +0 -41
- package/objects/Sky.mjs +0 -124
- package/objects/Water.mjs +0 -235
- package/objects/Water2.mjs +0 -252
- package/offscreen/jank.mjs +0 -27
- package/offscreen/offscreen.mjs +0 -5
- package/offscreen/scene.mjs +0 -52
- package/physics/AmmoPhysics.mjs +0 -165
- package/postprocessing/AdaptiveToneMappingPass.mjs +0 -221
- package/postprocessing/AfterimagePass.mjs +0 -55
- package/postprocessing/BloomPass.mjs +0 -90
- package/postprocessing/BokehPass.mjs +0 -76
- package/postprocessing/ClearPass.mjs +0 -27
- package/postprocessing/CubeTexturePass.mjs +0 -49
- package/postprocessing/DotScreenPass.mjs +0 -40
- package/postprocessing/EffectComposer.mjs +0 -139
- package/postprocessing/FilmPass.mjs +0 -42
- package/postprocessing/GlitchPass.mjs +0 -75
- package/postprocessing/HalftonePass.mjs +0 -44
- package/postprocessing/LUTPass.mjs +0 -136
- package/postprocessing/MaskPass.mjs +0 -60
- package/postprocessing/OutlinePass.mjs +0 -438
- package/postprocessing/Pass.mjs +0 -37
- package/postprocessing/RenderPass.mjs +0 -48
- package/postprocessing/RenderPixelatedPass.mjs +0 -199
- package/postprocessing/SAOPass.mjs +0 -282
- package/postprocessing/SMAAPass.mjs +0 -112
- package/postprocessing/SSAARenderPass.mjs +0 -170
- package/postprocessing/SSAOPass.mjs +0 -265
- package/postprocessing/SSRPass.mjs +0 -432
- package/postprocessing/SavePass.mjs +0 -37
- package/postprocessing/ShaderPass.mjs +0 -39
- package/postprocessing/TAARenderPass.mjs +0 -88
- package/postprocessing/TexturePass.mjs +0 -39
- package/postprocessing/UnrealBloomPass.mjs +0 -220
- package/renderers/CSS2DRenderer.mjs +0 -112
- package/renderers/CSS3DRenderer.mjs +0 -133
- package/renderers/Projector.mjs +0 -511
- package/renderers/SVGRenderer.mjs +0 -306
- package/renderers/nodes/accessors/CameraNode.mjs +0 -63
- package/renderers/nodes/accessors/ModelNode.mjs +0 -61
- package/renderers/nodes/accessors/ModelViewProjectionNode.mjs +0 -21
- package/renderers/nodes/accessors/NormalNode.mjs +0 -61
- package/renderers/nodes/accessors/PositionNode.mjs +0 -30
- package/renderers/nodes/accessors/UVNode.mjs +0 -13
- package/renderers/nodes/core/AttributeNode.mjs +0 -35
- package/renderers/nodes/core/InputNode.mjs +0 -31
- package/renderers/nodes/core/Node.mjs +0 -34
- package/renderers/nodes/core/NodeAttribute.mjs +0 -10
- package/renderers/nodes/core/NodeBuilder.mjs +0 -243
- package/renderers/nodes/core/NodeFrame.mjs +0 -35
- package/renderers/nodes/core/NodeSlot.mjs +0 -10
- package/renderers/nodes/core/NodeUniform.mjs +0 -18
- package/renderers/nodes/core/NodeVary.mjs +0 -11
- package/renderers/nodes/core/VaryNode.mjs +0 -22
- package/renderers/nodes/core/constants.mjs +0 -22
- package/renderers/nodes/inputs/ColorNode.mjs +0 -11
- package/renderers/nodes/inputs/FloatNode.mjs +0 -11
- package/renderers/nodes/inputs/Matrix3Node.mjs +0 -12
- package/renderers/nodes/inputs/Matrix4Node.mjs +0 -12
- package/renderers/nodes/inputs/TextureNode.mjs +0 -20
- package/renderers/nodes/inputs/Vector2Node.mjs +0 -11
- package/renderers/nodes/inputs/Vector3Node.mjs +0 -12
- package/renderers/nodes/inputs/Vector4Node.mjs +0 -12
- package/renderers/nodes/math/MathNode.mjs +0 -55
- package/renderers/nodes/math/OperatorNode.mjs +0 -42
- package/renderers/nodes/utils/SwitchNode.mjs +0 -20
- package/renderers/nodes/utils/TimerNode.mjs +0 -14
- package/renderers/webgpu/WebGPU.mjs +0 -24
- package/renderers/webgpu/WebGPUAttributes.mjs +0 -69
- package/renderers/webgpu/WebGPUBackground.mjs +0 -61
- package/renderers/webgpu/WebGPUBinding.mjs +0 -14
- package/renderers/webgpu/WebGPUBindings.mjs +0 -155
- package/renderers/webgpu/WebGPUComputePipelines.mjs +0 -44
- package/renderers/webgpu/WebGPUGeometries.mjs +0 -41
- package/renderers/webgpu/WebGPUInfo.mjs +0 -46
- package/renderers/webgpu/WebGPUObjects.mjs +0 -25
- package/renderers/webgpu/WebGPUProperties.mjs +0 -22
- package/renderers/webgpu/WebGPURenderLists.mjs +0 -119
- package/renderers/webgpu/WebGPURenderPipelines.mjs +0 -545
- package/renderers/webgpu/WebGPURenderer.mjs +0 -574
- package/renderers/webgpu/WebGPUSampledTexture.mjs +0 -40
- package/renderers/webgpu/WebGPUSampler.mjs +0 -15
- package/renderers/webgpu/WebGPUStorageBuffer.mjs +0 -15
- package/renderers/webgpu/WebGPUTextureRenderer.mjs +0 -23
- package/renderers/webgpu/WebGPUTextureUtils.mjs +0 -98
- package/renderers/webgpu/WebGPUTextures.mjs +0 -484
- package/renderers/webgpu/WebGPUUniform.mjs +0 -81
- package/renderers/webgpu/WebGPUUniformsGroup.mjs +0 -176
- package/renderers/webgpu/constants.mjs +0 -230
- package/renderers/webgpu/nodes/ShaderLib.mjs +0 -42
- package/renderers/webgpu/nodes/WebGPUNodeBuilder.mjs +0 -165
- package/renderers/webgpu/nodes/WebGPUNodeUniform.mjs +0 -73
- package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.mjs +0 -15
- package/renderers/webgpu/nodes/WebGPUNodes.mjs +0 -40
- package/shaders/ACESFilmicToneMappingShader.mjs +0 -48
- package/shaders/AfterimageShader.mjs +0 -32
- package/shaders/BasicShader.mjs +0 -12
- package/shaders/BleachBypassShader.mjs +0 -35
- package/shaders/BlendShader.mjs +0 -30
- package/shaders/BokehShader.mjs +0 -106
- package/shaders/BokehShader2.mjs +0 -269
- package/shaders/BrightnessContrastShader.mjs +0 -32
- package/shaders/ColorCorrectionShader.mjs +0 -30
- package/shaders/ColorifyShader.mjs +0 -28
- package/shaders/ConvolutionShader.mjs +0 -55
- package/shaders/CopyShader.mjs +0 -25
- package/shaders/DOFMipMapShader.mjs +0 -32
- package/shaders/DepthLimitedBlurShader.mjs +0 -114
- package/shaders/DigitalGlitch.mjs +0 -78
- package/shaders/DotScreenShader.mjs +0 -39
- package/shaders/FXAAShader.mjs +0 -1098
- package/shaders/FilmShader.mjs +0 -42
- package/shaders/FocusShader.mjs +0 -55
- package/shaders/FreiChenShader.mjs +0 -61
- package/shaders/FresnelShader.mjs +0 -47
- package/shaders/GammaCorrectionShader.mjs +0 -23
- package/shaders/GodRaysShader.mjs +0 -146
- package/shaders/HalftoneShader.mjs +0 -212
- package/shaders/HorizontalBlurShader.mjs +0 -43
- package/shaders/HorizontalTiltShiftShader.mjs +0 -37
- package/shaders/HueSaturationShader.mjs +0 -41
- package/shaders/KaleidoShader.mjs +0 -34
- package/shaders/LuminosityHighPassShader.mjs +0 -37
- package/shaders/LuminosityShader.mjs +0 -25
- package/shaders/MirrorShader.mjs +0 -35
- package/shaders/NormalMapShader.mjs +0 -31
- package/shaders/ParallaxShader.mjs +0 -113
- package/shaders/PixelShader.mjs +0 -28
- package/shaders/RGBShiftShader.mjs +0 -30
- package/shaders/SAOShader.mjs +0 -144
- package/shaders/SMAAShader.mjs +0 -272
- package/shaders/SSAOShader.mjs +0 -172
- package/shaders/SSRShader.mjs +0 -324
- package/shaders/SepiaShader.mjs +0 -29
- package/shaders/SobelOperatorShader.mjs +0 -44
- package/shaders/SubsurfaceScatteringShader.mjs +0 -59
- package/shaders/TechnicolorShader.mjs +0 -24
- package/shaders/ToneMapShader.mjs +0 -48
- package/shaders/ToonShader.mjs +0 -188
- package/shaders/TriangleBlurShader.mjs +0 -36
- package/shaders/UnpackDepthRGBAShader.mjs +0 -26
- package/shaders/VerticalBlurShader.mjs +0 -44
- package/shaders/VerticalTiltShiftShader.mjs +0 -37
- package/shaders/VignetteShader.mjs +0 -28
- package/shaders/VolumeShader.mjs +0 -178
- package/shaders/WaterRefractionShader.mjs +0 -57
- package/textures/FlakesTexture.mjs +0 -30
- package/types/helpers.mjs +0 -4
- package/utils/BufferGeometryUtils.mjs +0 -570
- package/utils/GeometryCompressionUtils.mjs +0 -547
- package/utils/GeometryUtils.mjs +0 -108
- package/utils/RoughnessMipmapper.mjs +0 -213
- package/utils/SceneUtils.mjs +0 -36
- package/utils/ShadowMapViewer.mjs +0 -114
- package/utils/SkeletonUtils.mjs +0 -292
- package/utils/UVsDebug.mjs +0 -85
- package/utils/WorkerPool.mjs +0 -62
- package/webxr/ARButton.mjs +0 -119
- package/webxr/OculusHandModel.mjs +0 -71
- package/webxr/OculusHandPointerModel.mjs +0 -207
- package/webxr/Text2D.mjs +0 -31
- package/webxr/VRButton.mjs +0 -105
- package/webxr/XRControllerModelFactory.mjs +0 -146
- package/webxr/XREstimatedLight.mjs +0 -126
- package/webxr/XRHandMeshModel.mjs +0 -73
- package/webxr/XRHandModelFactory.mjs +0 -61
- package/webxr/XRHandPrimitiveModel.mjs +0 -68
package/loaders/AssimpLoader.js
CHANGED
|
@@ -1,95 +1,96 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
THREE.Loader.call(this, manager);
|
|
1
|
+
import { Loader, LoaderUtils, FileLoader, TextureLoader, Vector3, Quaternion, Matrix4, Skeleton, BufferGeometry, MeshLambertMaterial, BufferAttribute, Mesh, SkinnedMesh, Object3D, MeshPhongMaterial, Bone, Color } from 'three';
|
|
2
|
+
|
|
3
|
+
var AssimpLoader = function (manager) {
|
|
4
|
+
Loader.call(this, manager);
|
|
6
5
|
};
|
|
7
|
-
|
|
6
|
+
|
|
7
|
+
AssimpLoader.prototype = Object.assign(Object.create(Loader.prototype), {
|
|
8
8
|
constructor: AssimpLoader,
|
|
9
|
-
load: function(url, onLoad, onProgress, onError) {
|
|
9
|
+
load: function (url, onLoad, onProgress, onError) {
|
|
10
10
|
var scope = this;
|
|
11
|
-
var path = scope.path ===
|
|
12
|
-
var loader = new
|
|
11
|
+
var path = scope.path === '' ? LoaderUtils.extractUrlBase(url) : scope.path;
|
|
12
|
+
var loader = new FileLoader(scope.manager);
|
|
13
13
|
loader.setPath(scope.path);
|
|
14
|
-
loader.setResponseType(
|
|
14
|
+
loader.setResponseType('arraybuffer');
|
|
15
15
|
loader.setRequestHeader(scope.requestHeader);
|
|
16
16
|
loader.setWithCredentials(scope.withCredentials);
|
|
17
|
-
loader.load(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
} else {
|
|
26
|
-
console.error(e);
|
|
27
|
-
}
|
|
28
|
-
scope.manager.itemError(url);
|
|
17
|
+
loader.load(url, function (buffer) {
|
|
18
|
+
try {
|
|
19
|
+
onLoad(scope.parse(buffer, path));
|
|
20
|
+
} catch (e) {
|
|
21
|
+
if (onError) {
|
|
22
|
+
onError(e);
|
|
23
|
+
} else {
|
|
24
|
+
console.error(e);
|
|
29
25
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
);
|
|
26
|
+
|
|
27
|
+
scope.manager.itemError(url);
|
|
28
|
+
}
|
|
29
|
+
}, onProgress, onError);
|
|
34
30
|
},
|
|
35
|
-
parse: function(buffer, path) {
|
|
36
|
-
var textureLoader = new
|
|
31
|
+
parse: function (buffer, path) {
|
|
32
|
+
var textureLoader = new TextureLoader(this.manager);
|
|
37
33
|
textureLoader.setPath(this.resourcePath || path).setCrossOrigin(this.crossOrigin);
|
|
38
34
|
var Virtulous = {};
|
|
39
|
-
|
|
35
|
+
|
|
36
|
+
Virtulous.KeyFrame = function (time, matrix) {
|
|
40
37
|
this.time = time;
|
|
41
38
|
this.matrix = matrix.clone();
|
|
42
|
-
this.position = new
|
|
43
|
-
this.quaternion = new
|
|
44
|
-
this.scale = new
|
|
39
|
+
this.position = new Vector3();
|
|
40
|
+
this.quaternion = new Quaternion();
|
|
41
|
+
this.scale = new Vector3(1, 1, 1);
|
|
45
42
|
this.matrix.decompose(this.position, this.quaternion, this.scale);
|
|
46
|
-
|
|
43
|
+
|
|
44
|
+
this.clone = function () {
|
|
47
45
|
var n = new Virtulous.KeyFrame(this.time, this.matrix);
|
|
48
46
|
return n;
|
|
49
47
|
};
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
|
|
49
|
+
this.lerp = function (nextKey, time) {
|
|
50
|
+
time -= this.time;
|
|
52
51
|
var dist = nextKey.time - this.time;
|
|
53
|
-
var l =
|
|
52
|
+
var l = time / dist;
|
|
54
53
|
var l2 = 1 - l;
|
|
55
54
|
var keypos = this.position;
|
|
56
|
-
var keyrot = this.quaternion;
|
|
55
|
+
var keyrot = this.quaternion; // var keyscl = key.parentspaceScl || key.scl;
|
|
56
|
+
|
|
57
57
|
var key2pos = nextKey.position;
|
|
58
|
-
var key2rot = nextKey.quaternion;
|
|
58
|
+
var key2rot = nextKey.quaternion; // var key2scl = key2.parentspaceScl || key2.scl;
|
|
59
|
+
|
|
59
60
|
Virtulous.KeyFrame.tempAniPos.x = keypos.x * l2 + key2pos.x * l;
|
|
60
61
|
Virtulous.KeyFrame.tempAniPos.y = keypos.y * l2 + key2pos.y * l;
|
|
61
|
-
Virtulous.KeyFrame.tempAniPos.z = keypos.z * l2 + key2pos.z * l;
|
|
62
|
+
Virtulous.KeyFrame.tempAniPos.z = keypos.z * l2 + key2pos.z * l; // tempAniScale.x = keyscl[0] * l2 + key2scl[0] * l;
|
|
63
|
+
// tempAniScale.y = keyscl[1] * l2 + key2scl[1] * l;
|
|
64
|
+
// tempAniScale.z = keyscl[2] * l2 + key2scl[2] * l;
|
|
65
|
+
|
|
62
66
|
Virtulous.KeyFrame.tempAniQuat.set(keyrot.x, keyrot.y, keyrot.z, keyrot.w);
|
|
63
67
|
Virtulous.KeyFrame.tempAniQuat.slerp(key2rot, l);
|
|
64
|
-
return Virtulous.KeyFrame.tempAniMatrix.compose(
|
|
65
|
-
Virtulous.KeyFrame.tempAniPos,
|
|
66
|
-
Virtulous.KeyFrame.tempAniQuat,
|
|
67
|
-
Virtulous.KeyFrame.tempAniScale
|
|
68
|
-
);
|
|
68
|
+
return Virtulous.KeyFrame.tempAniMatrix.compose(Virtulous.KeyFrame.tempAniPos, Virtulous.KeyFrame.tempAniQuat, Virtulous.KeyFrame.tempAniScale);
|
|
69
69
|
};
|
|
70
70
|
};
|
|
71
|
-
|
|
72
|
-
Virtulous.KeyFrame.
|
|
73
|
-
Virtulous.KeyFrame.
|
|
74
|
-
Virtulous.KeyFrame.
|
|
75
|
-
Virtulous.
|
|
71
|
+
|
|
72
|
+
Virtulous.KeyFrame.tempAniPos = new Vector3();
|
|
73
|
+
Virtulous.KeyFrame.tempAniQuat = new Quaternion();
|
|
74
|
+
Virtulous.KeyFrame.tempAniScale = new Vector3(1, 1, 1);
|
|
75
|
+
Virtulous.KeyFrame.tempAniMatrix = new Matrix4();
|
|
76
|
+
|
|
77
|
+
Virtulous.KeyFrameTrack = function () {
|
|
76
78
|
this.keys = [];
|
|
77
79
|
this.target = null;
|
|
78
80
|
this.time = 0;
|
|
79
81
|
this.length = 0;
|
|
80
82
|
this._accelTable = {};
|
|
81
83
|
this.fps = 20;
|
|
82
|
-
|
|
84
|
+
|
|
85
|
+
this.addKey = function (key) {
|
|
83
86
|
this.keys.push(key);
|
|
84
87
|
};
|
|
85
|
-
|
|
88
|
+
|
|
89
|
+
this.init = function () {
|
|
86
90
|
this.sortKeys();
|
|
87
|
-
if (this.keys.length > 0)
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
this.length = 0;
|
|
91
|
-
if (!this.fps)
|
|
92
|
-
return;
|
|
91
|
+
if (this.keys.length > 0) this.length = this.keys[this.keys.length - 1].time;else this.length = 0;
|
|
92
|
+
if (!this.fps) return;
|
|
93
|
+
|
|
93
94
|
for (let j = 0; j < this.length * this.fps; j++) {
|
|
94
95
|
for (let i = 0; i < this.keys.length; i++) {
|
|
95
96
|
if (this.keys[i].time == j) {
|
|
@@ -102,56 +103,69 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
102
103
|
}
|
|
103
104
|
}
|
|
104
105
|
};
|
|
105
|
-
|
|
106
|
+
|
|
107
|
+
this.parseFromThree = function (data) {
|
|
106
108
|
var fps = data.fps;
|
|
107
109
|
this.target = data.node;
|
|
108
110
|
var track = data.hierarchy[0].keys;
|
|
111
|
+
|
|
109
112
|
for (let i = 0; i < track.length; i++) {
|
|
110
113
|
this.addKey(new Virtulous.KeyFrame(i / fps || track[i].time, track[i].targets[0].data));
|
|
111
114
|
}
|
|
115
|
+
|
|
112
116
|
this.init();
|
|
113
117
|
};
|
|
114
|
-
|
|
118
|
+
|
|
119
|
+
this.parseFromCollada = function (data) {
|
|
115
120
|
var track = data.keys;
|
|
116
121
|
var fps = this.fps;
|
|
122
|
+
|
|
117
123
|
for (let i = 0; i < track.length; i++) {
|
|
118
124
|
this.addKey(new Virtulous.KeyFrame(i / fps || track[i].time, track[i].matrix));
|
|
119
125
|
}
|
|
126
|
+
|
|
120
127
|
this.init();
|
|
121
128
|
};
|
|
122
|
-
|
|
129
|
+
|
|
130
|
+
this.sortKeys = function () {
|
|
123
131
|
this.keys.sort(this.keySortFunc);
|
|
124
132
|
};
|
|
125
|
-
|
|
133
|
+
|
|
134
|
+
this.keySortFunc = function (a, b) {
|
|
126
135
|
return a.time - b.time;
|
|
127
136
|
};
|
|
128
|
-
|
|
137
|
+
|
|
138
|
+
this.clone = function () {
|
|
129
139
|
var t = new Virtulous.KeyFrameTrack();
|
|
130
140
|
t.target = this.target;
|
|
131
141
|
t.time = this.time;
|
|
132
142
|
t.length = this.length;
|
|
143
|
+
|
|
133
144
|
for (let i = 0; i < this.keys.length; i++) {
|
|
134
145
|
t.addKey(this.keys[i].clone());
|
|
135
146
|
}
|
|
147
|
+
|
|
136
148
|
t.init();
|
|
137
149
|
return t;
|
|
138
150
|
};
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
151
|
+
|
|
152
|
+
this.reTarget = function (root, compareitor) {
|
|
153
|
+
if (!compareitor) compareitor = Virtulous.TrackTargetNodeNameCompare;
|
|
142
154
|
this.target = compareitor(root, this.target);
|
|
143
155
|
};
|
|
144
|
-
|
|
156
|
+
|
|
157
|
+
this.keySearchAccel = function (time) {
|
|
145
158
|
time *= this.fps;
|
|
146
159
|
time = Math.floor(time);
|
|
147
160
|
return this._accelTable[time] || 0;
|
|
148
161
|
};
|
|
149
|
-
|
|
162
|
+
|
|
163
|
+
this.setTime = function (time) {
|
|
150
164
|
time = Math.abs(time);
|
|
151
|
-
if (this.length)
|
|
152
|
-
time = time % this.length + 0.05;
|
|
165
|
+
if (this.length) time = time % this.length + 0.05;
|
|
153
166
|
var key0 = null;
|
|
154
167
|
var key1 = null;
|
|
168
|
+
|
|
155
169
|
for (let i = this.keySearchAccel(time); i < this.keys.length; i++) {
|
|
156
170
|
if (this.keys[i].time == time) {
|
|
157
171
|
key0 = this.keys[i];
|
|
@@ -168,12 +182,14 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
168
182
|
break;
|
|
169
183
|
}
|
|
170
184
|
}
|
|
185
|
+
|
|
171
186
|
if (key0 && key1 && key0 !== key1) {
|
|
172
187
|
this.target.matrixAutoUpdate = false;
|
|
173
188
|
this.target.matrix.copy(key0.lerp(key1, time));
|
|
174
189
|
this.target.matrixWorldNeedsUpdate = true;
|
|
175
190
|
return;
|
|
176
191
|
}
|
|
192
|
+
|
|
177
193
|
if (key0 && key1 && key0 == key1) {
|
|
178
194
|
this.target.matrixAutoUpdate = false;
|
|
179
195
|
this.target.matrix.copy(key0.matrix);
|
|
@@ -182,158 +198,313 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
182
198
|
}
|
|
183
199
|
};
|
|
184
200
|
};
|
|
185
|
-
|
|
201
|
+
|
|
202
|
+
Virtulous.TrackTargetNodeNameCompare = function (root, target) {
|
|
186
203
|
function find(node, name) {
|
|
187
|
-
if (node.name == name)
|
|
188
|
-
|
|
204
|
+
if (node.name == name) return node;
|
|
205
|
+
|
|
189
206
|
for (let i = 0; i < node.children.length; i++) {
|
|
190
207
|
var r = find(node.children[i], name);
|
|
191
|
-
if (r)
|
|
192
|
-
return r;
|
|
208
|
+
if (r) return r;
|
|
193
209
|
}
|
|
210
|
+
|
|
194
211
|
return null;
|
|
195
212
|
}
|
|
213
|
+
|
|
196
214
|
return find(root, target.name);
|
|
197
215
|
};
|
|
198
|
-
|
|
216
|
+
|
|
217
|
+
Virtulous.Animation = function () {
|
|
199
218
|
this.tracks = [];
|
|
200
219
|
this.length = 0;
|
|
201
|
-
|
|
220
|
+
|
|
221
|
+
this.addTrack = function (track) {
|
|
202
222
|
this.tracks.push(track);
|
|
203
223
|
this.length = Math.max(track.length, this.length);
|
|
204
224
|
};
|
|
205
|
-
|
|
225
|
+
|
|
226
|
+
this.setTime = function (time) {
|
|
206
227
|
this.time = time;
|
|
207
|
-
|
|
208
|
-
|
|
228
|
+
|
|
229
|
+
for (let i = 0; i < this.tracks.length; i++) this.tracks[i].setTime(time);
|
|
209
230
|
};
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
231
|
+
|
|
232
|
+
this.clone = function (target, compareitor) {
|
|
233
|
+
if (!compareitor) compareitor = Virtulous.TrackTargetNodeNameCompare;
|
|
213
234
|
var n = new Virtulous.Animation();
|
|
214
235
|
n.target = target;
|
|
236
|
+
|
|
215
237
|
for (let i = 0; i < this.tracks.length; i++) {
|
|
216
238
|
var track = this.tracks[i].clone();
|
|
217
239
|
track.reTarget(target, compareitor);
|
|
218
240
|
n.addTrack(track);
|
|
219
241
|
}
|
|
242
|
+
|
|
220
243
|
return n;
|
|
221
244
|
};
|
|
222
245
|
};
|
|
223
|
-
|
|
224
|
-
var
|
|
225
|
-
var
|
|
226
|
-
var
|
|
227
|
-
var
|
|
228
|
-
var
|
|
229
|
-
var
|
|
230
|
-
var
|
|
231
|
-
var
|
|
232
|
-
var
|
|
233
|
-
var
|
|
234
|
-
var
|
|
235
|
-
var
|
|
236
|
-
var
|
|
237
|
-
var
|
|
238
|
-
var
|
|
246
|
+
|
|
247
|
+
var ASSBIN_CHUNK_AICAMERA = 0x1234;
|
|
248
|
+
var ASSBIN_CHUNK_AILIGHT = 0x1235;
|
|
249
|
+
var ASSBIN_CHUNK_AITEXTURE = 0x1236;
|
|
250
|
+
var ASSBIN_CHUNK_AIMESH = 0x1237;
|
|
251
|
+
var ASSBIN_CHUNK_AINODEANIM = 0x1238;
|
|
252
|
+
var ASSBIN_CHUNK_AISCENE = 0x1239;
|
|
253
|
+
var ASSBIN_CHUNK_AIBONE = 0x123a;
|
|
254
|
+
var ASSBIN_CHUNK_AIANIMATION = 0x123b;
|
|
255
|
+
var ASSBIN_CHUNK_AINODE = 0x123c;
|
|
256
|
+
var ASSBIN_CHUNK_AIMATERIAL = 0x123d;
|
|
257
|
+
var ASSBIN_CHUNK_AIMATERIALPROPERTY = 0x123e;
|
|
258
|
+
var ASSBIN_MESH_HAS_POSITIONS = 0x1;
|
|
259
|
+
var ASSBIN_MESH_HAS_NORMALS = 0x2;
|
|
260
|
+
var ASSBIN_MESH_HAS_TANGENTS_AND_BITANGENTS = 0x4;
|
|
261
|
+
var ASSBIN_MESH_HAS_TEXCOORD_BASE = 0x100;
|
|
262
|
+
var ASSBIN_MESH_HAS_COLOR_BASE = 0x10000;
|
|
239
263
|
var AI_MAX_NUMBER_OF_COLOR_SETS = 1;
|
|
240
|
-
var AI_MAX_NUMBER_OF_TEXTURECOORDS = 4;
|
|
264
|
+
var AI_MAX_NUMBER_OF_TEXTURECOORDS = 4; //var aiLightSource_UNDEFINED = 0x0;
|
|
241
265
|
//! A directional light source has a well-defined direction
|
|
242
266
|
//! but is infinitely far away. That's quite a good
|
|
243
267
|
//! approximation for sun light.
|
|
244
|
-
|
|
245
|
-
//! A point light source has a well-defined position
|
|
268
|
+
|
|
269
|
+
var aiLightSource_DIRECTIONAL = 0x1; //! A point light source has a well-defined position
|
|
246
270
|
//! in space but no direction - it emits light in all
|
|
247
271
|
//! directions. A normal bulb is a point light.
|
|
272
|
+
//var aiLightSource_POINT = 0x2;
|
|
248
273
|
//! A spot light source emits light in a specific
|
|
249
274
|
//! angle. It has a position and a direction it is pointing to.
|
|
250
275
|
//! A good example for a spot light is a light spot in
|
|
251
276
|
//! sport arenas.
|
|
252
|
-
|
|
253
|
-
//! The generic light level of the world, including the bounces
|
|
277
|
+
|
|
278
|
+
var aiLightSource_SPOT = 0x3; //! The generic light level of the world, including the bounces
|
|
254
279
|
//! of all other lightsources.
|
|
255
280
|
//! Typically, there's at most one ambient light in a scene.
|
|
256
281
|
//! This light type doesn't have a valid position, direction, or
|
|
257
282
|
//! other properties, just a color.
|
|
258
|
-
var
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
283
|
+
//var aiLightSource_AMBIENT = 0x4;
|
|
284
|
+
|
|
285
|
+
/** Flat shading. Shading is done on per-face base,
|
|
286
|
+
* diffuse only. Also known as 'faceted shading'.
|
|
287
|
+
*/
|
|
288
|
+
//var aiShadingMode_Flat = 0x1;
|
|
289
|
+
|
|
290
|
+
/** Simple Gouraud shading.
|
|
291
|
+
*/
|
|
292
|
+
//var aiShadingMode_Gouraud = 0x2;
|
|
293
|
+
|
|
294
|
+
/** Phong-Shading -
|
|
295
|
+
*/
|
|
296
|
+
//var aiShadingMode_Phong = 0x3;
|
|
297
|
+
|
|
298
|
+
/** Phong-Blinn-Shading
|
|
299
|
+
*/
|
|
300
|
+
//var aiShadingMode_Blinn = 0x4;
|
|
301
|
+
|
|
302
|
+
/** Toon-Shading per pixel
|
|
303
|
+
*
|
|
304
|
+
* Also known as 'comic' shader.
|
|
305
|
+
*/
|
|
306
|
+
//var aiShadingMode_Toon = 0x5;
|
|
307
|
+
|
|
308
|
+
/** OrenNayar-Shading per pixel
|
|
309
|
+
*
|
|
310
|
+
* Extension to standard Lambertian shading, taking the
|
|
311
|
+
* roughness of the material into account
|
|
312
|
+
*/
|
|
313
|
+
//var aiShadingMode_OrenNayar = 0x6;
|
|
314
|
+
|
|
315
|
+
/** Minnaert-Shading per pixel
|
|
316
|
+
*
|
|
317
|
+
* Extension to standard Lambertian shading, taking the
|
|
318
|
+
* "darkness" of the material into account
|
|
319
|
+
*/
|
|
320
|
+
//var aiShadingMode_Minnaert = 0x7;
|
|
321
|
+
|
|
322
|
+
/** CookTorrance-Shading per pixel
|
|
323
|
+
*
|
|
324
|
+
* Special shader for metallic surfaces.
|
|
325
|
+
*/
|
|
326
|
+
//var aiShadingMode_CookTorrance = 0x8;
|
|
327
|
+
|
|
328
|
+
/** No shading at all. Constant light influence of 1.0.
|
|
329
|
+
*/
|
|
330
|
+
//var aiShadingMode_NoShading = 0x9;
|
|
331
|
+
|
|
332
|
+
/** Fresnel shading
|
|
333
|
+
*/
|
|
334
|
+
//var aiShadingMode_Fresnel = 0xa;
|
|
335
|
+
//var aiTextureType_NONE = 0x0;
|
|
336
|
+
|
|
337
|
+
/** The texture is combined with the result of the diffuse
|
|
338
|
+
* lighting equation.
|
|
339
|
+
*/
|
|
340
|
+
|
|
341
|
+
var aiTextureType_DIFFUSE = 0x1;
|
|
342
|
+
/** The texture is combined with the result of the specular
|
|
343
|
+
* lighting equation.
|
|
344
|
+
*/
|
|
345
|
+
//var aiTextureType_SPECULAR = 0x2;
|
|
346
|
+
|
|
347
|
+
/** The texture is combined with the result of the ambient
|
|
348
|
+
* lighting equation.
|
|
349
|
+
*/
|
|
350
|
+
//var aiTextureType_AMBIENT = 0x3;
|
|
351
|
+
|
|
352
|
+
/** The texture is added to the result of the lighting
|
|
353
|
+
* calculation. It isn't influenced by incoming light.
|
|
354
|
+
*/
|
|
355
|
+
//var aiTextureType_EMISSIVE = 0x4;
|
|
356
|
+
|
|
357
|
+
/** The texture is a height map.
|
|
358
|
+
*
|
|
359
|
+
* By convention, higher gray-scale values stand for
|
|
360
|
+
* higher elevations from the base height.
|
|
361
|
+
*/
|
|
362
|
+
//var aiTextureType_HEIGHT = 0x5;
|
|
363
|
+
|
|
364
|
+
/** The texture is a (tangent space) normal-map.
|
|
365
|
+
*
|
|
366
|
+
* Again, there are several conventions for tangent-space
|
|
367
|
+
* normal maps. Assimp does (intentionally) not
|
|
368
|
+
* distinguish here.
|
|
369
|
+
*/
|
|
370
|
+
|
|
371
|
+
var aiTextureType_NORMALS = 0x6;
|
|
372
|
+
/** The texture defines the glossiness of the material.
|
|
373
|
+
*
|
|
374
|
+
* The glossiness is in fact the exponent of the specular
|
|
375
|
+
* (phong) lighting equation. Usually there is a conversion
|
|
376
|
+
* function defined to map the linear color values in the
|
|
377
|
+
* texture to a suitable exponent. Have fun.
|
|
378
|
+
*/
|
|
379
|
+
//var aiTextureType_SHININESS = 0x7;
|
|
380
|
+
|
|
381
|
+
/** The texture defines per-pixel opacity.
|
|
382
|
+
*
|
|
383
|
+
* Usually 'white' means opaque and 'black' means
|
|
384
|
+
* 'transparency'. Or quite the opposite. Have fun.
|
|
385
|
+
*/
|
|
386
|
+
|
|
387
|
+
var aiTextureType_OPACITY = 0x8;
|
|
388
|
+
/** Displacement texture
|
|
389
|
+
*
|
|
390
|
+
* The exact purpose and format is application-dependent.
|
|
391
|
+
* Higher color values stand for higher vertex displacements.
|
|
392
|
+
*/
|
|
393
|
+
//var aiTextureType_DISPLACEMENT = 0x9;
|
|
394
|
+
|
|
395
|
+
/** Lightmap texture (aka Ambient Occlusion)
|
|
396
|
+
*
|
|
397
|
+
* Both 'Lightmaps' and dedicated 'ambient occlusion maps' are
|
|
398
|
+
* covered by this material property. The texture contains a
|
|
399
|
+
* scaling value for the final color value of a pixel. Its
|
|
400
|
+
* intensity is not affected by incoming light.
|
|
401
|
+
*/
|
|
402
|
+
|
|
403
|
+
var aiTextureType_LIGHTMAP = 0xa;
|
|
404
|
+
/** Reflection texture
|
|
405
|
+
*
|
|
406
|
+
* Contains the color of a perfect mirror reflection.
|
|
407
|
+
* Rarely used, almost never for real-time applications.
|
|
408
|
+
*/
|
|
409
|
+
//var aiTextureType_REFLECTION = 0xB;
|
|
410
|
+
|
|
411
|
+
/** Unknown texture
|
|
412
|
+
*
|
|
413
|
+
* A texture reference that does not match any of the definitions
|
|
414
|
+
* above is considered to be 'unknown'. It is still imported,
|
|
415
|
+
* but is excluded from any further postprocessing.
|
|
416
|
+
*/
|
|
417
|
+
//var aiTextureType_UNKNOWN = 0xC;
|
|
418
|
+
|
|
262
419
|
var BONESPERVERT = 4;
|
|
420
|
+
|
|
263
421
|
function ASSBIN_MESH_HAS_TEXCOORD(n) {
|
|
264
422
|
return ASSBIN_MESH_HAS_TEXCOORD_BASE << n;
|
|
265
423
|
}
|
|
424
|
+
|
|
266
425
|
function ASSBIN_MESH_HAS_COLOR(n) {
|
|
267
426
|
return ASSBIN_MESH_HAS_COLOR_BASE << n;
|
|
268
427
|
}
|
|
428
|
+
|
|
269
429
|
function markBones(scene) {
|
|
270
430
|
for (let i in scene.mMeshes) {
|
|
271
431
|
var mesh = scene.mMeshes[i];
|
|
432
|
+
|
|
272
433
|
for (let k in mesh.mBones) {
|
|
273
434
|
var boneNode = scene.findNode(mesh.mBones[k].mName);
|
|
274
|
-
if (boneNode)
|
|
275
|
-
boneNode.isBone = true;
|
|
435
|
+
if (boneNode) boneNode.isBone = true;
|
|
276
436
|
}
|
|
277
437
|
}
|
|
278
438
|
}
|
|
439
|
+
|
|
279
440
|
function cloneTreeToBones(root, scene) {
|
|
280
|
-
var rootBone = new
|
|
441
|
+
var rootBone = new Bone();
|
|
281
442
|
rootBone.matrix.copy(root.matrix);
|
|
282
443
|
rootBone.matrixWorld.copy(root.matrixWorld);
|
|
283
444
|
rootBone.position.copy(root.position);
|
|
284
445
|
rootBone.quaternion.copy(root.quaternion);
|
|
285
446
|
rootBone.scale.copy(root.scale);
|
|
286
447
|
scene.nodeCount++;
|
|
287
|
-
rootBone.name =
|
|
288
|
-
if (!scene.nodeToBoneMap[root.name])
|
|
289
|
-
scene.nodeToBoneMap[root.name] = [];
|
|
448
|
+
rootBone.name = 'bone_' + root.name + scene.nodeCount.toString();
|
|
449
|
+
if (!scene.nodeToBoneMap[root.name]) scene.nodeToBoneMap[root.name] = [];
|
|
290
450
|
scene.nodeToBoneMap[root.name].push(rootBone);
|
|
451
|
+
|
|
291
452
|
for (let i in root.children) {
|
|
292
453
|
var child = cloneTreeToBones(root.children[i], scene);
|
|
293
454
|
rootBone.add(child);
|
|
294
455
|
}
|
|
456
|
+
|
|
295
457
|
return rootBone;
|
|
296
458
|
}
|
|
459
|
+
|
|
297
460
|
function sortWeights(indexes, weights) {
|
|
298
461
|
var pairs = [];
|
|
462
|
+
|
|
299
463
|
for (let i = 0; i < indexes.length; i++) {
|
|
300
464
|
pairs.push({
|
|
301
465
|
i: indexes[i],
|
|
302
466
|
w: weights[i]
|
|
303
467
|
});
|
|
304
468
|
}
|
|
305
|
-
|
|
469
|
+
|
|
470
|
+
pairs.sort(function (a, b) {
|
|
306
471
|
return b.w - a.w;
|
|
307
472
|
});
|
|
473
|
+
|
|
308
474
|
while (pairs.length < 4) {
|
|
309
475
|
pairs.push({
|
|
310
476
|
i: 0,
|
|
311
477
|
w: 0
|
|
312
478
|
});
|
|
313
479
|
}
|
|
314
|
-
|
|
315
|
-
|
|
480
|
+
|
|
481
|
+
if (pairs.length > 4) pairs.length = 4;
|
|
316
482
|
var sum = 0;
|
|
483
|
+
|
|
317
484
|
for (let i = 0; i < 4; i++) {
|
|
318
485
|
sum += pairs[i].w * pairs[i].w;
|
|
319
486
|
}
|
|
487
|
+
|
|
320
488
|
sum = Math.sqrt(sum);
|
|
489
|
+
|
|
321
490
|
for (let i = 0; i < 4; i++) {
|
|
322
491
|
pairs[i].w = pairs[i].w / sum;
|
|
323
492
|
indexes[i] = pairs[i].i;
|
|
324
493
|
weights[i] = pairs[i].w;
|
|
325
494
|
}
|
|
326
495
|
}
|
|
496
|
+
|
|
327
497
|
function findMatchingBone(root, name) {
|
|
328
|
-
if (root.name.indexOf(
|
|
329
|
-
|
|
498
|
+
if (root.name.indexOf('bone_' + name) == 0) return root;
|
|
499
|
+
|
|
330
500
|
for (let i in root.children) {
|
|
331
501
|
var ret = findMatchingBone(root.children[i], name);
|
|
332
|
-
if (ret)
|
|
333
|
-
return ret;
|
|
502
|
+
if (ret) return ret;
|
|
334
503
|
}
|
|
335
|
-
|
|
504
|
+
|
|
505
|
+
return undefined;
|
|
336
506
|
}
|
|
507
|
+
|
|
337
508
|
function aiMesh() {
|
|
338
509
|
this.mPrimitiveTypes = 0;
|
|
339
510
|
this.mNumVertices = 0;
|
|
@@ -348,303 +519,354 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
348
519
|
this.mTextureCoords = [[]];
|
|
349
520
|
this.mFaces = [];
|
|
350
521
|
this.mBones = [];
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
522
|
+
|
|
523
|
+
this.hookupSkeletons = function (scene) {
|
|
524
|
+
if (this.mBones.length == 0) return;
|
|
354
525
|
var allBones = [];
|
|
355
526
|
var offsetMatrix = [];
|
|
356
527
|
var skeletonRoot = scene.findNode(this.mBones[0].mName);
|
|
528
|
+
|
|
357
529
|
while (skeletonRoot.mParent && skeletonRoot.mParent.isBone) {
|
|
358
530
|
skeletonRoot = skeletonRoot.mParent;
|
|
359
531
|
}
|
|
532
|
+
|
|
360
533
|
var threeSkeletonRoot = skeletonRoot.toTHREE(scene);
|
|
361
534
|
var threeSkeletonRootBone = cloneTreeToBones(threeSkeletonRoot, scene);
|
|
362
535
|
this.threeNode.add(threeSkeletonRootBone);
|
|
536
|
+
|
|
363
537
|
for (let i = 0; i < this.mBones.length; i++) {
|
|
364
538
|
var bone = findMatchingBone(threeSkeletonRootBone, this.mBones[i].mName);
|
|
539
|
+
|
|
365
540
|
if (bone) {
|
|
366
541
|
var tbone = bone;
|
|
367
|
-
allBones.push(tbone);
|
|
542
|
+
allBones.push(tbone); //tbone.matrixAutoUpdate = false;
|
|
543
|
+
|
|
368
544
|
offsetMatrix.push(this.mBones[i].mOffsetMatrix.toTHREE());
|
|
369
545
|
} else {
|
|
370
546
|
var skeletonRoot = scene.findNode(this.mBones[i].mName);
|
|
371
|
-
if (!skeletonRoot)
|
|
372
|
-
return;
|
|
547
|
+
if (!skeletonRoot) return;
|
|
373
548
|
var threeSkeletonRoot = skeletonRoot.toTHREE(scene);
|
|
374
549
|
var threeSkeletonRootBone = cloneTreeToBones(threeSkeletonRoot, scene);
|
|
375
550
|
this.threeNode.add(threeSkeletonRootBone);
|
|
376
551
|
var bone = findMatchingBone(threeSkeletonRootBone, this.mBones[i].mName);
|
|
377
552
|
var tbone = bone;
|
|
378
|
-
allBones.push(tbone);
|
|
553
|
+
allBones.push(tbone); //tbone.matrixAutoUpdate = false;
|
|
554
|
+
|
|
379
555
|
offsetMatrix.push(this.mBones[i].mOffsetMatrix.toTHREE());
|
|
380
556
|
}
|
|
381
557
|
}
|
|
382
|
-
|
|
383
|
-
|
|
558
|
+
|
|
559
|
+
var skeleton = new Skeleton(allBones, offsetMatrix);
|
|
560
|
+
this.threeNode.bind(skeleton, new Matrix4());
|
|
384
561
|
this.threeNode.material.skinning = true;
|
|
385
562
|
};
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
var geometry = new
|
|
563
|
+
|
|
564
|
+
this.toTHREE = function (scene) {
|
|
565
|
+
if (this.threeNode) return this.threeNode;
|
|
566
|
+
var geometry = new BufferGeometry();
|
|
390
567
|
var mat;
|
|
391
|
-
if (scene.mMaterials[this.mMaterialIndex])
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
geometry.setIndex(new THREE.BufferAttribute(new Uint32Array(this.mIndexArray), 1));
|
|
396
|
-
geometry.setAttribute("position", new THREE.BufferAttribute(this.mVertexBuffer, 3));
|
|
568
|
+
if (scene.mMaterials[this.mMaterialIndex]) mat = scene.mMaterials[this.mMaterialIndex].toTHREE(scene);else mat = new MeshLambertMaterial();
|
|
569
|
+
geometry.setIndex(new BufferAttribute(new Uint32Array(this.mIndexArray), 1));
|
|
570
|
+
geometry.setAttribute('position', new BufferAttribute(this.mVertexBuffer, 3));
|
|
571
|
+
|
|
397
572
|
if (this.mNormalBuffer && this.mNormalBuffer.length > 0) {
|
|
398
|
-
geometry.setAttribute(
|
|
573
|
+
geometry.setAttribute('normal', new BufferAttribute(this.mNormalBuffer, 3));
|
|
399
574
|
}
|
|
575
|
+
|
|
400
576
|
if (this.mColorBuffer && this.mColorBuffer.length > 0) {
|
|
401
|
-
geometry.setAttribute(
|
|
577
|
+
geometry.setAttribute('color', new BufferAttribute(this.mColorBuffer, 4));
|
|
402
578
|
}
|
|
579
|
+
|
|
403
580
|
if (this.mTexCoordsBuffers[0] && this.mTexCoordsBuffers[0].length > 0) {
|
|
404
|
-
geometry.setAttribute(
|
|
581
|
+
geometry.setAttribute('uv', new BufferAttribute(new Float32Array(this.mTexCoordsBuffers[0]), 2));
|
|
405
582
|
}
|
|
583
|
+
|
|
406
584
|
if (this.mTexCoordsBuffers[1] && this.mTexCoordsBuffers[1].length > 0) {
|
|
407
|
-
geometry.setAttribute(
|
|
585
|
+
geometry.setAttribute('uv1', new BufferAttribute(new Float32Array(this.mTexCoordsBuffers[1]), 2));
|
|
408
586
|
}
|
|
587
|
+
|
|
409
588
|
if (this.mTangentBuffer && this.mTangentBuffer.length > 0) {
|
|
410
|
-
geometry.setAttribute(
|
|
589
|
+
geometry.setAttribute('tangents', new BufferAttribute(this.mTangentBuffer, 3));
|
|
411
590
|
}
|
|
591
|
+
|
|
412
592
|
if (this.mBitangentBuffer && this.mBitangentBuffer.length > 0) {
|
|
413
|
-
geometry.setAttribute(
|
|
593
|
+
geometry.setAttribute('bitangents', new BufferAttribute(this.mBitangentBuffer, 3));
|
|
414
594
|
}
|
|
595
|
+
|
|
415
596
|
if (this.mBones.length > 0) {
|
|
416
597
|
var weights = [];
|
|
417
598
|
var bones = [];
|
|
599
|
+
|
|
418
600
|
for (let i = 0; i < this.mBones.length; i++) {
|
|
419
601
|
for (let j = 0; j < this.mBones[i].mWeights.length; j++) {
|
|
420
602
|
var weight = this.mBones[i].mWeights[j];
|
|
603
|
+
|
|
421
604
|
if (weight) {
|
|
422
|
-
if (!weights[weight.mVertexId])
|
|
423
|
-
|
|
424
|
-
if (!bones[weight.mVertexId])
|
|
425
|
-
bones[weight.mVertexId] = [];
|
|
605
|
+
if (!weights[weight.mVertexId]) weights[weight.mVertexId] = [];
|
|
606
|
+
if (!bones[weight.mVertexId]) bones[weight.mVertexId] = [];
|
|
426
607
|
weights[weight.mVertexId].push(weight.mWeight);
|
|
427
608
|
bones[weight.mVertexId].push(parseInt(i));
|
|
428
609
|
}
|
|
429
610
|
}
|
|
430
611
|
}
|
|
612
|
+
|
|
431
613
|
for (let i in bones) {
|
|
432
614
|
sortWeights(bones[i], weights[i]);
|
|
433
615
|
}
|
|
616
|
+
|
|
434
617
|
var _weights = [];
|
|
435
618
|
var _bones = [];
|
|
619
|
+
|
|
436
620
|
for (let i = 0; i < weights.length; i++) {
|
|
437
621
|
for (let j = 0; j < 4; j++) {
|
|
438
622
|
if (weights[i] && bones[i]) {
|
|
439
623
|
_weights.push(weights[i][j]);
|
|
624
|
+
|
|
440
625
|
_bones.push(bones[i][j]);
|
|
441
626
|
} else {
|
|
442
627
|
_weights.push(0);
|
|
628
|
+
|
|
443
629
|
_bones.push(0);
|
|
444
630
|
}
|
|
445
631
|
}
|
|
446
632
|
}
|
|
447
|
-
|
|
448
|
-
geometry.setAttribute(
|
|
633
|
+
|
|
634
|
+
geometry.setAttribute('skinWeight', new BufferAttribute(new Float32Array(_weights), BONESPERVERT));
|
|
635
|
+
geometry.setAttribute('skinIndex', new BufferAttribute(new Float32Array(_bones), BONESPERVERT));
|
|
449
636
|
}
|
|
637
|
+
|
|
450
638
|
var mesh;
|
|
451
|
-
if (this.mBones.length == 0)
|
|
452
|
-
|
|
639
|
+
if (this.mBones.length == 0) mesh = new Mesh(geometry, mat);
|
|
640
|
+
|
|
453
641
|
if (this.mBones.length > 0) {
|
|
454
|
-
mesh = new
|
|
642
|
+
mesh = new SkinnedMesh(geometry, mat);
|
|
455
643
|
mesh.normalizeSkinWeights();
|
|
456
644
|
}
|
|
457
|
-
|
|
645
|
+
|
|
646
|
+
this.threeNode = mesh; //mesh.matrixAutoUpdate = false;
|
|
647
|
+
|
|
458
648
|
return mesh;
|
|
459
649
|
};
|
|
460
650
|
}
|
|
651
|
+
|
|
461
652
|
function aiFace() {
|
|
462
653
|
this.mNumIndices = 0;
|
|
463
654
|
this.mIndices = [];
|
|
464
655
|
}
|
|
656
|
+
|
|
465
657
|
function aiVector3D() {
|
|
466
658
|
this.x = 0;
|
|
467
659
|
this.y = 0;
|
|
468
660
|
this.z = 0;
|
|
469
|
-
|
|
470
|
-
|
|
661
|
+
|
|
662
|
+
this.toTHREE = function () {
|
|
663
|
+
return new Vector3(this.x, this.y, this.z);
|
|
471
664
|
};
|
|
472
665
|
}
|
|
666
|
+
|
|
473
667
|
function aiColor3D() {
|
|
474
668
|
this.r = 0;
|
|
475
669
|
this.g = 0;
|
|
476
670
|
this.b = 0;
|
|
477
671
|
this.a = 0;
|
|
478
|
-
|
|
479
|
-
|
|
672
|
+
|
|
673
|
+
this.toTHREE = function () {
|
|
674
|
+
return new Color(this.r, this.g, this.b);
|
|
480
675
|
};
|
|
481
676
|
}
|
|
677
|
+
|
|
482
678
|
function aiQuaternion() {
|
|
483
679
|
this.x = 0;
|
|
484
680
|
this.y = 0;
|
|
485
681
|
this.z = 0;
|
|
486
682
|
this.w = 0;
|
|
487
|
-
|
|
488
|
-
|
|
683
|
+
|
|
684
|
+
this.toTHREE = function () {
|
|
685
|
+
return new Quaternion(this.x, this.y, this.z, this.w);
|
|
489
686
|
};
|
|
490
687
|
}
|
|
688
|
+
|
|
491
689
|
function aiVertexWeight() {
|
|
492
690
|
this.mVertexId = 0;
|
|
493
691
|
this.mWeight = 0;
|
|
494
692
|
}
|
|
693
|
+
|
|
495
694
|
function aiString() {
|
|
496
695
|
this.data = [];
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
696
|
+
|
|
697
|
+
this.toString = function () {
|
|
698
|
+
var str = '';
|
|
699
|
+
this.data.forEach(function (i) {
|
|
500
700
|
str += String.fromCharCode(i);
|
|
501
701
|
});
|
|
502
|
-
return str.replace(/[^\x20-\x7E]+/g,
|
|
702
|
+
return str.replace(/[^\x20-\x7E]+/g, '');
|
|
503
703
|
};
|
|
504
704
|
}
|
|
705
|
+
|
|
505
706
|
function aiVectorKey() {
|
|
506
707
|
this.mTime = 0;
|
|
507
708
|
this.mValue = null;
|
|
508
709
|
}
|
|
710
|
+
|
|
509
711
|
function aiQuatKey() {
|
|
510
712
|
this.mTime = 0;
|
|
511
713
|
this.mValue = null;
|
|
512
714
|
}
|
|
715
|
+
|
|
513
716
|
function aiNode() {
|
|
514
|
-
this.mName =
|
|
717
|
+
this.mName = '';
|
|
515
718
|
this.mTransformation = [];
|
|
516
719
|
this.mNumChildren = 0;
|
|
517
720
|
this.mNumMeshes = 0;
|
|
518
721
|
this.mMeshes = [];
|
|
519
722
|
this.mChildren = [];
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
var o = new
|
|
723
|
+
|
|
724
|
+
this.toTHREE = function (scene) {
|
|
725
|
+
if (this.threeNode) return this.threeNode;
|
|
726
|
+
var o = new Object3D();
|
|
524
727
|
o.name = this.mName;
|
|
525
728
|
o.matrix = this.mTransformation.toTHREE();
|
|
729
|
+
|
|
526
730
|
for (let i = 0; i < this.mChildren.length; i++) {
|
|
527
731
|
o.add(this.mChildren[i].toTHREE(scene));
|
|
528
732
|
}
|
|
733
|
+
|
|
529
734
|
for (let i = 0; i < this.mMeshes.length; i++) {
|
|
530
735
|
o.add(scene.mMeshes[this.mMeshes[i]].toTHREE(scene));
|
|
531
736
|
}
|
|
532
|
-
|
|
737
|
+
|
|
738
|
+
this.threeNode = o; //o.matrixAutoUpdate = false;
|
|
739
|
+
|
|
533
740
|
o.matrix.decompose(o.position, o.quaternion, o.scale);
|
|
534
741
|
return o;
|
|
535
742
|
};
|
|
536
743
|
}
|
|
744
|
+
|
|
537
745
|
function aiBone() {
|
|
538
|
-
this.mName =
|
|
746
|
+
this.mName = '';
|
|
539
747
|
this.mNumWeights = 0;
|
|
540
748
|
this.mOffsetMatrix = 0;
|
|
541
749
|
}
|
|
750
|
+
|
|
542
751
|
function aiMaterialProperty() {
|
|
543
|
-
this.mKey =
|
|
752
|
+
this.mKey = '';
|
|
544
753
|
this.mSemantic = 0;
|
|
545
754
|
this.mIndex = 0;
|
|
546
755
|
this.mData = [];
|
|
547
756
|
this.mDataLength = 0;
|
|
548
757
|
this.mType = 0;
|
|
549
|
-
|
|
758
|
+
|
|
759
|
+
this.dataAsColor = function () {
|
|
550
760
|
var array = new Uint8Array(this.mData).buffer;
|
|
551
761
|
var reader = new DataView(array);
|
|
552
762
|
var r = reader.getFloat32(0, true);
|
|
553
763
|
var g = reader.getFloat32(4, true);
|
|
554
|
-
var b = reader.getFloat32(8, true);
|
|
555
|
-
|
|
764
|
+
var b = reader.getFloat32(8, true); //var a = reader.getFloat32(12, true);
|
|
765
|
+
|
|
766
|
+
return new Color(r, g, b);
|
|
556
767
|
};
|
|
557
|
-
|
|
768
|
+
|
|
769
|
+
this.dataAsFloat = function () {
|
|
558
770
|
var array = new Uint8Array(this.mData).buffer;
|
|
559
771
|
var reader = new DataView(array);
|
|
560
772
|
var r = reader.getFloat32(0, true);
|
|
561
773
|
return r;
|
|
562
774
|
};
|
|
563
|
-
|
|
775
|
+
|
|
776
|
+
this.dataAsBool = function () {
|
|
564
777
|
var array = new Uint8Array(this.mData).buffer;
|
|
565
778
|
var reader = new DataView(array);
|
|
566
779
|
var r = reader.getFloat32(0, true);
|
|
567
780
|
return !!r;
|
|
568
781
|
};
|
|
569
|
-
|
|
782
|
+
|
|
783
|
+
this.dataAsString = function () {
|
|
570
784
|
var s = new aiString();
|
|
571
785
|
s.data = this.mData;
|
|
572
786
|
return s.toString();
|
|
573
787
|
};
|
|
574
|
-
|
|
788
|
+
|
|
789
|
+
this.dataAsMap = function () {
|
|
575
790
|
var s = new aiString();
|
|
576
791
|
s.data = this.mData;
|
|
577
|
-
var
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
792
|
+
var path = s.toString();
|
|
793
|
+
path = path.replace(/\\/g, '/');
|
|
794
|
+
|
|
795
|
+
if (path.indexOf('/') != -1) {
|
|
796
|
+
path = path.substr(path.lastIndexOf('/') + 1);
|
|
581
797
|
}
|
|
582
|
-
|
|
798
|
+
|
|
799
|
+
return textureLoader.load(path);
|
|
583
800
|
};
|
|
584
801
|
}
|
|
802
|
+
|
|
585
803
|
var namePropMapping = {
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
804
|
+
'?mat.name': 'name',
|
|
805
|
+
'$mat.shadingm': 'shading',
|
|
806
|
+
'$mat.twosided': 'twoSided',
|
|
807
|
+
'$mat.wireframe': 'wireframe',
|
|
808
|
+
'$clr.ambient': 'ambient',
|
|
809
|
+
'$clr.diffuse': 'color',
|
|
810
|
+
'$clr.specular': 'specular',
|
|
811
|
+
'$clr.emissive': 'emissive',
|
|
812
|
+
'$clr.transparent': 'transparent',
|
|
813
|
+
'$clr.reflective': 'reflect',
|
|
814
|
+
'$mat.shininess': 'shininess',
|
|
815
|
+
'$mat.reflectivity': 'reflectivity',
|
|
816
|
+
'$mat.refracti': 'refraction',
|
|
817
|
+
'$tex.file': 'map'
|
|
600
818
|
};
|
|
601
819
|
var nameTypeMapping = {
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
820
|
+
'?mat.name': 'string',
|
|
821
|
+
'$mat.shadingm': 'bool',
|
|
822
|
+
'$mat.twosided': 'bool',
|
|
823
|
+
'$mat.wireframe': 'bool',
|
|
824
|
+
'$clr.ambient': 'color',
|
|
825
|
+
'$clr.diffuse': 'color',
|
|
826
|
+
'$clr.specular': 'color',
|
|
827
|
+
'$clr.emissive': 'color',
|
|
828
|
+
'$clr.transparent': 'color',
|
|
829
|
+
'$clr.reflective': 'color',
|
|
830
|
+
'$mat.shininess': 'float',
|
|
831
|
+
'$mat.reflectivity': 'float',
|
|
832
|
+
'$mat.refracti': 'float',
|
|
833
|
+
'$tex.file': 'map'
|
|
616
834
|
};
|
|
835
|
+
|
|
617
836
|
function aiMaterial() {
|
|
618
837
|
this.mNumAllocated = 0;
|
|
619
838
|
this.mNumProperties = 0;
|
|
620
839
|
this.mProperties = [];
|
|
621
|
-
|
|
622
|
-
|
|
840
|
+
|
|
841
|
+
this.toTHREE = function () {
|
|
842
|
+
var mat = new MeshPhongMaterial();
|
|
843
|
+
|
|
623
844
|
for (let i = 0; i < this.mProperties.length; i++) {
|
|
624
|
-
if (nameTypeMapping[this.mProperties[i].mKey] ==
|
|
845
|
+
if (nameTypeMapping[this.mProperties[i].mKey] == 'float') {
|
|
625
846
|
mat[namePropMapping[this.mProperties[i].mKey]] = this.mProperties[i].dataAsFloat();
|
|
626
847
|
}
|
|
627
|
-
|
|
848
|
+
|
|
849
|
+
if (nameTypeMapping[this.mProperties[i].mKey] == 'color') {
|
|
628
850
|
mat[namePropMapping[this.mProperties[i].mKey]] = this.mProperties[i].dataAsColor();
|
|
629
851
|
}
|
|
630
|
-
|
|
852
|
+
|
|
853
|
+
if (nameTypeMapping[this.mProperties[i].mKey] == 'bool') {
|
|
631
854
|
mat[namePropMapping[this.mProperties[i].mKey]] = this.mProperties[i].dataAsBool();
|
|
632
855
|
}
|
|
633
|
-
|
|
856
|
+
|
|
857
|
+
if (nameTypeMapping[this.mProperties[i].mKey] == 'string') {
|
|
634
858
|
mat[namePropMapping[this.mProperties[i].mKey]] = this.mProperties[i].dataAsString();
|
|
635
859
|
}
|
|
636
|
-
|
|
860
|
+
|
|
861
|
+
if (nameTypeMapping[this.mProperties[i].mKey] == 'map') {
|
|
637
862
|
var prop = this.mProperties[i];
|
|
638
|
-
if (prop.mSemantic == aiTextureType_DIFFUSE)
|
|
639
|
-
|
|
640
|
-
if (prop.mSemantic ==
|
|
641
|
-
|
|
642
|
-
if (prop.mSemantic == aiTextureType_LIGHTMAP)
|
|
643
|
-
mat.lightMap = this.mProperties[i].dataAsMap();
|
|
644
|
-
if (prop.mSemantic == aiTextureType_OPACITY)
|
|
645
|
-
mat.alphaMap = this.mProperties[i].dataAsMap();
|
|
863
|
+
if (prop.mSemantic == aiTextureType_DIFFUSE) mat.map = this.mProperties[i].dataAsMap();
|
|
864
|
+
if (prop.mSemantic == aiTextureType_NORMALS) mat.normalMap = this.mProperties[i].dataAsMap();
|
|
865
|
+
if (prop.mSemantic == aiTextureType_LIGHTMAP) mat.lightMap = this.mProperties[i].dataAsMap();
|
|
866
|
+
if (prop.mSemantic == aiTextureType_OPACITY) mat.alphaMap = this.mProperties[i].dataAsMap();
|
|
646
867
|
}
|
|
647
868
|
}
|
|
869
|
+
|
|
648
870
|
mat.ambient.r = 0.53;
|
|
649
871
|
mat.ambient.g = 0.53;
|
|
650
872
|
mat.ambient.b = 0.53;
|
|
@@ -654,31 +876,36 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
654
876
|
return mat;
|
|
655
877
|
};
|
|
656
878
|
}
|
|
879
|
+
|
|
657
880
|
function veclerp(v1, v2, l) {
|
|
658
|
-
var v = new
|
|
881
|
+
var v = new Vector3();
|
|
659
882
|
var lm1 = 1 - l;
|
|
660
883
|
v.x = v1.x * l + v2.x * lm1;
|
|
661
884
|
v.y = v1.y * l + v2.y * lm1;
|
|
662
885
|
v.z = v1.z * l + v2.z * lm1;
|
|
663
886
|
return v;
|
|
664
887
|
}
|
|
888
|
+
|
|
665
889
|
function quatlerp(q1, q2, l) {
|
|
666
890
|
return q1.clone().slerp(q2, 1 - l);
|
|
667
891
|
}
|
|
892
|
+
|
|
668
893
|
function sampleTrack(keys, time, lne, lerp) {
|
|
669
|
-
if (keys.length == 1)
|
|
670
|
-
return keys[0].mValue.toTHREE();
|
|
894
|
+
if (keys.length == 1) return keys[0].mValue.toTHREE();
|
|
671
895
|
var dist = Infinity;
|
|
672
896
|
var key = null;
|
|
673
897
|
var nextKey = null;
|
|
898
|
+
|
|
674
899
|
for (let i = 0; i < keys.length; i++) {
|
|
675
900
|
var timeDist = Math.abs(keys[i].mTime - time);
|
|
901
|
+
|
|
676
902
|
if (timeDist < dist && keys[i].mTime <= time) {
|
|
677
903
|
dist = timeDist;
|
|
678
904
|
key = keys[i];
|
|
679
905
|
nextKey = keys[i + 1];
|
|
680
906
|
}
|
|
681
907
|
}
|
|
908
|
+
|
|
682
909
|
if (!key) {
|
|
683
910
|
return null;
|
|
684
911
|
} else if (nextKey) {
|
|
@@ -695,62 +922,57 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
695
922
|
return lerp(key.mValue.toTHREE(), nextKey.mValue.toTHREE(), l);
|
|
696
923
|
}
|
|
697
924
|
}
|
|
925
|
+
|
|
698
926
|
function aiNodeAnim() {
|
|
699
|
-
this.mNodeName =
|
|
927
|
+
this.mNodeName = '';
|
|
700
928
|
this.mNumPositionKeys = 0;
|
|
701
929
|
this.mNumRotationKeys = 0;
|
|
702
930
|
this.mNumScalingKeys = 0;
|
|
703
931
|
this.mPositionKeys = [];
|
|
704
932
|
this.mRotationKeys = [];
|
|
705
933
|
this.mScalingKeys = [];
|
|
706
|
-
this.mPreState =
|
|
707
|
-
this.mPostState =
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
934
|
+
this.mPreState = '';
|
|
935
|
+
this.mPostState = '';
|
|
936
|
+
|
|
937
|
+
this.init = function (tps) {
|
|
938
|
+
if (!tps) tps = 1;
|
|
939
|
+
|
|
940
|
+
function t(t) {
|
|
941
|
+
t.mTime /= tps;
|
|
713
942
|
}
|
|
943
|
+
|
|
714
944
|
this.mPositionKeys.forEach(t);
|
|
715
945
|
this.mRotationKeys.forEach(t);
|
|
716
946
|
this.mScalingKeys.forEach(t);
|
|
717
947
|
};
|
|
718
|
-
|
|
948
|
+
|
|
949
|
+
this.sortKeys = function () {
|
|
719
950
|
function comp(a, b) {
|
|
720
951
|
return a.mTime - b.mTime;
|
|
721
952
|
}
|
|
953
|
+
|
|
722
954
|
this.mPositionKeys.sort(comp);
|
|
723
955
|
this.mRotationKeys.sort(comp);
|
|
724
956
|
this.mScalingKeys.sort(comp);
|
|
725
957
|
};
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
null,
|
|
736
|
-
this.mRotationKeys.map(function(a) {
|
|
737
|
-
return a.mTime;
|
|
738
|
-
})
|
|
739
|
-
),
|
|
740
|
-
Math.max.apply(
|
|
741
|
-
null,
|
|
742
|
-
this.mScalingKeys.map(function(a) {
|
|
743
|
-
return a.mTime;
|
|
744
|
-
})
|
|
745
|
-
)
|
|
746
|
-
);
|
|
958
|
+
|
|
959
|
+
this.getLength = function () {
|
|
960
|
+
return Math.max(Math.max.apply(null, this.mPositionKeys.map(function (a) {
|
|
961
|
+
return a.mTime;
|
|
962
|
+
})), Math.max.apply(null, this.mRotationKeys.map(function (a) {
|
|
963
|
+
return a.mTime;
|
|
964
|
+
})), Math.max.apply(null, this.mScalingKeys.map(function (a) {
|
|
965
|
+
return a.mTime;
|
|
966
|
+
})));
|
|
747
967
|
};
|
|
748
|
-
|
|
968
|
+
|
|
969
|
+
this.toTHREE = function (o) {
|
|
749
970
|
this.sortKeys();
|
|
750
971
|
var length = this.getLength();
|
|
751
972
|
var track = new Virtulous.KeyFrameTrack();
|
|
973
|
+
|
|
752
974
|
for (let i = 0; i < length; i += 0.05) {
|
|
753
|
-
var matrix = new
|
|
975
|
+
var matrix = new Matrix4();
|
|
754
976
|
var time = i;
|
|
755
977
|
var pos = sampleTrack(this.mPositionKeys, time, length, veclerp);
|
|
756
978
|
var scale = sampleTrack(this.mScalingKeys, time, length, veclerp);
|
|
@@ -759,8 +981,10 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
759
981
|
var key = new Virtulous.KeyFrame(time, matrix);
|
|
760
982
|
track.addKey(key);
|
|
761
983
|
}
|
|
984
|
+
|
|
762
985
|
track.target = o.findNode(this.mNodeName).toTHREE();
|
|
763
986
|
var tracks = [track];
|
|
987
|
+
|
|
764
988
|
if (o.nodeToBoneMap[this.mNodeName]) {
|
|
765
989
|
for (let i = 0; i < o.nodeToBoneMap[this.mNodeName].length; i++) {
|
|
766
990
|
var t2 = track.clone();
|
|
@@ -768,42 +992,47 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
768
992
|
tracks.push(t2);
|
|
769
993
|
}
|
|
770
994
|
}
|
|
995
|
+
|
|
771
996
|
return tracks;
|
|
772
997
|
};
|
|
773
998
|
}
|
|
999
|
+
|
|
774
1000
|
function aiAnimation() {
|
|
775
|
-
this.mName =
|
|
1001
|
+
this.mName = '';
|
|
776
1002
|
this.mDuration = 0;
|
|
777
1003
|
this.mTicksPerSecond = 0;
|
|
778
1004
|
this.mNumChannels = 0;
|
|
779
1005
|
this.mChannels = [];
|
|
780
|
-
|
|
1006
|
+
|
|
1007
|
+
this.toTHREE = function (root) {
|
|
781
1008
|
var animationHandle = new Virtulous.Animation();
|
|
1009
|
+
|
|
782
1010
|
for (let i in this.mChannels) {
|
|
783
1011
|
this.mChannels[i].init(this.mTicksPerSecond);
|
|
784
1012
|
var tracks = this.mChannels[i].toTHREE(root);
|
|
1013
|
+
|
|
785
1014
|
for (let j in tracks) {
|
|
786
1015
|
tracks[j].init();
|
|
787
1016
|
animationHandle.addTrack(tracks[j]);
|
|
788
1017
|
}
|
|
789
1018
|
}
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
})
|
|
795
|
-
);
|
|
1019
|
+
|
|
1020
|
+
animationHandle.length = Math.max.apply(null, animationHandle.tracks.map(function (e) {
|
|
1021
|
+
return e.length;
|
|
1022
|
+
}));
|
|
796
1023
|
return animationHandle;
|
|
797
1024
|
};
|
|
798
1025
|
}
|
|
1026
|
+
|
|
799
1027
|
function aiTexture() {
|
|
800
1028
|
this.mWidth = 0;
|
|
801
1029
|
this.mHeight = 0;
|
|
802
1030
|
this.texAchFormatHint = [];
|
|
803
1031
|
this.pcData = [];
|
|
804
1032
|
}
|
|
1033
|
+
|
|
805
1034
|
function aiLight() {
|
|
806
|
-
this.mName =
|
|
1035
|
+
this.mName = '';
|
|
807
1036
|
this.mType = 0;
|
|
808
1037
|
this.mAttenuationConstant = 0;
|
|
809
1038
|
this.mAttenuationLinear = 0;
|
|
@@ -814,8 +1043,9 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
814
1043
|
this.mColorSpecular = null;
|
|
815
1044
|
this.mColorAmbient = null;
|
|
816
1045
|
}
|
|
1046
|
+
|
|
817
1047
|
function aiCamera() {
|
|
818
|
-
this.mName =
|
|
1048
|
+
this.mName = '';
|
|
819
1049
|
this.mPosition = null;
|
|
820
1050
|
this.mLookAt = null;
|
|
821
1051
|
this.mUp = null;
|
|
@@ -824,6 +1054,7 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
824
1054
|
this.mClipPlaneFar = 0;
|
|
825
1055
|
this.mAspect = 0;
|
|
826
1056
|
}
|
|
1057
|
+
|
|
827
1058
|
function aiScene() {
|
|
828
1059
|
this.versionMajor = 0;
|
|
829
1060
|
this.versionMinor = 0;
|
|
@@ -843,75 +1074,96 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
843
1074
|
this.mLights = [];
|
|
844
1075
|
this.mCameras = [];
|
|
845
1076
|
this.nodeToBoneMap = {};
|
|
846
|
-
|
|
1077
|
+
|
|
1078
|
+
this.findNode = function (name, root) {
|
|
847
1079
|
if (!root) {
|
|
848
1080
|
root = this.mRootNode;
|
|
849
1081
|
}
|
|
1082
|
+
|
|
850
1083
|
if (root.mName == name) {
|
|
851
1084
|
return root;
|
|
852
1085
|
}
|
|
1086
|
+
|
|
853
1087
|
for (let i = 0; i < root.mChildren.length; i++) {
|
|
854
1088
|
var ret = this.findNode(name, root.mChildren[i]);
|
|
855
|
-
if (ret)
|
|
856
|
-
return ret;
|
|
1089
|
+
if (ret) return ret;
|
|
857
1090
|
}
|
|
1091
|
+
|
|
858
1092
|
return null;
|
|
859
1093
|
};
|
|
860
|
-
|
|
1094
|
+
|
|
1095
|
+
this.toTHREE = function () {
|
|
861
1096
|
this.nodeCount = 0;
|
|
862
1097
|
markBones(this);
|
|
863
1098
|
var o = this.mRootNode.toTHREE(this);
|
|
864
|
-
|
|
865
|
-
|
|
1099
|
+
|
|
1100
|
+
for (let i in this.mMeshes) this.mMeshes[i].hookupSkeletons(this);
|
|
1101
|
+
|
|
866
1102
|
if (this.mAnimations.length > 0) {
|
|
867
1103
|
var a = this.mAnimations[0].toTHREE(this);
|
|
868
1104
|
}
|
|
869
|
-
|
|
1105
|
+
|
|
1106
|
+
return {
|
|
1107
|
+
object: o,
|
|
1108
|
+
animation: a
|
|
1109
|
+
};
|
|
870
1110
|
};
|
|
871
1111
|
}
|
|
1112
|
+
|
|
872
1113
|
function aiMatrix4() {
|
|
873
1114
|
this.elements = [[], [], [], []];
|
|
874
|
-
|
|
875
|
-
|
|
1115
|
+
|
|
1116
|
+
this.toTHREE = function () {
|
|
1117
|
+
var m = new Matrix4();
|
|
1118
|
+
|
|
876
1119
|
for (let i = 0; i < 4; ++i) {
|
|
877
1120
|
for (let i2 = 0; i2 < 4; ++i2) {
|
|
878
1121
|
m.elements[i * 4 + i2] = this.elements[i2][i];
|
|
879
1122
|
}
|
|
880
1123
|
}
|
|
1124
|
+
|
|
881
1125
|
return m;
|
|
882
1126
|
};
|
|
883
1127
|
}
|
|
1128
|
+
|
|
884
1129
|
var littleEndian = true;
|
|
1130
|
+
|
|
885
1131
|
function readFloat(dataview) {
|
|
886
1132
|
var val = dataview.getFloat32(dataview.readOffset, littleEndian);
|
|
887
1133
|
dataview.readOffset += 4;
|
|
888
1134
|
return val;
|
|
889
1135
|
}
|
|
1136
|
+
|
|
890
1137
|
function Read_double(dataview) {
|
|
891
1138
|
var val = dataview.getFloat64(dataview.readOffset, littleEndian);
|
|
892
1139
|
dataview.readOffset += 8;
|
|
893
1140
|
return val;
|
|
894
1141
|
}
|
|
1142
|
+
|
|
895
1143
|
function Read_uint8_t(dataview) {
|
|
896
1144
|
var val = dataview.getUint8(dataview.readOffset);
|
|
897
1145
|
dataview.readOffset += 1;
|
|
898
1146
|
return val;
|
|
899
1147
|
}
|
|
1148
|
+
|
|
900
1149
|
function Read_uint16_t(dataview) {
|
|
901
1150
|
var val = dataview.getUint16(dataview.readOffset, littleEndian);
|
|
902
1151
|
dataview.readOffset += 2;
|
|
903
1152
|
return val;
|
|
904
1153
|
}
|
|
1154
|
+
|
|
905
1155
|
function Read_unsigned_int(dataview) {
|
|
906
1156
|
var val = dataview.getUint32(dataview.readOffset, littleEndian);
|
|
907
1157
|
dataview.readOffset += 4;
|
|
908
1158
|
return val;
|
|
909
1159
|
}
|
|
1160
|
+
|
|
910
1161
|
function Read_uint32_t(dataview) {
|
|
911
1162
|
var val = dataview.getUint32(dataview.readOffset, littleEndian);
|
|
912
1163
|
dataview.readOffset += 4;
|
|
913
1164
|
return val;
|
|
914
1165
|
}
|
|
1166
|
+
|
|
915
1167
|
function Read_aiVector3D(stream) {
|
|
916
1168
|
var v = new aiVector3D();
|
|
917
1169
|
v.x = readFloat(stream);
|
|
@@ -919,6 +1171,7 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
919
1171
|
v.z = readFloat(stream);
|
|
920
1172
|
return v;
|
|
921
1173
|
}
|
|
1174
|
+
|
|
922
1175
|
function Read_aiColor3D(stream) {
|
|
923
1176
|
var c = new aiColor3D();
|
|
924
1177
|
c.r = readFloat(stream);
|
|
@@ -926,6 +1179,7 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
926
1179
|
c.b = readFloat(stream);
|
|
927
1180
|
return c;
|
|
928
1181
|
}
|
|
1182
|
+
|
|
929
1183
|
function Read_aiQuaternion(stream) {
|
|
930
1184
|
var v = new aiQuaternion();
|
|
931
1185
|
v.w = readFloat(stream);
|
|
@@ -934,61 +1188,75 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
934
1188
|
v.z = readFloat(stream);
|
|
935
1189
|
return v;
|
|
936
1190
|
}
|
|
1191
|
+
|
|
937
1192
|
function Read_aiString(stream) {
|
|
938
1193
|
var s = new aiString();
|
|
939
1194
|
var stringlengthbytes = Read_unsigned_int(stream);
|
|
940
1195
|
stream.ReadBytes(s.data, 1, stringlengthbytes);
|
|
941
1196
|
return s.toString();
|
|
942
1197
|
}
|
|
1198
|
+
|
|
943
1199
|
function Read_aiVertexWeight(stream) {
|
|
944
1200
|
var w = new aiVertexWeight();
|
|
945
1201
|
w.mVertexId = Read_unsigned_int(stream);
|
|
946
1202
|
w.mWeight = readFloat(stream);
|
|
947
1203
|
return w;
|
|
948
1204
|
}
|
|
1205
|
+
|
|
949
1206
|
function Read_aiMatrix4x4(stream) {
|
|
950
1207
|
var m = new aiMatrix4();
|
|
1208
|
+
|
|
951
1209
|
for (let i = 0; i < 4; ++i) {
|
|
952
1210
|
for (let i2 = 0; i2 < 4; ++i2) {
|
|
953
1211
|
m.elements[i][i2] = readFloat(stream);
|
|
954
1212
|
}
|
|
955
1213
|
}
|
|
1214
|
+
|
|
956
1215
|
return m;
|
|
957
1216
|
}
|
|
1217
|
+
|
|
958
1218
|
function Read_aiVectorKey(stream) {
|
|
959
1219
|
var v = new aiVectorKey();
|
|
960
1220
|
v.mTime = Read_double(stream);
|
|
961
1221
|
v.mValue = Read_aiVector3D(stream);
|
|
962
1222
|
return v;
|
|
963
1223
|
}
|
|
1224
|
+
|
|
964
1225
|
function Read_aiQuatKey(stream) {
|
|
965
1226
|
var v = new aiQuatKey();
|
|
966
1227
|
v.mTime = Read_double(stream);
|
|
967
1228
|
v.mValue = Read_aiQuaternion(stream);
|
|
968
1229
|
return v;
|
|
969
1230
|
}
|
|
1231
|
+
|
|
970
1232
|
function ReadArray_aiVertexWeight(stream, data, size) {
|
|
971
|
-
for (let i = 0; i < size; i++)
|
|
972
|
-
data[i] = Read_aiVertexWeight(stream);
|
|
1233
|
+
for (let i = 0; i < size; i++) data[i] = Read_aiVertexWeight(stream);
|
|
973
1234
|
}
|
|
1235
|
+
|
|
974
1236
|
function ReadArray_aiVectorKey(stream, data, size) {
|
|
975
|
-
for (let i = 0; i < size; i++)
|
|
976
|
-
data[i] = Read_aiVectorKey(stream);
|
|
1237
|
+
for (let i = 0; i < size; i++) data[i] = Read_aiVectorKey(stream);
|
|
977
1238
|
}
|
|
1239
|
+
|
|
978
1240
|
function ReadArray_aiQuatKey(stream, data, size) {
|
|
979
|
-
for (let i = 0; i < size; i++)
|
|
980
|
-
data[i] = Read_aiQuatKey(stream);
|
|
1241
|
+
for (let i = 0; i < size; i++) data[i] = Read_aiQuatKey(stream);
|
|
981
1242
|
}
|
|
982
|
-
|
|
983
|
-
|
|
1243
|
+
|
|
1244
|
+
function ReadBounds(stream, T
|
|
1245
|
+
/*p*/
|
|
1246
|
+
, n) {
|
|
1247
|
+
// not sure what to do here, the data isn't really useful.
|
|
1248
|
+
return stream.Seek(sizeof(T) * n, aiOrigin_CUR); // eslint-disable-line no-undef
|
|
984
1249
|
}
|
|
1250
|
+
|
|
985
1251
|
function ai_assert(bool) {
|
|
986
|
-
if (!bool)
|
|
987
|
-
throw "asset failed";
|
|
1252
|
+
if (!bool) throw 'asset failed';
|
|
988
1253
|
}
|
|
1254
|
+
|
|
989
1255
|
function ReadBinaryNode(stream, parent, depth) {
|
|
990
1256
|
var chunkID = Read_uint32_t(stream);
|
|
991
1257
|
ai_assert(chunkID == ASSBIN_CHUNK_AINODE);
|
|
1258
|
+
/*uint32_t size =*/
|
|
1259
|
+
|
|
992
1260
|
Read_uint32_t(stream);
|
|
993
1261
|
var node = new aiNode();
|
|
994
1262
|
node.mParent = parent;
|
|
@@ -997,70 +1265,93 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
997
1265
|
node.mTransformation = Read_aiMatrix4x4(stream);
|
|
998
1266
|
node.mNumChildren = Read_unsigned_int(stream);
|
|
999
1267
|
node.mNumMeshes = Read_unsigned_int(stream);
|
|
1268
|
+
|
|
1000
1269
|
if (node.mNumMeshes) {
|
|
1001
1270
|
node.mMeshes = [];
|
|
1271
|
+
|
|
1002
1272
|
for (let i = 0; i < node.mNumMeshes; ++i) {
|
|
1003
1273
|
node.mMeshes[i] = Read_unsigned_int(stream);
|
|
1004
1274
|
}
|
|
1005
1275
|
}
|
|
1276
|
+
|
|
1006
1277
|
if (node.mNumChildren) {
|
|
1007
1278
|
node.mChildren = [];
|
|
1279
|
+
|
|
1008
1280
|
for (let i = 0; i < node.mNumChildren; ++i) {
|
|
1009
1281
|
var node2 = ReadBinaryNode(stream, node, depth++);
|
|
1010
1282
|
node.mChildren[i] = node2;
|
|
1011
1283
|
}
|
|
1012
1284
|
}
|
|
1285
|
+
|
|
1013
1286
|
return node;
|
|
1014
|
-
}
|
|
1287
|
+
} // -----------------------------------------------------------------------------------
|
|
1288
|
+
|
|
1289
|
+
|
|
1015
1290
|
function ReadBinaryBone(stream, b) {
|
|
1016
1291
|
var chunkID = Read_uint32_t(stream);
|
|
1017
1292
|
ai_assert(chunkID == ASSBIN_CHUNK_AIBONE);
|
|
1293
|
+
/*uint32_t size =*/
|
|
1294
|
+
|
|
1018
1295
|
Read_uint32_t(stream);
|
|
1019
1296
|
b.mName = Read_aiString(stream);
|
|
1020
1297
|
b.mNumWeights = Read_unsigned_int(stream);
|
|
1021
|
-
b.mOffsetMatrix = Read_aiMatrix4x4(stream);
|
|
1298
|
+
b.mOffsetMatrix = Read_aiMatrix4x4(stream); // for the moment we write dumb min/max values for the bones, too.
|
|
1299
|
+
// maybe I'll add a better, hash-like solution later
|
|
1300
|
+
|
|
1022
1301
|
if (shortened) {
|
|
1023
1302
|
ReadBounds(stream, b.mWeights, b.mNumWeights);
|
|
1024
1303
|
} else {
|
|
1304
|
+
// else write as usual
|
|
1025
1305
|
b.mWeights = [];
|
|
1026
1306
|
ReadArray_aiVertexWeight(stream, b.mWeights, b.mNumWeights);
|
|
1027
1307
|
}
|
|
1308
|
+
|
|
1028
1309
|
return b;
|
|
1029
1310
|
}
|
|
1311
|
+
|
|
1030
1312
|
function ReadBinaryMesh(stream, mesh) {
|
|
1031
1313
|
var chunkID = Read_uint32_t(stream);
|
|
1032
1314
|
ai_assert(chunkID == ASSBIN_CHUNK_AIMESH);
|
|
1315
|
+
/*uint32_t size =*/
|
|
1316
|
+
|
|
1033
1317
|
Read_uint32_t(stream);
|
|
1034
1318
|
mesh.mPrimitiveTypes = Read_unsigned_int(stream);
|
|
1035
1319
|
mesh.mNumVertices = Read_unsigned_int(stream);
|
|
1036
1320
|
mesh.mNumFaces = Read_unsigned_int(stream);
|
|
1037
1321
|
mesh.mNumBones = Read_unsigned_int(stream);
|
|
1038
1322
|
mesh.mMaterialIndex = Read_unsigned_int(stream);
|
|
1039
|
-
mesh.mNumUVComponents = [];
|
|
1323
|
+
mesh.mNumUVComponents = []; // first of all, write bits for all existent vertex components
|
|
1324
|
+
|
|
1040
1325
|
var c = Read_unsigned_int(stream);
|
|
1326
|
+
|
|
1041
1327
|
if (c & ASSBIN_MESH_HAS_POSITIONS) {
|
|
1042
1328
|
if (shortened) {
|
|
1043
1329
|
ReadBounds(stream, mesh.mVertices, mesh.mNumVertices);
|
|
1044
1330
|
} else {
|
|
1331
|
+
// else write as usual
|
|
1045
1332
|
mesh.mVertices = [];
|
|
1046
1333
|
mesh.mVertexBuffer = stream.subArray32(stream.readOffset, stream.readOffset + mesh.mNumVertices * 3 * 4);
|
|
1047
1334
|
stream.Seek(mesh.mNumVertices * 3 * 4, aiOrigin_CUR);
|
|
1048
1335
|
}
|
|
1049
1336
|
}
|
|
1337
|
+
|
|
1050
1338
|
if (c & ASSBIN_MESH_HAS_NORMALS) {
|
|
1051
1339
|
if (shortened) {
|
|
1052
1340
|
ReadBounds(stream, mesh.mNormals, mesh.mNumVertices);
|
|
1053
1341
|
} else {
|
|
1342
|
+
// else write as usual
|
|
1054
1343
|
mesh.mNormals = [];
|
|
1055
1344
|
mesh.mNormalBuffer = stream.subArray32(stream.readOffset, stream.readOffset + mesh.mNumVertices * 3 * 4);
|
|
1056
1345
|
stream.Seek(mesh.mNumVertices * 3 * 4, aiOrigin_CUR);
|
|
1057
1346
|
}
|
|
1058
1347
|
}
|
|
1348
|
+
|
|
1059
1349
|
if (c & ASSBIN_MESH_HAS_TANGENTS_AND_BITANGENTS) {
|
|
1060
1350
|
if (shortened) {
|
|
1061
1351
|
ReadBounds(stream, mesh.mTangents, mesh.mNumVertices);
|
|
1062
1352
|
ReadBounds(stream, mesh.mBitangents, mesh.mNumVertices);
|
|
1063
1353
|
} else {
|
|
1354
|
+
// else write as usual
|
|
1064
1355
|
mesh.mTangents = [];
|
|
1065
1356
|
mesh.mTangentBuffer = stream.subArray32(stream.readOffset, stream.readOffset + mesh.mNumVertices * 3 * 4);
|
|
1066
1357
|
stream.Seek(mesh.mNumVertices * 3 * 4, aiOrigin_CUR);
|
|
@@ -1069,43 +1360,61 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
1069
1360
|
stream.Seek(mesh.mNumVertices * 3 * 4, aiOrigin_CUR);
|
|
1070
1361
|
}
|
|
1071
1362
|
}
|
|
1363
|
+
|
|
1072
1364
|
for (let n = 0; n < AI_MAX_NUMBER_OF_COLOR_SETS; ++n) {
|
|
1073
|
-
if (!(c & ASSBIN_MESH_HAS_COLOR(n)))
|
|
1074
|
-
|
|
1365
|
+
if (!(c & ASSBIN_MESH_HAS_COLOR(n))) break;
|
|
1366
|
+
|
|
1075
1367
|
if (shortened) {
|
|
1076
1368
|
ReadBounds(stream, mesh.mColors[n], mesh.mNumVertices);
|
|
1077
1369
|
} else {
|
|
1370
|
+
// else write as usual
|
|
1078
1371
|
mesh.mColors[n] = [];
|
|
1079
1372
|
mesh.mColorBuffer = stream.subArray32(stream.readOffset, stream.readOffset + mesh.mNumVertices * 4 * 4);
|
|
1080
1373
|
stream.Seek(mesh.mNumVertices * 4 * 4, aiOrigin_CUR);
|
|
1081
1374
|
}
|
|
1082
1375
|
}
|
|
1376
|
+
|
|
1083
1377
|
mesh.mTexCoordsBuffers = [];
|
|
1378
|
+
|
|
1084
1379
|
for (let n = 0; n < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++n) {
|
|
1085
|
-
if (!(c & ASSBIN_MESH_HAS_TEXCOORD(n)))
|
|
1086
|
-
|
|
1380
|
+
if (!(c & ASSBIN_MESH_HAS_TEXCOORD(n))) break; // write number of UV components
|
|
1381
|
+
|
|
1087
1382
|
mesh.mNumUVComponents[n] = Read_unsigned_int(stream);
|
|
1383
|
+
|
|
1088
1384
|
if (shortened) {
|
|
1089
1385
|
ReadBounds(stream, mesh.mTextureCoords[n], mesh.mNumVertices);
|
|
1090
1386
|
} else {
|
|
1091
|
-
|
|
1387
|
+
// else write as usual
|
|
1388
|
+
mesh.mTextureCoords[n] = []; //note that assbin always writes 3d texcoords
|
|
1389
|
+
|
|
1092
1390
|
mesh.mTexCoordsBuffers[n] = [];
|
|
1391
|
+
|
|
1093
1392
|
for (let uv = 0; uv < mesh.mNumVertices; uv++) {
|
|
1094
1393
|
mesh.mTexCoordsBuffers[n].push(readFloat(stream));
|
|
1095
1394
|
mesh.mTexCoordsBuffers[n].push(readFloat(stream));
|
|
1096
1395
|
readFloat(stream);
|
|
1097
1396
|
}
|
|
1098
1397
|
}
|
|
1099
|
-
}
|
|
1398
|
+
} // write faces. There are no floating-point calculations involved
|
|
1399
|
+
// in these, so we can write a simple hash over the face data
|
|
1400
|
+
// to the dump file. We generate a single 32 Bit hash for 512 faces
|
|
1401
|
+
// using Assimp's standard hashing function.
|
|
1402
|
+
|
|
1403
|
+
|
|
1100
1404
|
if (shortened) {
|
|
1101
1405
|
Read_unsigned_int(stream);
|
|
1102
1406
|
} else {
|
|
1407
|
+
// else write as usual
|
|
1408
|
+
// if there are less than 2^16 vertices, we can simply use 16 bit integers ...
|
|
1103
1409
|
mesh.mFaces = [];
|
|
1104
1410
|
mesh.mIndexArray = [];
|
|
1411
|
+
|
|
1105
1412
|
for (let i = 0; i < mesh.mNumFaces; ++i) {
|
|
1106
|
-
var f = mesh.mFaces[i] = new aiFace();
|
|
1413
|
+
var f = mesh.mFaces[i] = new aiFace(); // BOOST_STATIC_ASSERT(AI_MAX_FACE_INDICES <= 0xffff);
|
|
1414
|
+
|
|
1107
1415
|
f.mNumIndices = Read_uint16_t(stream);
|
|
1108
1416
|
f.mIndices = [];
|
|
1417
|
+
|
|
1109
1418
|
for (let a = 0; a < f.mNumIndices; ++a) {
|
|
1110
1419
|
if (mesh.mNumVertices < 1 << 16) {
|
|
1111
1420
|
f.mIndices[a] = Read_uint16_t(stream);
|
|
@@ -1113,6 +1422,7 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
1113
1422
|
f.mIndices[a] = Read_unsigned_int(stream);
|
|
1114
1423
|
}
|
|
1115
1424
|
}
|
|
1425
|
+
|
|
1116
1426
|
if (f.mNumIndices === 3) {
|
|
1117
1427
|
mesh.mIndexArray.push(f.mIndices[0]);
|
|
1118
1428
|
mesh.mIndexArray.push(f.mIndices[1]);
|
|
@@ -1128,18 +1438,24 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
1128
1438
|
throw new Error("Sorry, can't currently triangulate polys. Use the triangulate preprocessor in Assimp.");
|
|
1129
1439
|
}
|
|
1130
1440
|
}
|
|
1131
|
-
}
|
|
1441
|
+
} // write bones
|
|
1442
|
+
|
|
1443
|
+
|
|
1132
1444
|
if (mesh.mNumBones) {
|
|
1133
1445
|
mesh.mBones = [];
|
|
1446
|
+
|
|
1134
1447
|
for (let a = 0; a < mesh.mNumBones; ++a) {
|
|
1135
1448
|
mesh.mBones[a] = new aiBone();
|
|
1136
1449
|
ReadBinaryBone(stream, mesh.mBones[a]);
|
|
1137
1450
|
}
|
|
1138
1451
|
}
|
|
1139
1452
|
}
|
|
1453
|
+
|
|
1140
1454
|
function ReadBinaryMaterialProperty(stream, prop) {
|
|
1141
1455
|
var chunkID = Read_uint32_t(stream);
|
|
1142
1456
|
ai_assert(chunkID == ASSBIN_CHUNK_AIMATERIALPROPERTY);
|
|
1457
|
+
/*uint32_t size =*/
|
|
1458
|
+
|
|
1143
1459
|
Read_uint32_t(stream);
|
|
1144
1460
|
prop.mKey = Read_aiString(stream);
|
|
1145
1461
|
prop.mSemantic = Read_unsigned_int(stream);
|
|
@@ -1148,26 +1464,36 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
1148
1464
|
prop.mType = Read_unsigned_int(stream);
|
|
1149
1465
|
prop.mData = [];
|
|
1150
1466
|
stream.ReadBytes(prop.mData, 1, prop.mDataLength);
|
|
1151
|
-
}
|
|
1467
|
+
} // -----------------------------------------------------------------------------------
|
|
1468
|
+
|
|
1469
|
+
|
|
1152
1470
|
function ReadBinaryMaterial(stream, mat) {
|
|
1153
1471
|
var chunkID = Read_uint32_t(stream);
|
|
1154
1472
|
ai_assert(chunkID == ASSBIN_CHUNK_AIMATERIAL);
|
|
1473
|
+
/*uint32_t size =*/
|
|
1474
|
+
|
|
1155
1475
|
Read_uint32_t(stream);
|
|
1156
1476
|
mat.mNumAllocated = mat.mNumProperties = Read_unsigned_int(stream);
|
|
1477
|
+
|
|
1157
1478
|
if (mat.mNumProperties) {
|
|
1158
1479
|
if (mat.mProperties) {
|
|
1159
1480
|
delete mat.mProperties;
|
|
1160
1481
|
}
|
|
1482
|
+
|
|
1161
1483
|
mat.mProperties = [];
|
|
1484
|
+
|
|
1162
1485
|
for (let i = 0; i < mat.mNumProperties; ++i) {
|
|
1163
1486
|
mat.mProperties[i] = new aiMaterialProperty();
|
|
1164
1487
|
ReadBinaryMaterialProperty(stream, mat.mProperties[i]);
|
|
1165
1488
|
}
|
|
1166
1489
|
}
|
|
1167
1490
|
}
|
|
1491
|
+
|
|
1168
1492
|
function ReadBinaryNodeAnim(stream, nd) {
|
|
1169
1493
|
var chunkID = Read_uint32_t(stream);
|
|
1170
1494
|
ai_assert(chunkID == ASSBIN_CHUNK_AINODEANIM);
|
|
1495
|
+
/*uint32_t size =*/
|
|
1496
|
+
|
|
1171
1497
|
Read_uint32_t(stream);
|
|
1172
1498
|
nd.mNodeName = Read_aiString(stream);
|
|
1173
1499
|
nd.mNumPositionKeys = Read_unsigned_int(stream);
|
|
@@ -1175,54 +1501,69 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
1175
1501
|
nd.mNumScalingKeys = Read_unsigned_int(stream);
|
|
1176
1502
|
nd.mPreState = Read_unsigned_int(stream);
|
|
1177
1503
|
nd.mPostState = Read_unsigned_int(stream);
|
|
1504
|
+
|
|
1178
1505
|
if (nd.mNumPositionKeys) {
|
|
1179
1506
|
if (shortened) {
|
|
1180
1507
|
ReadBounds(stream, nd.mPositionKeys, nd.mNumPositionKeys);
|
|
1181
1508
|
} else {
|
|
1509
|
+
// else write as usual
|
|
1182
1510
|
nd.mPositionKeys = [];
|
|
1183
1511
|
ReadArray_aiVectorKey(stream, nd.mPositionKeys, nd.mNumPositionKeys);
|
|
1184
1512
|
}
|
|
1185
1513
|
}
|
|
1514
|
+
|
|
1186
1515
|
if (nd.mNumRotationKeys) {
|
|
1187
1516
|
if (shortened) {
|
|
1188
1517
|
ReadBounds(stream, nd.mRotationKeys, nd.mNumRotationKeys);
|
|
1189
1518
|
} else {
|
|
1519
|
+
// else write as usual
|
|
1190
1520
|
nd.mRotationKeys = [];
|
|
1191
1521
|
ReadArray_aiQuatKey(stream, nd.mRotationKeys, nd.mNumRotationKeys);
|
|
1192
1522
|
}
|
|
1193
1523
|
}
|
|
1524
|
+
|
|
1194
1525
|
if (nd.mNumScalingKeys) {
|
|
1195
1526
|
if (shortened) {
|
|
1196
1527
|
ReadBounds(stream, nd.mScalingKeys, nd.mNumScalingKeys);
|
|
1197
1528
|
} else {
|
|
1529
|
+
// else write as usual
|
|
1198
1530
|
nd.mScalingKeys = [];
|
|
1199
1531
|
ReadArray_aiVectorKey(stream, nd.mScalingKeys, nd.mNumScalingKeys);
|
|
1200
1532
|
}
|
|
1201
1533
|
}
|
|
1202
1534
|
}
|
|
1535
|
+
|
|
1203
1536
|
function ReadBinaryAnim(stream, anim) {
|
|
1204
1537
|
var chunkID = Read_uint32_t(stream);
|
|
1205
1538
|
ai_assert(chunkID == ASSBIN_CHUNK_AIANIMATION);
|
|
1539
|
+
/*uint32_t size =*/
|
|
1540
|
+
|
|
1206
1541
|
Read_uint32_t(stream);
|
|
1207
1542
|
anim.mName = Read_aiString(stream);
|
|
1208
1543
|
anim.mDuration = Read_double(stream);
|
|
1209
1544
|
anim.mTicksPerSecond = Read_double(stream);
|
|
1210
1545
|
anim.mNumChannels = Read_unsigned_int(stream);
|
|
1546
|
+
|
|
1211
1547
|
if (anim.mNumChannels) {
|
|
1212
1548
|
anim.mChannels = [];
|
|
1549
|
+
|
|
1213
1550
|
for (let a = 0; a < anim.mNumChannels; ++a) {
|
|
1214
1551
|
anim.mChannels[a] = new aiNodeAnim();
|
|
1215
1552
|
ReadBinaryNodeAnim(stream, anim.mChannels[a]);
|
|
1216
1553
|
}
|
|
1217
1554
|
}
|
|
1218
1555
|
}
|
|
1556
|
+
|
|
1219
1557
|
function ReadBinaryTexture(stream, tex) {
|
|
1220
1558
|
var chunkID = Read_uint32_t(stream);
|
|
1221
1559
|
ai_assert(chunkID == ASSBIN_CHUNK_AITEXTURE);
|
|
1560
|
+
/*uint32_t size =*/
|
|
1561
|
+
|
|
1222
1562
|
Read_uint32_t(stream);
|
|
1223
1563
|
tex.mWidth = Read_unsigned_int(stream);
|
|
1224
1564
|
tex.mHeight = Read_unsigned_int(stream);
|
|
1225
1565
|
stream.ReadBytes(tex.achFormatHint, 1, 4);
|
|
1566
|
+
|
|
1226
1567
|
if (!shortened) {
|
|
1227
1568
|
if (!tex.mHeight) {
|
|
1228
1569
|
tex.pcData = [];
|
|
@@ -1233,28 +1574,37 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
1233
1574
|
}
|
|
1234
1575
|
}
|
|
1235
1576
|
}
|
|
1577
|
+
|
|
1236
1578
|
function ReadBinaryLight(stream, l) {
|
|
1237
1579
|
var chunkID = Read_uint32_t(stream);
|
|
1238
1580
|
ai_assert(chunkID == ASSBIN_CHUNK_AILIGHT);
|
|
1581
|
+
/*uint32_t size =*/
|
|
1582
|
+
|
|
1239
1583
|
Read_uint32_t(stream);
|
|
1240
1584
|
l.mName = Read_aiString(stream);
|
|
1241
1585
|
l.mType = Read_unsigned_int(stream);
|
|
1586
|
+
|
|
1242
1587
|
if (l.mType != aiLightSource_DIRECTIONAL) {
|
|
1243
1588
|
l.mAttenuationConstant = readFloat(stream);
|
|
1244
1589
|
l.mAttenuationLinear = readFloat(stream);
|
|
1245
1590
|
l.mAttenuationQuadratic = readFloat(stream);
|
|
1246
1591
|
}
|
|
1592
|
+
|
|
1247
1593
|
l.mColorDiffuse = Read_aiColor3D(stream);
|
|
1248
1594
|
l.mColorSpecular = Read_aiColor3D(stream);
|
|
1249
1595
|
l.mColorAmbient = Read_aiColor3D(stream);
|
|
1596
|
+
|
|
1250
1597
|
if (l.mType == aiLightSource_SPOT) {
|
|
1251
1598
|
l.mAngleInnerCone = readFloat(stream);
|
|
1252
1599
|
l.mAngleOuterCone = readFloat(stream);
|
|
1253
1600
|
}
|
|
1254
1601
|
}
|
|
1602
|
+
|
|
1255
1603
|
function ReadBinaryCamera(stream, cam) {
|
|
1256
1604
|
var chunkID = Read_uint32_t(stream);
|
|
1257
1605
|
ai_assert(chunkID == ASSBIN_CHUNK_AICAMERA);
|
|
1606
|
+
/*uint32_t size =*/
|
|
1607
|
+
|
|
1258
1608
|
Read_uint32_t(stream);
|
|
1259
1609
|
cam.mName = Read_aiString(stream);
|
|
1260
1610
|
cam.mPosition = Read_aiVector3D(stream);
|
|
@@ -1265,9 +1615,12 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
1265
1615
|
cam.mClipPlaneFar = readFloat(stream);
|
|
1266
1616
|
cam.mAspect = readFloat(stream);
|
|
1267
1617
|
}
|
|
1618
|
+
|
|
1268
1619
|
function ReadBinaryScene(stream, scene) {
|
|
1269
1620
|
var chunkID = Read_uint32_t(stream);
|
|
1270
1621
|
ai_assert(chunkID == ASSBIN_CHUNK_AISCENE);
|
|
1622
|
+
/*uint32_t size =*/
|
|
1623
|
+
|
|
1271
1624
|
Read_uint32_t(stream);
|
|
1272
1625
|
scene.mFlags = Read_unsigned_int(stream);
|
|
1273
1626
|
scene.mNumMeshes = Read_unsigned_int(stream);
|
|
@@ -1275,122 +1628,166 @@ AssimpLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), {
|
|
|
1275
1628
|
scene.mNumAnimations = Read_unsigned_int(stream);
|
|
1276
1629
|
scene.mNumTextures = Read_unsigned_int(stream);
|
|
1277
1630
|
scene.mNumLights = Read_unsigned_int(stream);
|
|
1278
|
-
scene.mNumCameras = Read_unsigned_int(stream);
|
|
1631
|
+
scene.mNumCameras = Read_unsigned_int(stream); // Read node graph
|
|
1632
|
+
|
|
1279
1633
|
scene.mRootNode = new aiNode();
|
|
1280
|
-
scene.mRootNode = ReadBinaryNode(stream, null, 0);
|
|
1634
|
+
scene.mRootNode = ReadBinaryNode(stream, null, 0); // Read all meshes
|
|
1635
|
+
|
|
1281
1636
|
if (scene.mNumMeshes) {
|
|
1282
1637
|
scene.mMeshes = [];
|
|
1638
|
+
|
|
1283
1639
|
for (let i = 0; i < scene.mNumMeshes; ++i) {
|
|
1284
1640
|
scene.mMeshes[i] = new aiMesh();
|
|
1285
1641
|
ReadBinaryMesh(stream, scene.mMeshes[i]);
|
|
1286
1642
|
}
|
|
1287
|
-
}
|
|
1643
|
+
} // Read materials
|
|
1644
|
+
|
|
1645
|
+
|
|
1288
1646
|
if (scene.mNumMaterials) {
|
|
1289
1647
|
scene.mMaterials = [];
|
|
1648
|
+
|
|
1290
1649
|
for (let i = 0; i < scene.mNumMaterials; ++i) {
|
|
1291
1650
|
scene.mMaterials[i] = new aiMaterial();
|
|
1292
1651
|
ReadBinaryMaterial(stream, scene.mMaterials[i]);
|
|
1293
1652
|
}
|
|
1294
|
-
}
|
|
1653
|
+
} // Read all animations
|
|
1654
|
+
|
|
1655
|
+
|
|
1295
1656
|
if (scene.mNumAnimations) {
|
|
1296
1657
|
scene.mAnimations = [];
|
|
1658
|
+
|
|
1297
1659
|
for (let i = 0; i < scene.mNumAnimations; ++i) {
|
|
1298
1660
|
scene.mAnimations[i] = new aiAnimation();
|
|
1299
1661
|
ReadBinaryAnim(stream, scene.mAnimations[i]);
|
|
1300
1662
|
}
|
|
1301
|
-
}
|
|
1663
|
+
} // Read all textures
|
|
1664
|
+
|
|
1665
|
+
|
|
1302
1666
|
if (scene.mNumTextures) {
|
|
1303
1667
|
scene.mTextures = [];
|
|
1668
|
+
|
|
1304
1669
|
for (let i = 0; i < scene.mNumTextures; ++i) {
|
|
1305
1670
|
scene.mTextures[i] = new aiTexture();
|
|
1306
1671
|
ReadBinaryTexture(stream, scene.mTextures[i]);
|
|
1307
1672
|
}
|
|
1308
|
-
}
|
|
1673
|
+
} // Read lights
|
|
1674
|
+
|
|
1675
|
+
|
|
1309
1676
|
if (scene.mNumLights) {
|
|
1310
1677
|
scene.mLights = [];
|
|
1678
|
+
|
|
1311
1679
|
for (let i = 0; i < scene.mNumLights; ++i) {
|
|
1312
1680
|
scene.mLights[i] = new aiLight();
|
|
1313
1681
|
ReadBinaryLight(stream, scene.mLights[i]);
|
|
1314
1682
|
}
|
|
1315
|
-
}
|
|
1683
|
+
} // Read cameras
|
|
1684
|
+
|
|
1685
|
+
|
|
1316
1686
|
if (scene.mNumCameras) {
|
|
1317
1687
|
scene.mCameras = [];
|
|
1688
|
+
|
|
1318
1689
|
for (let i = 0; i < scene.mNumCameras; ++i) {
|
|
1319
1690
|
scene.mCameras[i] = new aiCamera();
|
|
1320
1691
|
ReadBinaryCamera(stream, scene.mCameras[i]);
|
|
1321
1692
|
}
|
|
1322
1693
|
}
|
|
1323
1694
|
}
|
|
1695
|
+
|
|
1324
1696
|
var aiOrigin_CUR = 0;
|
|
1325
1697
|
var aiOrigin_BEG = 1;
|
|
1698
|
+
|
|
1326
1699
|
function extendStream(stream) {
|
|
1327
1700
|
stream.readOffset = 0;
|
|
1328
|
-
|
|
1701
|
+
|
|
1702
|
+
stream.Seek = function (off, ori) {
|
|
1329
1703
|
if (ori == aiOrigin_CUR) {
|
|
1330
1704
|
stream.readOffset += off;
|
|
1331
1705
|
}
|
|
1706
|
+
|
|
1332
1707
|
if (ori == aiOrigin_BEG) {
|
|
1333
1708
|
stream.readOffset = off;
|
|
1334
1709
|
}
|
|
1335
1710
|
};
|
|
1336
|
-
|
|
1711
|
+
|
|
1712
|
+
stream.ReadBytes = function (buff, size, n) {
|
|
1337
1713
|
var bytes = size * n;
|
|
1338
|
-
|
|
1339
|
-
|
|
1714
|
+
|
|
1715
|
+
for (let i = 0; i < bytes; i++) buff[i] = Read_uint8_t(this);
|
|
1340
1716
|
};
|
|
1341
|
-
|
|
1717
|
+
|
|
1718
|
+
stream.subArray32 = function (start, end) {
|
|
1342
1719
|
var buff = this.buffer;
|
|
1343
1720
|
var newbuff = buff.slice(start, end);
|
|
1344
1721
|
return new Float32Array(newbuff);
|
|
1345
1722
|
};
|
|
1346
|
-
|
|
1723
|
+
|
|
1724
|
+
stream.subArrayUint16 = function (start, end) {
|
|
1347
1725
|
var buff = this.buffer;
|
|
1348
1726
|
var newbuff = buff.slice(start, end);
|
|
1349
1727
|
return new Uint16Array(newbuff);
|
|
1350
1728
|
};
|
|
1351
|
-
|
|
1729
|
+
|
|
1730
|
+
stream.subArrayUint8 = function (start, end) {
|
|
1352
1731
|
var buff = this.buffer;
|
|
1353
1732
|
var newbuff = buff.slice(start, end);
|
|
1354
1733
|
return new Uint8Array(newbuff);
|
|
1355
1734
|
};
|
|
1356
|
-
|
|
1735
|
+
|
|
1736
|
+
stream.subArrayUint32 = function (start, end) {
|
|
1357
1737
|
var buff = this.buffer;
|
|
1358
1738
|
var newbuff = buff.slice(start, end);
|
|
1359
1739
|
return new Uint32Array(newbuff);
|
|
1360
1740
|
};
|
|
1361
1741
|
}
|
|
1742
|
+
|
|
1362
1743
|
var shortened, compressed;
|
|
1744
|
+
|
|
1363
1745
|
function InternReadFile(pFiledata) {
|
|
1364
1746
|
var pScene = new aiScene();
|
|
1365
1747
|
var stream = new DataView(pFiledata);
|
|
1366
1748
|
extendStream(stream);
|
|
1367
|
-
stream.Seek(44, aiOrigin_CUR);
|
|
1749
|
+
stream.Seek(44, aiOrigin_CUR); // signature
|
|
1750
|
+
|
|
1751
|
+
/*unsigned int versionMajor =*/
|
|
1752
|
+
|
|
1368
1753
|
pScene.versionMajor = Read_unsigned_int(stream);
|
|
1754
|
+
/*unsigned int versionMinor =*/
|
|
1755
|
+
|
|
1369
1756
|
pScene.versionMinor = Read_unsigned_int(stream);
|
|
1757
|
+
/*unsigned int versionRevision =*/
|
|
1758
|
+
|
|
1370
1759
|
pScene.versionRevision = Read_unsigned_int(stream);
|
|
1760
|
+
/*unsigned int compileFlags =*/
|
|
1761
|
+
|
|
1371
1762
|
pScene.compileFlags = Read_unsigned_int(stream);
|
|
1372
1763
|
shortened = Read_uint16_t(stream) > 0;
|
|
1373
1764
|
compressed = Read_uint16_t(stream) > 0;
|
|
1374
|
-
if (shortened)
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
stream.Seek(128, aiOrigin_CUR);
|
|
1378
|
-
|
|
1765
|
+
if (shortened) throw 'Shortened binaries are not supported!';
|
|
1766
|
+
stream.Seek(256, aiOrigin_CUR); // original filename
|
|
1767
|
+
|
|
1768
|
+
stream.Seek(128, aiOrigin_CUR); // options
|
|
1769
|
+
|
|
1770
|
+
stream.Seek(64, aiOrigin_CUR); // padding
|
|
1771
|
+
|
|
1379
1772
|
if (compressed) {
|
|
1380
1773
|
var uncompressedSize = Read_uint32_t(stream);
|
|
1381
1774
|
var compressedSize = stream.FileSize() - stream.Tell();
|
|
1382
1775
|
var compressedData = [];
|
|
1383
1776
|
stream.Read(compressedData, 1, compressedSize);
|
|
1384
1777
|
var uncompressedData = [];
|
|
1385
|
-
uncompress(uncompressedData, uncompressedSize, compressedData, compressedSize);
|
|
1778
|
+
uncompress(uncompressedData, uncompressedSize, compressedData, compressedSize); // eslint-disable-line no-undef
|
|
1779
|
+
|
|
1386
1780
|
var buff = new ArrayBuffer(uncompressedData);
|
|
1387
1781
|
ReadBinaryScene(buff, pScene);
|
|
1388
1782
|
} else {
|
|
1389
1783
|
ReadBinaryScene(stream, pScene);
|
|
1390
1784
|
}
|
|
1785
|
+
|
|
1391
1786
|
return pScene.toTHREE();
|
|
1392
1787
|
}
|
|
1788
|
+
|
|
1393
1789
|
return InternReadFile(buffer);
|
|
1394
1790
|
}
|
|
1395
1791
|
});
|
|
1396
|
-
|
|
1792
|
+
|
|
1793
|
+
export { AssimpLoader };
|