@babylonjs/loaders 5.25.0 → 5.26.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,454 +0,0 @@
1
- /* eslint-disable @typescript-eslint/naming-convention */
2
- import { Animation } from "@babylonjs/core/Animations/animation.js";
3
- import { Quaternion, Vector3, Matrix } from "@babylonjs/core/Maths/math.vector.js";
4
- import { Color3 } from "@babylonjs/core/Maths/math.color.js";
5
- import { Material } from "@babylonjs/core/Materials/material.js";
6
- const parseIntIndex = (str) => {
7
- const targetIndex = parseInt(str);
8
- if (isNaN(targetIndex)) {
9
- return -1;
10
- }
11
- return targetIndex;
12
- };
13
- const getGltfNode = (gltf, index) => {
14
- if (gltf.nodes) {
15
- const i = parseIntIndex(index);
16
- if (i != -1) {
17
- return gltf.nodes[i];
18
- }
19
- }
20
- return null;
21
- };
22
- const getGltfMaterial = (gltf, index) => {
23
- if (gltf.materials) {
24
- const i = parseIntIndex(index);
25
- if (i != -1) {
26
- return gltf.materials[i];
27
- }
28
- }
29
- return null;
30
- };
31
- const getGltfCamera = (gltf, index) => {
32
- if (gltf.cameras) {
33
- const i = parseIntIndex(index);
34
- if (i != -1) {
35
- return gltf.cameras[i];
36
- }
37
- }
38
- return null;
39
- };
40
- const getGltfExtension = (gltf, index) => {
41
- if (gltf.extensions && index) {
42
- return gltf.extensions[index];
43
- }
44
- return null;
45
- };
46
- const getMatrix = (_target, source, offset, scale) => {
47
- return scale ? Matrix.FromArray(source, offset).scale(scale) : Matrix.FromArray(source, offset);
48
- };
49
- const getVector3 = (_target, source, offset, scale) => {
50
- return scale ? Vector3.FromArray(source, offset).scaleInPlace(scale) : Vector3.FromArray(source, offset);
51
- };
52
- const getQuaternion = (_target, source, offset, scale) => {
53
- return scale ? Quaternion.FromArray(source, offset).scaleInPlace(scale) : Quaternion.FromArray(source, offset);
54
- };
55
- const getColor3 = (_target, source, offset, scale) => {
56
- return scale ? Color3.FromArray(source, offset).scale(scale) : Color3.FromArray(source, offset);
57
- };
58
- const getAlpha = (_target, source, offset, scale) => {
59
- return scale ? source[offset + 3] * scale : source[offset + 3];
60
- };
61
- const getFloat = (_target, source, offset, scale) => {
62
- return scale ? source[offset] * scale : source[offset];
63
- };
64
- const getMinusFloat = (_target, source, offset, scale) => {
65
- return -(scale ? source[offset] * scale : source[offset]);
66
- };
67
- const getNextFloat = (_target, source, offset, scale) => {
68
- return scale ? source[offset + 1] * scale : source[offset + 1];
69
- };
70
- const getFloatBy2 = (_target, source, offset, scale) => {
71
- return (scale ? source[offset] * scale : source[offset]) * 2;
72
- };
73
- const getWeights = (target, source, offset, scale) => {
74
- if (target._numMorphTargets) {
75
- const value = new Array(target._numMorphTargets);
76
- for (let i = 0; i < target._numMorphTargets; i++) {
77
- value[i] = scale ? source[offset++] * scale : source[offset++];
78
- }
79
- return value;
80
- }
81
- return null;
82
- };
83
- class AbstractAnimationPointerPropertyInfos {
84
- constructor(type, name, get) {
85
- this.type = type;
86
- this.name = name;
87
- this.get = get;
88
- }
89
- _buildAnimation(animatable, fps, keys, babylonAnimationGroup, animationTargetOverride = null) {
90
- if (animatable || animationTargetOverride) {
91
- const animationName = `${babylonAnimationGroup.name}_channel${babylonAnimationGroup.targetedAnimations.length}_${this.name}`;
92
- const babylonAnimation = new Animation(animationName, this.name, fps, this.type);
93
- babylonAnimation.setKeys(keys);
94
- if (animationTargetOverride != null && animationTargetOverride.animations != null) {
95
- animationTargetOverride.animations.push(babylonAnimation);
96
- babylonAnimationGroup.addTargetedAnimation(babylonAnimation, animationTargetOverride);
97
- }
98
- else if (animatable) {
99
- animatable.animations = animatable.animations || Array(1);
100
- animatable.animations.push(babylonAnimation);
101
- babylonAnimationGroup.addTargetedAnimation(babylonAnimation, animatable);
102
- }
103
- }
104
- }
105
- isValid(_target) {
106
- return true;
107
- }
108
- }
109
- class TransformNodeAnimationPointerPropertyInfos extends AbstractAnimationPointerPropertyInfos {
110
- constructor(type, name, get = getVector3) {
111
- super(type, name, get);
112
- }
113
- isValid(target) {
114
- return target._babylonTransformNode !== null && target._babylonTransformNode !== undefined;
115
- }
116
- buildAnimations(target, fps, keys, group, animationTargetOverride = null) {
117
- return this._buildAnimation(target._babylonTransformNode, fps, keys, group, animationTargetOverride);
118
- }
119
- }
120
- class CameraAnimationPointerPropertyInfos extends AbstractAnimationPointerPropertyInfos {
121
- constructor(type, name, get = getFloat) {
122
- super(type, name, get);
123
- }
124
- isValid(target) {
125
- return target._babylonCamera != null && target._babylonCamera !== undefined;
126
- }
127
- buildAnimations(target, fps, keys, group, animationTargetOverride = null) {
128
- return this._buildAnimation(target._babylonCamera, fps, keys, group, animationTargetOverride);
129
- }
130
- }
131
- class MaterialAnimationPointerPropertyInfos extends AbstractAnimationPointerPropertyInfos {
132
- constructor(type, name, get = getFloat, fillMode = Material.TriangleFillMode) {
133
- super(type, name, get);
134
- this.fillMode = fillMode;
135
- }
136
- isValid(target) {
137
- const data = target._data;
138
- if (data) {
139
- const c = data[this.fillMode];
140
- if (c) {
141
- return c.babylonMaterial !== null && c.babylonMaterial !== undefined;
142
- }
143
- }
144
- return false;
145
- }
146
- buildAnimations(target, fps, keys, group, animationTargetOverride = null) {
147
- return this._buildAnimation(target._data[this.fillMode].babylonMaterial, fps, keys, group, animationTargetOverride);
148
- }
149
- }
150
- class LightAnimationPointerPropertyInfos extends AbstractAnimationPointerPropertyInfos {
151
- constructor(type, name, get = getFloat) {
152
- super(type, name, get);
153
- }
154
- isValid(target) {
155
- return target && target.length != 0;
156
- }
157
- // note : the extensions array store directly the BabylonLight reference
158
- buildAnimations(target, fps, keys, group, animationTargetOverride = null, params) {
159
- const i = parseIntIndex(params[1]);
160
- const l = i >= 0 && i < target.lights.length ? target.lights[i] : null;
161
- return this._buildAnimation(l._babylonLight, fps, keys, group, animationTargetOverride);
162
- }
163
- }
164
- class WeightAnimationPointerPropertyInfos extends AbstractAnimationPointerPropertyInfos {
165
- constructor(type, name, get = getWeights) {
166
- super(type, name, get);
167
- }
168
- isValid(target) {
169
- return target._numMorphTargets;
170
- }
171
- buildAnimations(targetNode, fps, keys, babylonAnimationGroup, _animationTargetOverride = null) {
172
- if (targetNode._numMorphTargets) {
173
- for (let targetIndex = 0; targetIndex < targetNode._numMorphTargets; targetIndex++) {
174
- const animationName = `${babylonAnimationGroup.name}_channel${babylonAnimationGroup.targetedAnimations.length}`;
175
- const babylonAnimation = new Animation(animationName, this.name, fps, this.type);
176
- babylonAnimation.setKeys(keys.map((key) => ({
177
- frame: key.frame,
178
- inTangent: key.inTangent ? key.inTangent[targetIndex] : undefined,
179
- value: key.value[targetIndex],
180
- outTangent: key.outTangent ? key.outTangent[targetIndex] : undefined,
181
- interpolation: key.interpolation,
182
- })));
183
- if (targetNode._primitiveBabylonMeshes) {
184
- for (const m of targetNode._primitiveBabylonMeshes) {
185
- const babylonMesh = m;
186
- if (babylonMesh.morphTargetManager) {
187
- const morphTarget = babylonMesh.morphTargetManager.getTarget(targetIndex);
188
- const babylonAnimationClone = babylonAnimation.clone();
189
- morphTarget.animations.push(babylonAnimationClone);
190
- babylonAnimationGroup.addTargetedAnimation(babylonAnimationClone, morphTarget);
191
- }
192
- }
193
- }
194
- }
195
- }
196
- }
197
- }
198
- const CoreAnimationNodesPointerMap = {
199
- getTarget: getGltfNode,
200
- hasIndex: true,
201
- matrix: {
202
- properties: [new TransformNodeAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_MATRIX, "matrix", getMatrix)],
203
- },
204
- translation: {
205
- properties: [new TransformNodeAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_VECTOR3, "position")],
206
- },
207
- rotation: {
208
- properties: [new TransformNodeAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_QUATERNION, "rotationQuaternion", getQuaternion)],
209
- },
210
- scale: {
211
- properties: [new TransformNodeAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_VECTOR3, "scaling")],
212
- },
213
- weights: {
214
- getStride: (target) => {
215
- return target._numMorphTargets;
216
- },
217
- properties: [new WeightAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "influence")],
218
- },
219
- };
220
- const CoreAnimationCamerasPointerMap = {
221
- hasIndex: true,
222
- getTarget: getGltfCamera,
223
- orthographic: {
224
- xmag: {
225
- properties: [
226
- new CameraAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "orthoLeft", getMinusFloat),
227
- new CameraAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "orthoRight", getNextFloat),
228
- ],
229
- },
230
- ymag: {
231
- properties: [
232
- new CameraAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "orthoBottom", getMinusFloat),
233
- new CameraAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "orthoTop", getNextFloat),
234
- ],
235
- },
236
- zfar: {
237
- properties: [new CameraAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "maxZ")],
238
- },
239
- znear: {
240
- properties: [new CameraAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "minZ")],
241
- },
242
- },
243
- perspective: {
244
- aspectRatio: {
245
- // not supported.
246
- },
247
- yfov: {
248
- properties: [new CameraAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "fov")],
249
- },
250
- zfar: {
251
- properties: [new CameraAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "maxZ")],
252
- },
253
- znear: {
254
- properties: [new CameraAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "minZ")],
255
- },
256
- },
257
- };
258
- const CoreAnimationMaterialsPointerMap = {
259
- hasIndex: true,
260
- getTarget: getGltfMaterial,
261
- pbrMetallicRoughness: {
262
- baseColorFactor: {
263
- properties: [
264
- new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_COLOR3, "albedoColor", getColor3),
265
- new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "alpha", getAlpha),
266
- ],
267
- },
268
- metallicFactor: {
269
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "metallic")],
270
- },
271
- roughnessFactor: {
272
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "roughness")],
273
- },
274
- baseColorTexture: {
275
- extensions: {
276
- KHR_texture_transform: {
277
- scale: {
278
- properties: [
279
- // MAY introduce set scale(Vector2) into texture.
280
- new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "albedoTexture.uScale"),
281
- new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "albedoTexture.vScale", getNextFloat),
282
- ],
283
- },
284
- offset: {
285
- properties: [
286
- // MAY introduce set offset(Vector2) into texture.
287
- new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "albedoTexture.uOffset"),
288
- new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "albedoTexture.vOffset", getNextFloat),
289
- ],
290
- },
291
- rotation: {
292
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "albedoTexture.wAng", getMinusFloat)],
293
- },
294
- },
295
- },
296
- },
297
- },
298
- emissiveFactor: {
299
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_COLOR3, "emissiveColor", getColor3)],
300
- },
301
- normalTexture: {
302
- scale: {
303
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "bumpTexture.level")],
304
- },
305
- },
306
- occlusionTexture: {
307
- strength: {
308
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "ambientTextureStrength")],
309
- },
310
- extensions: {
311
- KHR_texture_transform: {
312
- scale: {
313
- properties: [
314
- // MAY introduce set scale(Vector2) into texture.
315
- new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "ambientTexture.uScale"),
316
- new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "ambientTexture.vScale", getNextFloat),
317
- ],
318
- },
319
- offset: {
320
- properties: [
321
- // MAY introduce set offset(Vector2) into texture.
322
- new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "ambientTexture.uOffset"),
323
- new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "ambientTexture.vOffset", getNextFloat),
324
- ],
325
- },
326
- rotation: {
327
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "ambientTexture.wAng", getMinusFloat)],
328
- },
329
- },
330
- },
331
- },
332
- emissiveTexture: {
333
- extensions: {
334
- KHR_texture_transform: {
335
- scale: {
336
- properties: [
337
- // MAY introduce set scale(Vector2) into texture.
338
- new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "emissiveTexture.uScale"),
339
- new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "emissiveTexture.vScale", getNextFloat),
340
- ],
341
- },
342
- offset: {
343
- properties: [
344
- // MAY introduce set offset(Vector2) into texture.
345
- new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "emissiveTexture.uOffset"),
346
- new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "emissiveTexture.vOffset", getNextFloat),
347
- ],
348
- },
349
- rotation: {
350
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "emissiveTexture.wAng", getMinusFloat)],
351
- },
352
- },
353
- },
354
- },
355
- extensions: {
356
- KHR_materials_ior: {
357
- ior: {
358
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "indexOfRefraction")],
359
- },
360
- },
361
- KHR_materials_clearcoat: {
362
- clearcoatFactor: {
363
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "clearCoat.intensity")],
364
- },
365
- clearcoatRoughnessFactor: {
366
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "clearCoat.roughness")],
367
- },
368
- },
369
- KHR_materials_sheen: {
370
- sheenColorFactor: {
371
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_COLOR3, "sheen.color", getColor3)],
372
- },
373
- sheenRoughnessFactor: {
374
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "sheen.roughness")],
375
- },
376
- },
377
- KHR_materials_specular: {
378
- specularFactor: {
379
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "metallicF0Factor")],
380
- },
381
- specularColorFactor: {
382
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_COLOR3, "metallicReflectanceColor", getColor3)],
383
- },
384
- },
385
- KHR_materials_emissive_strength: {
386
- emissiveStrength: {
387
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "emissiveIntensity")],
388
- },
389
- },
390
- KHR_materials_transmission: {
391
- transmissionFactor: {
392
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "subSurface.refractionIntensity")],
393
- },
394
- },
395
- KHR_materials_volume: {
396
- attenuationColor: {
397
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_COLOR3, "subSurface.tintColor", getColor3)],
398
- },
399
- attenuationDistance: {
400
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "subSurface.tintColorAtDistance")],
401
- },
402
- thicknessFactor: {
403
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "subSurface.maximumThickness")],
404
- },
405
- },
406
- KHR_materials_iridescence: {
407
- iridescenceFactor: {
408
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "iridescence.intensity")],
409
- },
410
- iridescenceIor: {
411
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "iridescence.indexOfRefraction")],
412
- },
413
- iridescenceThicknessMinimum: {
414
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "iridescence.minimumThickness")],
415
- },
416
- iridescenceThicknessMaximum: {
417
- properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "iridescence.maximumThickness")],
418
- },
419
- },
420
- },
421
- };
422
- const CoreAnimationExtensionsPointerMap = {
423
- getTarget: getGltfExtension,
424
- KHR_lights_punctual: {
425
- isIndex: true,
426
- lights: {
427
- hasIndex: true,
428
- color: {
429
- properties: [new LightAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_COLOR3, "diffuse", getColor3)],
430
- },
431
- intensity: {
432
- properties: [new LightAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "intensity")],
433
- },
434
- range: {
435
- properties: [new LightAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "range")],
436
- },
437
- spot: {
438
- innerConeAngle: {
439
- properties: [new LightAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "innerAngle", getFloatBy2)],
440
- },
441
- outerConeAngle: {
442
- properties: [new LightAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, "angle", getFloatBy2)],
443
- },
444
- },
445
- },
446
- },
447
- };
448
- export const CoreAnimationPointerMap = {
449
- nodes: CoreAnimationNodesPointerMap,
450
- materials: CoreAnimationMaterialsPointerMap,
451
- cameras: CoreAnimationCamerasPointerMap,
452
- extensions: CoreAnimationExtensionsPointerMap,
453
- };
454
- //# sourceMappingURL=KHR_animation_pointer.map.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KHR_animation_pointer.map.js","sourceRoot":"","sources":["../../../../../../../lts/loaders/generated/glTF/2.0/Extensions/KHR_animation_pointer.map.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { Animation } from \"core/Animations/animation\";\r\nimport type { AnimationGroup } from \"core/Animations/animationGroup\";\r\nimport { Quaternion, Vector3, Matrix } from \"core/Maths/math.vector\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\nimport type { IGLTF } from \"../glTFLoaderInterfaces\";\r\nimport { Material } from \"core/Materials/material\";\r\nimport type { IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport type { Nullable } from \"core/types\";\r\n\r\nexport type GetGltfNodeTargetFn = (source: IGLTF, indices: string) => any;\r\ntype GetValueFn = (target: any, source: Float32Array, offset: number, scale?: number) => any;\r\n\r\nexport interface IAnimationPointerPropertyInfos {\r\n type: number;\r\n name: string;\r\n get: GetValueFn;\r\n isValid(target: any): boolean;\r\n buildAnimations(target: any, fps: number, keys: any[], group: AnimationGroup, animationTargetOverride: Nullable<IAnimatable>, params?: any): void;\r\n}\r\n\r\nconst parseIntIndex = (str: string) => {\r\n const targetIndex = parseInt(str);\r\n if (isNaN(targetIndex)) {\r\n return -1;\r\n }\r\n return targetIndex;\r\n};\r\n\r\nconst getGltfNode: GetGltfNodeTargetFn = (gltf: IGLTF, index: string) => {\r\n if (gltf.nodes) {\r\n const i = parseIntIndex(index);\r\n if (i != -1) {\r\n return gltf.nodes[i];\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nconst getGltfMaterial: GetGltfNodeTargetFn = (gltf: IGLTF, index: string) => {\r\n if (gltf.materials) {\r\n const i = parseIntIndex(index);\r\n if (i != -1) {\r\n return gltf.materials[i];\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nconst getGltfCamera: GetGltfNodeTargetFn = (gltf: IGLTF, index: string) => {\r\n if (gltf.cameras) {\r\n const i = parseIntIndex(index);\r\n if (i != -1) {\r\n return gltf.cameras[i];\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nconst getGltfExtension: GetGltfNodeTargetFn = (gltf: IGLTF, index: string) => {\r\n if (gltf.extensions && index) {\r\n return gltf.extensions[index];\r\n }\r\n return null;\r\n};\r\n\r\nconst getMatrix: GetValueFn = (_target: any, source: Float32Array, offset: number, scale?: number) => {\r\n return scale ? Matrix.FromArray(source, offset).scale(scale) : Matrix.FromArray(source, offset);\r\n};\r\n\r\nconst getVector3: GetValueFn = (_target: any, source: Float32Array, offset: number, scale?: number) => {\r\n return scale ? Vector3.FromArray(source, offset).scaleInPlace(scale) : Vector3.FromArray(source, offset);\r\n};\r\n\r\nconst getQuaternion: GetValueFn = (_target: any, source: Float32Array, offset: number, scale?: number) => {\r\n return scale ? Quaternion.FromArray(source, offset).scaleInPlace(scale) : Quaternion.FromArray(source, offset);\r\n};\r\n\r\nconst getColor3: GetValueFn = (_target: any, source: Float32Array, offset: number, scale?: number) => {\r\n return scale ? Color3.FromArray(source, offset).scale(scale) : Color3.FromArray(source, offset);\r\n};\r\n\r\nconst getAlpha: GetValueFn = (_target: any, source: Float32Array, offset: number, scale?: number) => {\r\n return scale ? source[offset + 3] * scale : source[offset + 3];\r\n};\r\n\r\nconst getFloat: GetValueFn = (_target: any, source: Float32Array, offset: number, scale?: number) => {\r\n return scale ? source[offset] * scale : source[offset];\r\n};\r\n\r\nconst getMinusFloat: GetValueFn = (_target: any, source: Float32Array, offset: number, scale?: number) => {\r\n return -(scale ? source[offset] * scale : source[offset]);\r\n};\r\n\r\nconst getNextFloat: GetValueFn = (_target: any, source: Float32Array, offset: number, scale?: number) => {\r\n return scale ? source[offset + 1] * scale : source[offset + 1];\r\n};\r\n\r\nconst getFloatBy2: GetValueFn = (_target: any, source: Float32Array, offset: number, scale?: number) => {\r\n return (scale ? source[offset] * scale : source[offset]) * 2;\r\n};\r\n\r\nconst getWeights: GetValueFn = (target: any, source: Float32Array, offset: number, scale?: number) => {\r\n if (target._numMorphTargets) {\r\n const value = new Array<number>(target._numMorphTargets!);\r\n for (let i = 0; i < target._numMorphTargets!; i++) {\r\n value[i] = scale ? source[offset++] * scale : source[offset++];\r\n }\r\n return value;\r\n }\r\n return null;\r\n};\r\n\r\nabstract class AbstractAnimationPointerPropertyInfos implements IAnimationPointerPropertyInfos {\r\n public constructor(public type: number, public name: string, public get: GetValueFn) {}\r\n\r\n protected _buildAnimation(\r\n animatable: Nullable<IAnimatable>,\r\n fps: number,\r\n keys: any[],\r\n babylonAnimationGroup: AnimationGroup,\r\n animationTargetOverride: Nullable<IAnimatable> = null\r\n ) {\r\n if (animatable || animationTargetOverride) {\r\n const animationName = `${babylonAnimationGroup!.name}_channel${babylonAnimationGroup.targetedAnimations.length}_${this.name}`;\r\n const babylonAnimation = new Animation(animationName, this.name, fps, this.type);\r\n babylonAnimation.setKeys(keys);\r\n\r\n if (animationTargetOverride != null && animationTargetOverride.animations != null) {\r\n animationTargetOverride.animations.push(babylonAnimation);\r\n babylonAnimationGroup.addTargetedAnimation(babylonAnimation, animationTargetOverride);\r\n } else if (animatable) {\r\n animatable.animations = animatable.animations || Array<Animation>(1);\r\n animatable.animations.push(babylonAnimation);\r\n babylonAnimationGroup.addTargetedAnimation(babylonAnimation, animatable);\r\n }\r\n }\r\n }\r\n public isValid(_target: any): boolean {\r\n return true;\r\n }\r\n\r\n public abstract buildAnimations(target: any, fps: number, keys: any[], group: AnimationGroup, animationTargetOverride: Nullable<IAnimatable>, params?: any): void;\r\n}\r\n\r\nclass TransformNodeAnimationPointerPropertyInfos extends AbstractAnimationPointerPropertyInfos {\r\n public constructor(type: number, name: string, get: GetValueFn = getVector3) {\r\n super(type, name, get);\r\n }\r\n public isValid(target: any): boolean {\r\n return target._babylonTransformNode !== null && target._babylonTransformNode !== undefined;\r\n }\r\n\r\n public buildAnimations(target: any, fps: number, keys: any[], group: AnimationGroup, animationTargetOverride: Nullable<IAnimatable> = null): void {\r\n return this._buildAnimation(target._babylonTransformNode, fps, keys, group, animationTargetOverride);\r\n }\r\n}\r\n\r\nclass CameraAnimationPointerPropertyInfos extends AbstractAnimationPointerPropertyInfos {\r\n public constructor(type: number, name: string, get: GetValueFn = getFloat) {\r\n super(type, name, get);\r\n }\r\n\r\n public isValid(target: any): boolean {\r\n return target._babylonCamera != null && target._babylonCamera !== undefined;\r\n }\r\n\r\n public buildAnimations(target: any, fps: number, keys: any[], group: AnimationGroup, animationTargetOverride: Nullable<IAnimatable> = null): void {\r\n return this._buildAnimation(target._babylonCamera, fps, keys, group, animationTargetOverride);\r\n }\r\n}\r\n\r\nclass MaterialAnimationPointerPropertyInfos extends AbstractAnimationPointerPropertyInfos {\r\n public constructor(type: number, name: string, get: GetValueFn = getFloat, public fillMode: any = Material.TriangleFillMode) {\r\n super(type, name, get);\r\n }\r\n\r\n public isValid(target: any): boolean {\r\n const data = target._data;\r\n if (data) {\r\n const c = data[this.fillMode];\r\n if (c) {\r\n return c.babylonMaterial !== null && c.babylonMaterial !== undefined;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public buildAnimations(target: any, fps: number, keys: any[], group: AnimationGroup, animationTargetOverride: Nullable<IAnimatable> = null): void {\r\n return this._buildAnimation(target._data[this.fillMode].babylonMaterial, fps, keys, group, animationTargetOverride);\r\n }\r\n}\r\n\r\nclass LightAnimationPointerPropertyInfos extends AbstractAnimationPointerPropertyInfos {\r\n public constructor(type: number, name: string, get: GetValueFn = getFloat) {\r\n super(type, name, get);\r\n }\r\n\r\n public isValid(target: any): boolean {\r\n return target && target.length != 0;\r\n }\r\n\r\n // note : the extensions array store directly the BabylonLight reference\r\n public buildAnimations(target: any, fps: number, keys: any[], group: AnimationGroup, animationTargetOverride: Nullable<IAnimatable> = null, params: any): void {\r\n const i = parseIntIndex(params[1]);\r\n const l = i >= 0 && i < target.lights.length ? target.lights[i] : null;\r\n return this._buildAnimation(l._babylonLight, fps, keys, group, animationTargetOverride);\r\n }\r\n}\r\n\r\nclass WeightAnimationPointerPropertyInfos extends AbstractAnimationPointerPropertyInfos {\r\n public constructor(type: number, name: string, get: GetValueFn = getWeights) {\r\n super(type, name, get);\r\n }\r\n public isValid(target: any): boolean {\r\n return target._numMorphTargets;\r\n }\r\n public buildAnimations(targetNode: any, fps: number, keys: any[], babylonAnimationGroup: AnimationGroup, _animationTargetOverride: Nullable<IAnimatable> = null): void {\r\n if (targetNode._numMorphTargets) {\r\n for (let targetIndex = 0; targetIndex < targetNode._numMorphTargets; targetIndex++) {\r\n const animationName = `${babylonAnimationGroup.name}_channel${babylonAnimationGroup.targetedAnimations.length}`;\r\n const babylonAnimation = new Animation(animationName, 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 );\r\n\r\n if (targetNode._primitiveBabylonMeshes) {\r\n for (const m of targetNode._primitiveBabylonMeshes) {\r\n const babylonMesh = m as Mesh;\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 babylonAnimationGroup.addTargetedAnimation(babylonAnimationClone, morphTarget);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst CoreAnimationNodesPointerMap: any = {\r\n getTarget: getGltfNode,\r\n hasIndex: true,\r\n matrix: {\r\n properties: [new TransformNodeAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_MATRIX, \"matrix\", getMatrix)],\r\n },\r\n translation: {\r\n properties: [new TransformNodeAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_VECTOR3, \"position\")],\r\n },\r\n rotation: {\r\n properties: [new TransformNodeAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_QUATERNION, \"rotationQuaternion\", getQuaternion)],\r\n },\r\n scale: {\r\n properties: [new TransformNodeAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_VECTOR3, \"scaling\")],\r\n },\r\n weights: {\r\n getStride: (target: any) => {\r\n return target._numMorphTargets;\r\n },\r\n properties: [new WeightAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"influence\")],\r\n },\r\n};\r\n\r\nconst CoreAnimationCamerasPointerMap: any = {\r\n hasIndex: true,\r\n getTarget: getGltfCamera,\r\n orthographic: {\r\n xmag: {\r\n properties: [\r\n new CameraAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"orthoLeft\", getMinusFloat),\r\n new CameraAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"orthoRight\", getNextFloat),\r\n ],\r\n },\r\n ymag: {\r\n properties: [\r\n new CameraAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"orthoBottom\", getMinusFloat),\r\n new CameraAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"orthoTop\", getNextFloat),\r\n ],\r\n },\r\n zfar: {\r\n properties: [new CameraAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"maxZ\")],\r\n },\r\n znear: {\r\n properties: [new CameraAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"minZ\")],\r\n },\r\n },\r\n perspective: {\r\n aspectRatio: {\r\n // not supported.\r\n },\r\n yfov: {\r\n properties: [new CameraAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"fov\")],\r\n },\r\n zfar: {\r\n properties: [new CameraAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"maxZ\")],\r\n },\r\n znear: {\r\n properties: [new CameraAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"minZ\")],\r\n },\r\n },\r\n};\r\n\r\nconst CoreAnimationMaterialsPointerMap: any = {\r\n hasIndex: true,\r\n getTarget: getGltfMaterial,\r\n pbrMetallicRoughness: {\r\n baseColorFactor: {\r\n properties: [\r\n new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_COLOR3, \"albedoColor\", getColor3),\r\n new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"alpha\", getAlpha),\r\n ],\r\n },\r\n metallicFactor: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"metallic\")],\r\n },\r\n roughnessFactor: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"roughness\")],\r\n },\r\n baseColorTexture: {\r\n extensions: {\r\n KHR_texture_transform: {\r\n scale: {\r\n properties: [\r\n // MAY introduce set scale(Vector2) into texture.\r\n new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"albedoTexture.uScale\"),\r\n new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"albedoTexture.vScale\", getNextFloat),\r\n ],\r\n },\r\n offset: {\r\n properties: [\r\n // MAY introduce set offset(Vector2) into texture.\r\n new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"albedoTexture.uOffset\"),\r\n new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"albedoTexture.vOffset\", getNextFloat),\r\n ],\r\n },\r\n rotation: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"albedoTexture.wAng\", getMinusFloat)],\r\n },\r\n },\r\n },\r\n },\r\n },\r\n emissiveFactor: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_COLOR3, \"emissiveColor\", getColor3)],\r\n },\r\n normalTexture: {\r\n scale: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"bumpTexture.level\")],\r\n },\r\n },\r\n occlusionTexture: {\r\n strength: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"ambientTextureStrength\")],\r\n },\r\n extensions: {\r\n KHR_texture_transform: {\r\n scale: {\r\n properties: [\r\n // MAY introduce set scale(Vector2) into texture.\r\n new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"ambientTexture.uScale\"),\r\n new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"ambientTexture.vScale\", getNextFloat),\r\n ],\r\n },\r\n offset: {\r\n properties: [\r\n // MAY introduce set offset(Vector2) into texture.\r\n new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"ambientTexture.uOffset\"),\r\n new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"ambientTexture.vOffset\", getNextFloat),\r\n ],\r\n },\r\n rotation: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"ambientTexture.wAng\", getMinusFloat)],\r\n },\r\n },\r\n },\r\n },\r\n emissiveTexture: {\r\n extensions: {\r\n KHR_texture_transform: {\r\n scale: {\r\n properties: [\r\n // MAY introduce set scale(Vector2) into texture.\r\n new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"emissiveTexture.uScale\"),\r\n new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"emissiveTexture.vScale\", getNextFloat),\r\n ],\r\n },\r\n offset: {\r\n properties: [\r\n // MAY introduce set offset(Vector2) into texture.\r\n new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"emissiveTexture.uOffset\"),\r\n new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"emissiveTexture.vOffset\", getNextFloat),\r\n ],\r\n },\r\n rotation: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"emissiveTexture.wAng\", getMinusFloat)],\r\n },\r\n },\r\n },\r\n },\r\n extensions: {\r\n KHR_materials_ior: {\r\n ior: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"indexOfRefraction\")],\r\n },\r\n },\r\n KHR_materials_clearcoat: {\r\n clearcoatFactor: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"clearCoat.intensity\")],\r\n },\r\n clearcoatRoughnessFactor: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"clearCoat.roughness\")],\r\n },\r\n },\r\n KHR_materials_sheen: {\r\n sheenColorFactor: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_COLOR3, \"sheen.color\", getColor3)],\r\n },\r\n sheenRoughnessFactor: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"sheen.roughness\")],\r\n },\r\n },\r\n KHR_materials_specular: {\r\n specularFactor: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"metallicF0Factor\")],\r\n },\r\n specularColorFactor: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_COLOR3, \"metallicReflectanceColor\", getColor3)],\r\n },\r\n },\r\n KHR_materials_emissive_strength: {\r\n emissiveStrength: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"emissiveIntensity\")],\r\n },\r\n },\r\n KHR_materials_transmission: {\r\n transmissionFactor: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"subSurface.refractionIntensity\")],\r\n },\r\n },\r\n KHR_materials_volume: {\r\n attenuationColor: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_COLOR3, \"subSurface.tintColor\", getColor3)],\r\n },\r\n attenuationDistance: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"subSurface.tintColorAtDistance\")],\r\n },\r\n thicknessFactor: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"subSurface.maximumThickness\")],\r\n },\r\n },\r\n KHR_materials_iridescence: {\r\n iridescenceFactor: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"iridescence.intensity\")],\r\n },\r\n iridescenceIor: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"iridescence.indexOfRefraction\")],\r\n },\r\n iridescenceThicknessMinimum: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"iridescence.minimumThickness\")],\r\n },\r\n iridescenceThicknessMaximum: {\r\n properties: [new MaterialAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"iridescence.maximumThickness\")],\r\n },\r\n },\r\n },\r\n};\r\n\r\nconst CoreAnimationExtensionsPointerMap: any = {\r\n getTarget: getGltfExtension,\r\n KHR_lights_punctual: {\r\n isIndex: true,\r\n lights: {\r\n hasIndex: true, // we have an array of light into the extension.\r\n color: {\r\n properties: [new LightAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_COLOR3, \"diffuse\", getColor3)],\r\n },\r\n intensity: {\r\n properties: [new LightAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"intensity\")],\r\n },\r\n range: {\r\n properties: [new LightAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"range\")],\r\n },\r\n spot: {\r\n innerConeAngle: {\r\n properties: [new LightAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"innerAngle\", getFloatBy2)],\r\n },\r\n outerConeAngle: {\r\n properties: [new LightAnimationPointerPropertyInfos(Animation.ANIMATIONTYPE_FLOAT, \"angle\", getFloatBy2)],\r\n },\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport const CoreAnimationPointerMap: any = {\r\n nodes: CoreAnimationNodesPointerMap,\r\n materials: CoreAnimationMaterialsPointerMap,\r\n cameras: CoreAnimationCamerasPointerMap,\r\n extensions: CoreAnimationExtensionsPointerMap,\r\n};\r\n"]}
@@ -1,7 +0,0 @@
1
- import { AccessorType } from "babylonjs-gltf2interface";
2
- /**
3
- * Used internally to determine how much data to be gather from input buffer at each key frame.
4
- * @param accessorType the accessor type
5
- * @returns the number of item to be gather at each keyframe
6
- */
7
- export declare function getDataAccessorElementCount(accessorType: AccessorType): 1 | 2 | 3 | 4 | 9 | 16;
@@ -1,23 +0,0 @@
1
- /**
2
- * Used internally to determine how much data to be gather from input buffer at each key frame.
3
- * @param accessorType the accessor type
4
- * @returns the number of item to be gather at each keyframe
5
- */
6
- export function getDataAccessorElementCount(accessorType) {
7
- switch (accessorType) {
8
- case "SCALAR" /* SCALAR */:
9
- return 1;
10
- case "VEC2" /* VEC2 */:
11
- return 2;
12
- case "VEC3" /* VEC3 */:
13
- return 3;
14
- case "VEC4" /* VEC4 */:
15
- case "MAT2" /* MAT2 */:
16
- return 4;
17
- case "MAT3" /* MAT3 */:
18
- return 9;
19
- case "MAT4" /* MAT4 */:
20
- return 16;
21
- }
22
- }
23
- //# sourceMappingURL=glTFUtilities.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"glTFUtilities.js","sourceRoot":"","sources":["../../../../../../lts/loaders/generated/glTF/2.0/glTFUtilities.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,YAA0B;IAClE,QAAQ,YAAY,EAAE;QAClB;YACI,OAAO,CAAC,CAAC;QACb;YACI,OAAO,CAAC,CAAC;QACb;YACI,OAAO,CAAC,CAAC;QACb,uBAAuB;QACvB;YACI,OAAO,CAAC,CAAC;QACb;YACI,OAAO,CAAC,CAAC;QACb;YACI,OAAO,EAAE,CAAC;KACjB;AACL,CAAC","sourcesContent":["import { AccessorType } from \"babylonjs-gltf2interface\";\r\n\r\n/**\r\n * Used internally to determine how much data to be gather from input buffer at each key frame.\r\n * @param accessorType the accessor type\r\n * @returns the number of item to be gather at each keyframe\r\n */\r\nexport function getDataAccessorElementCount(accessorType: AccessorType) {\r\n switch (accessorType) {\r\n case AccessorType.SCALAR:\r\n return 1;\r\n case AccessorType.VEC2:\r\n return 2;\r\n case AccessorType.VEC3:\r\n return 3;\r\n case AccessorType.VEC4:\r\n case AccessorType.MAT2:\r\n return 4;\r\n case AccessorType.MAT3:\r\n return 9;\r\n case AccessorType.MAT4:\r\n return 16;\r\n }\r\n}\r\n"]}