@onerjs/loaders 8.55.8 → 8.56.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.
Files changed (81) hide show
  1. package/OBJ/objFileLoader.metadata.d.ts +5 -1
  2. package/OBJ/objFileLoader.metadata.js +4 -1
  3. package/OBJ/objFileLoader.metadata.js.map +1 -1
  4. package/OBJ/objFileLoader.pure.d.ts +12 -3
  5. package/OBJ/objFileLoader.pure.js +30 -2
  6. package/OBJ/objFileLoader.pure.js.map +1 -1
  7. package/OBJ/objLoadingOptions.d.ts +6 -0
  8. package/OBJ/objLoadingOptions.js.map +1 -1
  9. package/SPLAT/gaussianSplattingStream.d.ts +162 -15
  10. package/SPLAT/gaussianSplattingStream.js +523 -96
  11. package/SPLAT/gaussianSplattingStream.js.map +1 -1
  12. package/SPLAT/splatFileLoader.pure.js +1 -0
  13. package/SPLAT/splatFileLoader.pure.js.map +1 -1
  14. package/dynamic.js +16 -6
  15. package/dynamic.js.map +1 -1
  16. package/glTF/1.0/glTFBinaryExtension.d.ts +4 -14
  17. package/glTF/1.0/glTFBinaryExtension.js +6 -62
  18. package/glTF/1.0/glTFBinaryExtension.js.map +1 -1
  19. package/glTF/1.0/glTFBinaryExtension.pure.d.ts +21 -0
  20. package/glTF/1.0/glTFBinaryExtension.pure.js +76 -0
  21. package/glTF/1.0/glTFBinaryExtension.pure.js.map +1 -0
  22. package/glTF/1.0/glTFLoader.d.ts +3 -142
  23. package/glTF/1.0/glTFLoader.js +7 -1840
  24. package/glTF/1.0/glTFLoader.js.map +1 -1
  25. package/glTF/1.0/glTFLoader.pure.d.ts +149 -0
  26. package/glTF/1.0/glTFLoader.pure.js +1854 -0
  27. package/glTF/1.0/glTFLoader.pure.js.map +1 -0
  28. package/glTF/1.0/glTFLoaderUtils.d.ts +2 -2
  29. package/glTF/1.0/glTFLoaderUtils.js +5 -5
  30. package/glTF/1.0/glTFLoaderUtils.js.map +1 -1
  31. package/glTF/1.0/glTFMaterialsCommonExtension.d.ts +4 -11
  32. package/glTF/1.0/glTFMaterialsCommonExtension.js +6 -128
  33. package/glTF/1.0/glTFMaterialsCommonExtension.js.map +1 -1
  34. package/glTF/1.0/glTFMaterialsCommonExtension.pure.d.ts +18 -0
  35. package/glTF/1.0/glTFMaterialsCommonExtension.pure.js +142 -0
  36. package/glTF/1.0/glTFMaterialsCommonExtension.pure.js.map +1 -0
  37. package/glTF/1.0/pure.d.ts +3 -0
  38. package/glTF/1.0/pure.js +3 -0
  39. package/glTF/1.0/pure.js.map +1 -1
  40. package/glTF/2.0/Extensions/KHR_animation_pointer.d.ts +0 -1
  41. package/glTF/2.0/Extensions/KHR_animation_pointer.data.d.ts +1 -1
  42. package/glTF/2.0/Extensions/KHR_animation_pointer.data.js +3 -251
  43. package/glTF/2.0/Extensions/KHR_animation_pointer.data.js.map +1 -1
  44. package/glTF/2.0/Extensions/KHR_animation_pointer.data.pure.d.ts +5 -0
  45. package/glTF/2.0/Extensions/KHR_animation_pointer.data.pure.js +267 -0
  46. package/glTF/2.0/Extensions/KHR_animation_pointer.data.pure.js.map +1 -0
  47. package/glTF/2.0/Extensions/KHR_animation_pointer.js +2 -1
  48. package/glTF/2.0/Extensions/KHR_animation_pointer.js.map +1 -1
  49. package/glTF/2.0/Extensions/KHR_interactivity.pure.d.ts +5 -0
  50. package/glTF/2.0/Extensions/KHR_interactivity.pure.js +15 -4
  51. package/glTF/2.0/Extensions/KHR_interactivity.pure.js.map +1 -1
  52. package/glTF/2.0/Extensions/KHR_node_hoverability.pure.d.ts +5 -0
  53. package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js +19 -6
  54. package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js.map +1 -1
  55. package/glTF/2.0/Extensions/KHR_node_selectability.pure.d.ts +5 -0
  56. package/glTF/2.0/Extensions/KHR_node_selectability.pure.js +19 -6
  57. package/glTF/2.0/Extensions/KHR_node_selectability.pure.js.map +1 -1
  58. package/glTF/2.0/Extensions/KHR_node_visibility.pure.d.ts +5 -0
  59. package/glTF/2.0/Extensions/KHR_node_visibility.pure.js +19 -6
  60. package/glTF/2.0/Extensions/KHR_node_visibility.pure.js.map +1 -1
  61. package/glTF/2.0/Extensions/dynamic.js +59 -42
  62. package/glTF/2.0/Extensions/dynamic.js.map +1 -1
  63. package/glTF/2.0/Extensions/pure.d.ts +1 -0
  64. package/glTF/2.0/Extensions/pure.js +1 -0
  65. package/glTF/2.0/Extensions/pure.js.map +1 -1
  66. package/glTF/2.0/glTFLoader.pure.d.ts +2 -2
  67. package/glTF/2.0/glTFLoader.pure.js +11 -9
  68. package/glTF/2.0/glTFLoader.pure.js.map +1 -1
  69. package/glTF/2.0/glTFLoaderAnimation.d.ts +1 -42
  70. package/glTF/2.0/glTFLoaderAnimation.js +3 -79
  71. package/glTF/2.0/glTFLoaderAnimation.js.map +1 -1
  72. package/glTF/2.0/glTFLoaderAnimation.pure.d.ts +47 -0
  73. package/glTF/2.0/glTFLoaderAnimation.pure.js +91 -0
  74. package/glTF/2.0/glTFLoaderAnimation.pure.js.map +1 -0
  75. package/glTF/2.0/pure.d.ts +1 -0
  76. package/glTF/2.0/pure.js +1 -0
  77. package/glTF/2.0/pure.js.map +1 -1
  78. package/glTF/glTFFileLoader.pure.d.ts +8 -4
  79. package/glTF/glTFFileLoader.pure.js +13 -6
  80. package/glTF/glTFFileLoader.pure.js.map +1 -1
  81. package/package.json +3 -3
@@ -1,42 +1 @@
1
- import { Animation } from "@onerjs/core/Animations/animation.pure.js";
2
- import { Quaternion, Vector3 } from "@onerjs/core/Maths/math.vector.pure.js";
3
- import { type INode } from "./glTFLoaderInterfaces.js";
4
- import { type IAnimatable } from "@onerjs/core/Animations/animatable.interface.js";
5
- /** @internal */
6
- export type GetValueFn = (target: any, source: Float32Array, offset: number, scale: number) => any;
7
- /** @internal */
8
- export declare function getVector3(_target: any, source: Float32Array, offset: number, scale: number): Vector3;
9
- /** @internal */
10
- export declare function getQuaternion(_target: any, source: Float32Array, offset: number, scale: number): Quaternion;
11
- /** @internal */
12
- export declare function getWeights(target: INode, source: Float32Array, offset: number, scale: number): Array<number>;
13
- /** @internal */
14
- export declare abstract class AnimationPropertyInfo {
15
- readonly type: number;
16
- readonly name: string;
17
- readonly getValue: GetValueFn;
18
- readonly getStride: (target: any) => number;
19
- /** @internal */
20
- constructor(type: number, name: string, getValue: GetValueFn, getStride: (target: any) => number);
21
- protected _buildAnimation(name: string, fps: number, keys: any[]): Animation;
22
- /** @internal */
23
- abstract buildAnimations(target: any, name: string, fps: number, keys: any[]): {
24
- babylonAnimatable: IAnimatable;
25
- babylonAnimation: Animation;
26
- }[];
27
- }
28
- /** @internal */
29
- export declare class TransformNodeAnimationPropertyInfo extends AnimationPropertyInfo {
30
- /** @internal */
31
- buildAnimations(target: INode, name: string, fps: number, keys: any[]): {
32
- babylonAnimatable: IAnimatable;
33
- babylonAnimation: Animation;
34
- }[];
35
- }
36
- /** @internal */
37
- export declare class WeightAnimationPropertyInfo extends AnimationPropertyInfo {
38
- buildAnimations(target: INode, name: string, fps: number, keys: any[]): {
39
- babylonAnimatable: IAnimatable;
40
- babylonAnimation: Animation;
41
- }[];
42
- }
1
+ export * from "./glTFLoaderAnimation.pure.js";
@@ -1,80 +1,4 @@
1
- import { Animation } from "@onerjs/core/Animations/animation.pure.js";
2
- import { Quaternion, Vector3 } from "@onerjs/core/Maths/math.vector.pure.js";
3
- import { SetInterpolationForKey } from "./Extensions/objectModelMapping.js";
4
- /** @internal */
5
- // eslint-disable-next-line @typescript-eslint/naming-convention
6
- export function getVector3(_target, source, offset, scale) {
7
- return Vector3.FromArray(source, offset).scaleInPlace(scale);
8
- }
9
- /** @internal */
10
- // eslint-disable-next-line @typescript-eslint/naming-convention
11
- export function getQuaternion(_target, source, offset, scale) {
12
- return Quaternion.FromArray(source, offset).scaleInPlace(scale);
13
- }
14
- /** @internal */
15
- // eslint-disable-next-line @typescript-eslint/naming-convention
16
- export function getWeights(target, source, offset, scale) {
17
- const value = new Array(target._numMorphTargets);
18
- for (let i = 0; i < value.length; i++) {
19
- value[i] = source[offset++] * scale;
20
- }
21
- return value;
22
- }
23
- /** @internal */
24
- export class AnimationPropertyInfo {
25
- /** @internal */
26
- constructor(type, name, getValue, getStride) {
27
- this.type = type;
28
- this.name = name;
29
- this.getValue = getValue;
30
- this.getStride = getStride;
31
- }
32
- _buildAnimation(name, fps, keys) {
33
- const babylonAnimation = new Animation(name, this.name, fps, this.type);
34
- babylonAnimation.setKeys(keys, true);
35
- return babylonAnimation;
36
- }
37
- }
38
- /** @internal */
39
- export class TransformNodeAnimationPropertyInfo extends AnimationPropertyInfo {
40
- /** @internal */
41
- buildAnimations(target, name, fps, keys) {
42
- const babylonAnimations = [];
43
- babylonAnimations.push({ babylonAnimatable: target._babylonTransformNode, babylonAnimation: this._buildAnimation(name, fps, keys) });
44
- return babylonAnimations;
45
- }
46
- }
47
- /** @internal */
48
- export class WeightAnimationPropertyInfo extends AnimationPropertyInfo {
49
- buildAnimations(target, name, fps, keys) {
50
- const babylonAnimations = [];
51
- if (target._numMorphTargets) {
52
- for (let targetIndex = 0; targetIndex < target._numMorphTargets; targetIndex++) {
53
- const babylonAnimation = new Animation(`${name}_${targetIndex}`, this.name, fps, this.type);
54
- babylonAnimation.setKeys(keys.map((key) => ({
55
- frame: key.frame,
56
- inTangent: key.inTangent ? key.inTangent[targetIndex] : undefined,
57
- value: key.value[targetIndex],
58
- outTangent: key.outTangent ? key.outTangent[targetIndex] : undefined,
59
- interpolation: key.interpolation,
60
- })), true);
61
- if (target._primitiveBabylonMeshes) {
62
- for (const babylonMesh of target._primitiveBabylonMeshes) {
63
- if (babylonMesh.morphTargetManager) {
64
- const morphTarget = babylonMesh.morphTargetManager.getTarget(targetIndex);
65
- const babylonAnimationClone = babylonAnimation.clone();
66
- morphTarget.animations.push(babylonAnimationClone);
67
- babylonAnimations.push({ babylonAnimatable: morphTarget, babylonAnimation: babylonAnimationClone });
68
- }
69
- }
70
- }
71
- }
72
- }
73
- return babylonAnimations;
74
- }
75
- }
76
- SetInterpolationForKey("/nodes/{}/translation", [new TransformNodeAnimationPropertyInfo(Animation.ANIMATIONTYPE_VECTOR3, "position", getVector3, () => 3)]);
77
- SetInterpolationForKey("/nodes/{}/rotation", [new TransformNodeAnimationPropertyInfo(Animation.ANIMATIONTYPE_QUATERNION, "rotationQuaternion", getQuaternion, () => 4)]);
78
- SetInterpolationForKey("/nodes/{}/scale", [new TransformNodeAnimationPropertyInfo(Animation.ANIMATIONTYPE_VECTOR3, "scaling", getVector3, () => 3)]);
79
- SetInterpolationForKey("/nodes/{}/weights", [new WeightAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, "influence", getWeights, (target) => target._numMorphTargets)]);
1
+ export * from "./glTFLoaderAnimation.pure.js";
2
+ import { RegisterGLTFLoaderAnimation } from "./glTFLoaderAnimation.pure.js";
3
+ RegisterGLTFLoaderAnimation();
80
4
  //# sourceMappingURL=glTFLoaderAnimation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"glTFLoaderAnimation.js","sourceRoot":"","sources":["../../../../../dev/loaders/src/glTF/2.0/glTFLoaderAnimation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Animation } from \"core/Animations/animation.pure\";\r\nimport { Quaternion, Vector3 } from \"core/Maths/math.vector.pure\";\r\nimport { type INode } from \"./glTFLoaderInterfaces\";\r\nimport { type IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport { SetInterpolationForKey } from \"./Extensions/objectModelMapping\";\r\n\r\n/** @internal */\r\nexport type GetValueFn = (target: any, source: Float32Array, offset: number, scale: number) => any;\r\n\r\n/** @internal */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function getVector3(_target: any, source: Float32Array, offset: number, scale: number): Vector3 {\r\n return Vector3.FromArray(source, offset).scaleInPlace(scale);\r\n}\r\n\r\n/** @internal */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function getQuaternion(_target: any, source: Float32Array, offset: number, scale: number): Quaternion {\r\n return Quaternion.FromArray(source, offset).scaleInPlace(scale);\r\n}\r\n\r\n/** @internal */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function getWeights(target: INode, source: Float32Array, offset: number, scale: number): Array<number> {\r\n const value = new Array<number>(target._numMorphTargets!);\r\n for (let i = 0; i < value.length; i++) {\r\n value[i] = source[offset++] * scale;\r\n }\r\n\r\n return value;\r\n}\r\n\r\n/** @internal */\r\nexport abstract class AnimationPropertyInfo {\r\n /** @internal */\r\n public constructor(\r\n public readonly type: number,\r\n public readonly name: string,\r\n public readonly getValue: GetValueFn,\r\n public readonly getStride: (target: any) => number\r\n ) {}\r\n\r\n protected _buildAnimation(name: string, fps: number, keys: any[]): Animation {\r\n const babylonAnimation = new Animation(name, this.name, fps, this.type);\r\n babylonAnimation.setKeys(keys, true);\r\n return babylonAnimation;\r\n }\r\n\r\n /** @internal */\r\n public abstract buildAnimations(target: any, name: string, fps: number, keys: any[]): { babylonAnimatable: IAnimatable; babylonAnimation: Animation }[];\r\n}\r\n\r\n/** @internal */\r\nexport class TransformNodeAnimationPropertyInfo extends AnimationPropertyInfo {\r\n /** @internal */\r\n public buildAnimations(target: INode, name: string, fps: number, keys: any[]) {\r\n const babylonAnimations: { babylonAnimatable: IAnimatable; babylonAnimation: Animation }[] = [];\r\n babylonAnimations.push({ babylonAnimatable: target._babylonTransformNode!, babylonAnimation: this._buildAnimation(name, fps, keys) });\r\n return babylonAnimations;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WeightAnimationPropertyInfo extends AnimationPropertyInfo {\r\n public buildAnimations(target: INode, name: string, fps: number, keys: any[]) {\r\n const babylonAnimations: { babylonAnimatable: IAnimatable; babylonAnimation: Animation }[] = [];\r\n if (target._numMorphTargets) {\r\n for (let targetIndex = 0; targetIndex < target._numMorphTargets; targetIndex++) {\r\n const babylonAnimation = new Animation(`${name}_${targetIndex}`, this.name, fps, this.type);\r\n babylonAnimation.setKeys(\r\n keys.map((key) => ({\r\n frame: key.frame,\r\n inTangent: key.inTangent ? key.inTangent[targetIndex] : undefined,\r\n value: key.value[targetIndex],\r\n outTangent: key.outTangent ? key.outTangent[targetIndex] : undefined,\r\n interpolation: key.interpolation,\r\n })),\r\n true\r\n );\r\n\r\n if (target._primitiveBabylonMeshes) {\r\n for (const babylonMesh of target._primitiveBabylonMeshes) {\r\n if (babylonMesh.morphTargetManager) {\r\n const morphTarget = babylonMesh.morphTargetManager.getTarget(targetIndex);\r\n const babylonAnimationClone = babylonAnimation.clone();\r\n morphTarget.animations.push(babylonAnimationClone);\r\n babylonAnimations.push({ babylonAnimatable: morphTarget, babylonAnimation: babylonAnimationClone });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return babylonAnimations;\r\n }\r\n}\r\n\r\nSetInterpolationForKey(\"/nodes/{}/translation\", [new TransformNodeAnimationPropertyInfo(Animation.ANIMATIONTYPE_VECTOR3, \"position\", getVector3, () => 3)]);\r\nSetInterpolationForKey(\"/nodes/{}/rotation\", [new TransformNodeAnimationPropertyInfo(Animation.ANIMATIONTYPE_QUATERNION, \"rotationQuaternion\", getQuaternion, () => 4)]);\r\nSetInterpolationForKey(\"/nodes/{}/scale\", [new TransformNodeAnimationPropertyInfo(Animation.ANIMATIONTYPE_VECTOR3, \"scaling\", getVector3, () => 3)]);\r\nSetInterpolationForKey(\"/nodes/{}/weights\", [new WeightAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"influence\", getWeights, (target) => target._numMorphTargets!)]);\r\n"]}
1
+ {"version":3,"file":"glTFLoaderAnimation.js","sourceRoot":"","sources":["../../../../../dev/loaders/src/glTF/2.0/glTFLoaderAnimation.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAE3C,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,2BAA2B,EAAE,CAAC","sourcesContent":["export * from \"./glTFLoaderAnimation.pure\";\n\nimport { RegisterGLTFLoaderAnimation } from \"./glTFLoaderAnimation.pure\";\n\nRegisterGLTFLoaderAnimation();\n"]}
@@ -0,0 +1,47 @@
1
+ /** This file must only contain pure code and pure imports */
2
+ import { Animation } from "@onerjs/core/Animations/animation.pure.js";
3
+ import { Quaternion, Vector3 } from "@onerjs/core/Maths/math.vector.pure.js";
4
+ import { type INode } from "./glTFLoaderInterfaces.js";
5
+ import { type IAnimatable } from "@onerjs/core/Animations/animatable.interface.js";
6
+ /** @internal */
7
+ export type GetValueFn = (target: any, source: Float32Array, offset: number, scale: number) => any;
8
+ /** @internal */
9
+ export declare function getVector3(_target: any, source: Float32Array, offset: number, scale: number): Vector3;
10
+ /** @internal */
11
+ export declare function getQuaternion(_target: any, source: Float32Array, offset: number, scale: number): Quaternion;
12
+ /** @internal */
13
+ export declare function getWeights(target: INode, source: Float32Array, offset: number, scale: number): Array<number>;
14
+ /** @internal */
15
+ export declare abstract class AnimationPropertyInfo {
16
+ readonly type: number;
17
+ readonly name: string;
18
+ readonly getValue: GetValueFn;
19
+ readonly getStride: (target: any) => number;
20
+ /** @internal */
21
+ constructor(type: number, name: string, getValue: GetValueFn, getStride: (target: any) => number);
22
+ protected _buildAnimation(name: string, fps: number, keys: any[]): Animation;
23
+ /** @internal */
24
+ abstract buildAnimations(target: any, name: string, fps: number, keys: any[]): {
25
+ babylonAnimatable: IAnimatable;
26
+ babylonAnimation: Animation;
27
+ }[];
28
+ }
29
+ /** @internal */
30
+ export declare class TransformNodeAnimationPropertyInfo extends AnimationPropertyInfo {
31
+ /** @internal */
32
+ buildAnimations(target: INode, name: string, fps: number, keys: any[]): {
33
+ babylonAnimatable: IAnimatable;
34
+ babylonAnimation: Animation;
35
+ }[];
36
+ }
37
+ /** @internal */
38
+ export declare class WeightAnimationPropertyInfo extends AnimationPropertyInfo {
39
+ buildAnimations(target: INode, name: string, fps: number, keys: any[]): {
40
+ babylonAnimatable: IAnimatable;
41
+ babylonAnimation: Animation;
42
+ }[];
43
+ }
44
+ /**
45
+ * Registers the core glTF animation interpolation mappings.
46
+ */
47
+ export declare function RegisterGLTFLoaderAnimation(): void;
@@ -0,0 +1,91 @@
1
+ /** This file must only contain pure code and pure imports */
2
+ import { Animation } from "@onerjs/core/Animations/animation.pure.js";
3
+ import { Quaternion, Vector3 } from "@onerjs/core/Maths/math.vector.pure.js";
4
+ import { SetInterpolationForKey } from "./Extensions/objectModelMapping.js";
5
+ /** @internal */
6
+ // eslint-disable-next-line @typescript-eslint/naming-convention
7
+ export function getVector3(_target, source, offset, scale) {
8
+ return Vector3.FromArray(source, offset).scaleInPlace(scale);
9
+ }
10
+ /** @internal */
11
+ // eslint-disable-next-line @typescript-eslint/naming-convention
12
+ export function getQuaternion(_target, source, offset, scale) {
13
+ return Quaternion.FromArray(source, offset).scaleInPlace(scale);
14
+ }
15
+ /** @internal */
16
+ // eslint-disable-next-line @typescript-eslint/naming-convention
17
+ export function getWeights(target, source, offset, scale) {
18
+ const value = new Array(target._numMorphTargets);
19
+ for (let i = 0; i < value.length; i++) {
20
+ value[i] = source[offset++] * scale;
21
+ }
22
+ return value;
23
+ }
24
+ /** @internal */
25
+ export class AnimationPropertyInfo {
26
+ /** @internal */
27
+ constructor(type, name, getValue, getStride) {
28
+ this.type = type;
29
+ this.name = name;
30
+ this.getValue = getValue;
31
+ this.getStride = getStride;
32
+ }
33
+ _buildAnimation(name, fps, keys) {
34
+ const babylonAnimation = new Animation(name, this.name, fps, this.type);
35
+ babylonAnimation.setKeys(keys, true);
36
+ return babylonAnimation;
37
+ }
38
+ }
39
+ /** @internal */
40
+ export class TransformNodeAnimationPropertyInfo extends AnimationPropertyInfo {
41
+ /** @internal */
42
+ buildAnimations(target, name, fps, keys) {
43
+ const babylonAnimations = [];
44
+ babylonAnimations.push({ babylonAnimatable: target._babylonTransformNode, babylonAnimation: this._buildAnimation(name, fps, keys) });
45
+ return babylonAnimations;
46
+ }
47
+ }
48
+ /** @internal */
49
+ export class WeightAnimationPropertyInfo extends AnimationPropertyInfo {
50
+ buildAnimations(target, name, fps, keys) {
51
+ const babylonAnimations = [];
52
+ if (target._numMorphTargets) {
53
+ for (let targetIndex = 0; targetIndex < target._numMorphTargets; targetIndex++) {
54
+ const babylonAnimation = new Animation(`${name}_${targetIndex}`, this.name, fps, this.type);
55
+ babylonAnimation.setKeys(keys.map((key) => ({
56
+ frame: key.frame,
57
+ inTangent: key.inTangent ? key.inTangent[targetIndex] : undefined,
58
+ value: key.value[targetIndex],
59
+ outTangent: key.outTangent ? key.outTangent[targetIndex] : undefined,
60
+ interpolation: key.interpolation,
61
+ })), true);
62
+ if (target._primitiveBabylonMeshes) {
63
+ for (const babylonMesh of target._primitiveBabylonMeshes) {
64
+ if (babylonMesh.morphTargetManager) {
65
+ const morphTarget = babylonMesh.morphTargetManager.getTarget(targetIndex);
66
+ const babylonAnimationClone = babylonAnimation.clone();
67
+ morphTarget.animations.push(babylonAnimationClone);
68
+ babylonAnimations.push({ babylonAnimatable: morphTarget, babylonAnimation: babylonAnimationClone });
69
+ }
70
+ }
71
+ }
72
+ }
73
+ }
74
+ return babylonAnimations;
75
+ }
76
+ }
77
+ let _Registered = false;
78
+ /**
79
+ * Registers the core glTF animation interpolation mappings.
80
+ */
81
+ export function RegisterGLTFLoaderAnimation() {
82
+ if (_Registered) {
83
+ return;
84
+ }
85
+ _Registered = true;
86
+ SetInterpolationForKey("/nodes/{}/translation", [new TransformNodeAnimationPropertyInfo(Animation.ANIMATIONTYPE_VECTOR3, "position", getVector3, () => 3)]);
87
+ SetInterpolationForKey("/nodes/{}/rotation", [new TransformNodeAnimationPropertyInfo(Animation.ANIMATIONTYPE_QUATERNION, "rotationQuaternion", getQuaternion, () => 4)]);
88
+ SetInterpolationForKey("/nodes/{}/scale", [new TransformNodeAnimationPropertyInfo(Animation.ANIMATIONTYPE_VECTOR3, "scaling", getVector3, () => 3)]);
89
+ SetInterpolationForKey("/nodes/{}/weights", [new WeightAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, "influence", getWeights, (target) => target._numMorphTargets)]);
90
+ }
91
+ //# sourceMappingURL=glTFLoaderAnimation.pure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glTFLoaderAnimation.pure.js","sourceRoot":"","sources":["../../../../../dev/loaders/src/glTF/2.0/glTFLoaderAnimation.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { Animation } from \"core/Animations/animation.pure\";\r\nimport { Quaternion, Vector3 } from \"core/Maths/math.vector.pure\";\r\nimport { type INode } from \"./glTFLoaderInterfaces\";\r\nimport { type IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport { SetInterpolationForKey } from \"./Extensions/objectModelMapping\";\r\n\r\n/** @internal */\r\nexport type GetValueFn = (target: any, source: Float32Array, offset: number, scale: number) => any;\r\n\r\n/** @internal */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function getVector3(_target: any, source: Float32Array, offset: number, scale: number): Vector3 {\r\n return Vector3.FromArray(source, offset).scaleInPlace(scale);\r\n}\r\n\r\n/** @internal */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function getQuaternion(_target: any, source: Float32Array, offset: number, scale: number): Quaternion {\r\n return Quaternion.FromArray(source, offset).scaleInPlace(scale);\r\n}\r\n\r\n/** @internal */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function getWeights(target: INode, source: Float32Array, offset: number, scale: number): Array<number> {\r\n const value = new Array<number>(target._numMorphTargets!);\r\n for (let i = 0; i < value.length; i++) {\r\n value[i] = source[offset++] * scale;\r\n }\r\n\r\n return value;\r\n}\r\n\r\n/** @internal */\r\nexport abstract class AnimationPropertyInfo {\r\n /** @internal */\r\n public constructor(\r\n public readonly type: number,\r\n public readonly name: string,\r\n public readonly getValue: GetValueFn,\r\n public readonly getStride: (target: any) => number\r\n ) {}\r\n\r\n protected _buildAnimation(name: string, fps: number, keys: any[]): Animation {\r\n const babylonAnimation = new Animation(name, this.name, fps, this.type);\r\n babylonAnimation.setKeys(keys, true);\r\n return babylonAnimation;\r\n }\r\n\r\n /** @internal */\r\n public abstract buildAnimations(target: any, name: string, fps: number, keys: any[]): { babylonAnimatable: IAnimatable; babylonAnimation: Animation }[];\r\n}\r\n\r\n/** @internal */\r\nexport class TransformNodeAnimationPropertyInfo extends AnimationPropertyInfo {\r\n /** @internal */\r\n public buildAnimations(target: INode, name: string, fps: number, keys: any[]) {\r\n const babylonAnimations: { babylonAnimatable: IAnimatable; babylonAnimation: Animation }[] = [];\r\n babylonAnimations.push({ babylonAnimatable: target._babylonTransformNode!, babylonAnimation: this._buildAnimation(name, fps, keys) });\r\n return babylonAnimations;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WeightAnimationPropertyInfo extends AnimationPropertyInfo {\r\n public buildAnimations(target: INode, name: string, fps: number, keys: any[]) {\r\n const babylonAnimations: { babylonAnimatable: IAnimatable; babylonAnimation: Animation }[] = [];\r\n if (target._numMorphTargets) {\r\n for (let targetIndex = 0; targetIndex < target._numMorphTargets; targetIndex++) {\r\n const babylonAnimation = new Animation(`${name}_${targetIndex}`, this.name, fps, this.type);\r\n babylonAnimation.setKeys(\r\n keys.map((key) => ({\r\n frame: key.frame,\r\n inTangent: key.inTangent ? key.inTangent[targetIndex] : undefined,\r\n value: key.value[targetIndex],\r\n outTangent: key.outTangent ? key.outTangent[targetIndex] : undefined,\r\n interpolation: key.interpolation,\r\n })),\r\n true\r\n );\r\n\r\n if (target._primitiveBabylonMeshes) {\r\n for (const babylonMesh of target._primitiveBabylonMeshes) {\r\n if (babylonMesh.morphTargetManager) {\r\n const morphTarget = babylonMesh.morphTargetManager.getTarget(targetIndex);\r\n const babylonAnimationClone = babylonAnimation.clone();\r\n morphTarget.animations.push(babylonAnimationClone);\r\n babylonAnimations.push({ babylonAnimatable: morphTarget, babylonAnimation: babylonAnimationClone });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return babylonAnimations;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n\r\n/**\r\n * Registers the core glTF animation interpolation mappings.\r\n */\r\nexport function RegisterGLTFLoaderAnimation(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n SetInterpolationForKey(\"/nodes/{}/translation\", [new TransformNodeAnimationPropertyInfo(Animation.ANIMATIONTYPE_VECTOR3, \"position\", getVector3, () => 3)]);\r\n SetInterpolationForKey(\"/nodes/{}/rotation\", [new TransformNodeAnimationPropertyInfo(Animation.ANIMATIONTYPE_QUATERNION, \"rotationQuaternion\", getQuaternion, () => 4)]);\r\n SetInterpolationForKey(\"/nodes/{}/scale\", [new TransformNodeAnimationPropertyInfo(Animation.ANIMATIONTYPE_VECTOR3, \"scaling\", getVector3, () => 3)]);\r\n SetInterpolationForKey(\"/nodes/{}/weights\", [new WeightAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"influence\", getWeights, (target) => target._numMorphTargets!)]);\r\n}\r\n"]}
@@ -3,6 +3,7 @@ export * from "./glTFLoader.pure.js";
3
3
  export * from "./glTFLoaderExtension.js";
4
4
  export * from "./glTFLoaderExtensionRegistry.js";
5
5
  export * from "./glTFLoaderInterfaces.js";
6
+ export * from "./glTFLoaderAnimation.pure.js";
6
7
  export * from "./openpbrMaterialLoadingAdapter.js";
7
8
  export * from "./pbrMaterialLoadingAdapter.js";
8
9
  export * from "./Extensions/pure.js";
package/glTF/2.0/pure.js CHANGED
@@ -4,6 +4,7 @@ export * from "./glTFLoader.pure.js";
4
4
  export * from "./glTFLoaderExtension.js";
5
5
  export * from "./glTFLoaderExtensionRegistry.js";
6
6
  export * from "./glTFLoaderInterfaces.js";
7
+ export * from "./glTFLoaderAnimation.pure.js";
7
8
  export * from "./openpbrMaterialLoadingAdapter.js";
8
9
  export * from "./pbrMaterialLoadingAdapter.js";
9
10
  export * from "./Extensions/pure.js";
@@ -1 +1 @@
1
- {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../../dev/loaders/src/glTF/2.0/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,6DAA6D;AAC7D,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\n/* eslint-disable @typescript-eslint/no-restricted-imports */\nexport * from \"./glTFLoader.pure\";\nexport * from \"./glTFLoaderExtension\";\nexport * from \"./glTFLoaderExtensionRegistry\";\nexport * from \"./glTFLoaderInterfaces\";\nexport * from \"./openpbrMaterialLoadingAdapter\";\nexport * from \"./pbrMaterialLoadingAdapter\";\nexport * from \"./Extensions/pure\";\n"]}
1
+ {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../../dev/loaders/src/glTF/2.0/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,6DAA6D;AAC7D,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\n/* eslint-disable @typescript-eslint/no-restricted-imports */\nexport * from \"./glTFLoader.pure\";\nexport * from \"./glTFLoaderExtension\";\nexport * from \"./glTFLoaderExtensionRegistry\";\nexport * from \"./glTFLoaderInterfaces\";\nexport * from \"./glTFLoaderAnimation.pure\";\nexport * from \"./openpbrMaterialLoadingAdapter\";\nexport * from \"./pbrMaterialLoadingAdapter\";\nexport * from \"./Extensions/pure\";\n"]}
@@ -309,11 +309,13 @@ declare abstract class GLTFLoaderOptions extends GLTFLoaderBaseOptions {
309
309
  */
310
310
  abstract onValidated?: (results: GLTF2.IGLTFValidationResults) => void;
311
311
  /**
312
- * Function called before loading a url referenced by the asset.
313
- * @param url url referenced by the asset
314
- * @returns Async url to load
312
+ * Function called before loading a URL referenced by the asset.
313
+ * Setting this function allows parent-relative asset URIs and makes the callback responsible for URI safety.
314
+ * @param url The URL referenced by the asset
315
+ * @param rootUrl The root URL of the asset, if available
316
+ * @returns A promise that resolves to the URL to load
315
317
  */
316
- preprocessUrlAsync: (url: string) => Promise<string>;
318
+ preprocessUrlAsync: (url: string, rootUrl?: string) => Promise<string>;
317
319
  }
318
320
  /**
319
321
  * File loader for loading glTF files into a scene.
@@ -328,6 +330,8 @@ export declare class GLTFFileLoader extends GLTFLoaderOptions implements IDispos
328
330
  * @param options The options for the loader
329
331
  */
330
332
  constructor(options?: Partial<Readonly<GLTFLoaderOptions>>);
333
+ /** @internal */
334
+ get _isPreprocessUrlAsyncSet(): boolean;
331
335
  /**
332
336
  * Raised when the asset has been parsed
333
337
  */
@@ -80,6 +80,7 @@ export var GLTFLoaderState;
80
80
  */
81
81
  GLTFLoaderState[GLTFLoaderState["COMPLETE"] = 2] = "COMPLETE";
82
82
  })(GLTFLoaderState || (GLTFLoaderState = {}));
83
+ const DefaultPreprocessUrlAsync = (url) => Promise.resolve(url);
83
84
  /**
84
85
  * This class contains all the concrete (not abstract) glTF options, excluding callbacks.
85
86
  * The purpose of this class is to make it easy to provide a way to mutate the default
@@ -231,11 +232,13 @@ class GLTFLoaderOptions extends GLTFLoaderBaseOptions {
231
232
  */
232
233
  this.extensionOptions = {};
233
234
  /**
234
- * Function called before loading a url referenced by the asset.
235
- * @param url url referenced by the asset
236
- * @returns Async url to load
235
+ * Function called before loading a URL referenced by the asset.
236
+ * Setting this function allows parent-relative asset URIs and makes the callback responsible for URI safety.
237
+ * @param url The URL referenced by the asset
238
+ * @param rootUrl The root URL of the asset, if available
239
+ * @returns A promise that resolves to the URL to load
237
240
  */
238
- this.preprocessUrlAsync = (url) => Promise.resolve(url);
241
+ this.preprocessUrlAsync = DefaultPreprocessUrlAsync;
239
242
  }
240
243
  // eslint-disable-next-line babylonjs/available
241
244
  copyFrom(options) {
@@ -373,6 +376,10 @@ export class GLTFFileLoader extends GLTFLoaderOptions {
373
376
  this._endPerformanceCounter = this._endPerformanceCounterDisabled;
374
377
  this.copyFrom(Object.assign({ ...GLTFLoaderDefaultOptions }, options));
375
378
  }
379
+ /** @internal */
380
+ get _isPreprocessUrlAsyncSet() {
381
+ return this.preprocessUrlAsync !== DefaultPreprocessUrlAsync;
382
+ }
376
383
  /**
377
384
  * Raised when the asset has been parsed
378
385
  */
@@ -539,7 +546,7 @@ export class GLTFFileLoader extends GLTFLoaderOptions {
539
546
  }
540
547
  this._requests.length = 0;
541
548
  delete this._progressCallback;
542
- this.preprocessUrlAsync = (url) => Promise.resolve(url);
549
+ this.preprocessUrlAsync = DefaultPreprocessUrlAsync;
543
550
  this.onMeshLoadedObservable.clear();
544
551
  this.onSkinLoadedObservable.clear();
545
552
  this.onTextureLoadedObservable.clear();
@@ -796,7 +803,7 @@ export class GLTFFileLoader extends GLTFLoaderOptions {
796
803
  }
797
804
  this._startPerformanceCounter("Validate JSON");
798
805
  GLTFValidation.ValidateAsync(data, rootUrl, fileName, (uri) => {
799
- return this.preprocessUrlAsync(rootUrl + uri).then((url) => {
806
+ return this.preprocessUrlAsync(rootUrl + uri, rootUrl).then((url) => {
800
807
  return scene._loadFileAsync(url, undefined, true, true).then((data) => {
801
808
  return new Uint8Array(data, 0, data.byteLength);
802
809
  });