microsoft/glTF-Toolkit

WindowsMRAssetConverter Could not parse accessor 0

Dharnidharka opened this issue · 7 comments

Hello,

I am trying to use the MSFT_LOD extension for LOD with gltf files and came to this toolkit. I've downloaded the WindowsMRAssetConverter.exe. On running the command I'm getting the following output:

WindowsMRAssetConverter T2H.glb -o T2.glb -lod T2L.glb T1L.glb -screen-coverage 0.5 0.2 0.01

This will generate an asset compatible with Desktop (version 1709+)

Loading input document: T2H.glb...
Could not parse accessor 0
The member bufferView was not found

I had a look at this documentation (https://docs.microsoft.com/en-us/windows/mixed-reality/creating-3d-models-for-use-in-the-windows-mixed-reality-home) but couldn't figure out the issue.

Is it possible to run the converter from some non-Windows system as well and is there a documentation for it? If not, I could help in creating one with a little guidance.

Hi @Dharnidharka,

For the first issue, are all your GLBs valid? You can validate them with http://github.khronos.org/glTF-Validator/ .

About running from a non-Windows system, not right now, but we'd love to have that capability. The main limitation is the dependency on DirectXTex for texture processing, but it should be possible to abstract that if you want to try it.

Hi @robertos,

I made the validation checks. All the files are valid. However I am getting a warning.

{
"uri": "T2H.glb",
"mimeType": "model/gltf-binary",
"validatorVersion": "2.0.0-dev.2.4",
"validatedAt": "2018-07-20T18:12:12.474Z",
"issues": {
"numErrors": 0,
"numWarnings": 1,
"numInfos": 2,
"numHints": 0,
"messages": [
{
"code": "UNSUPPORTED_EXTENSION",
"message": "Unsupported extension encountered: 'KHR_draco_mesh_compression'.",
"severity": 1,
"pointer": "/extensionsUsed/0"
},
{
"code": "UNUSED_OBJECT",
"message": "This object may be unused.",
"severity": 2,
"pointer": "/bufferViews/0"
},
{
"code": "UNUSED_OBJECT",
"message": "This object may be unused.",
"severity": 2,
"pointer": "/bufferViews/1"
}
],
"truncated": false
},
"info": {
"version": "2.0",
"generator": "COLLADA2GLTF",
"extensionsUsed": [
"KHR_draco_mesh_compression"
],
"extensionsRequired": [
"KHR_draco_mesh_compression"
],
"resources": [
{
"pointer": "/buffers/0",
"mimeType": "application/gltf-buffer",
"storage": "glb",
"byteLength": 1318752
},
{
"pointer": "/images/0",
"mimeType": "image/jpeg",
"storage": "bufferView",
"image": {
"width": 1024,
"height": 1024,
"format": "RGB",
"bits": 8
}
},
{
"pointer": "/images/1",
"mimeType": "image/jpeg",
"storage": "bufferView",
"image": {
"width": 1024,
"height": 1024,
"format": "RGB",
"bits": 8
}
}
],
"hasAnimations": false,
"hasMaterials": true,
"hasMorphTargets": false,
"hasSkins": false,
"hasTextures": true,
"hasDefaultScene": true,
"primitivesCount": 2,
"maxAttributesUsed": 3
}
}

Ah that explains it... we can't use assets compressed with Draco as input at this time. Please file an issue if you need this capability.

Closing this issue - see @najadojo 's comment and please log a new issue if you'd like to request Draco support for input (reading). Additionally, I think your exporter is likely creating invalid GLTF, since the Draco extension should be on extensionsRequired, not extensionsUsed, most likely.

@robertos @najadojo Thank you for the prompt reply. I'll check if there is some issue with my exporter. Just out of curiosity, if I wanted to write a converter and create a PR, any resources that could help me get started, I'm relatively new to converters.

PR #36 contains a change to allow compression of the output, I'd start from that. As for using them as input for this tool after #36 merges there probably won't be too much left to do just handling the accessors that don't have bufferViews (your error above). Everything else may just work.

Additionally, I think your exporter is likely creating invalid GLTF, since the Draco extension should be on extensionsRequired, not extensionsUsed, most likely.

FYI, if an extension name is in extensionsRequired, it must also be in extensionsUsed. In this case, the asset requires Draco and the extension should be in both used and required lists.

From https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#specifying-extensions:

extensionsRequired is a subset of extensionsUsed. All values in extensionsRequired must also exist in extensionsUsed.