1 line
21 KiB
Plaintext
1 line
21 KiB
Plaintext
{"version":3,"file":"decodeDraco.js","sources":["../../../../Source/WorkersES6/decodeDraco.js"],"sourcesContent":["/* global require */\nimport ComponentDatatype from \"../Core/ComponentDatatype.js\";\nimport defined from \"../Core/defined.js\";\nimport IndexDatatype from \"../Core/IndexDatatype.js\";\nimport RuntimeError from \"../Core/RuntimeError.js\";\nimport createTaskProcessorWorker from \"./createTaskProcessorWorker.js\";\n\nlet draco;\n\nfunction decodeIndexArray(dracoGeometry, dracoDecoder) {\n const numPoints = dracoGeometry.num_points();\n const numFaces = dracoGeometry.num_faces();\n const faceIndices = new draco.DracoInt32Array();\n const numIndices = numFaces * 3;\n const indexArray = IndexDatatype.createTypedArray(numPoints, numIndices);\n\n let offset = 0;\n for (let i = 0; i < numFaces; ++i) {\n dracoDecoder.GetFaceFromMesh(dracoGeometry, i, faceIndices);\n\n indexArray[offset + 0] = faceIndices.GetValue(0);\n indexArray[offset + 1] = faceIndices.GetValue(1);\n indexArray[offset + 2] = faceIndices.GetValue(2);\n offset += 3;\n }\n\n draco.destroy(faceIndices);\n\n return {\n typedArray: indexArray,\n numberOfIndices: numIndices,\n };\n}\n\nfunction decodeQuantizedDracoTypedArray(\n dracoGeometry,\n dracoDecoder,\n dracoAttribute,\n quantization,\n vertexArrayLength\n) {\n let vertexArray;\n let attributeData;\n if (quantization.quantizationBits <= 8) {\n attributeData = new draco.DracoUInt8Array();\n vertexArray = new Uint8Array(vertexArrayLength);\n dracoDecoder.GetAttributeUInt8ForAllPoints(\n dracoGeometry,\n dracoAttribute,\n attributeData\n );\n } else {\n attributeData = new draco.DracoUInt16Array();\n vertexArray = new Uint16Array(vertexArrayLength);\n dracoDecoder.GetAttributeUInt16ForAllPoints(\n dracoGeometry,\n dracoAttribute,\n attributeData\n );\n }\n\n for (let i = 0; i < vertexArrayLength; ++i) {\n vertexArray[i] = attributeData.GetValue(i);\n }\n\n draco.destroy(attributeData);\n return vertexArray;\n}\n\nfunction decodeDracoTypedArray(\n dracoGeometry,\n dracoDecoder,\n dracoAttribute,\n vertexArrayLength\n) {\n let vertexArray;\n let attributeData;\n\n // Some attribute types are casted down to 32 bit since Draco only returns 32 bit values\n switch (dracoAttribute.data_type()) {\n case 1:\n case 11: // DT_INT8 or DT_BOOL\n attributeData = new draco.DracoInt8Array();\n vertexArray = new Int8Array(vertexArrayLength);\n dracoDecoder.GetAttributeInt8ForAllPoints(\n dracoGeometry,\n dracoAttribute,\n attributeData\n );\n break;\n case 2: // DT_UINT8\n attributeData = new draco.DracoUInt8Array();\n vertexArray = new Uint8Array(vertexArrayLength);\n dracoDecoder.GetAttributeUInt8ForAllPoints(\n dracoGeometry,\n dracoAttribute,\n attributeData\n );\n break;\n case 3: // DT_INT16\n attributeData = new draco.DracoInt16Array();\n vertexArray = new Int16Array(vertexArrayLength);\n dracoDecoder.GetAttributeInt16ForAllPoints(\n dracoGeometry,\n dracoAttribute,\n attributeData\n );\n break;\n case 4: // DT_UINT16\n attributeData = new draco.DracoUInt16Array();\n vertexArray = new Uint16Array(vertexArrayLength);\n dracoDecoder.GetAttributeUInt16ForAllPoints(\n dracoGeometry,\n dracoAttribute,\n attributeData\n );\n break;\n case 5:\n case 7: // DT_INT32 or DT_INT64\n attributeData = new draco.DracoInt32Array();\n vertexArray = new Int32Array(vertexArrayLength);\n dracoDecoder.GetAttributeInt32ForAllPoints(\n dracoGeometry,\n dracoAttribute,\n attributeData\n );\n break;\n case 6:\n case 8: // DT_UINT32 or DT_UINT64\n attributeData = new draco.DracoUInt32Array();\n vertexArray = new Uint32Array(vertexArrayLength);\n dracoDecoder.GetAttributeUInt32ForAllPoints(\n dracoGeometry,\n dracoAttribute,\n attributeData\n );\n break;\n case 9:\n case 10: // DT_FLOAT32 or DT_FLOAT64\n attributeData = new draco.DracoFloat32Array();\n vertexArray = new Float32Array(vertexArrayLength);\n dracoDecoder.GetAttributeFloatForAllPoints(\n dracoGeometry,\n dracoAttribute,\n attributeData\n );\n break;\n }\n\n for (let i = 0; i < vertexArrayLength; ++i) {\n vertexArray[i] = attributeData.GetValue(i);\n }\n\n draco.destroy(attributeData);\n return vertexArray;\n}\n\nfunction decodeAttribute(dracoGeometry, dracoDecoder, dracoAttribute) {\n const numPoints = dracoGeometry.num_points();\n const numComponents = dracoAttribute.num_components();\n\n let quantization;\n let transform = new draco.AttributeQuantizationTransform();\n if (transform.InitFromAttribute(dracoAttribute)) {\n const minValues = new Array(numComponents);\n for (let i = 0; i < numComponents; ++i) {\n minValues[i] = transform.min_value(i);\n }\n quantization = {\n quantizationBits: transform.quantization_bits(),\n minValues: minValues,\n range: transform.range(),\n octEncoded: false,\n };\n }\n draco.destroy(transform);\n\n transform = new draco.AttributeOctahedronTransform();\n if (transform.InitFromAttribute(dracoAttribute)) {\n quantization = {\n quantizationBits: transform.quantization_bits(),\n octEncoded: true,\n };\n }\n draco.destroy(transform);\n\n const vertexArrayLength = numPoints * numComponents;\n let vertexArray;\n if (defined(quantization)) {\n vertexArray = decodeQuantizedDracoTypedArray(\n dracoGeometry,\n dracoDecoder,\n dracoAttribute,\n quantization,\n vertexArrayLength\n );\n } else {\n vertexArray = decodeDracoTypedArray(\n dracoGeometry,\n dracoDecoder,\n dracoAttribute,\n vertexArrayLength\n );\n }\n\n const componentDatatype = ComponentDatatype.fromTypedArray(vertexArray);\n\n return {\n array: vertexArray,\n data: {\n componentsPerAttribute: numComponents,\n componentDatatype: componentDatatype,\n byteOffset: dracoAttribute.byte_offset(),\n byteStride:\n ComponentDatatype.getSizeInBytes(componentDatatype) * numComponents,\n normalized: dracoAttribute.normalized(),\n quantization: quantization,\n },\n };\n}\n\nfunction decodePointCloud(parameters) {\n const dracoDecoder = new draco.Decoder();\n\n if (parameters.dequantizeInShader) {\n dracoDecoder.SkipAttributeTransform(draco.POSITION);\n dracoDecoder.SkipAttributeTransform(draco.NORMAL);\n }\n\n const buffer = new draco.DecoderBuffer();\n buffer.Init(parameters.buffer, parameters.buffer.length);\n\n const geometryType = dracoDecoder.GetEncodedGeometryType(buffer);\n if (geometryType !== draco.POINT_CLOUD) {\n throw new RuntimeError(\"Draco geometry type must be POINT_CLOUD.\");\n }\n\n const dracoPointCloud = new draco.PointCloud();\n const decodingStatus = dracoDecoder.DecodeBufferToPointCloud(\n buffer,\n dracoPointCloud\n );\n if (!decodingStatus.ok() || dracoPointCloud.ptr === 0) {\n throw new RuntimeError(\n `Error decoding draco point cloud: ${decodingStatus.error_msg()}`\n );\n }\n\n draco.destroy(buffer);\n\n const result = {};\n\n const properties = parameters.properties;\n for (const propertyName in properties) {\n if (properties.hasOwnProperty(propertyName)) {\n let dracoAttribute;\n if (propertyName === \"POSITION\" || propertyName === \"NORMAL\") {\n const dracoAttributeId = dracoDecoder.GetAttributeId(\n dracoPointCloud,\n draco[propertyName]\n );\n dracoAttribute = dracoDecoder.GetAttribute(\n dracoPointCloud,\n dracoAttributeId\n );\n } else {\n const attributeId = properties[propertyName];\n dracoAttribute = dracoDecoder.GetAttributeByUniqueId(\n dracoPointCloud,\n attributeId\n );\n }\n result[propertyName] = decodeAttribute(\n dracoPointCloud,\n dracoDecoder,\n dracoAttribute\n );\n }\n }\n\n draco.destroy(dracoPointCloud);\n draco.destroy(dracoDecoder);\n\n return result;\n}\n\nfunction decodePrimitive(parameters) {\n const dracoDecoder = new draco.Decoder();\n\n // Skip all parameter types except generic\n const attributesToSkip = [\"POSITION\", \"NORMAL\", \"COLOR\", \"TEX_COORD\"];\n if (parameters.dequantizeInShader) {\n for (let i = 0; i < attributesToSkip.length; ++i) {\n dracoDecoder.SkipAttributeTransform(draco[attributesToSkip[i]]);\n }\n }\n\n const bufferView = parameters.bufferView;\n const buffer = new draco.DecoderBuffer();\n buffer.Init(parameters.array, bufferView.byteLength);\n\n const geometryType = dracoDecoder.GetEncodedGeometryType(buffer);\n if (geometryType !== draco.TRIANGULAR_MESH) {\n throw new RuntimeError(\"Unsupported draco mesh geometry type.\");\n }\n\n const dracoGeometry = new draco.Mesh();\n const decodingStatus = dracoDecoder.DecodeBufferToMesh(buffer, dracoGeometry);\n if (!decodingStatus.ok() || dracoGeometry.ptr === 0) {\n throw new RuntimeError(\n `Error decoding draco mesh geometry: ${decodingStatus.error_msg()}`\n );\n }\n\n draco.destroy(buffer);\n\n const attributeData = {};\n\n const compressedAttributes = parameters.compressedAttributes;\n for (const attributeName in compressedAttributes) {\n if (compressedAttributes.hasOwnProperty(attributeName)) {\n const compressedAttribute = compressedAttributes[attributeName];\n const dracoAttribute = dracoDecoder.GetAttributeByUniqueId(\n dracoGeometry,\n compressedAttribute\n );\n attributeData[attributeName] = decodeAttribute(\n dracoGeometry,\n dracoDecoder,\n dracoAttribute\n );\n }\n }\n\n const result = {\n indexArray: decodeIndexArray(dracoGeometry, dracoDecoder),\n attributeData: attributeData,\n };\n\n draco.destroy(dracoGeometry);\n draco.destroy(dracoDecoder);\n\n return result;\n}\n\nfunction decode(parameters) {\n if (defined(parameters.bufferView)) {\n return decodePrimitive(parameters);\n }\n return decodePointCloud(parameters);\n}\n\nfunction initWorker(dracoModule) {\n draco = dracoModule;\n self.onmessage = createTaskProcessorWorker(decode);\n self.postMessage(true);\n}\n\nfunction decodeDraco(event) {\n const data = event.data;\n\n // Expect the first message to be to load a web assembly module\n const wasmConfig = data.webAssemblyConfig;\n if (defined(wasmConfig)) {\n // Require and compile WebAssembly module, or use fallback if not supported\n return require([wasmConfig.modulePath], function (dracoModule) {\n if (defined(wasmConfig.wasmBinaryFile)) {\n if (!defined(dracoModule)) {\n dracoModule = self.DracoDecoderModule;\n }\n\n dracoModule(wasmConfig).then(function (compiledModule) {\n initWorker(compiledModule);\n });\n } else {\n initWorker(dracoModule());\n }\n });\n }\n}\nexport default decodeDraco;\n"],"names":["IndexDatatype","defined","ComponentDatatype","RuntimeError"],"mappings":"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"} |