@onerjs/serializers 8.45.9 → 8.46.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/3MF/3mfSerializer.js.map +1 -1
- package/3MF/core/model/3mf.builder.d.ts +4 -7
- package/3MF/core/model/3mf.builder.js +2 -1
- package/3MF/core/model/3mf.builder.js.map +1 -1
- package/3MF/core/model/3mf.d.ts +1 -2
- package/3MF/core/model/3mf.js +1 -1
- package/3MF/core/model/3mf.js.map +1 -1
- package/3MF/core/model/3mf.opc.d.ts +2 -2
- package/3MF/core/model/3mf.opc.interfaces.d.ts +1 -1
- package/3MF/core/model/3mf.opc.interfaces.js.map +1 -1
- package/3MF/core/model/3mf.opc.js +1 -1
- package/3MF/core/model/3mf.opc.js.map +1 -1
- package/3MF/core/model/3mf.serializer.d.ts +1 -2
- package/3MF/core/model/3mf.serializer.js.map +1 -1
- package/3MF/core/xml/xml.builder.bytes.d.ts +1 -1
- package/3MF/core/xml/xml.builder.bytes.js.map +1 -1
- package/3MF/core/xml/xml.builder.d.ts +1 -1
- package/3MF/core/xml/xml.builder.js.map +1 -1
- package/3MF/core/xml/xml.builder.string.d.ts +1 -1
- package/3MF/core/xml/xml.builder.string.js.map +1 -1
- package/3MF/core/xml/xml.interfaces.d.ts +1 -1
- package/3MF/core/xml/xml.interfaces.js.map +1 -1
- package/3MF/core/xml/xml.serializer.format.d.ts +1 -1
- package/3MF/core/xml/xml.serializer.format.js.map +1 -1
- package/BVH/bvhSerializer.d.ts +1 -1
- package/BVH/bvhSerializer.js.map +1 -1
- package/OBJ/objSerializer.d.ts +1 -1
- package/OBJ/objSerializer.js.map +1 -1
- package/USDZ/usdzExporter.d.ts +2 -2
- package/USDZ/usdzExporter.js.map +1 -1
- package/exportUtils.d.ts +1 -1
- package/exportUtils.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_lights_area.d.ts +4 -4
- package/glTF/2.0/Extensions/EXT_lights_area.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.d.ts +5 -5
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_texture_avif.d.ts +1 -1
- package/glTF/2.0/Extensions/EXT_texture_avif.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_texture_webp.d.ts +1 -1
- package/glTF/2.0/Extensions/EXT_texture_webp.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.d.ts +3 -3
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_lights_punctual.d.ts +4 -4
- package/glTF/2.0/Extensions/KHR_lights_punctual.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_anisotropy.d.ts +4 -4
- package/glTF/2.0/Extensions/KHR_materials_anisotropy.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.d.ts +4 -4
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_coat.d.ts +4 -4
- package/glTF/2.0/Extensions/KHR_materials_coat.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.d.ts +4 -4
- package/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.d.ts +4 -4
- package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_dispersion.d.ts +3 -3
- package/glTF/2.0/Extensions/KHR_materials_dispersion.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.d.ts +3 -3
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_fuzz.d.ts +4 -4
- package/glTF/2.0/Extensions/KHR_materials_fuzz.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_ior.d.ts +3 -3
- package/glTF/2.0/Extensions/KHR_materials_ior.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_iridescence.d.ts +4 -4
- package/glTF/2.0/Extensions/KHR_materials_iridescence.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_openpbr.d.ts +3 -3
- package/glTF/2.0/Extensions/KHR_materials_openpbr.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_sheen.d.ts +4 -4
- package/glTF/2.0/Extensions/KHR_materials_sheen.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_specular.d.ts +4 -4
- package/glTF/2.0/Extensions/KHR_materials_specular.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_transmission.d.ts +4 -4
- package/glTF/2.0/Extensions/KHR_materials_transmission.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_unlit.d.ts +3 -3
- package/glTF/2.0/Extensions/KHR_materials_unlit.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_volume.d.ts +4 -4
- package/glTF/2.0/Extensions/KHR_materials_volume.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_volume_scatter.d.ts +4 -4
- package/glTF/2.0/Extensions/KHR_materials_volume_scatter.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_texture_basisu.d.ts +1 -1
- package/glTF/2.0/Extensions/KHR_texture_basisu.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_texture_transform.d.ts +3 -3
- package/glTF/2.0/Extensions/KHR_texture_transform.js.map +1 -1
- package/glTF/2.0/bufferManager.d.ts +2 -2
- package/glTF/2.0/bufferManager.js.map +1 -1
- package/glTF/2.0/dataWriter.d.ts +1 -1
- package/glTF/2.0/dataWriter.js.map +1 -1
- package/glTF/2.0/glTFAnimation.d.ts +5 -6
- package/glTF/2.0/glTFAnimation.js.map +1 -1
- package/glTF/2.0/glTFData.js.map +1 -1
- package/glTF/2.0/glTFExporter.d.ts +7 -7
- package/glTF/2.0/glTFExporter.js.map +1 -1
- package/glTF/2.0/glTFExporterExtension.d.ts +8 -8
- package/glTF/2.0/glTFExporterExtension.js.map +1 -1
- package/glTF/2.0/glTFMaterialExporter.d.ts +5 -5
- package/glTF/2.0/glTFMaterialExporter.js.map +1 -1
- package/glTF/2.0/glTFMorphTargetsUtilities.d.ts +4 -4
- package/glTF/2.0/glTFMorphTargetsUtilities.js.map +1 -1
- package/glTF/2.0/glTFSerializer.d.ts +4 -4
- package/glTF/2.0/glTFSerializer.js.map +1 -1
- package/glTF/2.0/glTFUtilities.d.ts +7 -9
- package/glTF/2.0/glTFUtilities.js.map +1 -1
- package/legacy/legacy-3mfSerializer.js +3 -3
- package/legacy/legacy-3mfSerializer.js.map +1 -1
- package/legacy/legacy-bvhSerializer.js +3 -3
- package/legacy/legacy-bvhSerializer.js.map +1 -1
- package/legacy/legacy-glTF2Serializer.js +5 -4
- package/legacy/legacy-glTF2Serializer.js.map +1 -1
- package/legacy/legacy-objSerializer.js +3 -3
- package/legacy/legacy-objSerializer.js.map +1 -1
- package/legacy/legacy-stlSerializer.js +3 -3
- package/legacy/legacy-stlSerializer.js.map +1 -1
- package/legacy/legacy-usdzSerializer.js +3 -3
- package/legacy/legacy-usdzSerializer.js.map +1 -1
- package/legacy/legacy.js +0 -1
- package/legacy/legacy.js.map +1 -1
- package/package.json +4 -4
- package/stl/stlSerializer.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glTFMorphTargetsUtilities.js","sourceRoot":"","sources":["../../../../../dev/serializers/src/glTF/2.0/glTFMorphTargetsUtilities.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IBufferView, IAccessor } from \"babylonjs-gltf2interface\";\r\nimport { AccessorComponentType, AccessorType } from \"babylonjs-gltf2interface\";\r\nimport type { MorphTarget } from \"core/Morph/morphTarget\";\r\nimport type { BufferManager } from \"./bufferManager\";\r\n\r\nimport { NormalizeTangent } from \"./glTFUtilities\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport { Vector3, Vector4 } from \"core/Maths/math.vector\";\r\nimport { Tools } from \"core/Misc/tools\";\r\n\r\n/**\r\n * Interface to store morph target information.\r\n * @internal\r\n */\r\nexport interface IMorphTargetData {\r\n attributes: Record<string, number>;\r\n influence: number;\r\n name: string;\r\n}\r\n\r\nexport function BuildMorphTargetBuffers(\r\n morphTarget: MorphTarget,\r\n mesh: AbstractMesh,\r\n bufferManager: BufferManager,\r\n bufferViews: IBufferView[],\r\n accessors: IAccessor[],\r\n convertToRightHanded: boolean\r\n): IMorphTargetData {\r\n const result: IMorphTargetData = {\r\n attributes: {},\r\n influence: morphTarget.influence,\r\n name: morphTarget.name,\r\n };\r\n\r\n const geometry = mesh.geometry;\r\n if (!geometry) {\r\n Tools.Warn(\"Attempted to export morph target data from a mesh without geometry. This should not happen.\");\r\n return result;\r\n }\r\n\r\n const flipX = convertToRightHanded ? -1 : 1;\r\n const floatSize = 4;\r\n const difference = Vector3.Zero();\r\n let vertexStart: number;\r\n let vertexCount: number;\r\n\r\n if (morphTarget.hasPositions) {\r\n const morphPositions = morphTarget.getPositions()!;\r\n const originalPositions = geometry.getVerticesData(VertexBuffer.PositionKind); // Bypasses any instance data of mesh\r\n\r\n if (originalPositions) {\r\n const positionData = new Float32Array(originalPositions.length);\r\n const min = [Infinity, Infinity, Infinity];\r\n const max = [-Infinity, -Infinity, -Infinity];\r\n vertexCount = originalPositions.length / 3;\r\n vertexStart = 0;\r\n for (let i = vertexStart; i < vertexCount; ++i) {\r\n const originalPosition = Vector3.FromArray(originalPositions, i * 3);\r\n const morphPosition = Vector3.FromArray(morphPositions, i * 3);\r\n morphPosition.subtractToRef(originalPosition, difference);\r\n difference.x *= flipX;\r\n\r\n min[0] = Math.min(min[0], difference.x);\r\n max[0] = Math.max(max[0], difference.x);\r\n\r\n min[1] = Math.min(min[1], difference.y);\r\n max[1] = Math.max(max[1], difference.y);\r\n\r\n min[2] = Math.min(min[2], difference.z);\r\n max[2] = Math.max(max[2], difference.z);\r\n\r\n positionData[i * 3] = difference.x;\r\n positionData[i * 3 + 1] = difference.y;\r\n positionData[i * 3 + 2] = difference.z;\r\n }\r\n\r\n const bufferView = bufferManager.createBufferView(positionData, floatSize * 3);\r\n const accessor = bufferManager.createAccessor(bufferView, AccessorType.VEC3, AccessorComponentType.FLOAT, morphPositions.length / 3, 0, { min, max });\r\n accessors.push(accessor);\r\n result.attributes[\"POSITION\"] = accessors.length - 1;\r\n } else {\r\n Tools.Warn(`Morph target positions for mesh ${mesh.name} were not exported. Mesh does not have position vertex data`);\r\n }\r\n }\r\n\r\n if (morphTarget.hasNormals) {\r\n const morphNormals = morphTarget.getNormals()!;\r\n const originalNormals = geometry.getVerticesData(VertexBuffer.NormalKind);\r\n\r\n if (originalNormals) {\r\n const normalData = new Float32Array(originalNormals.length);\r\n vertexCount = originalNormals.length / 3;\r\n vertexStart = 0;\r\n for (let i = vertexStart; i < vertexCount; ++i) {\r\n const originalNormal = Vector3.FromArray(originalNormals, i * 3).normalize();\r\n const morphNormal = Vector3.FromArray(morphNormals, i * 3).normalize();\r\n morphNormal.subtractToRef(originalNormal, difference);\r\n\r\n normalData[i * 3] = difference.x * flipX;\r\n normalData[i * 3 + 1] = difference.y;\r\n normalData[i * 3 + 2] = difference.z;\r\n }\r\n\r\n const bufferView = bufferManager.createBufferView(normalData, floatSize * 3);\r\n const accessor = bufferManager.createAccessor(bufferView, AccessorType.VEC3, AccessorComponentType.FLOAT, morphNormals.length / 3, 0);\r\n accessors.push(accessor);\r\n result.attributes[\"NORMAL\"] = accessors.length - 1;\r\n } else {\r\n Tools.Warn(`Morph target normals for mesh ${mesh.name} were not exported. Mesh does not have normals vertex data`);\r\n }\r\n }\r\n\r\n if (morphTarget.hasTangents) {\r\n const morphTangents = morphTarget.getTangents()!;\r\n const originalTangents = geometry.getVerticesData(VertexBuffer.TangentKind);\r\n\r\n if (originalTangents) {\r\n vertexCount = originalTangents.length / 4;\r\n const tangentData = new Float32Array(vertexCount * 3);\r\n vertexStart = 0;\r\n for (let i = vertexStart; i < vertexCount; ++i) {\r\n // Only read the x, y, z components and ignore w\r\n const originalTangent = Vector3.FromArray(originalTangents, i * 4);\r\n NormalizeTangent(originalTangent);\r\n\r\n // Morph target tangents omit the w component so it won't be present in the data\r\n const morphTangent = Vector3.FromArray(morphTangents, i * 3);\r\n NormalizeTangent(morphTangent);\r\n\r\n morphTangent.subtractToRef(originalTangent, difference);\r\n tangentData[i * 3] = difference.x * flipX;\r\n tangentData[i * 3 + 1] = difference.y;\r\n tangentData[i * 3 + 2] = difference.z;\r\n }\r\n const bufferView = bufferManager.createBufferView(tangentData, floatSize * 3);\r\n const accessor = bufferManager.createAccessor(bufferView, AccessorType.VEC3, AccessorComponentType.FLOAT, vertexCount, 0);\r\n accessors.push(accessor);\r\n result.attributes[\"TANGENT\"] = accessors.length - 1;\r\n } else {\r\n Tools.Warn(`Morph target tangents for mesh ${mesh.name} were not exported. Mesh does not have tangents vertex data`);\r\n }\r\n }\r\n\r\n if (morphTarget.hasColors) {\r\n const morphColors = morphTarget.getColors()!;\r\n const originalColors = geometry.getVerticesData(VertexBuffer.ColorKind);\r\n const buffer = geometry.getVertexBuffer(VertexBuffer.ColorKind);\r\n\r\n if (originalColors && buffer) {\r\n const componentSize = buffer.getSize();\r\n\r\n vertexCount = originalColors.length / componentSize;\r\n const colorData = new Float32Array(vertexCount * componentSize);\r\n vertexStart = 0;\r\n for (let i = vertexStart; i < vertexCount; ++i) {\r\n if (componentSize === 3) {\r\n const originalColor = Vector3.FromArray(originalColors, i * componentSize);\r\n const morphColor = Vector3.FromArray(morphColors, i * componentSize);\r\n\r\n morphColor.subtractToRef(originalColor, difference);\r\n colorData[i * 3] = difference.x;\r\n colorData[i * 3 + 1] = difference.y;\r\n colorData[i * 3 + 2] = difference.z;\r\n } else if (componentSize === 4) {\r\n const difference4 = new Vector4();\r\n const originalColor = Vector4.FromArray(originalColors, i * componentSize);\r\n const morphColor = Vector4.FromArray(morphColors, i * componentSize);\r\n\r\n morphColor.subtractToRef(originalColor, difference4);\r\n colorData[i * 4] = difference4.x;\r\n colorData[i * 4 + 1] = difference4.y;\r\n colorData[i * 4 + 2] = difference4.z;\r\n colorData[i * 4 + 3] = difference4.w;\r\n } else {\r\n Tools.Warn(`Unsupported number of components for color attribute: ${componentSize}`);\r\n }\r\n }\r\n const bufferView = bufferManager.createBufferView(colorData, floatSize * componentSize);\r\n const accessor = bufferManager.createAccessor(bufferView, componentSize === 3 ? AccessorType.VEC3 : AccessorType.VEC4, AccessorComponentType.FLOAT, vertexCount, 0);\r\n accessors.push(accessor);\r\n result.attributes[\"COLOR_0\"] = accessors.length - 1;\r\n } else {\r\n Tools.Warn(`Morph target colors for mesh ${mesh.name} were not exported. Mesh does not have colors vertex data`);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"glTFMorphTargetsUtilities.js","sourceRoot":"","sources":["../../../../../dev/serializers/src/glTF/2.0/glTFMorphTargetsUtilities.ts"],"names":[],"mappings":"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","sourcesContent":["import { type IBufferView, type IAccessor, AccessorComponentType, AccessorType } from \"babylonjs-gltf2interface\";\r\nimport { type MorphTarget } from \"core/Morph/morphTarget\";\r\nimport { type BufferManager } from \"./bufferManager\";\r\n\r\nimport { NormalizeTangent } from \"./glTFUtilities\";\r\nimport { type AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport { Vector3, Vector4 } from \"core/Maths/math.vector\";\r\nimport { Tools } from \"core/Misc/tools\";\r\n\r\n/**\r\n * Interface to store morph target information.\r\n * @internal\r\n */\r\nexport interface IMorphTargetData {\r\n attributes: Record<string, number>;\r\n influence: number;\r\n name: string;\r\n}\r\n\r\nexport function BuildMorphTargetBuffers(\r\n morphTarget: MorphTarget,\r\n mesh: AbstractMesh,\r\n bufferManager: BufferManager,\r\n bufferViews: IBufferView[],\r\n accessors: IAccessor[],\r\n convertToRightHanded: boolean\r\n): IMorphTargetData {\r\n const result: IMorphTargetData = {\r\n attributes: {},\r\n influence: morphTarget.influence,\r\n name: morphTarget.name,\r\n };\r\n\r\n const geometry = mesh.geometry;\r\n if (!geometry) {\r\n Tools.Warn(\"Attempted to export morph target data from a mesh without geometry. This should not happen.\");\r\n return result;\r\n }\r\n\r\n const flipX = convertToRightHanded ? -1 : 1;\r\n const floatSize = 4;\r\n const difference = Vector3.Zero();\r\n let vertexStart: number;\r\n let vertexCount: number;\r\n\r\n if (morphTarget.hasPositions) {\r\n const morphPositions = morphTarget.getPositions()!;\r\n const originalPositions = geometry.getVerticesData(VertexBuffer.PositionKind); // Bypasses any instance data of mesh\r\n\r\n if (originalPositions) {\r\n const positionData = new Float32Array(originalPositions.length);\r\n const min = [Infinity, Infinity, Infinity];\r\n const max = [-Infinity, -Infinity, -Infinity];\r\n vertexCount = originalPositions.length / 3;\r\n vertexStart = 0;\r\n for (let i = vertexStart; i < vertexCount; ++i) {\r\n const originalPosition = Vector3.FromArray(originalPositions, i * 3);\r\n const morphPosition = Vector3.FromArray(morphPositions, i * 3);\r\n morphPosition.subtractToRef(originalPosition, difference);\r\n difference.x *= flipX;\r\n\r\n min[0] = Math.min(min[0], difference.x);\r\n max[0] = Math.max(max[0], difference.x);\r\n\r\n min[1] = Math.min(min[1], difference.y);\r\n max[1] = Math.max(max[1], difference.y);\r\n\r\n min[2] = Math.min(min[2], difference.z);\r\n max[2] = Math.max(max[2], difference.z);\r\n\r\n positionData[i * 3] = difference.x;\r\n positionData[i * 3 + 1] = difference.y;\r\n positionData[i * 3 + 2] = difference.z;\r\n }\r\n\r\n const bufferView = bufferManager.createBufferView(positionData, floatSize * 3);\r\n const accessor = bufferManager.createAccessor(bufferView, AccessorType.VEC3, AccessorComponentType.FLOAT, morphPositions.length / 3, 0, { min, max });\r\n accessors.push(accessor);\r\n result.attributes[\"POSITION\"] = accessors.length - 1;\r\n } else {\r\n Tools.Warn(`Morph target positions for mesh ${mesh.name} were not exported. Mesh does not have position vertex data`);\r\n }\r\n }\r\n\r\n if (morphTarget.hasNormals) {\r\n const morphNormals = morphTarget.getNormals()!;\r\n const originalNormals = geometry.getVerticesData(VertexBuffer.NormalKind);\r\n\r\n if (originalNormals) {\r\n const normalData = new Float32Array(originalNormals.length);\r\n vertexCount = originalNormals.length / 3;\r\n vertexStart = 0;\r\n for (let i = vertexStart; i < vertexCount; ++i) {\r\n const originalNormal = Vector3.FromArray(originalNormals, i * 3).normalize();\r\n const morphNormal = Vector3.FromArray(morphNormals, i * 3).normalize();\r\n morphNormal.subtractToRef(originalNormal, difference);\r\n\r\n normalData[i * 3] = difference.x * flipX;\r\n normalData[i * 3 + 1] = difference.y;\r\n normalData[i * 3 + 2] = difference.z;\r\n }\r\n\r\n const bufferView = bufferManager.createBufferView(normalData, floatSize * 3);\r\n const accessor = bufferManager.createAccessor(bufferView, AccessorType.VEC3, AccessorComponentType.FLOAT, morphNormals.length / 3, 0);\r\n accessors.push(accessor);\r\n result.attributes[\"NORMAL\"] = accessors.length - 1;\r\n } else {\r\n Tools.Warn(`Morph target normals for mesh ${mesh.name} were not exported. Mesh does not have normals vertex data`);\r\n }\r\n }\r\n\r\n if (morphTarget.hasTangents) {\r\n const morphTangents = morphTarget.getTangents()!;\r\n const originalTangents = geometry.getVerticesData(VertexBuffer.TangentKind);\r\n\r\n if (originalTangents) {\r\n vertexCount = originalTangents.length / 4;\r\n const tangentData = new Float32Array(vertexCount * 3);\r\n vertexStart = 0;\r\n for (let i = vertexStart; i < vertexCount; ++i) {\r\n // Only read the x, y, z components and ignore w\r\n const originalTangent = Vector3.FromArray(originalTangents, i * 4);\r\n NormalizeTangent(originalTangent);\r\n\r\n // Morph target tangents omit the w component so it won't be present in the data\r\n const morphTangent = Vector3.FromArray(morphTangents, i * 3);\r\n NormalizeTangent(morphTangent);\r\n\r\n morphTangent.subtractToRef(originalTangent, difference);\r\n tangentData[i * 3] = difference.x * flipX;\r\n tangentData[i * 3 + 1] = difference.y;\r\n tangentData[i * 3 + 2] = difference.z;\r\n }\r\n const bufferView = bufferManager.createBufferView(tangentData, floatSize * 3);\r\n const accessor = bufferManager.createAccessor(bufferView, AccessorType.VEC3, AccessorComponentType.FLOAT, vertexCount, 0);\r\n accessors.push(accessor);\r\n result.attributes[\"TANGENT\"] = accessors.length - 1;\r\n } else {\r\n Tools.Warn(`Morph target tangents for mesh ${mesh.name} were not exported. Mesh does not have tangents vertex data`);\r\n }\r\n }\r\n\r\n if (morphTarget.hasColors) {\r\n const morphColors = morphTarget.getColors()!;\r\n const originalColors = geometry.getVerticesData(VertexBuffer.ColorKind);\r\n const buffer = geometry.getVertexBuffer(VertexBuffer.ColorKind);\r\n\r\n if (originalColors && buffer) {\r\n const componentSize = buffer.getSize();\r\n\r\n vertexCount = originalColors.length / componentSize;\r\n const colorData = new Float32Array(vertexCount * componentSize);\r\n vertexStart = 0;\r\n for (let i = vertexStart; i < vertexCount; ++i) {\r\n if (componentSize === 3) {\r\n const originalColor = Vector3.FromArray(originalColors, i * componentSize);\r\n const morphColor = Vector3.FromArray(morphColors, i * componentSize);\r\n\r\n morphColor.subtractToRef(originalColor, difference);\r\n colorData[i * 3] = difference.x;\r\n colorData[i * 3 + 1] = difference.y;\r\n colorData[i * 3 + 2] = difference.z;\r\n } else if (componentSize === 4) {\r\n const difference4 = new Vector4();\r\n const originalColor = Vector4.FromArray(originalColors, i * componentSize);\r\n const morphColor = Vector4.FromArray(morphColors, i * componentSize);\r\n\r\n morphColor.subtractToRef(originalColor, difference4);\r\n colorData[i * 4] = difference4.x;\r\n colorData[i * 4 + 1] = difference4.y;\r\n colorData[i * 4 + 2] = difference4.z;\r\n colorData[i * 4 + 3] = difference4.w;\r\n } else {\r\n Tools.Warn(`Unsupported number of components for color attribute: ${componentSize}`);\r\n }\r\n }\r\n const bufferView = bufferManager.createBufferView(colorData, floatSize * componentSize);\r\n const accessor = bufferManager.createAccessor(bufferView, componentSize === 3 ? AccessorType.VEC3 : AccessorType.VEC4, AccessorComponentType.FLOAT, vertexCount, 0);\r\n accessors.push(accessor);\r\n result.attributes[\"COLOR_0\"] = accessors.length - 1;\r\n } else {\r\n Tools.Warn(`Morph target colors for mesh ${mesh.name} were not exported. Mesh does not have colors vertex data`);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type
|
|
3
|
-
import type
|
|
4
|
-
import type
|
|
1
|
+
import { type Node } from "@onerjs/core/node.js";
|
|
2
|
+
import { type Scene } from "@onerjs/core/scene.js";
|
|
3
|
+
import { type Animation } from "@onerjs/core/Animations/animation.js";
|
|
4
|
+
import { type GLTFData } from "./glTFData.js";
|
|
5
5
|
import type { Material } from "@onerjs/core/Materials/material.js";
|
|
6
6
|
/**
|
|
7
7
|
* Mesh compression methods.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glTFSerializer.js","sourceRoot":"","sources":["../../../../../dev/serializers/src/glTF/2.0/glTFSerializer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA6E9C;;GAEG;AACH,MAAM,OAAO,WAAW;IACpB;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAY,EAAE,QAAgB,EAAE,OAAwB;QAClF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC;YACpD,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;QACjC,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QACjF,QAAQ,CAAC,OAAO,EAAE,CAAC;QAEnB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAY,EAAE,QAAgB,EAAE,OAAwB;QACjF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC;YACpD,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;QACjC,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QAChF,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ","sourcesContent":["import type
|
|
1
|
+
{"version":3,"file":"glTFSerializer.js","sourceRoot":"","sources":["../../../../../dev/serializers/src/glTF/2.0/glTFSerializer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA6E9C;;GAEG;AACH,MAAM,OAAO,WAAW;IACpB;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAY,EAAE,QAAgB,EAAE,OAAwB;QAClF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC;YACpD,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;QACjC,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QACjF,QAAQ,CAAC,OAAO,EAAE,CAAC;QAEnB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAY,EAAE,QAAgB,EAAE,OAAwB;QACjF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC;YACpD,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;QACjC,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QAChF,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ","sourcesContent":["import { type Node } from \"core/node\";\r\nimport { type Scene } from \"core/scene\";\r\nimport { type Animation } from \"core/Animations/animation\";\r\nimport { type GLTFData } from \"./glTFData\";\r\nimport { GLTFExporter } from \"./glTFExporter\";\r\nimport type { Material } from \"core/Materials/material\";\r\n\r\n/**\r\n * Mesh compression methods.\r\n */\r\nexport type MeshCompressionMethod = \"None\" | \"Draco\";\r\n\r\n/**\r\n * Holds a collection of exporter options and parameters\r\n */\r\nexport interface IExportOptions {\r\n /**\r\n * Function which indicates whether a babylon node should be exported or not\r\n * @param node source Babylon node. It is used to check whether it should be exported to glTF or not\r\n * @returns boolean, which indicates whether the node should be exported (true) or not (false)\r\n */\r\n shouldExportNode?(node: Node): boolean;\r\n\r\n /**\r\n * Function which indicates whether an animation on the scene should be exported or not\r\n * @param animation source animation\r\n * @returns boolean, which indicates whether the animation should be exported (true) or not (false)\r\n */\r\n shouldExportAnimation?(animation: Animation): boolean;\r\n\r\n /**\r\n * Function to extract the part of the scene or node's `metadata` that will populate the corresponding\r\n * glTF object's `extras` field. If not defined, `node.metadata.gltf.extras` will be used.\r\n * @param metadata source metadata to read from\r\n * @returns the data to store into the glTF extras field\r\n */\r\n metadataSelector?(metadata: any): any;\r\n\r\n shouldExportMaterial?(material: Material): boolean;\r\n\r\n /**\r\n * The sample rate to bake animation curves. Defaults to 1 / 60.\r\n */\r\n animationSampleRate?: number;\r\n\r\n /**\r\n * Begin serialization without waiting for the scene to be ready. Defaults to false.\r\n */\r\n exportWithoutWaitingForScene?: boolean;\r\n\r\n /**\r\n * Indicates if unused vertex uv attributes should be included in export. Defaults to false.\r\n */\r\n exportUnusedUVs?: boolean;\r\n\r\n /**\r\n * Remove no-op root nodes when possible. Defaults to true.\r\n */\r\n removeNoopRootNodes?: boolean;\r\n\r\n /**\r\n * Indicates if coordinate system swapping root nodes should be included in export. Defaults to false.\r\n * @deprecated Please use removeNoopRootNodes instead\r\n */\r\n includeCoordinateSystemConversionNodes?: boolean;\r\n\r\n /**\r\n * Indicates what compression method to apply to mesh data.\r\n */\r\n meshCompressionMethod?: MeshCompressionMethod;\r\n\r\n /**\r\n * Indicates if force convert to right handed pos;\r\n */\r\n convertToRightHanded?: boolean;\r\n /**\r\n * Indicates if force convert to right handed pos;\r\n */\r\n convectSkeletonToTightHanded?: boolean;\r\n}\r\n\r\n/**\r\n * Class for generating glTF data from a Babylon scene.\r\n */\r\nexport class GLTF2Export {\r\n /**\r\n * Exports the scene to .gltf file format\r\n * @param scene Babylon scene\r\n * @param fileName Name to use for the .gltf file\r\n * @param options Exporter options\r\n * @returns Returns the exported data\r\n */\r\n public static async GLTFAsync(scene: Scene, fileName: string, options?: IExportOptions): Promise<GLTFData> {\r\n if (!options || !options.exportWithoutWaitingForScene) {\r\n await scene.whenReadyAsync();\r\n }\r\n\r\n const exporter = new GLTFExporter(scene, options);\r\n const data = await exporter.generateGLTFAsync(fileName.replace(/\\.[^/.]+$/, \"\"));\r\n exporter.dispose();\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Exports the scene to .glb file format\r\n * @param scene Babylon scene\r\n * @param fileName Name to use for the .glb file\r\n * @param options Exporter options\r\n * @returns Returns the exported data\r\n */\r\n public static async GLBAsync(scene: Scene, fileName: string, options?: IExportOptions): Promise<GLTFData> {\r\n if (!options || !options.exportWithoutWaitingForScene) {\r\n await scene.whenReadyAsync();\r\n }\r\n\r\n const exporter = new GLTFExporter(scene, options);\r\n const data = await exporter.generateGLBAsync(fileName.replace(/\\.[^/.]+$/, \"\"));\r\n exporter.dispose();\r\n return data;\r\n }\r\n}\r\n"]}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import {
|
|
3
|
-
import type
|
|
4
|
-
import type { Vector4 } from "@onerjs/core/Maths/math.vector.js";
|
|
5
|
-
import { Quaternion, Matrix, Vector3 } from "@onerjs/core/Maths/math.vector.js";
|
|
1
|
+
import { type INode, AccessorType, MeshPrimitiveMode } from "babylonjs-gltf2interface";
|
|
2
|
+
import { type FloatArray, type DataArray, type IndicesArray, type DeepImmutable } from "@onerjs/core/types.js";
|
|
3
|
+
import { type Vector4, Quaternion, Matrix, Vector3 } from "@onerjs/core/Maths/math.vector.js";
|
|
6
4
|
import { VertexBuffer } from "@onerjs/core/Buffers/buffer.js";
|
|
7
|
-
import type
|
|
8
|
-
import type
|
|
5
|
+
import { type AbstractMesh } from "@onerjs/core/Meshes/abstractMesh.js";
|
|
6
|
+
import { type Node } from "@onerjs/core/node.js";
|
|
9
7
|
import { TargetCamera } from "@onerjs/core/Cameras/targetCamera.js";
|
|
10
|
-
import type
|
|
11
|
-
import type
|
|
8
|
+
import { type ShadowLight } from "@onerjs/core/Lights/shadowLight.js";
|
|
9
|
+
import { type AreaLight } from "@onerjs/core/Lights/areaLight.js";
|
|
12
10
|
export declare const DefaultTranslation: import("@onerjs/core/types.js").DeepImmutableObject<Vector3>;
|
|
13
11
|
export declare const DefaultRotation: DeepImmutable<Quaternion>;
|
|
14
12
|
export declare const DefaultScale: import("@onerjs/core/types.js").DeepImmutableObject<Vector3>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glTFUtilities.js","sourceRoot":"","sources":["../../../../../dev/serializers/src/glTF/2.0/glTFUtilities.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\r\nimport type { INode } from \"babylonjs-gltf2interface\";\r\nimport { AccessorType, MeshPrimitiveMode } from \"babylonjs-gltf2interface\";\r\nimport type { FloatArray, DataArray, IndicesArray, DeepImmutable } from \"core/types\";\r\nimport type { Vector4 } from \"core/Maths/math.vector\";\r\nimport { Quaternion, TmpVectors, Matrix, Vector3 } from \"core/Maths/math.vector\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport { Material } from \"core/Materials/material\";\r\nimport { TransformNode } from \"core/Meshes/transformNode\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { EnumerateFloatValues } from \"core/Buffers/bufferUtils\";\r\nimport type { Node } from \"core/node\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { TargetCamera } from \"core/Cameras/targetCamera\";\r\nimport type { ShadowLight } from \"core/Lights/shadowLight\";\r\nimport { Epsilon } from \"core/Maths/math.constants\";\r\nimport { ConvertHandednessMatrix } from \"../../exportUtils\";\r\nimport type { AreaLight } from \"core/Lights/areaLight\";\r\n\r\n// Default values for comparison.\r\nexport const DefaultTranslation = Vector3.ZeroReadOnly;\r\nexport const DefaultRotation = Quaternion.Identity() as DeepImmutable<Quaternion>;\r\nexport const DefaultScale = Vector3.OneReadOnly;\r\nconst DefaultLoaderCameraParentScaleLh = new Vector3(-1, 1, 1) as DeepImmutable<Vector3>;\r\n\r\n/**\r\n * Get the information necessary for enumerating a vertex buffer.\r\n * @param vertexBuffer the vertex buffer to enumerate\r\n * @param meshes the meshes that use the vertex buffer\r\n * @returns the information necessary to enumerate the vertex buffer\r\n */\r\nexport function GetVertexBufferInfo(vertexBuffer: VertexBuffer, meshes: AbstractMesh[]) {\r\n const { byteOffset, byteStride, type, normalized } = vertexBuffer;\r\n const componentCount = vertexBuffer.getSize();\r\n const totalVertices = meshes.reduce((max, current) => {\r\n return current.getTotalVertices() > max ? current.getTotalVertices() : max;\r\n }, -Number.MAX_VALUE); // Get the max total vertices count, to ensure we capture the full range of vertex data used by the meshes.\r\n const count = totalVertices * componentCount;\r\n const kind = vertexBuffer.getKind();\r\n\r\n return { byteOffset, byteStride, componentCount, type, count, normalized, totalVertices, kind };\r\n}\r\n\r\nexport function GetAccessorElementCount(accessorType: AccessorType): number {\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\nexport function FloatsNeed16BitInteger(floatArray: FloatArray): boolean {\r\n return floatArray.some((value) => value >= 256);\r\n}\r\n\r\nexport function IsStandardVertexAttribute(type: string): boolean {\r\n switch (type) {\r\n case VertexBuffer.PositionKind:\r\n case VertexBuffer.NormalKind:\r\n case VertexBuffer.TangentKind:\r\n case VertexBuffer.ColorKind:\r\n case VertexBuffer.MatricesIndicesKind:\r\n case VertexBuffer.MatricesIndicesExtraKind:\r\n case VertexBuffer.MatricesWeightsKind:\r\n case VertexBuffer.MatricesWeightsExtraKind:\r\n case VertexBuffer.UVKind:\r\n case VertexBuffer.UV2Kind:\r\n case VertexBuffer.UV3Kind:\r\n case VertexBuffer.UV4Kind:\r\n case VertexBuffer.UV5Kind:\r\n case VertexBuffer.UV6Kind:\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function GetAccessorType(kind: string, hasVertexColorAlpha: boolean): AccessorType {\r\n if (kind == VertexBuffer.ColorKind) {\r\n return hasVertexColorAlpha ? AccessorType.VEC4 : AccessorType.VEC3;\r\n }\r\n\r\n switch (kind) {\r\n case VertexBuffer.PositionKind:\r\n case VertexBuffer.NormalKind:\r\n return AccessorType.VEC3;\r\n case VertexBuffer.TangentKind:\r\n case VertexBuffer.MatricesIndicesKind:\r\n case VertexBuffer.MatricesIndicesExtraKind:\r\n case VertexBuffer.MatricesWeightsKind:\r\n case VertexBuffer.MatricesWeightsExtraKind:\r\n return AccessorType.VEC4;\r\n case VertexBuffer.UVKind:\r\n case VertexBuffer.UV2Kind:\r\n case VertexBuffer.UV3Kind:\r\n case VertexBuffer.UV4Kind:\r\n case VertexBuffer.UV5Kind:\r\n case VertexBuffer.UV6Kind:\r\n return AccessorType.VEC2;\r\n }\r\n\r\n throw new Error(`Unknown kind ${kind}`);\r\n}\r\n\r\nexport function GetAttributeType(kind: string): string {\r\n switch (kind) {\r\n case VertexBuffer.PositionKind:\r\n return \"POSITION\";\r\n case VertexBuffer.NormalKind:\r\n return \"NORMAL\";\r\n case VertexBuffer.TangentKind:\r\n return \"TANGENT\";\r\n case VertexBuffer.ColorKind:\r\n return \"COLOR_0\";\r\n case VertexBuffer.UVKind:\r\n return \"TEXCOORD_0\";\r\n case VertexBuffer.UV2Kind:\r\n return \"TEXCOORD_1\";\r\n case VertexBuffer.UV3Kind:\r\n return \"TEXCOORD_2\";\r\n case VertexBuffer.UV4Kind:\r\n return \"TEXCOORD_3\";\r\n case VertexBuffer.UV5Kind:\r\n return \"TEXCOORD_4\";\r\n case VertexBuffer.UV6Kind:\r\n return \"TEXCOORD_5\";\r\n case VertexBuffer.MatricesIndicesKind:\r\n return \"JOINTS_0\";\r\n case VertexBuffer.MatricesIndicesExtraKind:\r\n return \"JOINTS_1\";\r\n case VertexBuffer.MatricesWeightsKind:\r\n return \"WEIGHTS_0\";\r\n case VertexBuffer.MatricesWeightsExtraKind:\r\n return \"WEIGHTS_1\";\r\n }\r\n\r\n throw new Error(`Unknown kind: ${kind}`);\r\n}\r\n\r\nexport function GetPrimitiveMode(fillMode: number): MeshPrimitiveMode {\r\n switch (fillMode) {\r\n case Material.TriangleFillMode:\r\n return MeshPrimitiveMode.TRIANGLES;\r\n case Material.TriangleStripDrawMode:\r\n return MeshPrimitiveMode.TRIANGLE_STRIP;\r\n case Material.TriangleFanDrawMode:\r\n return MeshPrimitiveMode.TRIANGLE_FAN;\r\n case Material.PointListDrawMode:\r\n case Material.PointFillMode:\r\n return MeshPrimitiveMode.POINTS;\r\n case Material.LineLoopDrawMode:\r\n return MeshPrimitiveMode.LINE_LOOP;\r\n case Material.LineListDrawMode:\r\n return MeshPrimitiveMode.LINES;\r\n case Material.LineStripDrawMode:\r\n return MeshPrimitiveMode.LINE_STRIP;\r\n }\r\n\r\n throw new Error(`Unknown fill mode: ${fillMode}`);\r\n}\r\n\r\nexport function IsTriangleFillMode(fillMode: number): boolean {\r\n switch (fillMode) {\r\n case Material.TriangleFillMode:\r\n case Material.TriangleStripDrawMode:\r\n case Material.TriangleFanDrawMode:\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport function NormalizeTangent(tangent: Vector4 | Vector3) {\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\nexport function ConvertToRightHandedPosition(value: Vector3): Vector3 {\r\n value.x *= -1;\r\n return value;\r\n}\r\n\r\n/** @internal */\r\nexport function ConvertToRightHandedTransformMatrix(matrix: Matrix): Matrix {\r\n ConvertHandednessMatrix.invertToRef(TmpVectors.Matrix[0]).multiplyToRef(matrix, matrix).multiplyToRef(ConvertHandednessMatrix, matrix);\r\n return matrix;\r\n}\r\n\r\n/**\r\n * Converts, in-place, a left-handed quaternion to a right-handed quaternion via a change of basis.\r\n * @param value the unit quaternion to convert\r\n * @returns the converted quaternion\r\n */\r\nexport function ConvertToRightHandedRotation(value: Quaternion): Quaternion {\r\n /**\r\n * This is the simplified version of the following equation:\r\n * q' = to_quaternion(M * to_matrix(q) * M^-1)\r\n * where M is the conversion matrix `convertHandednessMatrix`,\r\n * q is the input quaternion, and q' is the converted quaternion.\r\n * Reference: https://d3cw3dd2w32x2b.cloudfront.net/wp-content/uploads/2015/01/matrix-to-quat.pdf\r\n */\r\n if (value.x * value.x + value.y * value.y > 0.5) {\r\n const absX = Math.abs(value.x);\r\n const absY = Math.abs(value.y);\r\n if (absX > absY) {\r\n const sign = Math.sign(value.x);\r\n value.x = absX;\r\n value.y *= -sign;\r\n value.z *= -sign;\r\n value.w *= sign;\r\n } else {\r\n const sign = Math.sign(value.y);\r\n value.x *= -sign;\r\n value.y = absY;\r\n value.z *= sign;\r\n value.w *= -sign;\r\n }\r\n } else {\r\n const absZ = Math.abs(value.z);\r\n const absW = Math.abs(value.w);\r\n if (absZ > absW) {\r\n const sign = Math.sign(value.z);\r\n value.x *= -sign;\r\n value.y *= sign;\r\n value.z = absZ;\r\n value.w *= -sign;\r\n } else {\r\n const sign = Math.sign(value.w);\r\n value.x *= sign;\r\n value.y *= -sign;\r\n value.z *= -sign;\r\n value.w = absW;\r\n }\r\n }\r\n\r\n return value;\r\n}\r\n\r\n/**\r\n * Pre-multiplies a 180-degree Y rotation to the quaternion, in order to match glTF's flipped forward direction for cameras.\r\n * @param rotation Target camera rotation.\r\n */\r\nexport function Rotate180Y(rotation: Quaternion): void {\r\n // Simplified from: rotation * (0, 1, 0, 0).\r\n rotation.copyFromFloats(-rotation.z, rotation.w, rotation.x, -rotation.y);\r\n}\r\n\r\n/**\r\n * Collapses GLTF parent and node into a single node, ignoring scaling.\r\n * This is useful for removing nodes that were added by the GLTF importer.\r\n * @param node Original GLTF node (Light or Camera).\r\n * @param parentNode Target parent node.\r\n */\r\nexport function CollapseChildIntoParent(node: INode, parentNode: INode): void {\r\n const parentTranslation = Vector3.FromArrayToRef(parentNode.translation || [0, 0, 0], 0, TmpVectors.Vector3[0]);\r\n const parentRotation = Quaternion.FromArrayToRef(parentNode.rotation || [0, 0, 0, 1], 0, TmpVectors.Quaternion[0]);\r\n const parentMatrix = Matrix.ComposeToRef(DefaultScale, parentRotation, parentTranslation, TmpVectors.Matrix[0]);\r\n\r\n const translation = Vector3.FromArrayToRef(node.translation || [0, 0, 0], 0, TmpVectors.Vector3[2]);\r\n const rotation = Quaternion.FromArrayToRef(node.rotation || [0, 0, 0, 1], 0, TmpVectors.Quaternion[1]);\r\n const matrix = Matrix.ComposeToRef(DefaultScale, rotation, translation, TmpVectors.Matrix[1]);\r\n\r\n parentMatrix.multiplyToRef(matrix, matrix);\r\n matrix.decompose(undefined, parentRotation, parentTranslation);\r\n\r\n if (parentTranslation.equalsWithEpsilon(DefaultTranslation, Epsilon)) {\r\n delete parentNode.translation;\r\n } else {\r\n parentNode.translation = parentTranslation.asArray();\r\n }\r\n\r\n if (parentRotation.equalsWithEpsilon(DefaultRotation, Epsilon)) {\r\n delete parentNode.rotation;\r\n } else {\r\n parentNode.rotation = parentRotation.asArray();\r\n }\r\n\r\n if (parentNode.scale) {\r\n delete parentNode.scale;\r\n }\r\n}\r\n\r\n/**\r\n * Checks whether a camera or light node is candidate for collapsing with its parent node.\r\n * This is useful for roundtrips, as the glTF Importer parents a new node to\r\n * lights and cameras to store their original transformation information.\r\n * @param babylonNode Babylon light or camera node.\r\n * @param parentBabylonNode Target Babylon parent node.\r\n * @returns True if the two nodes can be merged, false otherwise.\r\n */\r\nexport function IsChildCollapsible(babylonNode: ShadowLight | TargetCamera | AreaLight, parentBabylonNode: Node): boolean {\r\n if (!(parentBabylonNode instanceof TransformNode)) {\r\n return false;\r\n }\r\n\r\n // Verify child is the only descendant\r\n const isOnlyDescendant = parentBabylonNode.getChildren().length === 1 && babylonNode.getChildren().length === 0 && babylonNode.parent === parentBabylonNode;\r\n if (!isOnlyDescendant) {\r\n return false;\r\n }\r\n\r\n // Verify parent has the expected scaling, determined by the node type and scene's coordinate system.\r\n const scene = babylonNode.getScene();\r\n const expectedScale = babylonNode instanceof TargetCamera && !scene.useRightHandedSystem ? DefaultLoaderCameraParentScaleLh : DefaultScale;\r\n\r\n if (!parentBabylonNode.scaling.equalsWithEpsilon(expectedScale, Epsilon)) {\r\n Logger.Warn(`Cannot collapse node ${babylonNode.name} into parent node ${parentBabylonNode.name} with modified scaling.`);\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * Converts an IndicesArray into either a Uint32Array or Uint16Array.\r\n * If the `start` and `count` parameters specify a subset of the array, a new view is created.\r\n * If the input is a number[], the data is copied into a new buffer.\r\n * @param indices input array to be converted\r\n * @param start starting index\r\n * @param count number of indices\r\n * @param is32Bits whether the output should be Uint32Array (true) or Uint16Array (false) when indices is an `Array`\r\n * @returns a Uint32Array or Uint16Array\r\n * @internal\r\n */\r\nexport function IndicesArrayToTypedSubarray(indices: IndicesArray, start: number, count: number, is32Bits: boolean): Uint32Array | Uint16Array {\r\n let processedIndices = indices;\r\n if (start !== 0 || count !== indices.length) {\r\n processedIndices = Array.isArray(indices) ? indices.slice(start, start + count) : indices.subarray(start, start + count);\r\n }\r\n\r\n // If Int32Array, cast the indices (which should all be positive) to Uint32Array\r\n if (processedIndices instanceof Int32Array) {\r\n return new Uint32Array(processedIndices.buffer, processedIndices.byteOffset, processedIndices.length);\r\n }\r\n\r\n if (Array.isArray(processedIndices)) {\r\n return is32Bits ? new Uint32Array(processedIndices) : new Uint16Array(processedIndices);\r\n }\r\n\r\n return processedIndices;\r\n}\r\n\r\nexport function DataArrayToUint8Array(data: DataArray): Uint8Array {\r\n if (data instanceof Array) {\r\n const floatData = new Float32Array(data);\r\n return new Uint8Array(floatData.buffer, floatData.byteOffset, floatData.byteLength);\r\n }\r\n\r\n return ArrayBuffer.isView(data) ? new Uint8Array(data.buffer, data.byteOffset, data.byteLength) : new Uint8Array(data);\r\n}\r\n\r\nexport function GetMinMax(data: DataArray, vertexBuffer: VertexBuffer, start: number, count: number): { min: number[]; max: number[] } {\r\n const { byteOffset, byteStride, type, normalized } = vertexBuffer;\r\n const size = vertexBuffer.getSize();\r\n const min = new Array<number>(size).fill(Infinity);\r\n const max = new Array<number>(size).fill(-Infinity);\r\n EnumerateFloatValues(data, byteOffset + start * byteStride, byteStride, size, type, count * size, normalized, (values) => {\r\n for (let i = 0; i < size; i++) {\r\n min[i] = Math.min(min[i], values[i]);\r\n max[i] = Math.max(max[i], values[i]);\r\n }\r\n });\r\n\r\n return { min, max };\r\n}\r\n\r\n/**\r\n * Removes, in-place, object properties which have the same value as the default value.\r\n * Useful for avoiding unnecessary properties in the glTF JSON.\r\n * @param object the object to omit default values from\r\n * @param defaultValues a partial object with default values\r\n * @returns object with default values omitted\r\n */\r\nexport function OmitDefaultValues<T extends object>(object: T, defaultValues: Partial<T>): T {\r\n for (const [key, value] of Object.entries(object)) {\r\n const defaultValue = defaultValues[key as keyof T];\r\n if ((Array.isArray(value) && Array.isArray(defaultValue) && AreArraysEqual(value, defaultValue)) || value === defaultValue) {\r\n delete object[key as keyof T];\r\n }\r\n }\r\n return object;\r\n}\r\n\r\nfunction AreArraysEqual(array1: unknown[], array2: unknown[]): boolean {\r\n return array1.length === array2.length && array1.every((val, i) => val === array2[i]);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"glTFUtilities.js","sourceRoot":"","sources":["../../../../../dev/serializers/src/glTF/2.0/glTFUtilities.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\r\nimport { type INode, AccessorType, MeshPrimitiveMode } from \"babylonjs-gltf2interface\";\r\nimport { type FloatArray, type DataArray, type IndicesArray, type DeepImmutable } from \"core/types\";\r\nimport { type Vector4, Quaternion, TmpVectors, Matrix, Vector3 } from \"core/Maths/math.vector\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport { Material } from \"core/Materials/material\";\r\nimport { TransformNode } from \"core/Meshes/transformNode\";\r\nimport { type AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { EnumerateFloatValues } from \"core/Buffers/bufferUtils\";\r\nimport { type Node } from \"core/node\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { TargetCamera } from \"core/Cameras/targetCamera\";\r\nimport { type ShadowLight } from \"core/Lights/shadowLight\";\r\nimport { Epsilon } from \"core/Maths/math.constants\";\r\nimport { ConvertHandednessMatrix } from \"../../exportUtils\";\r\nimport { type AreaLight } from \"core/Lights/areaLight\";\r\n\r\n// Default values for comparison.\r\nexport const DefaultTranslation = Vector3.ZeroReadOnly;\r\nexport const DefaultRotation = Quaternion.Identity() as DeepImmutable<Quaternion>;\r\nexport const DefaultScale = Vector3.OneReadOnly;\r\nconst DefaultLoaderCameraParentScaleLh = new Vector3(-1, 1, 1) as DeepImmutable<Vector3>;\r\n\r\n/**\r\n * Get the information necessary for enumerating a vertex buffer.\r\n * @param vertexBuffer the vertex buffer to enumerate\r\n * @param meshes the meshes that use the vertex buffer\r\n * @returns the information necessary to enumerate the vertex buffer\r\n */\r\nexport function GetVertexBufferInfo(vertexBuffer: VertexBuffer, meshes: AbstractMesh[]) {\r\n const { byteOffset, byteStride, type, normalized } = vertexBuffer;\r\n const componentCount = vertexBuffer.getSize();\r\n const totalVertices = meshes.reduce((max, current) => {\r\n return current.getTotalVertices() > max ? current.getTotalVertices() : max;\r\n }, -Number.MAX_VALUE); // Get the max total vertices count, to ensure we capture the full range of vertex data used by the meshes.\r\n const count = totalVertices * componentCount;\r\n const kind = vertexBuffer.getKind();\r\n\r\n return { byteOffset, byteStride, componentCount, type, count, normalized, totalVertices, kind };\r\n}\r\n\r\nexport function GetAccessorElementCount(accessorType: AccessorType): number {\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\nexport function FloatsNeed16BitInteger(floatArray: FloatArray): boolean {\r\n return floatArray.some((value) => value >= 256);\r\n}\r\n\r\nexport function IsStandardVertexAttribute(type: string): boolean {\r\n switch (type) {\r\n case VertexBuffer.PositionKind:\r\n case VertexBuffer.NormalKind:\r\n case VertexBuffer.TangentKind:\r\n case VertexBuffer.ColorKind:\r\n case VertexBuffer.MatricesIndicesKind:\r\n case VertexBuffer.MatricesIndicesExtraKind:\r\n case VertexBuffer.MatricesWeightsKind:\r\n case VertexBuffer.MatricesWeightsExtraKind:\r\n case VertexBuffer.UVKind:\r\n case VertexBuffer.UV2Kind:\r\n case VertexBuffer.UV3Kind:\r\n case VertexBuffer.UV4Kind:\r\n case VertexBuffer.UV5Kind:\r\n case VertexBuffer.UV6Kind:\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function GetAccessorType(kind: string, hasVertexColorAlpha: boolean): AccessorType {\r\n if (kind == VertexBuffer.ColorKind) {\r\n return hasVertexColorAlpha ? AccessorType.VEC4 : AccessorType.VEC3;\r\n }\r\n\r\n switch (kind) {\r\n case VertexBuffer.PositionKind:\r\n case VertexBuffer.NormalKind:\r\n return AccessorType.VEC3;\r\n case VertexBuffer.TangentKind:\r\n case VertexBuffer.MatricesIndicesKind:\r\n case VertexBuffer.MatricesIndicesExtraKind:\r\n case VertexBuffer.MatricesWeightsKind:\r\n case VertexBuffer.MatricesWeightsExtraKind:\r\n return AccessorType.VEC4;\r\n case VertexBuffer.UVKind:\r\n case VertexBuffer.UV2Kind:\r\n case VertexBuffer.UV3Kind:\r\n case VertexBuffer.UV4Kind:\r\n case VertexBuffer.UV5Kind:\r\n case VertexBuffer.UV6Kind:\r\n return AccessorType.VEC2;\r\n }\r\n\r\n throw new Error(`Unknown kind ${kind}`);\r\n}\r\n\r\nexport function GetAttributeType(kind: string): string {\r\n switch (kind) {\r\n case VertexBuffer.PositionKind:\r\n return \"POSITION\";\r\n case VertexBuffer.NormalKind:\r\n return \"NORMAL\";\r\n case VertexBuffer.TangentKind:\r\n return \"TANGENT\";\r\n case VertexBuffer.ColorKind:\r\n return \"COLOR_0\";\r\n case VertexBuffer.UVKind:\r\n return \"TEXCOORD_0\";\r\n case VertexBuffer.UV2Kind:\r\n return \"TEXCOORD_1\";\r\n case VertexBuffer.UV3Kind:\r\n return \"TEXCOORD_2\";\r\n case VertexBuffer.UV4Kind:\r\n return \"TEXCOORD_3\";\r\n case VertexBuffer.UV5Kind:\r\n return \"TEXCOORD_4\";\r\n case VertexBuffer.UV6Kind:\r\n return \"TEXCOORD_5\";\r\n case VertexBuffer.MatricesIndicesKind:\r\n return \"JOINTS_0\";\r\n case VertexBuffer.MatricesIndicesExtraKind:\r\n return \"JOINTS_1\";\r\n case VertexBuffer.MatricesWeightsKind:\r\n return \"WEIGHTS_0\";\r\n case VertexBuffer.MatricesWeightsExtraKind:\r\n return \"WEIGHTS_1\";\r\n }\r\n\r\n throw new Error(`Unknown kind: ${kind}`);\r\n}\r\n\r\nexport function GetPrimitiveMode(fillMode: number): MeshPrimitiveMode {\r\n switch (fillMode) {\r\n case Material.TriangleFillMode:\r\n return MeshPrimitiveMode.TRIANGLES;\r\n case Material.TriangleStripDrawMode:\r\n return MeshPrimitiveMode.TRIANGLE_STRIP;\r\n case Material.TriangleFanDrawMode:\r\n return MeshPrimitiveMode.TRIANGLE_FAN;\r\n case Material.PointListDrawMode:\r\n case Material.PointFillMode:\r\n return MeshPrimitiveMode.POINTS;\r\n case Material.LineLoopDrawMode:\r\n return MeshPrimitiveMode.LINE_LOOP;\r\n case Material.LineListDrawMode:\r\n return MeshPrimitiveMode.LINES;\r\n case Material.LineStripDrawMode:\r\n return MeshPrimitiveMode.LINE_STRIP;\r\n }\r\n\r\n throw new Error(`Unknown fill mode: ${fillMode}`);\r\n}\r\n\r\nexport function IsTriangleFillMode(fillMode: number): boolean {\r\n switch (fillMode) {\r\n case Material.TriangleFillMode:\r\n case Material.TriangleStripDrawMode:\r\n case Material.TriangleFanDrawMode:\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport function NormalizeTangent(tangent: Vector4 | Vector3) {\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\nexport function ConvertToRightHandedPosition(value: Vector3): Vector3 {\r\n value.x *= -1;\r\n return value;\r\n}\r\n\r\n/** @internal */\r\nexport function ConvertToRightHandedTransformMatrix(matrix: Matrix): Matrix {\r\n ConvertHandednessMatrix.invertToRef(TmpVectors.Matrix[0]).multiplyToRef(matrix, matrix).multiplyToRef(ConvertHandednessMatrix, matrix);\r\n return matrix;\r\n}\r\n\r\n/**\r\n * Converts, in-place, a left-handed quaternion to a right-handed quaternion via a change of basis.\r\n * @param value the unit quaternion to convert\r\n * @returns the converted quaternion\r\n */\r\nexport function ConvertToRightHandedRotation(value: Quaternion): Quaternion {\r\n /**\r\n * This is the simplified version of the following equation:\r\n * q' = to_quaternion(M * to_matrix(q) * M^-1)\r\n * where M is the conversion matrix `convertHandednessMatrix`,\r\n * q is the input quaternion, and q' is the converted quaternion.\r\n * Reference: https://d3cw3dd2w32x2b.cloudfront.net/wp-content/uploads/2015/01/matrix-to-quat.pdf\r\n */\r\n if (value.x * value.x + value.y * value.y > 0.5) {\r\n const absX = Math.abs(value.x);\r\n const absY = Math.abs(value.y);\r\n if (absX > absY) {\r\n const sign = Math.sign(value.x);\r\n value.x = absX;\r\n value.y *= -sign;\r\n value.z *= -sign;\r\n value.w *= sign;\r\n } else {\r\n const sign = Math.sign(value.y);\r\n value.x *= -sign;\r\n value.y = absY;\r\n value.z *= sign;\r\n value.w *= -sign;\r\n }\r\n } else {\r\n const absZ = Math.abs(value.z);\r\n const absW = Math.abs(value.w);\r\n if (absZ > absW) {\r\n const sign = Math.sign(value.z);\r\n value.x *= -sign;\r\n value.y *= sign;\r\n value.z = absZ;\r\n value.w *= -sign;\r\n } else {\r\n const sign = Math.sign(value.w);\r\n value.x *= sign;\r\n value.y *= -sign;\r\n value.z *= -sign;\r\n value.w = absW;\r\n }\r\n }\r\n\r\n return value;\r\n}\r\n\r\n/**\r\n * Pre-multiplies a 180-degree Y rotation to the quaternion, in order to match glTF's flipped forward direction for cameras.\r\n * @param rotation Target camera rotation.\r\n */\r\nexport function Rotate180Y(rotation: Quaternion): void {\r\n // Simplified from: rotation * (0, 1, 0, 0).\r\n rotation.copyFromFloats(-rotation.z, rotation.w, rotation.x, -rotation.y);\r\n}\r\n\r\n/**\r\n * Collapses GLTF parent and node into a single node, ignoring scaling.\r\n * This is useful for removing nodes that were added by the GLTF importer.\r\n * @param node Original GLTF node (Light or Camera).\r\n * @param parentNode Target parent node.\r\n */\r\nexport function CollapseChildIntoParent(node: INode, parentNode: INode): void {\r\n const parentTranslation = Vector3.FromArrayToRef(parentNode.translation || [0, 0, 0], 0, TmpVectors.Vector3[0]);\r\n const parentRotation = Quaternion.FromArrayToRef(parentNode.rotation || [0, 0, 0, 1], 0, TmpVectors.Quaternion[0]);\r\n const parentMatrix = Matrix.ComposeToRef(DefaultScale, parentRotation, parentTranslation, TmpVectors.Matrix[0]);\r\n\r\n const translation = Vector3.FromArrayToRef(node.translation || [0, 0, 0], 0, TmpVectors.Vector3[2]);\r\n const rotation = Quaternion.FromArrayToRef(node.rotation || [0, 0, 0, 1], 0, TmpVectors.Quaternion[1]);\r\n const matrix = Matrix.ComposeToRef(DefaultScale, rotation, translation, TmpVectors.Matrix[1]);\r\n\r\n parentMatrix.multiplyToRef(matrix, matrix);\r\n matrix.decompose(undefined, parentRotation, parentTranslation);\r\n\r\n if (parentTranslation.equalsWithEpsilon(DefaultTranslation, Epsilon)) {\r\n delete parentNode.translation;\r\n } else {\r\n parentNode.translation = parentTranslation.asArray();\r\n }\r\n\r\n if (parentRotation.equalsWithEpsilon(DefaultRotation, Epsilon)) {\r\n delete parentNode.rotation;\r\n } else {\r\n parentNode.rotation = parentRotation.asArray();\r\n }\r\n\r\n if (parentNode.scale) {\r\n delete parentNode.scale;\r\n }\r\n}\r\n\r\n/**\r\n * Checks whether a camera or light node is candidate for collapsing with its parent node.\r\n * This is useful for roundtrips, as the glTF Importer parents a new node to\r\n * lights and cameras to store their original transformation information.\r\n * @param babylonNode Babylon light or camera node.\r\n * @param parentBabylonNode Target Babylon parent node.\r\n * @returns True if the two nodes can be merged, false otherwise.\r\n */\r\nexport function IsChildCollapsible(babylonNode: ShadowLight | TargetCamera | AreaLight, parentBabylonNode: Node): boolean {\r\n if (!(parentBabylonNode instanceof TransformNode)) {\r\n return false;\r\n }\r\n\r\n // Verify child is the only descendant\r\n const isOnlyDescendant = parentBabylonNode.getChildren().length === 1 && babylonNode.getChildren().length === 0 && babylonNode.parent === parentBabylonNode;\r\n if (!isOnlyDescendant) {\r\n return false;\r\n }\r\n\r\n // Verify parent has the expected scaling, determined by the node type and scene's coordinate system.\r\n const scene = babylonNode.getScene();\r\n const expectedScale = babylonNode instanceof TargetCamera && !scene.useRightHandedSystem ? DefaultLoaderCameraParentScaleLh : DefaultScale;\r\n\r\n if (!parentBabylonNode.scaling.equalsWithEpsilon(expectedScale, Epsilon)) {\r\n Logger.Warn(`Cannot collapse node ${babylonNode.name} into parent node ${parentBabylonNode.name} with modified scaling.`);\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * Converts an IndicesArray into either a Uint32Array or Uint16Array.\r\n * If the `start` and `count` parameters specify a subset of the array, a new view is created.\r\n * If the input is a number[], the data is copied into a new buffer.\r\n * @param indices input array to be converted\r\n * @param start starting index\r\n * @param count number of indices\r\n * @param is32Bits whether the output should be Uint32Array (true) or Uint16Array (false) when indices is an `Array`\r\n * @returns a Uint32Array or Uint16Array\r\n * @internal\r\n */\r\nexport function IndicesArrayToTypedSubarray(indices: IndicesArray, start: number, count: number, is32Bits: boolean): Uint32Array | Uint16Array {\r\n let processedIndices = indices;\r\n if (start !== 0 || count !== indices.length) {\r\n processedIndices = Array.isArray(indices) ? indices.slice(start, start + count) : indices.subarray(start, start + count);\r\n }\r\n\r\n // If Int32Array, cast the indices (which should all be positive) to Uint32Array\r\n if (processedIndices instanceof Int32Array) {\r\n return new Uint32Array(processedIndices.buffer, processedIndices.byteOffset, processedIndices.length);\r\n }\r\n\r\n if (Array.isArray(processedIndices)) {\r\n return is32Bits ? new Uint32Array(processedIndices) : new Uint16Array(processedIndices);\r\n }\r\n\r\n return processedIndices;\r\n}\r\n\r\nexport function DataArrayToUint8Array(data: DataArray): Uint8Array {\r\n if (data instanceof Array) {\r\n const floatData = new Float32Array(data);\r\n return new Uint8Array(floatData.buffer, floatData.byteOffset, floatData.byteLength);\r\n }\r\n\r\n return ArrayBuffer.isView(data) ? new Uint8Array(data.buffer, data.byteOffset, data.byteLength) : new Uint8Array(data);\r\n}\r\n\r\nexport function GetMinMax(data: DataArray, vertexBuffer: VertexBuffer, start: number, count: number): { min: number[]; max: number[] } {\r\n const { byteOffset, byteStride, type, normalized } = vertexBuffer;\r\n const size = vertexBuffer.getSize();\r\n const min = new Array<number>(size).fill(Infinity);\r\n const max = new Array<number>(size).fill(-Infinity);\r\n EnumerateFloatValues(data, byteOffset + start * byteStride, byteStride, size, type, count * size, normalized, (values) => {\r\n for (let i = 0; i < size; i++) {\r\n min[i] = Math.min(min[i], values[i]);\r\n max[i] = Math.max(max[i], values[i]);\r\n }\r\n });\r\n\r\n return { min, max };\r\n}\r\n\r\n/**\r\n * Removes, in-place, object properties which have the same value as the default value.\r\n * Useful for avoiding unnecessary properties in the glTF JSON.\r\n * @param object the object to omit default values from\r\n * @param defaultValues a partial object with default values\r\n * @returns object with default values omitted\r\n */\r\nexport function OmitDefaultValues<T extends object>(object: T, defaultValues: Partial<T>): T {\r\n for (const [key, value] of Object.entries(object)) {\r\n const defaultValue = defaultValues[key as keyof T];\r\n if ((Array.isArray(value) && Array.isArray(defaultValue) && AreArraysEqual(value, defaultValue)) || value === defaultValue) {\r\n delete object[key as keyof T];\r\n }\r\n }\r\n return object;\r\n}\r\n\r\nfunction AreArraysEqual(array1: unknown[], array2: unknown[]): boolean {\r\n return array1.length === array2.length && array1.every((val, i) => val === array2[i]);\r\n}\r\n"]}
|
|
@@ -4,15 +4,15 @@ import * as Serializers from "../3MF/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
|
-
const
|
|
8
|
-
if (typeof
|
|
7
|
+
const GlobalObject = typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : undefined;
|
|
8
|
+
if (typeof GlobalObject !== "undefined") {
|
|
9
9
|
const keys = [];
|
|
10
10
|
for (const serializer in Serializers) {
|
|
11
11
|
// Prevent Reassignment.
|
|
12
12
|
if (keys.indexOf(serializer) > -1) {
|
|
13
13
|
continue;
|
|
14
14
|
}
|
|
15
|
-
|
|
15
|
+
GlobalObject.BABYLON[serializer] = Serializers[serializer];
|
|
16
16
|
keys.push(serializer);
|
|
17
17
|
}
|
|
18
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-3mfSerializer.js","sourceRoot":"","sources":["../../../../
|
|
1
|
+
{"version":3,"file":"legacy-3mfSerializer.js","sourceRoot":"","sources":["../../../../dev/serializers/src/legacy/legacy-3mfSerializer.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAC;AAErD;;;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,CAAC;IACtC,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACnC,wBAAwB;QACxB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAChC,SAAS;QACb,CAAC;QACK,YAAa,CAAC,OAAO,CAAC,UAAU,CAAC,GAAS,WAAY,CAAC,UAAU,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;AACL,CAAC;AAED,cAAc,uBAAuB,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nimport * as Serializers from \"serializers/3MF/index\";\r\n\r\n/**\r\n * This is the entry point for the UMD module.\r\n * The entry point for a future ESM package should be index.ts\r\n */\r\nconst GlobalObject = typeof global !== \"undefined\" ? global : typeof window !== \"undefined\" ? window : undefined;\r\nif (typeof GlobalObject !== \"undefined\") {\r\n const keys = [];\r\n for (const serializer in Serializers) {\r\n // Prevent Reassignment.\r\n if (keys.indexOf(serializer) > -1) {\r\n continue;\r\n }\r\n (<any>GlobalObject).BABYLON[serializer] = (<any>Serializers)[serializer];\r\n keys.push(serializer);\r\n }\r\n}\r\n\r\nexport * from \"serializers/3MF/index\";\r\n"]}
|
|
@@ -4,10 +4,10 @@ import * as Serializers from "../BVH/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
|
-
const
|
|
8
|
-
if (typeof
|
|
7
|
+
const GlobalObject = typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : undefined;
|
|
8
|
+
if (typeof GlobalObject !== "undefined") {
|
|
9
9
|
for (const serializer in Serializers) {
|
|
10
|
-
|
|
10
|
+
GlobalObject.BABYLON[serializer] = Serializers[serializer];
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
export * from "../BVH/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-bvhSerializer.js","sourceRoot":"","sources":["../../../../
|
|
1
|
+
{"version":3,"file":"legacy-bvhSerializer.js","sourceRoot":"","sources":["../../../../dev/serializers/src/legacy/legacy-bvhSerializer.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAC;AAErD;;;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,CAAC;IACtC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QAC7B,YAAa,CAAC,OAAO,CAAC,UAAU,CAAC,GAAS,WAAY,CAAC,UAAU,CAAC,CAAC;IAC7E,CAAC;AACL,CAAC;AAED,cAAc,uBAAuB,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nimport * as Serializers from \"serializers/BVH/index\";\r\n\r\n/**\r\n * This is the entry point for the UMD module.\r\n * The entry point for a future ESM package should be index.ts\r\n */\r\nconst GlobalObject = typeof global !== \"undefined\" ? global : typeof window !== \"undefined\" ? window : undefined;\r\nif (typeof GlobalObject !== \"undefined\") {\r\n for (const serializer in Serializers) {\r\n (<any>GlobalObject).BABYLON[serializer] = (<any>Serializers)[serializer];\r\n }\r\n}\r\n\r\nexport * from \"serializers/BVH/index\";\r\n"]}
|
|
@@ -8,10 +8,11 @@ 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
|
-
const
|
|
12
|
-
if (typeof
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
const GlobalObject = typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : undefined;
|
|
12
|
+
if (typeof GlobalObject !== "undefined") {
|
|
13
|
+
GlobalObject.BABYLON = GlobalObject.BABYLON || {};
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
15
|
+
const BABYLON = GlobalObject.BABYLON;
|
|
15
16
|
BABYLON.GLTF2 = BABYLON.GLTF2 || {};
|
|
16
17
|
BABYLON.GLTF2.Exporter = BABYLON.GLTF2.Exporter || {};
|
|
17
18
|
BABYLON.GLTF2.Exporter.Extensions = BABYLON.GLTF2.Exporter.Extensions || {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-glTF2Serializer.js","sourceRoot":"","sources":["../../../../
|
|
1
|
+
{"version":3,"file":"legacy-glTF2Serializer.js","sourceRoot":"","sources":["../../../../dev/serializers/src/legacy/legacy-glTF2Serializer.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,OAAO,KAAK,SAAS,MAAM,mCAAmC,CAAC;AAC/D,OAAO,KAAK,KAAK,MAAM,+BAA+B,CAAC;AACvD,OAAO,KAAK,WAAW,MAAM,qCAAqC,CAAC;AACnE,OAAO,KAAK,UAAU,MAAM,uCAAuC,CAAC;AACpE,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC;AAEpD;;;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,CAAC;IAChC,YAAa,CAAC,OAAO,GAAS,YAAa,CAAC,OAAO,IAAI,EAAE,CAAC;IAChE,gEAAgE;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;IAE5E,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,GAAS,SAAU,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,GAAS,KAAM,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,GAAS,WAAY,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,GAAS,UAAW,CAAC,GAAG,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACtB,wBAAwB;QACxB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACzB,SAAS;QACb,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAS,KAAM,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;AACL,CAAC;AAED,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nimport * as Exporters from \"serializers/glTF/glTFFileExporter\";\r\nimport * as Datas from \"serializers/glTF/2.0/glTFData\";\r\nimport * as Serializers from \"serializers/glTF/2.0/glTFSerializer\";\r\nimport * as Extensions from \"serializers/glTF/2.0/Extensions/index\";\r\nimport * as GLTF2 from \"serializers/glTF/2.0/index\";\r\n\r\n/**\r\n * This is the entry point for the UMD module.\r\n * The entry point for a future ESM package should be index.ts\r\n */\r\nconst GlobalObject = typeof global !== \"undefined\" ? global : typeof window !== \"undefined\" ? window : undefined;\r\nif (typeof GlobalObject !== \"undefined\") {\r\n (<any>GlobalObject).BABYLON = (<any>GlobalObject).BABYLON || {};\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n const BABYLON = (<any>GlobalObject).BABYLON;\r\n BABYLON.GLTF2 = BABYLON.GLTF2 || {};\r\n BABYLON.GLTF2.Exporter = BABYLON.GLTF2.Exporter || {};\r\n BABYLON.GLTF2.Exporter.Extensions = BABYLON.GLTF2.Exporter.Extensions || {};\r\n\r\n const keys = [];\r\n for (const key in Exporters) {\r\n BABYLON[key] = (<any>Exporters)[key];\r\n keys.push(key);\r\n }\r\n for (const key in Datas) {\r\n BABYLON[key] = (<any>Datas)[key];\r\n keys.push(key);\r\n }\r\n for (const key in Serializers) {\r\n BABYLON[key] = (<any>Serializers)[key];\r\n keys.push(key);\r\n }\r\n\r\n for (const key in Extensions) {\r\n BABYLON.GLTF2.Exporter.Extensions[key] = (<any>Extensions)[key];\r\n keys.push(key);\r\n }\r\n\r\n for (const key in GLTF2) {\r\n // Prevent Reassignment.\r\n if (keys.indexOf(key) > -1) {\r\n continue;\r\n }\r\n\r\n BABYLON.GLTF2.Exporter[key] = (<any>GLTF2)[key];\r\n }\r\n}\r\n\r\nexport * from \"serializers/glTF/glTFFileExporter\";\r\nexport * from \"serializers/glTF/2.0/index\";\r\n"]}
|
|
@@ -4,10 +4,10 @@ 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
|
-
const
|
|
8
|
-
if (typeof
|
|
7
|
+
const GlobalObject = typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : undefined;
|
|
8
|
+
if (typeof GlobalObject !== "undefined") {
|
|
9
9
|
for (const serializer in Serializers) {
|
|
10
|
-
|
|
10
|
+
GlobalObject.BABYLON[serializer] = Serializers[serializer];
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
export * from "../OBJ/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-objSerializer.js","sourceRoot":"","sources":["../../../../
|
|
1
|
+
{"version":3,"file":"legacy-objSerializer.js","sourceRoot":"","sources":["../../../../dev/serializers/src/legacy/legacy-objSerializer.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAC;AAErD;;;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,CAAC;IACtC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QAC7B,YAAa,CAAC,OAAO,CAAC,UAAU,CAAC,GAAS,WAAY,CAAC,UAAU,CAAC,CAAC;IAC7E,CAAC;AACL,CAAC;AAED,cAAc,uBAAuB,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nimport * as Serializers from \"serializers/OBJ/index\";\r\n\r\n/**\r\n * This is the entry point for the UMD module.\r\n * The entry point for a future ESM package should be index.ts\r\n */\r\nconst GlobalObject = typeof global !== \"undefined\" ? global : typeof window !== \"undefined\" ? window : undefined;\r\nif (typeof GlobalObject !== \"undefined\") {\r\n for (const serializer in Serializers) {\r\n (<any>GlobalObject).BABYLON[serializer] = (<any>Serializers)[serializer];\r\n }\r\n}\r\n\r\nexport * from \"serializers/OBJ/index\";\r\n"]}
|
|
@@ -4,10 +4,10 @@ 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
|
-
const
|
|
8
|
-
if (typeof
|
|
7
|
+
const GlobalObject = typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : undefined;
|
|
8
|
+
if (typeof GlobalObject !== "undefined") {
|
|
9
9
|
for (const serializer in Serializers) {
|
|
10
|
-
|
|
10
|
+
GlobalObject.BABYLON[serializer] = Serializers[serializer];
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
export * from "../stl/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-stlSerializer.js","sourceRoot":"","sources":["../../../../
|
|
1
|
+
{"version":3,"file":"legacy-stlSerializer.js","sourceRoot":"","sources":["../../../../dev/serializers/src/legacy/legacy-stlSerializer.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAC;AAErD;;;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,CAAC;IACtC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QAC7B,YAAa,CAAC,OAAO,CAAC,UAAU,CAAC,GAAS,WAAY,CAAC,UAAU,CAAC,CAAC;IAC7E,CAAC;AACL,CAAC;AAED,cAAc,uBAAuB,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nimport * as Serializers from \"serializers/stl/index\";\r\n\r\n/**\r\n * This is the entry point for the UMD module.\r\n * The entry point for a future ESM package should be index.ts\r\n */\r\nconst GlobalObject = typeof global !== \"undefined\" ? global : typeof window !== \"undefined\" ? window : undefined;\r\nif (typeof GlobalObject !== \"undefined\") {\r\n for (const serializer in Serializers) {\r\n (<any>GlobalObject).BABYLON[serializer] = (<any>Serializers)[serializer];\r\n }\r\n}\r\n\r\nexport * from \"serializers/stl/index\";\r\n"]}
|
|
@@ -4,10 +4,10 @@ import * as Serializers from "../USDZ/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
|
-
const
|
|
8
|
-
if (typeof
|
|
7
|
+
const GlobalObject = typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : undefined;
|
|
8
|
+
if (typeof GlobalObject !== "undefined") {
|
|
9
9
|
for (const serializer in Serializers) {
|
|
10
|
-
|
|
10
|
+
GlobalObject.BABYLON[serializer] = Serializers[serializer];
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
export * from "../USDZ/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-usdzSerializer.js","sourceRoot":"","sources":["../../../../
|
|
1
|
+
{"version":3,"file":"legacy-usdzSerializer.js","sourceRoot":"","sources":["../../../../dev/serializers/src/legacy/legacy-usdzSerializer.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAC;AAEtD;;;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,CAAC;IACtC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QAC7B,YAAa,CAAC,OAAO,CAAC,UAAU,CAAC,GAAS,WAAY,CAAC,UAAU,CAAC,CAAC;IAC7E,CAAC;AACL,CAAC;AAED,cAAc,wBAAwB,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nimport * as Serializers from \"serializers/USDZ/index\";\r\n\r\n/**\r\n * This is the entry point for the UMD module.\r\n * The entry point for a future ESM package should be index.ts\r\n */\r\nconst GlobalObject = typeof global !== \"undefined\" ? global : typeof window !== \"undefined\" ? window : undefined;\r\nif (typeof GlobalObject !== \"undefined\") {\r\n for (const serializer in Serializers) {\r\n (<any>GlobalObject).BABYLON[serializer] = (<any>Serializers)[serializer];\r\n }\r\n}\r\n\r\nexport * from \"serializers/USDZ/index\";\r\n"]}
|
package/legacy/legacy.js
CHANGED
package/legacy/legacy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy.js","sourceRoot":"","sources":["../../../../
|
|
1
|
+
{"version":3,"file":"legacy.js","sourceRoot":"","sources":["../../../../dev/serializers/src/legacy/legacy.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,OAAO,mBAAmB,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nimport \"serializers/index\";\r\nexport * from \"./legacy-bvhSerializer\";\r\nexport * from \"./legacy-glTF2Serializer\";\r\nexport * from \"./legacy-objSerializer\";\r\nexport * from \"./legacy-stlSerializer\";\r\nexport * from \"./legacy-usdzSerializer\";\r\nexport * from \"./legacy-3mfSerializer\";\r\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onerjs/serializers",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.46.2",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"module": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -14,14 +14,14 @@
|
|
|
14
14
|
"scripts": {
|
|
15
15
|
"build": "npm run clean && npm run compile",
|
|
16
16
|
"clean": "rimraf dist && rimraf *.tsbuildinfo -g && rimraf \"./**/*.!(md|json|build.json|lts.json)\" -g",
|
|
17
|
-
"compile": "tsc -b tsconfig.build.json &&
|
|
17
|
+
"compile": "tsc -b tsconfig.build.json && build-tools -c tp --outDir . --buildType es6 --basePackage @onerjs/serializers --appendJS",
|
|
18
18
|
"postcompile": "build-tools -c add-js-to-es6"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"@onerjs/core": "8.
|
|
21
|
+
"@onerjs/core": "8.46.2",
|
|
22
22
|
"@dev/build-tools": "^1.0.0",
|
|
23
23
|
"@lts/serializers": "^1.0.0",
|
|
24
|
-
"babylonjs-gltf2interface": "^8.
|
|
24
|
+
"babylonjs-gltf2interface": "^8.46.2"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
27
|
"@onerjs/core": "^8.0.0",
|
package/stl/stlSerializer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stlSerializer.js","sourceRoot":"","sources":["../../../../dev/serializers/src/stl/stlSerializer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Mesh } from \"core/Meshes/mesh\";\r\nimport { InstancedMesh } from \"core/Meshes/instancedMesh\";\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 * @param supportInstancedMeshes toggle to export instanced Meshes. Enabling support for instanced meshes will override doNoBakeTransform as true\r\n * @param exportIndividualMeshes toggle to export each mesh as an independent mesh. By default, all the meshes are combined into one mesh. This property has no effect when exporting in binary format\r\n * @returns the STL as UTF8 string\r\n */\r\n public static CreateSTL(\r\n meshes: (Mesh | InstancedMesh)[],\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 supportInstancedMeshes: boolean = false,\r\n exportIndividualMeshes: 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 const getVerticesData = function (mesh: InstancedMesh | Mesh) {\r\n if (supportInstancedMeshes) {\r\n let sourceMesh = mesh;\r\n if (mesh instanceof InstancedMesh) {\r\n sourceMesh = mesh.sourceMesh;\r\n }\r\n const data = sourceMesh.getVerticesData(VertexBuffer.PositionKind, true, true);\r\n if (!data) {\r\n return [];\r\n }\r\n const temp = Vector3.Zero();\r\n let index;\r\n for (index = 0; index < data.length; index += 3) {\r\n Vector3.TransformCoordinatesFromFloatsToRef(data[index], data[index + 1], data[index + 2], mesh.computeWorldMatrix(true), temp).toArray(data, index);\r\n }\r\n return data;\r\n } else {\r\n return mesh.getVerticesData(VertexBuffer.PositionKind) || [];\r\n }\r\n };\r\n\r\n if (supportInstancedMeshes) {\r\n doNotBakeTransform = true;\r\n }\r\n\r\n let data: DataView<ArrayBuffer> | string = \"\";\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 if (!exportIndividualMeshes) {\r\n data = \"solid stlmesh\\r\\n\";\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 (!binary && exportIndividualMeshes) {\r\n data += \"solid \" + mesh.name + \"\\r\\n\";\r\n }\r\n if (!doNotBakeTransform && mesh instanceof Mesh) {\r\n mesh.bakeCurrentTransformIntoVertices();\r\n }\r\n const vertices = getVerticesData(mesh);\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 += \"\\tfacet normal \" + fd.n.x + \" \" + fd.n.y + \" \" + fd.n.z + \"\\r\\n\";\r\n data += \"\\t\\touter loop\\r\\n\";\r\n data += \"\\t\\t\\tvertex \" + fd.v[0].x + \" \" + fd.v[0].y + \" \" + fd.v[0].z + \"\\r\\n\";\r\n data += \"\\t\\t\\tvertex \" + fd.v[1].x + \" \" + fd.v[1].y + \" \" + fd.v[1].z + \"\\r\\n\";\r\n data += \"\\t\\t\\tvertex \" + fd.v[2].x + \" \" + fd.v[2].y + \" \" + fd.v[2].z + \"\\r\\n\";\r\n data += \"\\t\\tendloop\\r\\n\";\r\n data += \"\\tendfacet\\r\\n\";\r\n }\r\n }\r\n if (!binary && exportIndividualMeshes) {\r\n data += \"endsolid \" + name + \"\\r\\n\";\r\n }\r\n }\r\n\r\n if (!binary && !exportIndividualMeshes) {\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":["../../../../dev/serializers/src/stl/stlSerializer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Mesh } from \"core/Meshes/mesh\";\r\nimport { InstancedMesh } from \"core/Meshes/instancedMesh\";\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 * @param supportInstancedMeshes toggle to export instanced Meshes. Enabling support for instanced meshes will override doNoBakeTransform as true\r\n * @param exportIndividualMeshes toggle to export each mesh as an independent mesh. By default, all the meshes are combined into one mesh. This property has no effect when exporting in binary format\r\n * @returns the STL as UTF8 string\r\n */\r\n public static CreateSTL(\r\n meshes: (Mesh | InstancedMesh)[],\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 supportInstancedMeshes: boolean = false,\r\n exportIndividualMeshes: 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 const getVerticesData = function (mesh: InstancedMesh | Mesh) {\r\n if (supportInstancedMeshes) {\r\n let sourceMesh = mesh;\r\n if (mesh instanceof InstancedMesh) {\r\n sourceMesh = mesh.sourceMesh;\r\n }\r\n const data = sourceMesh.getVerticesData(VertexBuffer.PositionKind, true, true);\r\n if (!data) {\r\n return [];\r\n }\r\n const temp = Vector3.Zero();\r\n let index;\r\n for (index = 0; index < data.length; index += 3) {\r\n Vector3.TransformCoordinatesFromFloatsToRef(data[index], data[index + 1], data[index + 2], mesh.computeWorldMatrix(true), temp).toArray(data, index);\r\n }\r\n return data;\r\n } else {\r\n return mesh.getVerticesData(VertexBuffer.PositionKind) || [];\r\n }\r\n };\r\n\r\n if (supportInstancedMeshes) {\r\n doNotBakeTransform = true;\r\n }\r\n\r\n let data: DataView<ArrayBuffer> | string = \"\";\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 if (!exportIndividualMeshes) {\r\n data = \"solid stlmesh\\r\\n\";\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 (!binary && exportIndividualMeshes) {\r\n data += \"solid \" + mesh.name + \"\\r\\n\";\r\n }\r\n if (!doNotBakeTransform && mesh instanceof Mesh) {\r\n mesh.bakeCurrentTransformIntoVertices();\r\n }\r\n const vertices = getVerticesData(mesh);\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 += \"\\tfacet normal \" + fd.n.x + \" \" + fd.n.y + \" \" + fd.n.z + \"\\r\\n\";\r\n data += \"\\t\\touter loop\\r\\n\";\r\n data += \"\\t\\t\\tvertex \" + fd.v[0].x + \" \" + fd.v[0].y + \" \" + fd.v[0].z + \"\\r\\n\";\r\n data += \"\\t\\t\\tvertex \" + fd.v[1].x + \" \" + fd.v[1].y + \" \" + fd.v[1].z + \"\\r\\n\";\r\n data += \"\\t\\t\\tvertex \" + fd.v[2].x + \" \" + fd.v[2].y + \" \" + fd.v[2].z + \"\\r\\n\";\r\n data += \"\\t\\tendloop\\r\\n\";\r\n data += \"\\tendfacet\\r\\n\";\r\n }\r\n }\r\n if (!binary && exportIndividualMeshes) {\r\n data += \"endsolid \" + name + \"\\r\\n\";\r\n }\r\n }\r\n\r\n if (!binary && !exportIndividualMeshes) {\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"]}
|