three-stdlib 2.8.2 → 2.8.3
Sign up to get free protection for your applications and to get access to all the features.
- package/{BufferGeometryUtils-582025b8.js → BufferGeometryUtils-1a7a235c.js} +2 -1
- package/{BufferGeometryUtils-9eb5c2e7.js → BufferGeometryUtils-971dfde3.js} +0 -0
- package/animation/MMDAnimationHelper.d.ts +17 -17
- package/animation/MMDPhysics.d.ts +3 -3
- package/csm/CSM.d.ts +47 -22
- package/csm/CSMHelper.d.ts +20 -7
- package/effects/OutlineEffect.d.ts +4 -4
- package/effects/OutlineEffect.js +8 -2
- package/exporters/GLTFExporter.js +5 -10
- package/geometries/ConvexGeometry.d.ts +1 -1
- package/geometries/ParametricGeometries.d.ts +4 -2
- package/helpers/RectAreaLightHelper.d.ts +3 -3
- package/loaders/AssimpLoader.js +39 -10
- package/loaders/ColladaLoader.js +22 -5
- package/loaders/EXRLoader.js +5 -1
- package/loaders/FBXLoader.js +10 -2
- package/loaders/GLTFLoader.d.ts +44 -20
- package/loaders/LDrawLoader.d.ts +6 -0
- package/loaders/MTLLoader.d.ts +18 -18
- package/loaders/RGBMLoader.d.ts +10 -10
- package/loaders/RGBMLoader.js +253 -178
- package/loaders/SVGLoader.d.ts +5 -3
- package/loaders/SVGLoader.js +10 -5
- package/loaders/lwo/IFFParser.js +4 -1
- package/math/OBB.d.ts +1 -1
- package/misc/GPUComputationRenderer.d.ts +8 -6
- package/misc/MD2CharacterComplex.js +9 -2
- package/misc/Volume.d.ts +2 -0
- package/modifiers/EdgeSplitModifier.cjs.js +1 -1
- package/modifiers/SimplifyModifier.cjs.js +1 -1
- package/nodes/inputs/ColorNode.d.ts +2 -2
- package/nodes/inputs/TextureNode.d.ts +3 -2
- package/nodes/materials/StandardNodeMaterial.d.ts +1 -1
- package/nodes/materials/nodes/StandardNode.d.ts +1 -0
- package/nodes/utils/ColorSpaceNode.d.ts +1 -1
- package/nodes/utils/JoinNode.d.ts +1 -0
- package/objects/MarchingCubes.d.ts +12 -4
- package/objects/Reflector.d.ts +4 -2
- package/objects/ReflectorForSSRPass.d.ts +6 -6
- package/objects/Refractor.d.ts +4 -2
- package/objects/Water.d.ts +4 -3
- package/objects/Water2.d.ts +12 -3
- package/package.json +1 -1
- package/postprocessing/ClearPass.d.ts +3 -3
- package/postprocessing/SAOPass.d.ts +3 -2
- package/postprocessing/SSAARenderPass.d.ts +3 -3
- package/postprocessing/SSAOPass.d.ts +3 -2
- package/postprocessing/SSRPass.d.ts +14 -17
- package/postprocessing/TAARenderPass.d.ts +2 -2
- package/renderers/CSS2DRenderer.d.ts +5 -1
- package/renderers/CSS3DRenderer.d.ts +5 -1
- package/renderers/webgpu/WebGPUTextures.js +62 -41
- package/shaders/SSRShader.d.ts +1 -2
- package/utils/BufferGeometryUtils.cjs.js +1 -1
- package/utils/BufferGeometryUtils.js +2 -1
- package/utils/LDrawUtils.cjs.js +1 -1
- package/utils/LDrawUtils.d.ts +5 -0
- package/utils/LDrawUtils.js +1 -1
- package/utils/RoughnessMipmapper.js +5 -1
- package/utils/SceneUtils.d.ts +10 -12
- package/utils/ShadowMapViewer.js +4 -1
- package/webxr/XRHandModelFactory.d.ts +3 -3
- package/webxr/XRHandPrimitiveModel.d.ts +1 -1
- package/csm/Frustum.d.ts +0 -16
- package/csm/Shader.d.ts +0 -6
- package/loaders/XLoader.d.ts +0 -19
- package/shaders/FresnelShader.d.ts +0 -13
- package/shaders/ParallaxShader.d.ts +0 -20
- package/utils/RoughnessMipmapper.d.ts +0 -7
- package/webxr/XRHandOculusMeshModel.d.ts +0 -23
@@ -485,7 +485,8 @@ function computeMorphedAttributes(object) {
|
|
485
485
|
|
486
486
|
const morphInfluences = object.morphTargetInfluences;
|
487
487
|
|
488
|
-
if (
|
488
|
+
if ( // @ts-expect-error
|
489
|
+
material.morphTargets && morphAttribute && morphInfluences) {
|
489
490
|
_morphA.set(0, 0, 0);
|
490
491
|
|
491
492
|
_morphB.set(0, 0, 0);
|
File without changes
|
@@ -14,34 +14,34 @@ import { CCDIKSolver } from './CCDIKSolver';
|
|
14
14
|
import { MMDPhysics } from './MMDPhysics';
|
15
15
|
|
16
16
|
export interface MMDAnimationHelperParameter {
|
17
|
-
sync?: boolean;
|
18
|
-
afterglow?: number;
|
19
|
-
resetPhysicsOnLoop?: boolean;
|
17
|
+
sync?: boolean | undefined;
|
18
|
+
afterglow?: number | undefined;
|
19
|
+
resetPhysicsOnLoop?: boolean | undefined;
|
20
20
|
}
|
21
21
|
|
22
22
|
export interface MMDAnimationHelperAddParameter {
|
23
|
-
animation?: AnimationClip | AnimationClip[];
|
24
|
-
physics?: boolean;
|
25
|
-
warmup?: number;
|
26
|
-
unitStep?: number;
|
27
|
-
maxStepNum?: number;
|
28
|
-
gravity?: number;
|
29
|
-
delayTime?: number;
|
23
|
+
animation?: AnimationClip | AnimationClip[] | undefined;
|
24
|
+
physics?: boolean | undefined;
|
25
|
+
warmup?: number | undefined;
|
26
|
+
unitStep?: number | undefined;
|
27
|
+
maxStepNum?: number | undefined;
|
28
|
+
gravity?: number | undefined;
|
29
|
+
delayTime?: number | undefined;
|
30
30
|
}
|
31
31
|
|
32
32
|
export interface MMDAnimationHelperPoseParameter {
|
33
|
-
resetPose?: boolean;
|
34
|
-
ik?: boolean;
|
35
|
-
grant?: boolean;
|
33
|
+
resetPose?: boolean | undefined;
|
34
|
+
ik?: boolean | undefined;
|
35
|
+
grant?: boolean | undefined;
|
36
36
|
}
|
37
37
|
|
38
38
|
export interface MMDAnimationHelperMixer {
|
39
39
|
looped: boolean;
|
40
|
-
mixer?: AnimationMixer;
|
40
|
+
mixer?: AnimationMixer | undefined;
|
41
41
|
ikSolver: CCDIKSolver;
|
42
42
|
grantSolver: GrantSolver;
|
43
|
-
physics?: MMDPhysics;
|
44
|
-
duration?: number;
|
43
|
+
physics?: MMDPhysics | undefined;
|
44
|
+
duration?: number | undefined;
|
45
45
|
}
|
46
46
|
|
47
47
|
export class MMDAnimationHelper {
|
@@ -77,7 +77,7 @@ export class MMDAnimationHelper {
|
|
77
77
|
}
|
78
78
|
|
79
79
|
export interface AudioManagerParameter {
|
80
|
-
delayTime?: number;
|
80
|
+
delayTime?: number | undefined;
|
81
81
|
}
|
82
82
|
|
83
83
|
export class AudioManager {
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import { Bone, Euler, Matrix4, Object3D, Quaternion, SkinnedMesh, Vector3 } from 'three';
|
2
2
|
|
3
3
|
export interface MMDPhysicsParameter {
|
4
|
-
unitStep?: number;
|
5
|
-
maxStepNum?: number;
|
6
|
-
gravity?: Vector3;
|
4
|
+
unitStep?: number | undefined;
|
5
|
+
maxStepNum?: number | undefined;
|
6
|
+
gravity?: Vector3 | undefined;
|
7
7
|
}
|
8
8
|
|
9
9
|
export class MMDPhysics {
|
package/csm/CSM.d.ts
CHANGED
@@ -1,36 +1,61 @@
|
|
1
|
+
import { Camera, Vector3, DirectionalLight, Material, Vector2, Object3D } from 'three';
|
2
|
+
|
3
|
+
export enum CMSMode {
|
4
|
+
practical = 'practical',
|
5
|
+
uniform = 'uniform',
|
6
|
+
logarithmic = 'logarithmic',
|
7
|
+
custom = 'custom',
|
8
|
+
}
|
9
|
+
|
10
|
+
export interface CMSParameters {
|
11
|
+
camera?: Camera;
|
12
|
+
parent?: Object3D;
|
13
|
+
cascades?: number;
|
14
|
+
maxFar?: number;
|
15
|
+
mode?: CMSMode;
|
16
|
+
shadowMapSize?: number;
|
17
|
+
shadowBias?: number;
|
18
|
+
lightDirection?: Vector3;
|
19
|
+
lightIntensity?: number;
|
20
|
+
lightNear?: number;
|
21
|
+
lightFar?: number;
|
22
|
+
lightMargin?: number;
|
23
|
+
customSplitsCallback?: (cascades: number, cameraNear: number, cameraFar: number, breaks: number[]) => void;
|
24
|
+
}
|
25
|
+
|
1
26
|
export class CSM {
|
2
|
-
constructor(data
|
3
|
-
camera:
|
4
|
-
parent:
|
5
|
-
cascades:
|
6
|
-
maxFar:
|
7
|
-
mode:
|
8
|
-
shadowMapSize:
|
9
|
-
shadowBias:
|
10
|
-
lightDirection:
|
11
|
-
lightIntensity:
|
12
|
-
lightNear:
|
13
|
-
lightFar:
|
14
|
-
lightMargin:
|
15
|
-
customSplitsCallback:
|
27
|
+
constructor(data?: CMSParameters);
|
28
|
+
camera: Camera;
|
29
|
+
parent: Object3D;
|
30
|
+
cascades: number;
|
31
|
+
maxFar: number;
|
32
|
+
mode: CMSMode;
|
33
|
+
shadowMapSize: number;
|
34
|
+
shadowBias: number;
|
35
|
+
lightDirection: Vector3;
|
36
|
+
lightIntensity: number;
|
37
|
+
lightNear: number;
|
38
|
+
lightFar: number;
|
39
|
+
lightMargin: number;
|
40
|
+
customSplitsCallback: (cascades: number, cameraNear: number, cameraFar: number, breaks: number[]) => void;
|
16
41
|
fade: boolean;
|
17
|
-
mainFrustum:
|
18
|
-
frustums:
|
19
|
-
breaks:
|
20
|
-
lights:
|
21
|
-
shaders: Map<
|
42
|
+
mainFrustum: CSMFrustrum;
|
43
|
+
frustums: CSMFrustrum[];
|
44
|
+
breaks: number[];
|
45
|
+
lights: DirectionalLight[];
|
46
|
+
shaders: Map<unknown, string>;
|
22
47
|
createLights(): void;
|
23
48
|
initCascades(): void;
|
24
49
|
updateShadowBounds(): void;
|
25
50
|
getBreaks(): void;
|
26
51
|
update(): void;
|
27
52
|
injectInclude(): void;
|
28
|
-
setupMaterial(material:
|
53
|
+
setupMaterial(material: Material): void;
|
29
54
|
updateUniforms(): void;
|
30
|
-
getExtendedBreaks(target:
|
55
|
+
getExtendedBreaks(target: Vector2[]): void;
|
31
56
|
updateFrustums(): void;
|
32
57
|
remove(): void;
|
33
58
|
dispose(): void;
|
34
59
|
}
|
35
60
|
|
36
|
-
import
|
61
|
+
import CSMFrustrum from './CSMFrustum.js';
|
package/csm/CSMHelper.d.ts
CHANGED
@@ -1,13 +1,26 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
import {
|
2
|
+
Box3Helper,
|
3
|
+
BufferGeometry,
|
4
|
+
Group,
|
5
|
+
LineBasicMaterial,
|
6
|
+
LineSegments,
|
7
|
+
Mesh,
|
8
|
+
MeshBasicMaterial,
|
9
|
+
PlaneGeometry,
|
10
|
+
} from 'three';
|
11
|
+
|
12
|
+
import { CSM } from './CSM';
|
13
|
+
|
14
|
+
export class CSMHelper<TCSM extends CSM = CSM> extends Group {
|
15
|
+
constructor(csm: TCSM);
|
16
|
+
csm: TCSM;
|
4
17
|
displayFrustum: boolean;
|
5
18
|
displayPlanes: boolean;
|
6
19
|
displayShadowBounds: boolean;
|
7
|
-
frustumLines:
|
8
|
-
cascadeLines:
|
9
|
-
cascadePlanes:
|
10
|
-
shadowLines:
|
20
|
+
frustumLines: LineSegments<BufferGeometry, LineBasicMaterial>;
|
21
|
+
cascadeLines: Box3Helper[];
|
22
|
+
cascadePlanes: Array<Mesh<PlaneGeometry, MeshBasicMaterial>>;
|
23
|
+
shadowLines: Box3Helper[];
|
11
24
|
updateVisibility(): void;
|
12
25
|
update(): void;
|
13
26
|
}
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import { Camera, Scene, Vector2, Vector4, WebGLRenderer, WebGLRenderTarget, WebGLShadowMap } from 'three';
|
2
2
|
|
3
3
|
export interface OutlineEffectParameters {
|
4
|
-
defaultThickness?: number;
|
5
|
-
defaultColor?: number[];
|
6
|
-
defaultAlpha?: number;
|
7
|
-
defaultKeepAlive?: boolean;
|
4
|
+
defaultThickness?: number | undefined;
|
5
|
+
defaultColor?: number[] | undefined;
|
6
|
+
defaultAlpha?: number | undefined;
|
7
|
+
defaultKeepAlive?: boolean | undefined;
|
8
8
|
}
|
9
9
|
|
10
10
|
export class OutlineEffect {
|
package/effects/OutlineEffect.js
CHANGED
@@ -185,7 +185,10 @@ const OutlineEffect = function (renderer, parameters) {
|
|
185
185
|
material.uniforms.outlineAlpha.value = originalMaterial.opacity;
|
186
186
|
|
187
187
|
if (outlineParameters !== undefined) {
|
188
|
-
if (outlineParameters.thickness !== undefined)
|
188
|
+
if (outlineParameters.thickness !== undefined) {
|
189
|
+
material.uniforms.outlineThickness.value = outlineParameters.thickness;
|
190
|
+
}
|
191
|
+
|
189
192
|
if (outlineParameters.color !== undefined) material.uniforms.outlineColor.value.fromArray(outlineParameters.color);
|
190
193
|
if (outlineParameters.alpha !== undefined) material.uniforms.outlineAlpha.value = outlineParameters.alpha;
|
191
194
|
}
|
@@ -216,7 +219,10 @@ const OutlineEffect = function (renderer, parameters) {
|
|
216
219
|
}
|
217
220
|
|
218
221
|
material.transparent = outlineParameters.alpha !== undefined && outlineParameters.alpha < 1.0 ? true : originalMaterial.transparent;
|
219
|
-
|
222
|
+
|
223
|
+
if (outlineParameters.keepAlive !== undefined) {
|
224
|
+
cache[originalMaterial.uuid].keepAlive = outlineParameters.keepAlive;
|
225
|
+
}
|
220
226
|
} else {
|
221
227
|
material.transparent = originalMaterial.transparent;
|
222
228
|
material.visible = originalMaterial.visible;
|
@@ -1902,29 +1902,24 @@ class GLTFMaterialsVolumeExtension {
|
|
1902
1902
|
|
1903
1903
|
writeMaterial(material, materialDef) {
|
1904
1904
|
if (!(material instanceof MeshPhysicalMaterial && // @ts-expect-error
|
1905
|
-
material.isMeshPhysicalMaterial) ||
|
1906
|
-
material.thickness === 0) {
|
1905
|
+
material.isMeshPhysicalMaterial) || material.thickness === 0) {
|
1907
1906
|
return;
|
1908
1907
|
}
|
1909
1908
|
|
1910
1909
|
const writer = this.writer;
|
1911
1910
|
const extensionsUsed = writer.extensionsUsed;
|
1912
1911
|
const extensionDef = {};
|
1913
|
-
extensionDef.thickness =
|
1914
|
-
material.thickness; // @ts-expect-error
|
1912
|
+
extensionDef.thickness = material.thickness;
|
1915
1913
|
|
1916
1914
|
if (material.thicknessMap) {
|
1917
1915
|
const thicknessMapDef = {
|
1918
|
-
index: writer.processTexture(
|
1919
|
-
material.thicknessMap)
|
1916
|
+
index: writer.processTexture(material.thicknessMap)
|
1920
1917
|
};
|
1921
|
-
writer.applyTextureTransform(thicknessMapDef,
|
1922
|
-
material.thicknessMap);
|
1918
|
+
writer.applyTextureTransform(thicknessMapDef, material.thicknessMap);
|
1923
1919
|
extensionDef.thicknessTexture = thicknessMapDef;
|
1924
1920
|
}
|
1925
1921
|
|
1926
|
-
extensionDef.attenuationDistance =
|
1927
|
-
material.attenuationDistance;
|
1922
|
+
extensionDef.attenuationDistance = material.attenuationDistance;
|
1928
1923
|
extensionDef.attenuationColor = //@ts-expect-error
|
1929
1924
|
material.attenuationTint.toArray();
|
1930
1925
|
materialDef.extensions = materialDef.extensions || {};
|
@@ -1,8 +1,10 @@
|
|
1
|
-
import { Curve,
|
1
|
+
import { Curve, Vector3 } from 'three';
|
2
|
+
|
3
|
+
import { ParametricGeometry } from './ParametricGeometry';
|
2
4
|
|
3
5
|
export namespace ParametricGeometries {
|
4
6
|
function klein(v: number, u: number, target: Vector3): Vector3;
|
5
|
-
function plane(width: number, height: number, target: Vector3)
|
7
|
+
function plane(width: number, height: number): (u: number, v: number, target: Vector3) => Vector3;
|
6
8
|
function mobius(u: number, t: number, target: Vector3): Vector3;
|
7
9
|
function mobius3d(u: number, t: number, target: Vector3): Vector3;
|
8
10
|
|
@@ -1,10 +1,10 @@
|
|
1
|
-
import {
|
1
|
+
import { Line, RectAreaLight, ColorRepresentation } from 'three';
|
2
2
|
|
3
3
|
export class RectAreaLightHelper extends Line {
|
4
|
-
constructor(light: RectAreaLight, color?:
|
4
|
+
constructor(light: RectAreaLight, color?: ColorRepresentation);
|
5
5
|
|
6
6
|
light: RectAreaLight;
|
7
|
-
color:
|
7
|
+
color: ColorRepresentation | undefined;
|
8
8
|
|
9
9
|
dispose(): void;
|
10
10
|
}
|
package/loaders/AssimpLoader.js
CHANGED
@@ -568,12 +568,30 @@ AssimpLoader.prototype = Object.assign(Object.create(Loader.prototype), {
|
|
568
568
|
if (scene.mMaterials[this.mMaterialIndex]) mat = scene.mMaterials[this.mMaterialIndex].toTHREE(scene);else mat = new MeshLambertMaterial();
|
569
569
|
geometry.setIndex(new BufferAttribute(new Uint32Array(this.mIndexArray), 1));
|
570
570
|
geometry.setAttribute('position', new BufferAttribute(this.mVertexBuffer, 3));
|
571
|
-
|
572
|
-
if (this.
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
if (this.
|
571
|
+
|
572
|
+
if (this.mNormalBuffer && this.mNormalBuffer.length > 0) {
|
573
|
+
geometry.setAttribute('normal', new BufferAttribute(this.mNormalBuffer, 3));
|
574
|
+
}
|
575
|
+
|
576
|
+
if (this.mColorBuffer && this.mColorBuffer.length > 0) {
|
577
|
+
geometry.setAttribute('color', new BufferAttribute(this.mColorBuffer, 4));
|
578
|
+
}
|
579
|
+
|
580
|
+
if (this.mTexCoordsBuffers[0] && this.mTexCoordsBuffers[0].length > 0) {
|
581
|
+
geometry.setAttribute('uv', new BufferAttribute(new Float32Array(this.mTexCoordsBuffers[0]), 2));
|
582
|
+
}
|
583
|
+
|
584
|
+
if (this.mTexCoordsBuffers[1] && this.mTexCoordsBuffers[1].length > 0) {
|
585
|
+
geometry.setAttribute('uv1', new BufferAttribute(new Float32Array(this.mTexCoordsBuffers[1]), 2));
|
586
|
+
}
|
587
|
+
|
588
|
+
if (this.mTangentBuffer && this.mTangentBuffer.length > 0) {
|
589
|
+
geometry.setAttribute('tangents', new BufferAttribute(this.mTangentBuffer, 3));
|
590
|
+
}
|
591
|
+
|
592
|
+
if (this.mBitangentBuffer && this.mBitangentBuffer.length > 0) {
|
593
|
+
geometry.setAttribute('bitangents', new BufferAttribute(this.mBitangentBuffer, 3));
|
594
|
+
}
|
577
595
|
|
578
596
|
if (this.mBones.length > 0) {
|
579
597
|
var weights = [];
|
@@ -824,10 +842,21 @@ AssimpLoader.prototype = Object.assign(Object.create(Loader.prototype), {
|
|
824
842
|
var mat = new MeshPhongMaterial();
|
825
843
|
|
826
844
|
for (let i = 0; i < this.mProperties.length; i++) {
|
827
|
-
if (nameTypeMapping[this.mProperties[i].mKey] == 'float')
|
828
|
-
|
829
|
-
|
830
|
-
|
845
|
+
if (nameTypeMapping[this.mProperties[i].mKey] == 'float') {
|
846
|
+
mat[namePropMapping[this.mProperties[i].mKey]] = this.mProperties[i].dataAsFloat();
|
847
|
+
}
|
848
|
+
|
849
|
+
if (nameTypeMapping[this.mProperties[i].mKey] == 'color') {
|
850
|
+
mat[namePropMapping[this.mProperties[i].mKey]] = this.mProperties[i].dataAsColor();
|
851
|
+
}
|
852
|
+
|
853
|
+
if (nameTypeMapping[this.mProperties[i].mKey] == 'bool') {
|
854
|
+
mat[namePropMapping[this.mProperties[i].mKey]] = this.mProperties[i].dataAsBool();
|
855
|
+
}
|
856
|
+
|
857
|
+
if (nameTypeMapping[this.mProperties[i].mKey] == 'string') {
|
858
|
+
mat[namePropMapping[this.mProperties[i].mKey]] = this.mProperties[i].dataAsString();
|
859
|
+
}
|
831
860
|
|
832
861
|
if (nameTypeMapping[this.mProperties[i].mKey] == 'map') {
|
833
862
|
var prop = this.mProperties[i];
|
package/loaders/ColladaLoader.js
CHANGED
@@ -370,7 +370,11 @@ class ColladaLoader extends Loader {
|
|
370
370
|
}
|
371
371
|
|
372
372
|
if (positionData.length > 0) tracks.push(new VectorKeyframeTrack(name + '.position', times, positionData));
|
373
|
-
|
373
|
+
|
374
|
+
if (quaternionData.length > 0) {
|
375
|
+
tracks.push(new QuaternionKeyframeTrack(name + '.quaternion', times, quaternionData));
|
376
|
+
}
|
377
|
+
|
374
378
|
if (scaleData.length > 0) tracks.push(new VectorKeyframeTrack(name + '.scale', times, scaleData));
|
375
379
|
return tracks;
|
376
380
|
}
|
@@ -1835,13 +1839,26 @@ class ColladaLoader extends Loader {
|
|
1835
1839
|
} // build geometry
|
1836
1840
|
|
1837
1841
|
|
1838
|
-
if (position.array.length > 0)
|
1839
|
-
|
1842
|
+
if (position.array.length > 0) {
|
1843
|
+
geometry.setAttribute('position', new Float32BufferAttribute(position.array, position.stride));
|
1844
|
+
}
|
1845
|
+
|
1846
|
+
if (normal.array.length > 0) {
|
1847
|
+
geometry.setAttribute('normal', new Float32BufferAttribute(normal.array, normal.stride));
|
1848
|
+
}
|
1849
|
+
|
1840
1850
|
if (color.array.length > 0) geometry.setAttribute('color', new Float32BufferAttribute(color.array, color.stride));
|
1841
1851
|
if (uv.array.length > 0) geometry.setAttribute('uv', new Float32BufferAttribute(uv.array, uv.stride));
|
1842
1852
|
if (uv2.array.length > 0) geometry.setAttribute('uv2', new Float32BufferAttribute(uv2.array, uv2.stride));
|
1843
|
-
|
1844
|
-
if (
|
1853
|
+
|
1854
|
+
if (skinIndex.array.length > 0) {
|
1855
|
+
geometry.setAttribute('skinIndex', new Float32BufferAttribute(skinIndex.array, skinIndex.stride));
|
1856
|
+
}
|
1857
|
+
|
1858
|
+
if (skinWeight.array.length > 0) {
|
1859
|
+
geometry.setAttribute('skinWeight', new Float32BufferAttribute(skinWeight.array, skinWeight.stride));
|
1860
|
+
}
|
1861
|
+
|
1845
1862
|
build.data = geometry;
|
1846
1863
|
build.type = primitives[0].type;
|
1847
1864
|
build.materialKeys = materialKeys;
|
package/loaders/EXRLoader.js
CHANGED
@@ -1067,7 +1067,11 @@ class EXRLoader extends DataTextureLoader {
|
|
1067
1067
|
totalDcUncompressedCount: parseInt64(inDataView, inOffset),
|
1068
1068
|
acCompression: parseInt64(inDataView, inOffset)
|
1069
1069
|
};
|
1070
|
-
|
1070
|
+
|
1071
|
+
if (dwaHeader.version < 2) {
|
1072
|
+
throw 'EXRLoader.parse: ' + EXRHeader.compression + ' version ' + dwaHeader.version + ' is unsupported';
|
1073
|
+
} // Read channel ruleset information
|
1074
|
+
|
1071
1075
|
|
1072
1076
|
var channelRules = new Array();
|
1073
1077
|
var ruleSize = parseUint16(inDataView, inOffset) - INT16_SIZE;
|
package/loaders/FBXLoader.js
CHANGED
@@ -514,7 +514,11 @@ class FBXTreeParser {
|
|
514
514
|
if (deformerNode.attrType === 'Skin') {
|
515
515
|
const skeleton = this.parseSkeleton(relationships, DeformerNodes);
|
516
516
|
skeleton.ID = nodeID;
|
517
|
-
|
517
|
+
|
518
|
+
if (relationships.parents.length > 1) {
|
519
|
+
console.warn('THREE.FBXLoader: skeleton attached to more than one geometry is not supported.');
|
520
|
+
}
|
521
|
+
|
518
522
|
skeleton.geometryID = relationships.parents[0].ID;
|
519
523
|
skeletons[nodeID] = skeleton;
|
520
524
|
} else if (deformerNode.attrType === 'BlendShape') {
|
@@ -523,7 +527,11 @@ class FBXTreeParser {
|
|
523
527
|
};
|
524
528
|
morphTarget.rawTargets = this.parseMorphTargets(relationships, DeformerNodes);
|
525
529
|
morphTarget.id = nodeID;
|
526
|
-
|
530
|
+
|
531
|
+
if (relationships.parents.length > 1) {
|
532
|
+
console.warn('THREE.FBXLoader: morph target attached to more than one geometry is not supported.');
|
533
|
+
}
|
534
|
+
|
527
535
|
morphTargets[nodeID] = morphTarget;
|
528
536
|
}
|
529
537
|
}
|
package/loaders/GLTFLoader.d.ts
CHANGED
@@ -13,6 +13,9 @@ import {
|
|
13
13
|
Material,
|
14
14
|
SkinnedMesh,
|
15
15
|
Texture,
|
16
|
+
TextureLoader,
|
17
|
+
FileLoader,
|
18
|
+
ImageBitmapLoader,
|
16
19
|
} from 'three';
|
17
20
|
|
18
21
|
import { DRACOLoader } from './DRACOLoader';
|
@@ -24,10 +27,10 @@ export interface GLTF {
|
|
24
27
|
scenes: Group[];
|
25
28
|
cameras: Camera[];
|
26
29
|
asset: {
|
27
|
-
copyright?: string;
|
28
|
-
generator?: string;
|
29
|
-
version?: string;
|
30
|
-
minVersion?: string;
|
30
|
+
copyright?: string | undefined;
|
31
|
+
generator?: string | undefined;
|
32
|
+
version?: string | undefined;
|
33
|
+
minVersion?: string | undefined;
|
31
34
|
extensions?: any;
|
32
35
|
extras?: any;
|
33
36
|
};
|
@@ -61,16 +64,35 @@ export class GLTFLoader extends Loader {
|
|
61
64
|
onLoad: (gltf: GLTF) => void,
|
62
65
|
onError?: (event: ErrorEvent) => void,
|
63
66
|
): void;
|
67
|
+
|
68
|
+
parseAsync(data: ArrayBuffer | string, path: string): Promise<void>;
|
64
69
|
}
|
65
70
|
|
71
|
+
export type GLTFReferenceType = 'materials' | 'nodes' | 'textures' | 'meshes';
|
72
|
+
|
66
73
|
export interface GLTFReference {
|
67
|
-
|
68
|
-
|
74
|
+
materials?: number;
|
75
|
+
nodes?: number;
|
76
|
+
textures?: number;
|
77
|
+
meshes?: number;
|
69
78
|
}
|
70
79
|
|
71
80
|
export class GLTFParser {
|
72
81
|
json: any;
|
73
82
|
|
83
|
+
options: {
|
84
|
+
path: string;
|
85
|
+
manager: LoadingManager;
|
86
|
+
ktx2Loader: KTX2Loader;
|
87
|
+
meshoptDecoder: /* MeshoptDecoder */ any;
|
88
|
+
crossOrigin: string;
|
89
|
+
requestHeader: { [header: string]: string };
|
90
|
+
};
|
91
|
+
|
92
|
+
fileLoader: FileLoader;
|
93
|
+
textureLoader: TextureLoader | ImageBitmapLoader;
|
94
|
+
plugins: GLTFLoaderPlugin;
|
95
|
+
extensions: { [name: string]: any };
|
74
96
|
associations: Map<Object3D | Material | Texture, GLTFReference>;
|
75
97
|
|
76
98
|
getDependency: (type: string, index: number) => Promise<any>;
|
@@ -93,7 +115,7 @@ export class GLTFParser {
|
|
93
115
|
mapName: string,
|
94
116
|
mapDef: {
|
95
117
|
index: number;
|
96
|
-
texCoord?: number;
|
118
|
+
texCoord?: number | undefined;
|
97
119
|
extensions?: any;
|
98
120
|
},
|
99
121
|
) => Promise<void>;
|
@@ -101,6 +123,7 @@ export class GLTFParser {
|
|
101
123
|
getMaterialType: () => typeof MeshStandardMaterial;
|
102
124
|
loadMaterial: (materialIndex: number) => Promise<Material>;
|
103
125
|
createUniqueName: (originalName: string) => string;
|
126
|
+
createNodeMesh: (nodeIndex: number) => Promise<Group | Mesh | SkinnedMesh>;
|
104
127
|
loadGeometries: (
|
105
128
|
/**
|
106
129
|
* GLTF.Primitive[]
|
@@ -110,11 +133,9 @@ export class GLTFParser {
|
|
110
133
|
) => Promise<BufferGeometry[]>;
|
111
134
|
loadMesh: (meshIndex: number) => Promise<Group | Mesh | SkinnedMesh>;
|
112
135
|
loadCamera: (cameraIndex: number) => Promise<Camera>;
|
113
|
-
loadSkin: (
|
114
|
-
skinIndex: number,
|
115
|
-
) => Promise<{
|
136
|
+
loadSkin: (skinIndex: number) => Promise<{
|
116
137
|
joints: number[];
|
117
|
-
inverseBindMatrices?: BufferAttribute | InterleavedBufferAttribute;
|
138
|
+
inverseBindMatrices?: BufferAttribute | InterleavedBufferAttribute | undefined;
|
118
139
|
}>;
|
119
140
|
loadAnimation: (animationIndex: number) => Promise<AnimationClip>;
|
120
141
|
loadNode: (nodeIndex: number) => Promise<Object3D>;
|
@@ -122,13 +143,16 @@ export class GLTFParser {
|
|
122
143
|
}
|
123
144
|
|
124
145
|
export interface GLTFLoaderPlugin {
|
125
|
-
beforeRoot?: () => Promise<void> | null;
|
126
|
-
afterRoot?: (result: GLTF) => Promise<void> | null;
|
127
|
-
loadMesh?: (meshIndex: number) => Promise<Group | Mesh | SkinnedMesh> | null;
|
128
|
-
loadBufferView?: (bufferViewIndex: number) => Promise<ArrayBuffer> | null;
|
129
|
-
loadMaterial?: (materialIndex: number) => Promise<Material> | null;
|
130
|
-
loadTexture?: (textureIndex: number) => Promise<Texture> | null;
|
131
|
-
getMaterialType?: (materialIndex: number) => typeof Material | null;
|
132
|
-
extendMaterialParams?:
|
133
|
-
|
146
|
+
beforeRoot?: (() => Promise<void> | null) | undefined;
|
147
|
+
afterRoot?: ((result: GLTF) => Promise<void> | null) | undefined;
|
148
|
+
loadMesh?: ((meshIndex: number) => Promise<Group | Mesh | SkinnedMesh> | null) | undefined;
|
149
|
+
loadBufferView?: ((bufferViewIndex: number) => Promise<ArrayBuffer> | null) | undefined;
|
150
|
+
loadMaterial?: ((materialIndex: number) => Promise<Material> | null) | undefined;
|
151
|
+
loadTexture?: ((textureIndex: number) => Promise<Texture> | null) | undefined;
|
152
|
+
getMaterialType?: ((materialIndex: number) => typeof Material | null) | undefined;
|
153
|
+
extendMaterialParams?:
|
154
|
+
| ((materialIndex: number, materialParams: { [key: string]: any }) => Promise<any> | null)
|
155
|
+
| undefined;
|
156
|
+
createNodeMesh?: ((nodeIndex: number) => Promise<Group | Mesh | SkinnedMesh> | null) | undefined;
|
157
|
+
createNodeAttachment?: ((nodeIndex: number) => Promise<Object3D> | null) | undefined;
|
134
158
|
}
|
package/loaders/LDrawLoader.d.ts
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
import { Loader, LoadingManager, Group, Material } from 'three';
|
2
2
|
|
3
3
|
export class LDrawLoader extends Loader {
|
4
|
+
materials: Material[];
|
5
|
+
materialsLibrary: Record<string, Material>;
|
6
|
+
fileMap: Record<string, string>;
|
7
|
+
smoothNormals: boolean;
|
8
|
+
|
4
9
|
constructor(manager?: LoadingManager);
|
5
10
|
|
6
11
|
load(
|
@@ -10,6 +15,7 @@ export class LDrawLoader extends Loader {
|
|
10
15
|
onError?: (event: ErrorEvent) => void,
|
11
16
|
): void;
|
12
17
|
loadAsync(url: string, onProgress?: (event: ProgressEvent) => void): Promise<Group>;
|
18
|
+
preloadMaterials(url: string): Promise<void>;
|
13
19
|
setFileMap(fileMap: Record<string, string>): void;
|
14
20
|
setMaterials(materials: Material[]): void;
|
15
21
|
|