@plastic-software/three 0.183.4 → 0.184.1
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/build/three.cjs +775 -287
- package/build/three.core.js +372 -110
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +428 -181
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +7 -1
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2979 -1281
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2942 -1281
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +11 -0
- package/examples/jsm/animation/CCDIKSolver.js +5 -1
- package/examples/jsm/controls/ArcballControls.js +4 -1
- package/examples/jsm/controls/DragControls.js +2 -2
- package/examples/jsm/controls/FirstPersonControls.js +58 -54
- package/examples/jsm/controls/FlyControls.js +4 -0
- package/examples/jsm/controls/OrbitControls.js +2 -2
- package/examples/jsm/controls/TrackballControls.js +2 -2
- package/examples/jsm/controls/TransformControls.js +34 -2
- package/examples/jsm/csm/CSMShadowNode.js +6 -2
- package/examples/jsm/exporters/GLTFExporter.js +21 -5
- package/examples/jsm/geometries/TextGeometry.js +18 -0
- package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
- package/examples/jsm/inspector/Extension.js +13 -0
- package/examples/jsm/inspector/Inspector.js +169 -114
- package/examples/jsm/inspector/RendererInspector.js +2 -2
- package/examples/jsm/inspector/extensions/extensions.json +6 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
- package/examples/jsm/inspector/tabs/Memory.js +128 -0
- package/examples/jsm/inspector/tabs/Parameters.js +34 -2
- package/examples/jsm/inspector/tabs/Performance.js +2 -2
- package/examples/jsm/inspector/tabs/Settings.js +264 -0
- package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
- package/examples/jsm/inspector/tabs/Viewer.js +105 -3
- package/examples/jsm/inspector/ui/Graph.js +2 -2
- package/examples/jsm/inspector/ui/List.js +1 -1
- package/examples/jsm/inspector/ui/Profiler.js +273 -176
- package/examples/jsm/inspector/ui/Style.js +64 -10
- package/examples/jsm/inspector/ui/Tab.js +39 -7
- package/examples/jsm/inspector/ui/Values.js +39 -2
- package/examples/jsm/inspector/ui/utils.js +13 -0
- package/examples/jsm/interaction/InteractionManager.js +226 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +8 -8
- package/examples/jsm/lighting/DynamicLighting.js +82 -0
- package/examples/jsm/lighting/LightProbeGrid.js +651 -0
- package/examples/jsm/lines/LineMaterial.js +1 -1
- package/examples/jsm/loaders/EXRLoader.js +682 -43
- package/examples/jsm/loaders/FBXLoader.js +233 -33
- package/examples/jsm/loaders/GLTFLoader.js +24 -7
- package/examples/jsm/loaders/HDRLoader.js +1 -1
- package/examples/jsm/loaders/KTX2Loader.js +8 -2
- package/examples/jsm/loaders/LDrawLoader.js +39 -47
- package/examples/jsm/loaders/SVGLoader.js +1 -1
- package/examples/jsm/loaders/VTKLoader.js +5 -1
- package/examples/jsm/loaders/collada/ColladaComposer.js +101 -7
- package/examples/jsm/loaders/collada/ColladaParser.js +19 -4
- package/examples/jsm/loaders/usd/USDAParser.js +6 -0
- package/examples/jsm/loaders/usd/USDCParser.js +26 -0
- package/examples/jsm/loaders/usd/USDComposer.js +656 -103
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/RollerCoaster.js +42 -4
- package/examples/jsm/modifiers/TessellateModifier.js +1 -1
- package/examples/jsm/objects/Reflector.js +73 -25
- package/examples/jsm/objects/Sky.js +14 -2
- package/examples/jsm/objects/SkyMesh.js +23 -6
- package/examples/jsm/renderers/Projector.js +18 -38
- package/examples/jsm/renderers/SVGRenderer.js +6 -25
- package/examples/jsm/transpiler/GLSLDecoder.js +2 -2
- package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +10 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +11 -0
- package/examples/jsm/tsl/display/BilateralBlurNode.js +10 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +3 -36
- package/examples/jsm/tsl/display/FSR1Node.js +477 -0
- package/examples/jsm/tsl/display/GTAONode.js +2 -1
- package/examples/jsm/tsl/display/GaussianBlurNode.js +10 -0
- package/examples/jsm/tsl/display/GodraysNode.js +2 -11
- package/examples/jsm/tsl/display/OutlineNode.js +66 -16
- package/examples/jsm/tsl/display/SSGINode.js +0 -4
- package/examples/jsm/tsl/display/SharpenNode.js +283 -0
- package/examples/jsm/tsl/display/TAAUNode.js +835 -0
- package/examples/jsm/tsl/display/TRAANode.js +48 -7
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
- package/examples/jsm/tsl/math/Bayer.js +13 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -3
- package/examples/jsm/utils/ColorUtils.js +76 -0
- package/examples/jsm/utils/SkeletonUtils.js +14 -8
- package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
- package/package.json +4 -4
- package/src/Three.Core.js +1 -0
- package/src/Three.TSL.js +6 -0
- package/src/Three.WebGPU.Nodes.js +3 -0
- package/src/Three.WebGPU.js +6 -0
- package/src/animation/AnimationAction.js +11 -1
- package/src/audio/AudioContext.js +2 -2
- package/src/constants.js +1 -1
- package/src/core/BufferAttribute.js +13 -1
- package/src/core/Clock.js +1 -1
- package/src/core/Object3D.js +1 -5
- package/src/core/RenderTarget.js +1 -0
- package/src/extras/curves/CatmullRomCurve3.js +3 -2
- package/src/loaders/AudioLoader.js +11 -1
- package/src/loaders/DataTextureLoader.js +6 -4
- package/src/loaders/FileLoader.js +1 -2
- package/src/loaders/ImageBitmapLoader.js +4 -6
- package/src/loaders/MaterialLoader.js +1 -1
- package/src/loaders/ObjectLoader.js +25 -4
- package/src/loaders/nodes/NodeObjectLoader.js +18 -0
- package/src/materials/MeshToonMaterial.js +1 -1
- package/src/materials/nodes/Line2NodeMaterial.js +27 -0
- package/src/materials/nodes/NodeMaterial.js +0 -27
- package/src/materials/nodes/manager/NodeMaterialObserver.js +188 -89
- package/src/math/Line3.js +3 -0
- package/src/math/Matrix2.js +13 -9
- package/src/math/Matrix3.js +13 -9
- package/src/math/Matrix4.js +13 -9
- package/src/math/Plane.js +4 -3
- package/src/math/Triangle.js +1 -1
- package/src/math/Vector2.js +11 -7
- package/src/math/Vector3.js +12 -8
- package/src/math/Vector4.js +13 -9
- package/src/nodes/Nodes.js +0 -1
- package/src/nodes/TSL.js +1 -1
- package/src/nodes/accessors/BufferAttributeNode.js +9 -3
- package/src/nodes/accessors/CubeTextureNode.js +7 -1
- package/src/nodes/accessors/MaterialProperties.js +2 -5
- package/src/nodes/accessors/Object3DNode.js +1 -1
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +4 -4
- package/src/nodes/accessors/SceneProperties.js +2 -8
- package/src/nodes/accessors/StorageBufferNode.js +10 -4
- package/src/nodes/accessors/StorageTextureNode.js +4 -9
- package/src/nodes/accessors/TextureNode.js +10 -2
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/FunctionCallNode.js +1 -1
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/core/ArrayNode.js +1 -1
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/IndexNode.js +2 -1
- package/src/nodes/core/InputNode.js +1 -1
- package/src/nodes/core/InspectorNode.js +1 -1
- package/src/nodes/core/IsolateNode.js +1 -1
- package/src/nodes/core/Node.js +83 -12
- package/src/nodes/core/NodeBuilder.js +117 -16
- package/src/nodes/core/NodeUtils.js +1 -1
- package/src/nodes/core/OutputStructNode.js +1 -1
- package/src/nodes/core/ParameterNode.js +1 -1
- package/src/nodes/core/StackNode.js +1 -1
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +1 -1
- package/src/nodes/core/SubBuildNode.js +1 -1
- package/src/nodes/core/UniformGroupNode.js +36 -6
- package/src/nodes/core/VarNode.js +1 -1
- package/src/nodes/core/VaryingNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +2 -2
- package/src/nodes/display/PassNode.js +27 -7
- package/src/nodes/display/RenderOutputNode.js +4 -4
- package/src/nodes/display/ScreenNode.js +1 -1
- package/src/nodes/display/ViewportDepthTextureNode.js +11 -15
- package/src/nodes/display/ViewportTextureNode.js +18 -7
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/BarrierNode.js +9 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +69 -44
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +6 -27
- package/src/nodes/lighting/ShadowNode.js +24 -2
- package/src/nodes/math/BitcastNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +1 -1
- package/src/nodes/math/MathNode.js +73 -1
- package/src/nodes/math/OperatorNode.js +1 -1
- package/src/nodes/math/PackFloatNode.js +1 -1
- package/src/nodes/math/UnpackFloatNode.js +1 -1
- package/src/nodes/tsl/TSLBase.js +1 -1
- package/src/nodes/tsl/TSLCore.js +21 -3
- package/src/nodes/utils/ArrayElementNode.js +1 -1
- package/src/nodes/utils/ConvertNode.js +1 -1
- package/src/nodes/utils/DebugNode.js +1 -1
- package/src/nodes/utils/EventNode.js +30 -0
- package/src/nodes/utils/FlipNode.js +1 -1
- package/src/nodes/utils/FunctionOverloadingNode.js +1 -1
- package/src/nodes/utils/JoinNode.js +1 -1
- package/src/nodes/utils/MemberNode.js +1 -1
- package/src/nodes/utils/Remap.js +48 -0
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SetNode.js +1 -1
- package/src/nodes/utils/SplitNode.js +1 -1
- package/src/objects/BatchedMesh.js +17 -2
- package/src/objects/InstancedMesh.js +19 -3
- package/src/objects/SkinnedMesh.js +26 -9
- package/src/renderers/WebGLRenderer.js +147 -48
- package/src/renderers/common/Animation.js +3 -3
- package/src/renderers/common/Attributes.js +15 -1
- package/src/renderers/common/Backend.js +0 -8
- package/src/renderers/common/Background.js +2 -2
- package/src/renderers/common/BindGroup.js +1 -8
- package/src/renderers/common/Bindings.js +2 -2
- package/src/renderers/common/ComputePipeline.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/Info.js +333 -4
- package/src/renderers/common/InspectorBase.js +6 -1
- package/src/renderers/common/Pipelines.js +36 -3
- package/src/renderers/common/ReadbackBuffer.js +78 -0
- package/src/renderers/common/RenderBundle.js +3 -1
- package/src/renderers/common/RenderBundles.js +5 -2
- package/src/renderers/common/RenderObject.js +2 -2
- package/src/renderers/common/RenderObjects.js +3 -3
- package/src/renderers/common/RenderPipeline.js +35 -6
- package/src/renderers/common/Renderer.js +232 -53
- package/src/renderers/common/Textures.js +72 -3
- package/src/renderers/common/UniformsGroup.js +1 -1
- package/src/renderers/common/XRManager.js +34 -27
- package/src/renderers/common/extras/PMREMGenerator.js +23 -15
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeManager.js +230 -99
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +2 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +1 -3
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib.js +0 -1
- package/src/renderers/shaders/UniformsLib.js +7 -2
- package/src/renderers/shaders/UniformsUtils.js +27 -5
- package/src/renderers/webgl/WebGLAnimation.js +2 -1
- package/src/renderers/webgl/WebGLBackground.js +13 -13
- package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLCapabilities.js +6 -0
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLMaterials.js +12 -13
- package/src/renderers/webgl/WebGLOutput.js +4 -1
- package/src/renderers/webgl/WebGLProgram.js +4 -0
- package/src/renderers/webgl/WebGLPrograms.js +21 -4
- package/src/renderers/webgl/WebGLRenderStates.js +13 -2
- package/src/renderers/webgl/WebGLState.js +43 -0
- package/src/renderers/webgl/WebGLTextures.js +129 -26
- package/src/renderers/webgl/WebGLUniformsGroups.js +19 -0
- package/src/renderers/webgl-fallback/WebGLBackend.js +106 -65
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +29 -51
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +42 -1
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +63 -50
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +160 -146
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +55 -33
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +103 -17
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
- package/src/renderers/webgpu/utils/WebGPUConstants.js +8 -0
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +91 -17
- package/src/renderers/webgpu/utils/WebGPUUtils.js +18 -2
- package/src/renderers/webxr/WebXRController.js +12 -0
- package/src/textures/HTMLTexture.js +74 -0
- package/src/textures/Source.js +1 -1
- package/src/textures/Texture.js +13 -2
- package/src/utils.js +23 -1
- package/src/nodes/utils/RemapNode.js +0 -125
|
@@ -27,6 +27,7 @@ import { unzlibSync } from '../libs/fflate.module.js';
|
|
|
27
27
|
*
|
|
28
28
|
* @augments Loader
|
|
29
29
|
* @three_import import { VTKLoader } from 'three/addons/loaders/VTKLoader.js';
|
|
30
|
+
* @deprecated since r184.
|
|
30
31
|
*/
|
|
31
32
|
class VTKLoader extends Loader {
|
|
32
33
|
|
|
@@ -34,15 +35,18 @@ class VTKLoader extends Loader {
|
|
|
34
35
|
* Constructs a new VTK loader.
|
|
35
36
|
*
|
|
36
37
|
* @param {LoadingManager} [manager] - The loading manager.
|
|
38
|
+
* @deprecated since r184.
|
|
37
39
|
*/
|
|
38
40
|
constructor( manager ) {
|
|
39
41
|
|
|
40
42
|
super( manager );
|
|
41
43
|
|
|
44
|
+
console.warn( 'THREE.VTKLoader: The loader has been deprecated and will be removed with r194. Export your VTK files to glTF before using them on the web.' ); // @deprecated, r184
|
|
45
|
+
|
|
42
46
|
}
|
|
43
47
|
|
|
44
48
|
/**
|
|
45
|
-
* Starts loading from the given URL and passes the loaded
|
|
49
|
+
* Starts loading from the given URL and passes the loaded VTK asset
|
|
46
50
|
* to the `onLoad()` callback.
|
|
47
51
|
*
|
|
48
52
|
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
@@ -32,10 +32,12 @@ import {
|
|
|
32
32
|
Skeleton,
|
|
33
33
|
SkinnedMesh,
|
|
34
34
|
SpotLight,
|
|
35
|
+
Triangle,
|
|
35
36
|
Vector2,
|
|
36
37
|
Vector3,
|
|
37
38
|
VectorKeyframeTrack,
|
|
38
|
-
SRGBColorSpace
|
|
39
|
+
SRGBColorSpace,
|
|
40
|
+
ShapeUtils
|
|
39
41
|
} from 'three';
|
|
40
42
|
|
|
41
43
|
import { getElementsByTagName, parseFloats } from './ColladaParser.js';
|
|
@@ -1626,6 +1628,7 @@ class ColladaComposer {
|
|
|
1626
1628
|
count = primitive.count * 3;
|
|
1627
1629
|
break;
|
|
1628
1630
|
|
|
1631
|
+
case 'polygons':
|
|
1629
1632
|
case 'polylist':
|
|
1630
1633
|
|
|
1631
1634
|
for ( let g = 0; g < primitive.count; g ++ ) {
|
|
@@ -1674,7 +1677,7 @@ class ColladaComposer {
|
|
|
1674
1677
|
|
|
1675
1678
|
const input = inputs[ name ];
|
|
1676
1679
|
|
|
1677
|
-
switch ( name )
|
|
1680
|
+
switch ( name ) {
|
|
1678
1681
|
|
|
1679
1682
|
case 'VERTEX':
|
|
1680
1683
|
for ( const key in vertices ) {
|
|
@@ -1856,13 +1859,103 @@ class ColladaComposer {
|
|
|
1856
1859
|
|
|
1857
1860
|
} else if ( count > 4 ) {
|
|
1858
1861
|
|
|
1859
|
-
|
|
1862
|
+
const vertices = [];
|
|
1860
1863
|
|
|
1861
|
-
|
|
1862
|
-
const b = index + stride * k;
|
|
1863
|
-
const c = index + stride * ( k + 1 );
|
|
1864
|
+
// prepare vertices which represent the polygon's contour
|
|
1864
1865
|
|
|
1865
|
-
|
|
1866
|
+
for ( let k = 0; k < count; k ++ ) {
|
|
1867
|
+
|
|
1868
|
+
const a = index + stride * k;
|
|
1869
|
+
const positionIndex = indices[ a ] * sourceStride;
|
|
1870
|
+
|
|
1871
|
+
const x = sourceArray[ positionIndex ];
|
|
1872
|
+
const y = sourceArray[ positionIndex + 1 ];
|
|
1873
|
+
const z = sourceArray[ positionIndex + 2 ];
|
|
1874
|
+
|
|
1875
|
+
vertices.push( new Vector3( x, y, z ) );
|
|
1876
|
+
|
|
1877
|
+
}
|
|
1878
|
+
|
|
1879
|
+
// determine surface normal
|
|
1880
|
+
|
|
1881
|
+
const normal = new Vector3();
|
|
1882
|
+
const _triangle = new Triangle();
|
|
1883
|
+
|
|
1884
|
+
_triangle.a = vertices[ 0 ];
|
|
1885
|
+
_triangle.b = vertices[ 1 ];
|
|
1886
|
+
_triangle.c = vertices[ 2 ];
|
|
1887
|
+
_triangle.getNormal( normal );
|
|
1888
|
+
|
|
1889
|
+
// project to 2D and triangulate
|
|
1890
|
+
|
|
1891
|
+
const vertices2D = [];
|
|
1892
|
+
|
|
1893
|
+
if ( Math.abs( normal.x ) > Math.abs( normal.y ) && Math.abs( normal.x ) > Math.abs( normal.z ) ) {
|
|
1894
|
+
|
|
1895
|
+
for ( let k = 0; k < count; k ++ ) {
|
|
1896
|
+
|
|
1897
|
+
vertices2D.push( new Vector2( vertices[ k ].y, vertices[ k ].z ) );
|
|
1898
|
+
|
|
1899
|
+
}
|
|
1900
|
+
|
|
1901
|
+
} else if ( Math.abs( normal.y ) > Math.abs( normal.z ) ) {
|
|
1902
|
+
|
|
1903
|
+
for ( let k = 0; k < count; k ++ ) {
|
|
1904
|
+
|
|
1905
|
+
vertices2D.push( new Vector2( vertices[ k ].x, vertices[ k ].z ) );
|
|
1906
|
+
|
|
1907
|
+
}
|
|
1908
|
+
|
|
1909
|
+
} else {
|
|
1910
|
+
|
|
1911
|
+
for ( let k = 0; k < count; k ++ ) {
|
|
1912
|
+
|
|
1913
|
+
vertices2D.push( new Vector2( vertices[ k ].x, vertices[ k ].y ) );
|
|
1914
|
+
|
|
1915
|
+
}
|
|
1916
|
+
|
|
1917
|
+
}
|
|
1918
|
+
|
|
1919
|
+
const isClockWise = ShapeUtils.isClockWise( vertices2D );
|
|
1920
|
+
|
|
1921
|
+
if ( isClockWise === true ) {
|
|
1922
|
+
|
|
1923
|
+
vertices2D.reverse();
|
|
1924
|
+
|
|
1925
|
+
}
|
|
1926
|
+
|
|
1927
|
+
const faces = ShapeUtils.triangulateShape( vertices2D, [] );
|
|
1928
|
+
|
|
1929
|
+
// build indices
|
|
1930
|
+
|
|
1931
|
+
for ( let k = 0; k < faces.length; k ++ ) {
|
|
1932
|
+
|
|
1933
|
+
const face = faces[ k ];
|
|
1934
|
+
|
|
1935
|
+
let i0, i1, i2;
|
|
1936
|
+
|
|
1937
|
+
if ( isClockWise === false ) {
|
|
1938
|
+
|
|
1939
|
+
i0 = face[ 0 ];
|
|
1940
|
+
i1 = face[ 1 ];
|
|
1941
|
+
i2 = face[ 2 ];
|
|
1942
|
+
|
|
1943
|
+
|
|
1944
|
+
} else {
|
|
1945
|
+
|
|
1946
|
+
i0 = count - 1 - face[ 0 ];
|
|
1947
|
+
i1 = count - 1 - face[ 2 ];
|
|
1948
|
+
i2 = count - 1 - face[ 1 ];
|
|
1949
|
+
|
|
1950
|
+
}
|
|
1951
|
+
|
|
1952
|
+
const a = index + stride * i0;
|
|
1953
|
+
const b = index + stride * i1;
|
|
1954
|
+
const c = index + stride * i2;
|
|
1955
|
+
|
|
1956
|
+
pushVector( a );
|
|
1957
|
+
pushVector( b );
|
|
1958
|
+
pushVector( c );
|
|
1866
1959
|
|
|
1867
1960
|
}
|
|
1868
1961
|
|
|
@@ -2627,6 +2720,7 @@ class ColladaComposer {
|
|
|
2627
2720
|
break;
|
|
2628
2721
|
|
|
2629
2722
|
case 'triangles':
|
|
2723
|
+
case 'polygons':
|
|
2630
2724
|
case 'polylist':
|
|
2631
2725
|
if ( skinning ) {
|
|
2632
2726
|
|
|
@@ -140,7 +140,8 @@ class ColladaParser {
|
|
|
140
140
|
visualScenes: {},
|
|
141
141
|
kinematicsModels: {},
|
|
142
142
|
physicsModels: {},
|
|
143
|
-
kinematicsScenes: {}
|
|
143
|
+
kinematicsScenes: {},
|
|
144
|
+
joints: {}
|
|
144
145
|
};
|
|
145
146
|
|
|
146
147
|
this.library = library;
|
|
@@ -157,6 +158,7 @@ class ColladaParser {
|
|
|
157
158
|
this.parseLibrary( collada, 'library_geometries', 'geometry', this.parseGeometry.bind( this ) );
|
|
158
159
|
this.parseLibrary( collada, 'library_nodes', 'node', this.parseNode.bind( this ) );
|
|
159
160
|
this.parseLibrary( collada, 'library_visual_scenes', 'visual_scene', this.parseVisualScene.bind( this ) );
|
|
161
|
+
this.parseLibrary( collada, 'library_joints', 'joint', this.parseLibraryJoint.bind( this ) );
|
|
160
162
|
this.parseLibrary( collada, 'library_kinematics_models', 'kinematics_model', this.parseKinematicsModel.bind( this ) );
|
|
161
163
|
this.parseLibrary( collada, 'library_physics_models', 'physics_model', this.parsePhysicsModel.bind( this ) );
|
|
162
164
|
this.parseLibrary( collada, 'scene', 'instance_kinematics_scene', this.parseKinematicsScene.bind( this ) );
|
|
@@ -1231,9 +1233,6 @@ class ColladaParser {
|
|
|
1231
1233
|
break;
|
|
1232
1234
|
|
|
1233
1235
|
case 'polygons':
|
|
1234
|
-
console.warn( 'THREE.ColladaLoader: Unsupported primitive type: ', child.nodeName );
|
|
1235
|
-
break;
|
|
1236
|
-
|
|
1237
1236
|
case 'lines':
|
|
1238
1237
|
case 'linestrips':
|
|
1239
1238
|
case 'polylist':
|
|
@@ -1353,12 +1352,24 @@ class ColladaParser {
|
|
|
1353
1352
|
|
|
1354
1353
|
}
|
|
1355
1354
|
|
|
1355
|
+
if ( primitive.type === 'polygons' ) {
|
|
1356
|
+
|
|
1357
|
+
primitive.vcount = [ primitive.p.length / primitive.stride ];
|
|
1358
|
+
|
|
1359
|
+
}
|
|
1360
|
+
|
|
1356
1361
|
return primitive;
|
|
1357
1362
|
|
|
1358
1363
|
}
|
|
1359
1364
|
|
|
1360
1365
|
// kinematics
|
|
1361
1366
|
|
|
1367
|
+
parseLibraryJoint( xml ) {
|
|
1368
|
+
|
|
1369
|
+
this.library.joints[ xml.getAttribute( 'id' ) ] = this.parseKinematicsJoint( xml );
|
|
1370
|
+
|
|
1371
|
+
}
|
|
1372
|
+
|
|
1362
1373
|
parseKinematicsModel( xml ) {
|
|
1363
1374
|
|
|
1364
1375
|
const data = {
|
|
@@ -1401,6 +1412,10 @@ class ColladaParser {
|
|
|
1401
1412
|
data.joints[ child.getAttribute( 'sid' ) ] = this.parseKinematicsJoint( child );
|
|
1402
1413
|
break;
|
|
1403
1414
|
|
|
1415
|
+
case 'instance_joint':
|
|
1416
|
+
data.joints[ child.getAttribute( 'sid' ) ] = this.library.joints[ parseId( child.getAttribute( 'url' ) ) ];
|
|
1417
|
+
break;
|
|
1418
|
+
|
|
1404
1419
|
case 'link':
|
|
1405
1420
|
data.links.push( this.parseKinematicsLink( child ) );
|
|
1406
1421
|
break;
|
|
@@ -454,6 +454,12 @@ class USDAParser {
|
|
|
454
454
|
|
|
455
455
|
}
|
|
456
456
|
|
|
457
|
+
if ( header.metersPerUnit !== undefined ) {
|
|
458
|
+
|
|
459
|
+
rootFields.metersPerUnit = parseFloat( header.metersPerUnit );
|
|
460
|
+
|
|
461
|
+
}
|
|
462
|
+
|
|
457
463
|
}
|
|
458
464
|
|
|
459
465
|
specsByPath[ '/' ] = { specType: SpecType.Prim, fields: rootFields };
|
|
@@ -1092,6 +1092,19 @@ class USDCParser {
|
|
|
1092
1092
|
|
|
1093
1093
|
// Seek to payload offset and read value
|
|
1094
1094
|
const offset = valueRep.payload;
|
|
1095
|
+
if ( offset === 0 && isArray ) {
|
|
1096
|
+
|
|
1097
|
+
// Spec 16.3.9.3: Array payload 0 is an explicit empty-array sentinel.
|
|
1098
|
+
return [];
|
|
1099
|
+
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
if ( offset < 0 || offset >= this.buffer.byteLength ) {
|
|
1103
|
+
|
|
1104
|
+
throw new RangeError( 'USDCParser: Invalid payload offset ' + offset + ' for type ' + type + '.' );
|
|
1105
|
+
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1095
1108
|
const savedOffset = this.reader.tell();
|
|
1096
1109
|
this.reader.seek( offset );
|
|
1097
1110
|
|
|
@@ -1569,6 +1582,19 @@ class USDCParser {
|
|
|
1569
1582
|
|
|
1570
1583
|
}
|
|
1571
1584
|
|
|
1585
|
+
if ( ! Number.isSafeInteger( size ) || size < 0 ) {
|
|
1586
|
+
|
|
1587
|
+
throw new RangeError( 'USDCParser: Invalid array size ' + size + ' for type ' + type + '.' );
|
|
1588
|
+
|
|
1589
|
+
}
|
|
1590
|
+
|
|
1591
|
+
if ( size > 0x7FFFFFFF ) {
|
|
1592
|
+
|
|
1593
|
+
// Crate stores counts as uint64, but JS typed arrays cannot represent all such sizes.
|
|
1594
|
+
throw new RangeError( 'USDCParser: Array size ' + size + ' exceeds implementation limits.' );
|
|
1595
|
+
|
|
1596
|
+
}
|
|
1597
|
+
|
|
1572
1598
|
if ( size === 0 ) return [];
|
|
1573
1599
|
|
|
1574
1600
|
// Handle compressed arrays
|