Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

obj to b3dm Use draco compression #233

Open
mylove10086 opened this issue Mar 2, 2020 · 11 comments
Open

obj to b3dm Use draco compression #233

mylove10086 opened this issue Mar 2, 2020 · 11 comments

Comments

@mylove10086
Copy link

Hello, I have completed the conversion of obj to gltf using the draco compression model. But when I converted obj to a 3dtiles b3dm file and used the draco compression model, there was no success. When loading 3dtiles in cesium, the browser prompted ‘Unsupported draco mesh geometry type.’
But I didn't find the documentation about draco compressed 3dtiles on the cesium official website.
I have a question
How do I use draco to compress 3dtiles?

@lilleyse
Copy link
Contributor

lilleyse commented Mar 2, 2020

@mylove10086 did you use https://github.com/CesiumGS/gltf-pipeline or some other tool to do the draco compression? Could you post the obj and gltf?

@mylove10086
Copy link
Author

I refer to https://github.com/KhronosGroup/COLLADA2GLTF to complete the obj conversion gltf and b3dm. However, when using draco to compress b3dm tiles, there is an error when loading in cesium. The error in the browser is ‘Unsupported draco mesh geometry type.’ I do n’t know where the problem is now. I guess it's in gltf:
"extensionsRequired": [
     "KHR_draco_mesh_compression"
   ],
   "extensionsUsed": [
     "KHR_draco_mesh_compression"
   ]. do you have any good advice. Is there a reference to b3dm files done using draco compression?

@mylove10086
Copy link
Author

mylove10086 commented Mar 3, 2020

This is part of the b3dm compressed by draco:
{
  "BATCH_LENGTH": 1
} {
  "batchId": [
    0
  ],
  "name": [
    "Plane"
  ],
  "maxPoint": [
    [
      6.4123969078063969,
      0.0,
      6.4123969078063969
    ]
  ],
  "minPoint": [
    [
      -6.4123969078063969,
      0.0,
      -6.4123969078063969
    ]
  ]
}
{
  "asset": {
    "version": "2.0",
    "copyright": "Mylove",
    "generator": "CObj2Gltf @ Mylove"
  },
  "scenes": [
    {
      "nodes": [
        0
      ]
    }
  ],
  "scene": 0,
  "nodes": [
    {
      "name": "Plane_node",
      "mesh": 0
    }
  ],
  "meshes": [
    {
      "name": "Plane_Mesh",
      "primitives": [
        {
          "name": "Plane_primitive",
          "extensions": {
            "KHR_draco_mesh_compression": {
              "bufferView": 0,
              "attributes": {
                "NORMAL": 1,
                "POSITION": 0
              }
            }
          },
          "attributes": {
            "NORMAL": 1,
            "POSITION": 2,
            "_BATCHID": 3
          },
          "indices": 0,
          "mode": 4,
          "material": 0
        }
      ]
    }
  ],
  "accessors": [
    {
      "name": "Plane_indices",
      "count": 6,
      "type": "SCALAR",
      "componentType": 5123,
      "max": [
        3
      ],
      "min": [
        0
      ]
    },
    {
      "name": "Plane_normal",
      "count": 4,
      "type": "VEC3",
      "componentType": 5126,
      "max": [
        0.0,
        1.0,
        0.0
      ],
      "min": [
        0.0,
        1.0,
        0.0
      ]
    },
    {
      "name": "Plane_position",
      "count": 4,
      "type": "VEC3",
      "componentType": 5126,
      "max": [
        6.4123969078063969,
        0.0,
        6.4123969078063969
      ],
      "min": [
        -6.4123969078063969,
        0.0,
        -6.4123969078063969
      ]
    },
    {
      "name": "Plane_batchId",
      "byteOffset": 0,
      "bufferView": 1,
      "count": 4,
      "type": "SCALAR",
      "componentType": 5123,
      "max": [
        0
      ],
      "min": [
        0
      ]
    }
  ],
  "materials": [
    {
      "name": "None",
      "pbrMetallicRoughness": {
        "baseColorFactor": [
          0.800000011920929,
          0.800000011920929,
          0.800000011920929,
          1.0
        ],
        "metallicFactor": 0.0,
        "roughnessFactor": 1.0
      },
      "emissiveFactor": [
        0.0,
        0.0,
        0.0
      ],
      "alphaMode": "OPAQUE"
    }
  ],
  "bufferViews": [
    {
      "buffer": 0,
      "byteLength": 127,
      "byteOffset": 0
    },
    {
      "name": "Plane_batchId_bufferView",
      "buffer": 0,
      "byteLength": 8,
      "byteOffset": 0,
      "byteStride": 0,
      "target": 34962
    }
  ],
  "buffers": [
    {
      "byteLength": 135
    }
  ],
  "extensionsRequired": [
    "KHR_draco_mesh_compression"
  ],
  "extensionsUsed": [
    "KHR_draco_mesh_compression"
  ]
}

@lilleyse
Copy link
Contributor

lilleyse commented Mar 3, 2020

Here's an example .b3dm and .gltf: 0.zip

@lilleyse
Copy link
Contributor

lilleyse commented Mar 3, 2020

Does the glTF work before it is converted to a b3dm?

@mylove10086
Copy link
Author

When you do not use draco to compress b3dm, it can load and display normally in the browser. Draco compressed gltf is also possible. But draco compressed b3dm cannot be displayed in the browser.

@mylove10086
Copy link
Author

I have found the problem by looking at the model 0.b3dm file that you donated. When using draco to compress b3dm, there is no "_BATCHID" compression. Now I have a problem: when using draco to compress _BATCHID, the type of draco should be used:
class GeometryAttribute {
  public:
   // Supported attribute types.
   enum Type {
     INVALID = -1,
     // Named attributes start here. The difference between named and generic
     // attributes is that for named attributes we know their purpose and we
     // can apply some special methods when dealing with them (e.g. during
     // encoding).
     POSITION = 0,
     NORMAL,
     COLOR,
     TEX_COORD,
     // A special id used to mark attributes that are not assigned to any known
     // predefined use case. Such attributes are often used for a shader specific
     // data.
     GENERIC,
     // Total number of different attribute types.
     // Always keep behind all named attributes.
     NAMED_ATTRIBUTES_COUNT,
   };

@mylove10086
Copy link
Author

thank you very much for your help. But the draco compressed b3dm model was still unsuccessful. This is my gltf and b3dm model using draco compression, but b3dm cannot be displayed in the browser. Can you find the reason for me.
Uploading 1.zip…

@mylove10086
Copy link
Author

1.zip

This is the model I converted

@mylove10086
Copy link
Author

谢谢,我已经成功了!
Thank you, I have succeeded!

@yulongyu
Copy link

yulongyu commented Jan 5, 2022

你好 能指点下我怎么转3dtiles格式么

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants