@babylonjs/serializers 5.19.0 → 5.22.0

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 (47) hide show
  1. package/OBJ/objSerializer.js +35 -39
  2. package/OBJ/objSerializer.js.map +1 -1
  3. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js +44 -52
  4. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js.map +1 -1
  5. package/glTF/2.0/Extensions/KHR_lights_punctual.js +49 -56
  6. package/glTF/2.0/Extensions/KHR_lights_punctual.js.map +1 -1
  7. package/glTF/2.0/Extensions/KHR_materials_clearcoat.js +31 -38
  8. package/glTF/2.0/Extensions/KHR_materials_clearcoat.js.map +1 -1
  9. package/glTF/2.0/Extensions/KHR_materials_ior.js +18 -25
  10. package/glTF/2.0/Extensions/KHR_materials_ior.js.map +1 -1
  11. package/glTF/2.0/Extensions/KHR_materials_iridescence.js +25 -32
  12. package/glTF/2.0/Extensions/KHR_materials_iridescence.js.map +1 -1
  13. package/glTF/2.0/Extensions/KHR_materials_sheen.js +24 -32
  14. package/glTF/2.0/Extensions/KHR_materials_sheen.js.map +1 -1
  15. package/glTF/2.0/Extensions/KHR_materials_specular.js +29 -37
  16. package/glTF/2.0/Extensions/KHR_materials_specular.js.map +1 -1
  17. package/glTF/2.0/Extensions/KHR_materials_transmission.js +29 -37
  18. package/glTF/2.0/Extensions/KHR_materials_transmission.js.map +1 -1
  19. package/glTF/2.0/Extensions/KHR_materials_unlit.js +15 -22
  20. package/glTF/2.0/Extensions/KHR_materials_unlit.js.map +1 -1
  21. package/glTF/2.0/Extensions/KHR_materials_volume.js +31 -39
  22. package/glTF/2.0/Extensions/KHR_materials_volume.js.map +1 -1
  23. package/glTF/2.0/Extensions/KHR_texture_transform.js +33 -42
  24. package/glTF/2.0/Extensions/KHR_texture_transform.js.map +1 -1
  25. package/glTF/2.0/glTFAnimation.js +171 -187
  26. package/glTF/2.0/glTFAnimation.js.map +1 -1
  27. package/glTF/2.0/glTFData.js +9 -11
  28. package/glTF/2.0/glTFData.js.map +1 -1
  29. package/glTF/2.0/glTFExporter.js +498 -544
  30. package/glTF/2.0/glTFExporter.js.map +1 -1
  31. package/glTF/2.0/glTFMaterialExporter.js +385 -423
  32. package/glTF/2.0/glTFMaterialExporter.js.map +1 -1
  33. package/glTF/2.0/glTFSerializer.js +20 -25
  34. package/glTF/2.0/glTFSerializer.js.map +1 -1
  35. package/glTF/2.0/glTFUtilities.js +45 -49
  36. package/glTF/2.0/glTFUtilities.js.map +1 -1
  37. package/glTF/2.0/shaders/textureTransform.fragment.js +7 -3
  38. package/glTF/2.0/shaders/textureTransform.fragment.js.map +1 -1
  39. package/legacy/legacy-glTF2Serializer.js +16 -16
  40. package/legacy/legacy-glTF2Serializer.js.map +1 -1
  41. package/legacy/legacy-objSerializer.js +2 -2
  42. package/legacy/legacy-objSerializer.js.map +1 -1
  43. package/legacy/legacy-stlSerializer.js +2 -2
  44. package/legacy/legacy-stlSerializer.js.map +1 -1
  45. package/package.json +3 -6
  46. package/stl/stlSerializer.js +29 -38
  47. package/stl/stlSerializer.js.map +1 -1
@@ -2,9 +2,7 @@ import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
2
2
  /**
3
3
  * @hidden
4
4
  */
5
- var _GLTFUtilities = /** @class */ (function () {
6
- function _GLTFUtilities() {
7
- }
5
+ export class _GLTFUtilities {
8
6
  /**
9
7
  * Creates a buffer view based on the supplied arguments
10
8
  * @param bufferIndex index value of the specified buffer
@@ -14,8 +12,8 @@ var _GLTFUtilities = /** @class */ (function () {
14
12
  * @param name name of the buffer view
15
13
  * @returns bufferView for glTF
16
14
  */
17
- _GLTFUtilities._CreateBufferView = function (bufferIndex, byteOffset, byteLength, byteStride, name) {
18
- var bufferview = { buffer: bufferIndex, byteLength: byteLength };
15
+ static _CreateBufferView(bufferIndex, byteOffset, byteLength, byteStride, name) {
16
+ const bufferview = { buffer: bufferIndex, byteLength: byteLength };
19
17
  if (byteOffset) {
20
18
  bufferview.byteOffset = byteOffset;
21
19
  }
@@ -26,7 +24,7 @@ var _GLTFUtilities = /** @class */ (function () {
26
24
  bufferview.byteStride = byteStride;
27
25
  }
28
26
  return bufferview;
29
- };
27
+ }
30
28
  /**
31
29
  * Creates an accessor based on the supplied arguments
32
30
  * @param bufferviewIndex The index of the bufferview referenced by this accessor
@@ -39,8 +37,8 @@ var _GLTFUtilities = /** @class */ (function () {
39
37
  * @param max Maximum value of each component in this attribute
40
38
  * @returns accessor for glTF
41
39
  */
42
- _GLTFUtilities._CreateAccessor = function (bufferviewIndex, name, type, componentType, count, byteOffset, min, max) {
43
- var accessor = { name: name, bufferView: bufferviewIndex, componentType: componentType, count: count, type: type };
40
+ static _CreateAccessor(bufferviewIndex, name, type, componentType, count, byteOffset, min, max) {
41
+ const accessor = { name: name, bufferView: bufferviewIndex, componentType: componentType, count: count, type: type };
44
42
  if (min != null) {
45
43
  accessor.min = min;
46
44
  }
@@ -51,7 +49,7 @@ var _GLTFUtilities = /** @class */ (function () {
51
49
  accessor.byteOffset = byteOffset;
52
50
  }
53
51
  return accessor;
54
- };
52
+ }
55
53
  /**
56
54
  * Calculates the minimum and maximum values of an array of position floats
57
55
  * @param positions Positions array of a mesh
@@ -60,23 +58,23 @@ var _GLTFUtilities = /** @class */ (function () {
60
58
  * @param convertToRightHandedSystem
61
59
  * @returns min number array and max number array
62
60
  */
63
- _GLTFUtilities._CalculateMinMaxPositions = function (positions, vertexStart, vertexCount, convertToRightHandedSystem) {
64
- var min = [Infinity, Infinity, Infinity];
65
- var max = [-Infinity, -Infinity, -Infinity];
66
- var positionStrideSize = 3;
67
- var indexOffset;
68
- var position;
69
- var vector;
61
+ static _CalculateMinMaxPositions(positions, vertexStart, vertexCount, convertToRightHandedSystem) {
62
+ const min = [Infinity, Infinity, Infinity];
63
+ const max = [-Infinity, -Infinity, -Infinity];
64
+ const positionStrideSize = 3;
65
+ let indexOffset;
66
+ let position;
67
+ let vector;
70
68
  if (vertexCount) {
71
- for (var i = vertexStart, length_1 = vertexStart + vertexCount; i < length_1; ++i) {
69
+ for (let i = vertexStart, length = vertexStart + vertexCount; i < length; ++i) {
72
70
  indexOffset = positionStrideSize * i;
73
71
  position = Vector3.FromArray(positions, indexOffset);
74
72
  if (convertToRightHandedSystem) {
75
73
  _GLTFUtilities._GetRightHandedPositionVector3FromRef(position);
76
74
  }
77
75
  vector = position.asArray();
78
- for (var j = 0; j < positionStrideSize; ++j) {
79
- var num = vector[j];
76
+ for (let j = 0; j < positionStrideSize; ++j) {
77
+ const num = vector[j];
80
78
  if (num < min[j]) {
81
79
  min[j] = num;
82
80
  }
@@ -87,93 +85,93 @@ var _GLTFUtilities = /** @class */ (function () {
87
85
  }
88
86
  }
89
87
  }
90
- return { min: min, max: max };
91
- };
88
+ return { min, max };
89
+ }
92
90
  /**
93
91
  * Converts a new right-handed Vector3
94
92
  * @param vector vector3 array
95
93
  * @returns right-handed Vector3
96
94
  */
97
- _GLTFUtilities._GetRightHandedPositionVector3 = function (vector) {
95
+ static _GetRightHandedPositionVector3(vector) {
98
96
  return new Vector3(vector.x, vector.y, -vector.z);
99
- };
97
+ }
100
98
  /**
101
99
  * Converts a Vector3 to right-handed
102
100
  * @param vector Vector3 to convert to right-handed
103
101
  */
104
- _GLTFUtilities._GetRightHandedPositionVector3FromRef = function (vector) {
102
+ static _GetRightHandedPositionVector3FromRef(vector) {
105
103
  vector.z *= -1;
106
- };
104
+ }
107
105
  /**
108
106
  * Converts a three element number array to right-handed
109
107
  * @param vector number array to convert to right-handed
110
108
  */
111
- _GLTFUtilities._GetRightHandedPositionArray3FromRef = function (vector) {
109
+ static _GetRightHandedPositionArray3FromRef(vector) {
112
110
  vector[2] *= -1;
113
- };
111
+ }
114
112
  /**
115
113
  * Converts a new right-handed Vector3
116
114
  * @param vector vector3 array
117
115
  * @returns right-handed Vector3
118
116
  */
119
- _GLTFUtilities._GetRightHandedNormalVector3 = function (vector) {
117
+ static _GetRightHandedNormalVector3(vector) {
120
118
  return new Vector3(vector.x, vector.y, -vector.z);
121
- };
119
+ }
122
120
  /**
123
121
  * Converts a Vector3 to right-handed
124
122
  * @param vector Vector3 to convert to right-handed
125
123
  */
126
- _GLTFUtilities._GetRightHandedNormalVector3FromRef = function (vector) {
124
+ static _GetRightHandedNormalVector3FromRef(vector) {
127
125
  vector.z *= -1;
128
- };
126
+ }
129
127
  /**
130
128
  * Converts a three element number array to right-handed
131
129
  * @param vector number array to convert to right-handed
132
130
  */
133
- _GLTFUtilities._GetRightHandedNormalArray3FromRef = function (vector) {
131
+ static _GetRightHandedNormalArray3FromRef(vector) {
134
132
  vector[2] *= -1;
135
- };
133
+ }
136
134
  /**
137
135
  * Converts a Vector4 to right-handed
138
136
  * @param vector Vector4 to convert to right-handed
139
137
  */
140
- _GLTFUtilities._GetRightHandedVector4FromRef = function (vector) {
138
+ static _GetRightHandedVector4FromRef(vector) {
141
139
  vector.z *= -1;
142
140
  vector.w *= -1;
143
- };
141
+ }
144
142
  /**
145
143
  * Converts a Vector4 to right-handed
146
144
  * @param vector Vector4 to convert to right-handed
147
145
  */
148
- _GLTFUtilities._GetRightHandedArray4FromRef = function (vector) {
146
+ static _GetRightHandedArray4FromRef(vector) {
149
147
  vector[2] *= -1;
150
148
  vector[3] *= -1;
151
- };
149
+ }
152
150
  /**
153
151
  * Converts a Quaternion to right-handed
154
152
  * @param quaternion Source quaternion to convert to right-handed
155
153
  */
156
- _GLTFUtilities._GetRightHandedQuaternionFromRef = function (quaternion) {
154
+ static _GetRightHandedQuaternionFromRef(quaternion) {
157
155
  quaternion.x *= -1;
158
156
  quaternion.y *= -1;
159
- };
157
+ }
160
158
  /**
161
159
  * Converts a Quaternion to right-handed
162
160
  * @param quaternion Source quaternion to convert to right-handed
163
161
  */
164
- _GLTFUtilities._GetRightHandedQuaternionArrayFromRef = function (quaternion) {
162
+ static _GetRightHandedQuaternionArrayFromRef(quaternion) {
165
163
  quaternion[0] *= -1;
166
164
  quaternion[1] *= -1;
167
- };
168
- _GLTFUtilities._NormalizeTangentFromRef = function (tangent) {
169
- var length = Math.sqrt(tangent.x * tangent.x + tangent.y * tangent.y + tangent.z * tangent.z);
165
+ }
166
+ static _NormalizeTangentFromRef(tangent) {
167
+ const length = Math.sqrt(tangent.x * tangent.x + tangent.y * tangent.y + tangent.z * tangent.z);
170
168
  if (length > 0) {
171
169
  tangent.x /= length;
172
170
  tangent.y /= length;
173
171
  tangent.z /= length;
174
172
  }
175
- };
176
- _GLTFUtilities._GetDataAccessorElementCount = function (accessorType) {
173
+ }
174
+ static _GetDataAccessorElementCount(accessorType) {
177
175
  switch (accessorType) {
178
176
  case "MAT2" /* MAT2 */:
179
177
  return 4;
@@ -190,8 +188,6 @@ var _GLTFUtilities = /** @class */ (function () {
190
188
  case "VEC4" /* VEC4 */:
191
189
  return 4;
192
190
  }
193
- };
194
- return _GLTFUtilities;
195
- }());
196
- export { _GLTFUtilities };
191
+ }
192
+ }
197
193
  //# sourceMappingURL=glTFUtilities.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"glTFUtilities.js","sourceRoot":"","sources":["../../../../../../lts/serializers/generated/glTF/2.0/glTFUtilities.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IBufferView, AccessorComponentType, IAccessor } from \"babylonjs-gltf2interface\";\r\nimport { AccessorType } from \"babylonjs-gltf2interface\";\r\n\r\nimport type { FloatArray, Nullable } from \"core/types\";\r\nimport type { Vector4, Quaternion } from \"core/Maths/math.vector\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\n\r\n/**\r\n * @hidden\r\n */\r\nexport class _GLTFUtilities {\r\n /**\r\n * Creates a buffer view based on the supplied arguments\r\n * @param bufferIndex index value of the specified buffer\r\n * @param byteOffset byte offset value\r\n * @param byteLength byte length of the bufferView\r\n * @param byteStride byte distance between conequential elements\r\n * @param name name of the buffer view\r\n * @returns bufferView for glTF\r\n */\r\n public static _CreateBufferView(bufferIndex: number, byteOffset: number, byteLength: number, byteStride?: number, name?: string): IBufferView {\r\n const bufferview: IBufferView = { buffer: bufferIndex, byteLength: byteLength };\r\n if (byteOffset) {\r\n bufferview.byteOffset = byteOffset;\r\n }\r\n if (name) {\r\n bufferview.name = name;\r\n }\r\n if (byteStride) {\r\n bufferview.byteStride = byteStride;\r\n }\r\n\r\n return bufferview;\r\n }\r\n\r\n /**\r\n * Creates an accessor based on the supplied arguments\r\n * @param bufferviewIndex The index of the bufferview referenced by this accessor\r\n * @param name The name of the accessor\r\n * @param type The type of the accessor\r\n * @param componentType The datatype of components in the attribute\r\n * @param count The number of attributes referenced by this accessor\r\n * @param byteOffset The offset relative to the start of the bufferView in bytes\r\n * @param min Minimum value of each component in this attribute\r\n * @param max Maximum value of each component in this attribute\r\n * @returns accessor for glTF\r\n */\r\n public static _CreateAccessor(\r\n bufferviewIndex: number,\r\n name: string,\r\n type: AccessorType,\r\n componentType: AccessorComponentType,\r\n count: number,\r\n byteOffset: Nullable<number>,\r\n min: Nullable<number[]>,\r\n max: Nullable<number[]>\r\n ): IAccessor {\r\n const accessor: IAccessor = { name: name, bufferView: bufferviewIndex, componentType: componentType, count: count, type: type };\r\n\r\n if (min != null) {\r\n accessor.min = min;\r\n }\r\n if (max != null) {\r\n accessor.max = max;\r\n }\r\n if (byteOffset != null) {\r\n accessor.byteOffset = byteOffset;\r\n }\r\n\r\n return accessor;\r\n }\r\n\r\n /**\r\n * Calculates the minimum and maximum values of an array of position floats\r\n * @param positions Positions array of a mesh\r\n * @param vertexStart Starting vertex offset to calculate min and max values\r\n * @param vertexCount Number of vertices to check for min and max values\r\n * @param convertToRightHandedSystem\r\n * @returns min number array and max number array\r\n */\r\n public static _CalculateMinMaxPositions(\r\n positions: FloatArray,\r\n vertexStart: number,\r\n vertexCount: number,\r\n convertToRightHandedSystem: boolean\r\n ): { min: number[]; max: number[] } {\r\n const min = [Infinity, Infinity, Infinity];\r\n const max = [-Infinity, -Infinity, -Infinity];\r\n const positionStrideSize = 3;\r\n let indexOffset: number;\r\n let position: Vector3;\r\n let vector: number[];\r\n\r\n if (vertexCount) {\r\n for (let i = vertexStart, length = vertexStart + vertexCount; i < length; ++i) {\r\n indexOffset = positionStrideSize * i;\r\n\r\n position = Vector3.FromArray(positions, indexOffset);\r\n if (convertToRightHandedSystem) {\r\n _GLTFUtilities._GetRightHandedPositionVector3FromRef(position);\r\n }\r\n vector = position.asArray();\r\n\r\n for (let j = 0; j < positionStrideSize; ++j) {\r\n const num = vector[j];\r\n if (num < min[j]) {\r\n min[j] = num;\r\n }\r\n if (num > max[j]) {\r\n max[j] = num;\r\n }\r\n ++indexOffset;\r\n }\r\n }\r\n }\r\n return { min, max };\r\n }\r\n\r\n /**\r\n * Converts a new right-handed Vector3\r\n * @param vector vector3 array\r\n * @returns right-handed Vector3\r\n */\r\n public static _GetRightHandedPositionVector3(vector: Vector3): Vector3 {\r\n return new Vector3(vector.x, vector.y, -vector.z);\r\n }\r\n\r\n /**\r\n * Converts a Vector3 to right-handed\r\n * @param vector Vector3 to convert to right-handed\r\n */\r\n public static _GetRightHandedPositionVector3FromRef(vector: Vector3) {\r\n vector.z *= -1;\r\n }\r\n\r\n /**\r\n * Converts a three element number array to right-handed\r\n * @param vector number array to convert to right-handed\r\n */\r\n public static _GetRightHandedPositionArray3FromRef(vector: number[]) {\r\n vector[2] *= -1;\r\n }\r\n\r\n /**\r\n * Converts a new right-handed Vector3\r\n * @param vector vector3 array\r\n * @returns right-handed Vector3\r\n */\r\n public static _GetRightHandedNormalVector3(vector: Vector3): Vector3 {\r\n return new Vector3(vector.x, vector.y, -vector.z);\r\n }\r\n\r\n /**\r\n * Converts a Vector3 to right-handed\r\n * @param vector Vector3 to convert to right-handed\r\n */\r\n public static _GetRightHandedNormalVector3FromRef(vector: Vector3) {\r\n vector.z *= -1;\r\n }\r\n\r\n /**\r\n * Converts a three element number array to right-handed\r\n * @param vector number array to convert to right-handed\r\n */\r\n public static _GetRightHandedNormalArray3FromRef(vector: number[]) {\r\n vector[2] *= -1;\r\n }\r\n\r\n /**\r\n * Converts a Vector4 to right-handed\r\n * @param vector Vector4 to convert to right-handed\r\n */\r\n public static _GetRightHandedVector4FromRef(vector: Vector4) {\r\n vector.z *= -1;\r\n vector.w *= -1;\r\n }\r\n\r\n /**\r\n * Converts a Vector4 to right-handed\r\n * @param vector Vector4 to convert to right-handed\r\n */\r\n public static _GetRightHandedArray4FromRef(vector: number[]) {\r\n vector[2] *= -1;\r\n vector[3] *= -1;\r\n }\r\n\r\n /**\r\n * Converts a Quaternion to right-handed\r\n * @param quaternion Source quaternion to convert to right-handed\r\n */\r\n public static _GetRightHandedQuaternionFromRef(quaternion: Quaternion) {\r\n quaternion.x *= -1;\r\n quaternion.y *= -1;\r\n }\r\n\r\n /**\r\n * Converts a Quaternion to right-handed\r\n * @param quaternion Source quaternion to convert to right-handed\r\n */\r\n public static _GetRightHandedQuaternionArrayFromRef(quaternion: number[]) {\r\n quaternion[0] *= -1;\r\n quaternion[1] *= -1;\r\n }\r\n\r\n public static _NormalizeTangentFromRef(tangent: Vector4) {\r\n const length = Math.sqrt(tangent.x * tangent.x + tangent.y * tangent.y + tangent.z * tangent.z);\r\n if (length > 0) {\r\n tangent.x /= length;\r\n tangent.y /= length;\r\n tangent.z /= length;\r\n }\r\n }\r\n\r\n public static _GetDataAccessorElementCount(accessorType: AccessorType) {\r\n switch (accessorType) {\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 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 return 4;\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"glTFUtilities.js","sourceRoot":"","sources":["../../../../../../lts/serializers/generated/glTF/2.0/glTFUtilities.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IBufferView, AccessorComponentType, IAccessor } from \"babylonjs-gltf2interface\";\r\nimport { AccessorType } from \"babylonjs-gltf2interface\";\r\n\r\nimport type { FloatArray, Nullable } from \"core/types\";\r\nimport type { Vector4, Quaternion } from \"core/Maths/math.vector\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\n\r\n/**\r\n * @hidden\r\n */\r\nexport class _GLTFUtilities {\r\n /**\r\n * Creates a buffer view based on the supplied arguments\r\n * @param bufferIndex index value of the specified buffer\r\n * @param byteOffset byte offset value\r\n * @param byteLength byte length of the bufferView\r\n * @param byteStride byte distance between conequential elements\r\n * @param name name of the buffer view\r\n * @returns bufferView for glTF\r\n */\r\n public static _CreateBufferView(bufferIndex: number, byteOffset: number, byteLength: number, byteStride?: number, name?: string): IBufferView {\r\n const bufferview: IBufferView = { buffer: bufferIndex, byteLength: byteLength };\r\n if (byteOffset) {\r\n bufferview.byteOffset = byteOffset;\r\n }\r\n if (name) {\r\n bufferview.name = name;\r\n }\r\n if (byteStride) {\r\n bufferview.byteStride = byteStride;\r\n }\r\n\r\n return bufferview;\r\n }\r\n\r\n /**\r\n * Creates an accessor based on the supplied arguments\r\n * @param bufferviewIndex The index of the bufferview referenced by this accessor\r\n * @param name The name of the accessor\r\n * @param type The type of the accessor\r\n * @param componentType The datatype of components in the attribute\r\n * @param count The number of attributes referenced by this accessor\r\n * @param byteOffset The offset relative to the start of the bufferView in bytes\r\n * @param min Minimum value of each component in this attribute\r\n * @param max Maximum value of each component in this attribute\r\n * @returns accessor for glTF\r\n */\r\n public static _CreateAccessor(\r\n bufferviewIndex: number,\r\n name: string,\r\n type: AccessorType,\r\n componentType: AccessorComponentType,\r\n count: number,\r\n byteOffset: Nullable<number>,\r\n min: Nullable<number[]>,\r\n max: Nullable<number[]>\r\n ): IAccessor {\r\n const accessor: IAccessor = { name: name, bufferView: bufferviewIndex, componentType: componentType, count: count, type: type };\r\n\r\n if (min != null) {\r\n accessor.min = min;\r\n }\r\n if (max != null) {\r\n accessor.max = max;\r\n }\r\n if (byteOffset != null) {\r\n accessor.byteOffset = byteOffset;\r\n }\r\n\r\n return accessor;\r\n }\r\n\r\n /**\r\n * Calculates the minimum and maximum values of an array of position floats\r\n * @param positions Positions array of a mesh\r\n * @param vertexStart Starting vertex offset to calculate min and max values\r\n * @param vertexCount Number of vertices to check for min and max values\r\n * @param convertToRightHandedSystem\r\n * @returns min number array and max number array\r\n */\r\n public static _CalculateMinMaxPositions(\r\n positions: FloatArray,\r\n vertexStart: number,\r\n vertexCount: number,\r\n convertToRightHandedSystem: boolean\r\n ): { min: number[]; max: number[] } {\r\n const min = [Infinity, Infinity, Infinity];\r\n const max = [-Infinity, -Infinity, -Infinity];\r\n const positionStrideSize = 3;\r\n let indexOffset: number;\r\n let position: Vector3;\r\n let vector: number[];\r\n\r\n if (vertexCount) {\r\n for (let i = vertexStart, length = vertexStart + vertexCount; i < length; ++i) {\r\n indexOffset = positionStrideSize * i;\r\n\r\n position = Vector3.FromArray(positions, indexOffset);\r\n if (convertToRightHandedSystem) {\r\n _GLTFUtilities._GetRightHandedPositionVector3FromRef(position);\r\n }\r\n vector = position.asArray();\r\n\r\n for (let j = 0; j < positionStrideSize; ++j) {\r\n const num = vector[j];\r\n if (num < min[j]) {\r\n min[j] = num;\r\n }\r\n if (num > max[j]) {\r\n max[j] = num;\r\n }\r\n ++indexOffset;\r\n }\r\n }\r\n }\r\n return { min, max };\r\n }\r\n\r\n /**\r\n * Converts a new right-handed Vector3\r\n * @param vector vector3 array\r\n * @returns right-handed Vector3\r\n */\r\n public static _GetRightHandedPositionVector3(vector: Vector3): Vector3 {\r\n return new Vector3(vector.x, vector.y, -vector.z);\r\n }\r\n\r\n /**\r\n * Converts a Vector3 to right-handed\r\n * @param vector Vector3 to convert to right-handed\r\n */\r\n public static _GetRightHandedPositionVector3FromRef(vector: Vector3) {\r\n vector.z *= -1;\r\n }\r\n\r\n /**\r\n * Converts a three element number array to right-handed\r\n * @param vector number array to convert to right-handed\r\n */\r\n public static _GetRightHandedPositionArray3FromRef(vector: number[]) {\r\n vector[2] *= -1;\r\n }\r\n\r\n /**\r\n * Converts a new right-handed Vector3\r\n * @param vector vector3 array\r\n * @returns right-handed Vector3\r\n */\r\n public static _GetRightHandedNormalVector3(vector: Vector3): Vector3 {\r\n return new Vector3(vector.x, vector.y, -vector.z);\r\n }\r\n\r\n /**\r\n * Converts a Vector3 to right-handed\r\n * @param vector Vector3 to convert to right-handed\r\n */\r\n public static _GetRightHandedNormalVector3FromRef(vector: Vector3) {\r\n vector.z *= -1;\r\n }\r\n\r\n /**\r\n * Converts a three element number array to right-handed\r\n * @param vector number array to convert to right-handed\r\n */\r\n public static _GetRightHandedNormalArray3FromRef(vector: number[]) {\r\n vector[2] *= -1;\r\n }\r\n\r\n /**\r\n * Converts a Vector4 to right-handed\r\n * @param vector Vector4 to convert to right-handed\r\n */\r\n public static _GetRightHandedVector4FromRef(vector: Vector4) {\r\n vector.z *= -1;\r\n vector.w *= -1;\r\n }\r\n\r\n /**\r\n * Converts a Vector4 to right-handed\r\n * @param vector Vector4 to convert to right-handed\r\n */\r\n public static _GetRightHandedArray4FromRef(vector: number[]) {\r\n vector[2] *= -1;\r\n vector[3] *= -1;\r\n }\r\n\r\n /**\r\n * Converts a Quaternion to right-handed\r\n * @param quaternion Source quaternion to convert to right-handed\r\n */\r\n public static _GetRightHandedQuaternionFromRef(quaternion: Quaternion) {\r\n quaternion.x *= -1;\r\n quaternion.y *= -1;\r\n }\r\n\r\n /**\r\n * Converts a Quaternion to right-handed\r\n * @param quaternion Source quaternion to convert to right-handed\r\n */\r\n public static _GetRightHandedQuaternionArrayFromRef(quaternion: number[]) {\r\n quaternion[0] *= -1;\r\n quaternion[1] *= -1;\r\n }\r\n\r\n public static _NormalizeTangentFromRef(tangent: Vector4) {\r\n const length = Math.sqrt(tangent.x * tangent.x + tangent.y * tangent.y + tangent.z * tangent.z);\r\n if (length > 0) {\r\n tangent.x /= length;\r\n tangent.y /= length;\r\n tangent.z /= length;\r\n }\r\n }\r\n\r\n public static _GetDataAccessorElementCount(accessorType: AccessorType) {\r\n switch (accessorType) {\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 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 return 4;\r\n }\r\n }\r\n}\r\n"]}
@@ -1,9 +1,13 @@
1
1
  // Do not edit.
2
2
  import { ShaderStore } from "@babylonjs/core/Engines/shaderStore.js";
3
- var name = "textureTransformPixelShader";
4
- var shader = "precision highp float;varying vec2 vUV;uniform sampler2D textureSampler;uniform mat4 textureTransformMat;void main(void) {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\nvec2 uvTransformed=(textureTransformMat*vec4(vUV.xy,1,1)).xy;gl_FragColor=texture2D(textureSampler,uvTransformed);\n#define CUSTOM_FRAGMENT_MAIN_END\n}";
3
+ const name = "textureTransformPixelShader";
4
+ const shader = `precision highp float;varying vec2 vUV;uniform sampler2D textureSampler;uniform mat4 textureTransformMat;void main(void) {
5
+ #define CUSTOM_FRAGMENT_MAIN_BEGIN
6
+ vec2 uvTransformed=(textureTransformMat*vec4(vUV.xy,1,1)).xy;gl_FragColor=texture2D(textureSampler,uvTransformed);
7
+ #define CUSTOM_FRAGMENT_MAIN_END
8
+ }`;
5
9
  // Sideeffect
6
10
  ShaderStore.ShadersStore[name] = shader;
7
11
  /** @hidden */
8
- export var textureTransformPixelShader = { name: name, shader: shader };
12
+ export const textureTransformPixelShader = { name, shader };
9
13
  //# sourceMappingURL=textureTransform.fragment.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"textureTransform.fragment.js","sourceRoot":"","sources":["../../../../../../../lts/serializers/generated/glTF/2.0/shaders/textureTransform.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AAEvD,IAAM,IAAI,GAAG,6BAA6B,CAAC;AAC3C,IAAM,MAAM,GAAG,yTAIb,CAAC;AACH,aAAa;AACb,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxC,cAAc;AACd,MAAM,CAAC,IAAM,2BAA2B,GAAG,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\n\nconst name = \"textureTransformPixelShader\";\nconst shader = `precision highp float;varying vec2 vUV;uniform sampler2D textureSampler;uniform mat4 textureTransformMat;void main(void) {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\nvec2 uvTransformed=(textureTransformMat*vec4(vUV.xy,1,1)).xy;gl_FragColor=texture2D(textureSampler,uvTransformed);\n#define CUSTOM_FRAGMENT_MAIN_END\n}`;\n// Sideeffect\nShaderStore.ShadersStore[name] = shader;\n/** @hidden */\nexport const textureTransformPixelShader = { name, shader };\n"]}
1
+ {"version":3,"file":"textureTransform.fragment.js","sourceRoot":"","sources":["../../../../../../../lts/serializers/generated/glTF/2.0/shaders/textureTransform.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AAEvD,MAAM,IAAI,GAAG,6BAA6B,CAAC;AAC3C,MAAM,MAAM,GAAG;;;;EAIb,CAAC;AACH,aAAa;AACb,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxC,cAAc;AACd,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\n\nconst name = \"textureTransformPixelShader\";\nconst shader = `precision highp float;varying vec2 vUV;uniform sampler2D textureSampler;uniform mat4 textureTransformMat;void main(void) {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\nvec2 uvTransformed=(textureTransformMat*vec4(vUV.xy,1,1)).xy;gl_FragColor=texture2D(textureSampler,uvTransformed);\n#define CUSTOM_FRAGMENT_MAIN_END\n}`;\n// Sideeffect\nShaderStore.ShadersStore[name] = shader;\n/** @hidden */\nexport const textureTransformPixelShader = { name, shader };\n"]}
@@ -8,36 +8,36 @@ import * as GLTF2 from "../glTF/2.0/index.js";
8
8
  * This is the entry point for the UMD module.
9
9
  * The entry point for a future ESM package should be index.ts
10
10
  */
11
- var globalObject = typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : undefined;
11
+ const globalObject = typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : undefined;
12
12
  if (typeof globalObject !== "undefined") {
13
13
  globalObject.BABYLON = globalObject.BABYLON || {};
14
- var BABYLON_1 = globalObject.BABYLON;
15
- BABYLON_1.GLTF2 = BABYLON_1.GLTF2 || {};
16
- BABYLON_1.GLTF2.Exporter = BABYLON_1.GLTF2.Exporter || {};
17
- BABYLON_1.GLTF2.Exporter.Extensions = BABYLON_1.GLTF2.Exporter.Extensions || {};
18
- var keys = [];
19
- for (var key in Exporters) {
20
- BABYLON_1[key] = Exporters[key];
14
+ const BABYLON = globalObject.BABYLON;
15
+ BABYLON.GLTF2 = BABYLON.GLTF2 || {};
16
+ BABYLON.GLTF2.Exporter = BABYLON.GLTF2.Exporter || {};
17
+ BABYLON.GLTF2.Exporter.Extensions = BABYLON.GLTF2.Exporter.Extensions || {};
18
+ const keys = [];
19
+ for (const key in Exporters) {
20
+ BABYLON[key] = Exporters[key];
21
21
  keys.push(key);
22
22
  }
23
- for (var key in Datas) {
24
- BABYLON_1[key] = Datas[key];
23
+ for (const key in Datas) {
24
+ BABYLON[key] = Datas[key];
25
25
  keys.push(key);
26
26
  }
27
- for (var key in Serializers) {
28
- BABYLON_1[key] = Serializers[key];
27
+ for (const key in Serializers) {
28
+ BABYLON[key] = Serializers[key];
29
29
  keys.push(key);
30
30
  }
31
- for (var key in Extensions) {
32
- BABYLON_1.GLTF2.Exporter.Extensions[key] = Extensions[key];
31
+ for (const key in Extensions) {
32
+ BABYLON.GLTF2.Exporter.Extensions[key] = Extensions[key];
33
33
  keys.push(key);
34
34
  }
35
- for (var key in GLTF2) {
35
+ for (const key in GLTF2) {
36
36
  // Prevent Reassignment.
37
37
  if (keys.indexOf(key) > -1) {
38
38
  continue;
39
39
  }
40
- BABYLON_1.GLTF2.Exporter[key] = GLTF2[key];
40
+ BABYLON.GLTF2.Exporter[key] = GLTF2[key];
41
41
  }
42
42
  }
43
43
  export * from "../glTF/glTFFileExporter.js";
@@ -1 +1 @@
1
- {"version":3,"file":"legacy-glTF2Serializer.js","sourceRoot":"","sources":["../../../../../lts/serializers/generated/legacy/legacy-glTF2Serializer.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,KAAK,SAAS,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,KAAK,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,WAAW,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAC3C;;;GAGG;AACH,IAAM,YAAY,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACjH,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;IAC/B,YAAa,CAAC,OAAO,GAAS,YAAa,CAAC,OAAO,IAAI,EAAE,CAAC;IAChE,IAAM,SAAO,GAAS,YAAa,CAAC,OAAO,CAAC;IAC5C,SAAO,CAAC,KAAK,GAAG,SAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IACpC,SAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IACtD,SAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,SAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;IAC5E,IAAM,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,IAAM,GAAG,IAAI,SAAS,EAAE;QACzB,SAAO,CAAC,GAAG,CAAC,GAAS,SAAU,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAClB;IACD,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;QACrB,SAAO,CAAC,GAAG,CAAC,GAAS,KAAM,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAClB;IACD,KAAK,IAAM,GAAG,IAAI,WAAW,EAAE;QAC3B,SAAO,CAAC,GAAG,CAAC,GAAS,WAAY,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAClB;IACD,KAAK,IAAM,GAAG,IAAI,UAAU,EAAE;QAC1B,SAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,GAAS,UAAW,CAAC,GAAG,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAClB;IACD,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;QACrB,wBAAwB;QACxB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;YACxB,SAAS;SACZ;QACD,SAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAS,KAAM,CAAC,GAAG,CAAC,CAAC;KACnD;CACJ;AACD,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC","sourcesContent":["/* eslint-disable import/no-internal-modules */\nimport * as Exporters from \"../glTF/glTFFileExporter\";\nimport * as Datas from \"../glTF/2.0/glTFData\";\nimport * as Serializers from \"../glTF/2.0/glTFSerializer\";\nimport * as Extensions from \"../glTF/2.0/Extensions/index\";\nimport * as GLTF2 from \"../glTF/2.0/index\";\n/**\n * This is the entry point for the UMD module.\n * The entry point for a future ESM package should be index.ts\n */\nconst globalObject = typeof global !== \"undefined\" ? global : typeof window !== \"undefined\" ? window : undefined;\nif (typeof globalObject !== \"undefined\") {\n (<any>globalObject).BABYLON = (<any>globalObject).BABYLON || {};\n const BABYLON = (<any>globalObject).BABYLON;\n BABYLON.GLTF2 = BABYLON.GLTF2 || {};\n BABYLON.GLTF2.Exporter = BABYLON.GLTF2.Exporter || {};\n BABYLON.GLTF2.Exporter.Extensions = BABYLON.GLTF2.Exporter.Extensions || {};\n const keys = [];\n for (const key in Exporters) {\n BABYLON[key] = (<any>Exporters)[key];\n keys.push(key);\n }\n for (const key in Datas) {\n BABYLON[key] = (<any>Datas)[key];\n keys.push(key);\n }\n for (const key in Serializers) {\n BABYLON[key] = (<any>Serializers)[key];\n keys.push(key);\n }\n for (const key in Extensions) {\n BABYLON.GLTF2.Exporter.Extensions[key] = (<any>Extensions)[key];\n keys.push(key);\n }\n for (const key in GLTF2) {\n // Prevent Reassignment.\n if (keys.indexOf(key) > -1) {\n continue;\n }\n BABYLON.GLTF2.Exporter[key] = (<any>GLTF2)[key];\n }\n}\nexport * from \"../glTF/glTFFileExporter\";\nexport * from \"../glTF/2.0/index\";\n"]}
1
+ {"version":3,"file":"legacy-glTF2Serializer.js","sourceRoot":"","sources":["../../../../../lts/serializers/generated/legacy/legacy-glTF2Serializer.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,KAAK,SAAS,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,KAAK,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,WAAW,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAC3C;;;GAGG;AACH,MAAM,YAAY,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACjH,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;IAC/B,YAAa,CAAC,OAAO,GAAS,YAAa,CAAC,OAAO,IAAI,EAAE,CAAC;IAChE,MAAM,OAAO,GAAS,YAAa,CAAC,OAAO,CAAC;IAC5C,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IACpC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IACtD,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;IAC5E,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;QACzB,OAAO,CAAC,GAAG,CAAC,GAAS,SAAU,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAClB;IACD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,GAAS,KAAM,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAClB;IACD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,GAAS,WAAY,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAClB;IACD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;QAC1B,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,GAAS,UAAW,CAAC,GAAG,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAClB;IACD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;QACrB,wBAAwB;QACxB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;YACxB,SAAS;SACZ;QACD,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAS,KAAM,CAAC,GAAG,CAAC,CAAC;KACnD;CACJ;AACD,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC","sourcesContent":["/* eslint-disable import/no-internal-modules */\nimport * as Exporters from \"../glTF/glTFFileExporter\";\nimport * as Datas from \"../glTF/2.0/glTFData\";\nimport * as Serializers from \"../glTF/2.0/glTFSerializer\";\nimport * as Extensions from \"../glTF/2.0/Extensions/index\";\nimport * as GLTF2 from \"../glTF/2.0/index\";\n/**\n * This is the entry point for the UMD module.\n * The entry point for a future ESM package should be index.ts\n */\nconst globalObject = typeof global !== \"undefined\" ? global : typeof window !== \"undefined\" ? window : undefined;\nif (typeof globalObject !== \"undefined\") {\n (<any>globalObject).BABYLON = (<any>globalObject).BABYLON || {};\n const BABYLON = (<any>globalObject).BABYLON;\n BABYLON.GLTF2 = BABYLON.GLTF2 || {};\n BABYLON.GLTF2.Exporter = BABYLON.GLTF2.Exporter || {};\n BABYLON.GLTF2.Exporter.Extensions = BABYLON.GLTF2.Exporter.Extensions || {};\n const keys = [];\n for (const key in Exporters) {\n BABYLON[key] = (<any>Exporters)[key];\n keys.push(key);\n }\n for (const key in Datas) {\n BABYLON[key] = (<any>Datas)[key];\n keys.push(key);\n }\n for (const key in Serializers) {\n BABYLON[key] = (<any>Serializers)[key];\n keys.push(key);\n }\n for (const key in Extensions) {\n BABYLON.GLTF2.Exporter.Extensions[key] = (<any>Extensions)[key];\n keys.push(key);\n }\n for (const key in GLTF2) {\n // Prevent Reassignment.\n if (keys.indexOf(key) > -1) {\n continue;\n }\n BABYLON.GLTF2.Exporter[key] = (<any>GLTF2)[key];\n }\n}\nexport * from \"../glTF/glTFFileExporter\";\nexport * from \"../glTF/2.0/index\";\n"]}
@@ -4,9 +4,9 @@ import * as Serializers from "../OBJ/index.js";
4
4
  * This is the entry point for the UMD module.
5
5
  * The entry point for a future ESM package should be index.ts
6
6
  */
7
- var globalObject = typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : undefined;
7
+ const globalObject = typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : undefined;
8
8
  if (typeof globalObject !== "undefined") {
9
- for (var serializer in Serializers) {
9
+ for (const serializer in Serializers) {
10
10
  globalObject.BABYLON[serializer] = Serializers[serializer];
11
11
  }
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"legacy-objSerializer.js","sourceRoot":"","sources":["../../../../../lts/serializers/generated/legacy/legacy-objSerializer.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAC5C;;;GAGG;AACH,IAAM,YAAY,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACjH,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;IACrC,KAAK,IAAM,UAAU,IAAI,WAAW,EAAE;QAC5B,YAAa,CAAC,OAAO,CAAC,UAAU,CAAC,GAAS,WAAY,CAAC,UAAU,CAAC,CAAC;KAC5E;CACJ;AACD,cAAc,cAAc,CAAC","sourcesContent":["/* eslint-disable import/no-internal-modules */\nimport * as Serializers from \"../OBJ/index\";\n/**\n * This is the entry point for the UMD module.\n * The entry point for a future ESM package should be index.ts\n */\nconst globalObject = typeof global !== \"undefined\" ? global : typeof window !== \"undefined\" ? window : undefined;\nif (typeof globalObject !== \"undefined\") {\n for (const serializer in Serializers) {\n (<any>globalObject).BABYLON[serializer] = (<any>Serializers)[serializer];\n }\n}\nexport * from \"../OBJ/index\";\n"]}
1
+ {"version":3,"file":"legacy-objSerializer.js","sourceRoot":"","sources":["../../../../../lts/serializers/generated/legacy/legacy-objSerializer.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAC5C;;;GAGG;AACH,MAAM,YAAY,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACjH,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;IACrC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;QAC5B,YAAa,CAAC,OAAO,CAAC,UAAU,CAAC,GAAS,WAAY,CAAC,UAAU,CAAC,CAAC;KAC5E;CACJ;AACD,cAAc,cAAc,CAAC","sourcesContent":["/* eslint-disable import/no-internal-modules */\nimport * as Serializers from \"../OBJ/index\";\n/**\n * This is the entry point for the UMD module.\n * The entry point for a future ESM package should be index.ts\n */\nconst globalObject = typeof global !== \"undefined\" ? global : typeof window !== \"undefined\" ? window : undefined;\nif (typeof globalObject !== \"undefined\") {\n for (const serializer in Serializers) {\n (<any>globalObject).BABYLON[serializer] = (<any>Serializers)[serializer];\n }\n}\nexport * from \"../OBJ/index\";\n"]}
@@ -4,9 +4,9 @@ import * as Serializers from "../stl/index.js";
4
4
  * This is the entry point for the UMD module.
5
5
  * The entry point for a future ESM package should be index.ts
6
6
  */
7
- var globalObject = typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : undefined;
7
+ const globalObject = typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : undefined;
8
8
  if (typeof globalObject !== "undefined") {
9
- for (var serializer in Serializers) {
9
+ for (const serializer in Serializers) {
10
10
  globalObject.BABYLON[serializer] = Serializers[serializer];
11
11
  }
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"legacy-stlSerializer.js","sourceRoot":"","sources":["../../../../../lts/serializers/generated/legacy/legacy-stlSerializer.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAC5C;;;GAGG;AACH,IAAM,YAAY,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACjH,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;IACrC,KAAK,IAAM,UAAU,IAAI,WAAW,EAAE;QAC5B,YAAa,CAAC,OAAO,CAAC,UAAU,CAAC,GAAS,WAAY,CAAC,UAAU,CAAC,CAAC;KAC5E;CACJ;AACD,cAAc,cAAc,CAAC","sourcesContent":["/* eslint-disable import/no-internal-modules */\nimport * as Serializers from \"../stl/index\";\n/**\n * This is the entry point for the UMD module.\n * The entry point for a future ESM package should be index.ts\n */\nconst globalObject = typeof global !== \"undefined\" ? global : typeof window !== \"undefined\" ? window : undefined;\nif (typeof globalObject !== \"undefined\") {\n for (const serializer in Serializers) {\n (<any>globalObject).BABYLON[serializer] = (<any>Serializers)[serializer];\n }\n}\nexport * from \"../stl/index\";\n"]}
1
+ {"version":3,"file":"legacy-stlSerializer.js","sourceRoot":"","sources":["../../../../../lts/serializers/generated/legacy/legacy-stlSerializer.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAC5C;;;GAGG;AACH,MAAM,YAAY,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACjH,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;IACrC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;QAC5B,YAAa,CAAC,OAAO,CAAC,UAAU,CAAC,GAAS,WAAY,CAAC,UAAU,CAAC,CAAC;KAC5E;CACJ;AACD,cAAc,cAAc,CAAC","sourcesContent":["/* eslint-disable import/no-internal-modules */\nimport * as Serializers from \"../stl/index\";\n/**\n * This is the entry point for the UMD module.\n * The entry point for a future ESM package should be index.ts\n */\nconst globalObject = typeof global !== \"undefined\" ? global : typeof window !== \"undefined\" ? window : undefined;\nif (typeof globalObject !== \"undefined\") {\n for (const serializer in Serializers) {\n (<any>globalObject).BABYLON[serializer] = (<any>Serializers)[serializer];\n }\n}\nexport * from \"../stl/index\";\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@babylonjs/serializers",
3
- "version": "5.19.0",
3
+ "version": "5.22.0",
4
4
  "main": "index.js",
5
5
  "module": "index.js",
6
6
  "types": "index.d.ts",
@@ -18,14 +18,11 @@
18
18
  "postcompile": "build-tools -c add-js-to-es6",
19
19
  "prepublishOnly": "build-tools -c prepare-es6-build"
20
20
  },
21
- "dependencies": {
22
- "tslib": "^2.4.0"
23
- },
24
21
  "devDependencies": {
25
- "@babylonjs/core": "^5.19.0",
22
+ "@babylonjs/core": "^5.22.0",
26
23
  "@dev/build-tools": "^1.0.0",
27
24
  "@lts/serializers": "^1.0.0",
28
- "babylonjs-gltf2interface": "^5.19.0",
25
+ "babylonjs-gltf2interface": "^5.22.0",
29
26
  "rimraf": "^3.0.2",
30
27
  "typescript": "^4.4.4"
31
28
  },
@@ -3,9 +3,7 @@ import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
3
3
  /**
4
4
  * Class for generating STL data from a Babylon scene.
5
5
  */
6
- var STLExport = /** @class */ (function () {
7
- function STLExport() {
8
- }
6
+ export class STLExport {
9
7
  /**
10
8
  * Exports the geometry of a Mesh array in .STL file format (ASCII)
11
9
  * @param meshes list defines the mesh to serialize
@@ -16,45 +14,40 @@ var STLExport = /** @class */ (function () {
16
14
  * @param doNotBakeTransform toggle if meshes transforms should be baked or not.
17
15
  * @returns the STL as UTF8 string
18
16
  */
19
- STLExport.CreateSTL = function (meshes, download, fileName, binary, isLittleEndian, doNotBakeTransform) {
17
+ static CreateSTL(meshes, download = true, fileName = "stlmesh", binary = false, isLittleEndian = true, doNotBakeTransform = false) {
20
18
  //Binary support adapted from https://gist.github.com/paulkaplan/6d5f0ab2c7e8fdc68a61
21
- if (download === void 0) { download = true; }
22
- if (fileName === void 0) { fileName = "stlmesh"; }
23
- if (binary === void 0) { binary = false; }
24
- if (isLittleEndian === void 0) { isLittleEndian = true; }
25
- if (doNotBakeTransform === void 0) { doNotBakeTransform = false; }
26
- var getFaceData = function (indices, vertices, i) {
27
- var id = [indices[i] * 3, indices[i + 1] * 3, indices[i + 2] * 3];
28
- var v = [
19
+ const getFaceData = function (indices, vertices, i) {
20
+ const id = [indices[i] * 3, indices[i + 1] * 3, indices[i + 2] * 3];
21
+ const v = [
29
22
  new Vector3(vertices[id[0]], vertices[id[0] + 2], vertices[id[0] + 1]),
30
23
  new Vector3(vertices[id[1]], vertices[id[1] + 2], vertices[id[1] + 1]),
31
24
  new Vector3(vertices[id[2]], vertices[id[2] + 2], vertices[id[2] + 1]),
32
25
  ];
33
- var p1p2 = v[0].subtract(v[1]);
34
- var p3p2 = v[2].subtract(v[1]);
35
- var n = Vector3.Cross(p3p2, p1p2).normalize();
36
- return { v: v, n: n };
26
+ const p1p2 = v[0].subtract(v[1]);
27
+ const p3p2 = v[2].subtract(v[1]);
28
+ const n = Vector3.Cross(p3p2, p1p2).normalize();
29
+ return { v, n };
37
30
  };
38
- var writeVector = function (dataview, offset, vector, isLittleEndian) {
31
+ const writeVector = function (dataview, offset, vector, isLittleEndian) {
39
32
  offset = writeFloat(dataview, offset, vector.x, isLittleEndian);
40
33
  offset = writeFloat(dataview, offset, vector.y, isLittleEndian);
41
34
  return writeFloat(dataview, offset, vector.z, isLittleEndian);
42
35
  };
43
- var writeFloat = function (dataview, offset, value, isLittleEndian) {
36
+ const writeFloat = function (dataview, offset, value, isLittleEndian) {
44
37
  dataview.setFloat32(offset, value, isLittleEndian);
45
38
  return offset + 4;
46
39
  };
47
- var data;
48
- var faceCount = 0;
49
- var offset = 0;
40
+ let data;
41
+ let faceCount = 0;
42
+ let offset = 0;
50
43
  if (binary) {
51
- for (var i = 0; i < meshes.length; i++) {
52
- var mesh = meshes[i];
53
- var indices = mesh.getIndices();
44
+ for (let i = 0; i < meshes.length; i++) {
45
+ const mesh = meshes[i];
46
+ const indices = mesh.getIndices();
54
47
  faceCount += indices ? indices.length / 3 : 0;
55
48
  }
56
- var bufferSize = 84 + 50 * faceCount;
57
- var buffer = new ArrayBuffer(bufferSize);
49
+ const bufferSize = 84 + 50 * faceCount;
50
+ const buffer = new ArrayBuffer(bufferSize);
58
51
  data = new DataView(buffer);
59
52
  offset += 80;
60
53
  data.setUint32(offset, faceCount, isLittleEndian);
@@ -63,15 +56,15 @@ var STLExport = /** @class */ (function () {
63
56
  else {
64
57
  data = "solid stlmesh\r\n";
65
58
  }
66
- for (var i = 0; i < meshes.length; i++) {
67
- var mesh = meshes[i];
59
+ for (let i = 0; i < meshes.length; i++) {
60
+ const mesh = meshes[i];
68
61
  if (!doNotBakeTransform) {
69
62
  mesh.bakeCurrentTransformIntoVertices();
70
63
  }
71
- var vertices = mesh.getVerticesData(VertexBuffer.PositionKind) || [];
72
- var indices = mesh.getIndices() || [];
73
- for (var i_1 = 0; i_1 < indices.length; i_1 += 3) {
74
- var fd = getFaceData(indices, vertices, i_1);
64
+ const vertices = mesh.getVerticesData(VertexBuffer.PositionKind) || [];
65
+ const indices = mesh.getIndices() || [];
66
+ for (let i = 0; i < indices.length; i += 3) {
67
+ const fd = getFaceData(indices, vertices, i);
75
68
  if (binary) {
76
69
  offset = writeVector(data, offset, fd.n, isLittleEndian);
77
70
  offset = writeVector(data, offset, fd.v[0], isLittleEndian);
@@ -94,15 +87,13 @@ var STLExport = /** @class */ (function () {
94
87
  data += "endsolid stlmesh";
95
88
  }
96
89
  if (download) {
97
- var a = document.createElement("a");
98
- var blob = new Blob([data], { type: "application/octet-stream" });
90
+ const a = document.createElement("a");
91
+ const blob = new Blob([data], { type: "application/octet-stream" });
99
92
  a.href = window.URL.createObjectURL(blob);
100
93
  a.download = fileName + ".stl";
101
94
  a.click();
102
95
  }
103
96
  return data;
104
- };
105
- return STLExport;
106
- }());
107
- export { STLExport };
97
+ }
98
+ }
108
99
  //# sourceMappingURL=stlSerializer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stlSerializer.js","sourceRoot":"","sources":["../../../../../lts/serializers/generated/stl/stlSerializer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Mesh } from \"core/Meshes/mesh\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\n\r\n/**\r\n * Class for generating STL data from a Babylon scene.\r\n */\r\nexport class STLExport {\r\n /**\r\n * Exports the geometry of a Mesh array in .STL file format (ASCII)\r\n * @param meshes list defines the mesh to serialize\r\n * @param download triggers the automatic download of the file.\r\n * @param fileName changes the downloads fileName.\r\n * @param binary changes the STL to a binary type.\r\n * @param isLittleEndian toggle for binary type exporter.\r\n * @param doNotBakeTransform toggle if meshes transforms should be baked or not.\r\n * @returns the STL as UTF8 string\r\n */\r\n public static CreateSTL(\r\n meshes: Mesh[],\r\n download: boolean = true,\r\n fileName: string = \"stlmesh\",\r\n binary: boolean = false,\r\n isLittleEndian: boolean = true,\r\n doNotBakeTransform: boolean = false\r\n ): any {\r\n //Binary support adapted from https://gist.github.com/paulkaplan/6d5f0ab2c7e8fdc68a61\r\n\r\n const getFaceData = function (indices: any, vertices: any, i: number) {\r\n const id = [indices[i] * 3, indices[i + 1] * 3, indices[i + 2] * 3];\r\n const v = [\r\n new Vector3(vertices[id[0]], vertices[id[0] + 2], vertices[id[0] + 1]),\r\n new Vector3(vertices[id[1]], vertices[id[1] + 2], vertices[id[1] + 1]),\r\n new Vector3(vertices[id[2]], vertices[id[2] + 2], vertices[id[2] + 1]),\r\n ];\r\n const p1p2 = v[0].subtract(v[1]);\r\n const p3p2 = v[2].subtract(v[1]);\r\n const n = Vector3.Cross(p3p2, p1p2).normalize();\r\n\r\n return { v, n };\r\n };\r\n\r\n const writeVector = function (dataview: any, offset: number, vector: Vector3, isLittleEndian: boolean) {\r\n offset = writeFloat(dataview, offset, vector.x, isLittleEndian);\r\n offset = writeFloat(dataview, offset, vector.y, isLittleEndian);\r\n return writeFloat(dataview, offset, vector.z, isLittleEndian);\r\n };\r\n\r\n const writeFloat = function (dataview: any, offset: number, value: number, isLittleEndian: boolean) {\r\n dataview.setFloat32(offset, value, isLittleEndian);\r\n return offset + 4;\r\n };\r\n\r\n let data;\r\n\r\n let faceCount = 0;\r\n let offset = 0;\r\n\r\n if (binary) {\r\n for (let i = 0; i < meshes.length; i++) {\r\n const mesh = meshes[i];\r\n const indices = mesh.getIndices();\r\n faceCount += indices ? indices.length / 3 : 0;\r\n }\r\n\r\n const bufferSize = 84 + 50 * faceCount;\r\n const buffer = new ArrayBuffer(bufferSize);\r\n data = new DataView(buffer);\r\n\r\n offset += 80;\r\n data.setUint32(offset, faceCount, isLittleEndian);\r\n offset += 4;\r\n } else {\r\n data = \"solid stlmesh\\r\\n\";\r\n }\r\n\r\n for (let i = 0; i < meshes.length; i++) {\r\n const mesh = meshes[i];\r\n if (!doNotBakeTransform) {\r\n mesh.bakeCurrentTransformIntoVertices();\r\n }\r\n const vertices = mesh.getVerticesData(VertexBuffer.PositionKind) || [];\r\n const indices = mesh.getIndices() || [];\r\n\r\n for (let i = 0; i < indices.length; i += 3) {\r\n const fd = getFaceData(indices, vertices, i);\r\n\r\n if (binary) {\r\n offset = writeVector(data, offset, fd.n, isLittleEndian);\r\n offset = writeVector(data, offset, fd.v[0], isLittleEndian);\r\n offset = writeVector(data, offset, fd.v[1], isLittleEndian);\r\n offset = writeVector(data, offset, fd.v[2], isLittleEndian);\r\n offset += 2;\r\n } else {\r\n data += \"facet normal \" + fd.n.x + \" \" + fd.n.y + \" \" + fd.n.z + \"\\r\\n\";\r\n data += \"\\touter loop\\r\\n\";\r\n data += \"\\t\\tvertex \" + fd.v[0].x + \" \" + fd.v[0].y + \" \" + fd.v[0].z + \"\\r\\n\";\r\n data += \"\\t\\tvertex \" + fd.v[1].x + \" \" + fd.v[1].y + \" \" + fd.v[1].z + \"\\r\\n\";\r\n data += \"\\t\\tvertex \" + fd.v[2].x + \" \" + fd.v[2].y + \" \" + fd.v[2].z + \"\\r\\n\";\r\n data += \"\\tendloop\\r\\n\";\r\n data += \"endfacet\\r\\n\";\r\n }\r\n }\r\n }\r\n\r\n if (!binary) {\r\n data += \"endsolid stlmesh\";\r\n }\r\n\r\n if (download) {\r\n const a = document.createElement(\"a\");\r\n const blob = new Blob([data], { type: \"application/octet-stream\" });\r\n a.href = window.URL.createObjectURL(blob);\r\n a.download = fileName + \".stl\";\r\n a.click();\r\n }\r\n\r\n return data;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"stlSerializer.js","sourceRoot":"","sources":["../../../../../lts/serializers/generated/stl/stlSerializer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,0CAA4B;AACnD,OAAO,EAAE,OAAO,EAAE,6CAA+B;AAEjD;;GAEG;AACH,MAAM,OAAO,SAAS;IAClB;;;;;;;;;OASG;IACI,MAAM,CAAC,SAAS,CACnB,MAAc,EACd,WAAoB,IAAI,EACxB,WAAmB,SAAS,EAC5B,SAAkB,KAAK,EACvB,iBAA0B,IAAI,EAC9B,qBAA8B,KAAK;QAEnC,qFAAqF;QAErF,MAAM,WAAW,GAAG,UAAU,OAAY,EAAE,QAAa,EAAE,CAAS;YAChE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpE,MAAM,CAAC,GAAG;gBACN,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtE,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtE,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;aACzE,CAAC;YACF,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;YAEhD,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACpB,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,UAAU,QAAa,EAAE,MAAc,EAAE,MAAe,EAAE,cAAuB;YACjG,MAAM,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;YAChE,MAAM,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;YAChE,OAAO,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAClE,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,UAAU,QAAa,EAAE,MAAc,EAAE,KAAa,EAAE,cAAuB;YAC9F,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;YACnD,OAAO,MAAM,GAAG,CAAC,CAAC;QACtB,CAAC,CAAC;QAEF,IAAI,IAAI,CAAC;QAET,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,IAAI,MAAM,EAAE;YACR,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClC,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACjD;YAED,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;YAE5B,MAAM,IAAI,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;YAClD,MAAM,IAAI,CAAC,CAAC;SACf;aAAM;YACH,IAAI,GAAG,mBAAmB,CAAC;SAC9B;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,kBAAkB,EAAE;gBACrB,IAAI,CAAC,gCAAgC,EAAE,CAAC;aAC3C;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACvE,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;YAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;gBACxC,MAAM,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAE7C,IAAI,MAAM,EAAE;oBACR,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;oBACzD,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;oBAC5D,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;oBAC5D,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;oBAC5D,MAAM,IAAI,CAAC,CAAC;iBACf;qBAAM;oBACH,IAAI,IAAI,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;oBACxE,IAAI,IAAI,kBAAkB,CAAC;oBAC3B,IAAI,IAAI,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;oBAC/E,IAAI,IAAI,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;oBAC/E,IAAI,IAAI,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;oBAC/E,IAAI,IAAI,eAAe,CAAC;oBACxB,IAAI,IAAI,cAAc,CAAC;iBAC1B;aACJ;SACJ;QAED,IAAI,CAAC,MAAM,EAAE;YACT,IAAI,IAAI,kBAAkB,CAAC;SAC9B;QAED,IAAI,QAAQ,EAAE;YACV,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC;YACpE,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC,CAAC,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;YAC/B,CAAC,CAAC,KAAK,EAAE,CAAC;SACb;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ","sourcesContent":["import type { Mesh } from \"core/Meshes/mesh\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\n\r\n/**\r\n * Class for generating STL data from a Babylon scene.\r\n */\r\nexport class STLExport {\r\n /**\r\n * Exports the geometry of a Mesh array in .STL file format (ASCII)\r\n * @param meshes list defines the mesh to serialize\r\n * @param download triggers the automatic download of the file.\r\n * @param fileName changes the downloads fileName.\r\n * @param binary changes the STL to a binary type.\r\n * @param isLittleEndian toggle for binary type exporter.\r\n * @param doNotBakeTransform toggle if meshes transforms should be baked or not.\r\n * @returns the STL as UTF8 string\r\n */\r\n public static CreateSTL(\r\n meshes: Mesh[],\r\n download: boolean = true,\r\n fileName: string = \"stlmesh\",\r\n binary: boolean = false,\r\n isLittleEndian: boolean = true,\r\n doNotBakeTransform: boolean = false\r\n ): any {\r\n //Binary support adapted from https://gist.github.com/paulkaplan/6d5f0ab2c7e8fdc68a61\r\n\r\n const getFaceData = function (indices: any, vertices: any, i: number) {\r\n const id = [indices[i] * 3, indices[i + 1] * 3, indices[i + 2] * 3];\r\n const v = [\r\n new Vector3(vertices[id[0]], vertices[id[0] + 2], vertices[id[0] + 1]),\r\n new Vector3(vertices[id[1]], vertices[id[1] + 2], vertices[id[1] + 1]),\r\n new Vector3(vertices[id[2]], vertices[id[2] + 2], vertices[id[2] + 1]),\r\n ];\r\n const p1p2 = v[0].subtract(v[1]);\r\n const p3p2 = v[2].subtract(v[1]);\r\n const n = Vector3.Cross(p3p2, p1p2).normalize();\r\n\r\n return { v, n };\r\n };\r\n\r\n const writeVector = function (dataview: any, offset: number, vector: Vector3, isLittleEndian: boolean) {\r\n offset = writeFloat(dataview, offset, vector.x, isLittleEndian);\r\n offset = writeFloat(dataview, offset, vector.y, isLittleEndian);\r\n return writeFloat(dataview, offset, vector.z, isLittleEndian);\r\n };\r\n\r\n const writeFloat = function (dataview: any, offset: number, value: number, isLittleEndian: boolean) {\r\n dataview.setFloat32(offset, value, isLittleEndian);\r\n return offset + 4;\r\n };\r\n\r\n let data;\r\n\r\n let faceCount = 0;\r\n let offset = 0;\r\n\r\n if (binary) {\r\n for (let i = 0; i < meshes.length; i++) {\r\n const mesh = meshes[i];\r\n const indices = mesh.getIndices();\r\n faceCount += indices ? indices.length / 3 : 0;\r\n }\r\n\r\n const bufferSize = 84 + 50 * faceCount;\r\n const buffer = new ArrayBuffer(bufferSize);\r\n data = new DataView(buffer);\r\n\r\n offset += 80;\r\n data.setUint32(offset, faceCount, isLittleEndian);\r\n offset += 4;\r\n } else {\r\n data = \"solid stlmesh\\r\\n\";\r\n }\r\n\r\n for (let i = 0; i < meshes.length; i++) {\r\n const mesh = meshes[i];\r\n if (!doNotBakeTransform) {\r\n mesh.bakeCurrentTransformIntoVertices();\r\n }\r\n const vertices = mesh.getVerticesData(VertexBuffer.PositionKind) || [];\r\n const indices = mesh.getIndices() || [];\r\n\r\n for (let i = 0; i < indices.length; i += 3) {\r\n const fd = getFaceData(indices, vertices, i);\r\n\r\n if (binary) {\r\n offset = writeVector(data, offset, fd.n, isLittleEndian);\r\n offset = writeVector(data, offset, fd.v[0], isLittleEndian);\r\n offset = writeVector(data, offset, fd.v[1], isLittleEndian);\r\n offset = writeVector(data, offset, fd.v[2], isLittleEndian);\r\n offset += 2;\r\n } else {\r\n data += \"facet normal \" + fd.n.x + \" \" + fd.n.y + \" \" + fd.n.z + \"\\r\\n\";\r\n data += \"\\touter loop\\r\\n\";\r\n data += \"\\t\\tvertex \" + fd.v[0].x + \" \" + fd.v[0].y + \" \" + fd.v[0].z + \"\\r\\n\";\r\n data += \"\\t\\tvertex \" + fd.v[1].x + \" \" + fd.v[1].y + \" \" + fd.v[1].z + \"\\r\\n\";\r\n data += \"\\t\\tvertex \" + fd.v[2].x + \" \" + fd.v[2].y + \" \" + fd.v[2].z + \"\\r\\n\";\r\n data += \"\\tendloop\\r\\n\";\r\n data += \"endfacet\\r\\n\";\r\n }\r\n }\r\n }\r\n\r\n if (!binary) {\r\n data += \"endsolid stlmesh\";\r\n }\r\n\r\n if (download) {\r\n const a = document.createElement(\"a\");\r\n const blob = new Blob([data], { type: \"application/octet-stream\" });\r\n a.href = window.URL.createObjectURL(blob);\r\n a.download = fileName + \".stl\";\r\n a.click();\r\n }\r\n\r\n return data;\r\n }\r\n}\r\n"]}