-
Notifications
You must be signed in to change notification settings - Fork 86
Closed
Description
When using Obj2Tiles v1.0.13 the generated B3DM tiles and tileset.json pass the spec validation but trigger content errors in 3d-tiles-validator. The validation step exits with code 2, indicating content issues in every LOD tile.
Invocation
obj2tiles \
my_dataset.obj \
/work/3dtiles-obj2tiles/tilesValidation
Using https://github.com/CesiumGS
3d-tiles-validator
Produced outputs
3dtiles-obj2tiles/
├─ tiles/
│ ├─ LOD-0/
│ │ ├─ Mesh-XL-YL-XR-YR.b3dm
│ │ ├─ Mesh-XL-YR-XL-YL.b3dm
│ │ ├─ Mesh-XL-YR-XL-YR.b3dm
│ │ ├─ Mesh-XL-YR-XR-YL.b3dm
│ │ ├─ Mesh-XL-YR-XR-YR.b3dm
│ │ ├─ Mesh-XR-YL-XL-YL.b3dm
│ │ ├─ Mesh-XR-YL-XL-YR.b3dm
│ │ ├─ Mesh-XR-YL-XR-YL.b3dm
│ │ ├─ Mesh-XR-YL-XR-YR.b3dm
│ │ ├─ Mesh-XR-YR-XL-YL.b3dm
│ │ └─ Mesh-XR-YR-XR-YL.b3dm
│ ├─ LOD-1/
│ │ ├─ Mesh-XL-YL-XR-YR.b3dm
│ │ ├─ Mesh-XL-YR-XL-YL.b3dm
│ │ ├─ Mesh-XL-YR-XL-YR.b3dm
│ │ ├─ Mesh-XL-YR-XR-YL.b3dm
│ │ ├─ Mesh-XL-YR-XR-YR.b3dm
│ │ ├─ Mesh-XR-YL-XL-YL.b3dm
│ │ ├─ Mesh-XR-YL-XL-YR.b3dm
│ │ ├─ Mesh-XR-YL-XR-YL.b3dm
│ │ ├─ Mesh-XR-YL-XR-YR.b3dm
│ │ ├─ Mesh-XR-YR-XL-YL.b3dm
│ │ └─ Mesh-XR-YR-XR-YL.b3dm
│ ├─ LOD-2/
│ │ ├─ Mesh-XL-YL-XR-YR.b3dm
│ │ ├─ Mesh-XL-YR-XL-YL.b3dm
│ │ ├─ Mesh-XL-YR-XL-YR.b3dm
│ │ ├─ Mesh-XL-YR-XR-YL.b3dm
│ │ ├─ Mesh-XL-YR-XR-YR.b3dm
│ │ ├─ Mesh-XR-YL-XL-YL.b3dm
│ │ ├─ Mesh-XR-YL-XL-YR.b3dm
│ │ ├─ Mesh-XR-YL-XR-YL.b3dm
│ │ ├─ Mesh-XR-YL-XR-YR.b3dm
│ │ ├─ Mesh-XR-YR-XL-YL.b3dm
│ │ └─ Mesh-XR-YR-XR-YL.b3dm
│ ├─ tileset.json
│ └─ validation_report.json
tileset.json
{
"asset": {
"version": "1.0"
},
"geometricError": 100.0,
"root": {
"transform": [
-0.15971367836948433,
0.9871633810781724,
0.0,
0.0,
-0.7036627692186165,
-0.11384596649119745,
0.7013542636423288,
0.0,
0.6923512462307532,
0.11201586928643742,
0.7128128764765174,
0.0,
4423440.518572955,
715670.7489476459,
4523682.777249486,
1.0
],
"boundingVolume": {
"box": [
381795.09606933594,
-306.8260650634765,
377056.1495285034,
7.84234619140625,
0.0,
0.0,
0.0,
-1.5904388427734943,
0.0,
0.0,
0.0,
3.9353981018066406
]
},
"geometricError": 100.0,
"refine": "ADD",
"content": null,
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381799.2405583999,
-307.57199036872123,
377056.22932686144,
0.2233159682364203,
0.0,
0.0,
0.0,
-0.1503059048021953,
0.0,
0.0,
0.0,
0.07979835805599578
]
},
"geometricError": 9.098531491099157,
"refine": "REPLACE",
"content": {
"uri": "LOD-2/Mesh-XR-YR-XR-YL.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381799.2405583999,
-307.57199036872123,
377056.22932686144,
0.2233159682364203,
0.0,
0.0,
0.0,
-0.1503059048021953,
0.0,
0.0,
0.0,
0.07979835805599578
]
},
"geometricError": 3.016377212998924,
"refine": "REPLACE",
"content": {
"uri": "LOD-1/Mesh-XR-YR-XR-YL.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381799.2405583999,
-307.5733206182041,
377056.2287262246,
0.2233159682364203,
0.0,
0.0,
0.0,
-0.14897565531927626,
0.0,
0.0,
0.0,
0.07919772123568691
]
},
"geometricError": 0.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-0/Mesh-XR-YR-XR-YL.b3dm"
},
"children": []
}
]
}
]
},
{
"transform": null,
"boundingVolume": {
"box": [
381797.0566558838,
-306.8850908095091,
377056.9075285236,
1.9605865478515625,
0.0,
0.0,
0.0,
-1.4682111924439027,
0.0,
0.0,
0.0,
0.7580000201996882
]
},
"geometricError": 9.008114067237528,
"refine": "REPLACE",
"content": {
"uri": "LOD-2/Mesh-XR-YR-XL-YL.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381797.0566558838,
-306.8850908095091,
377056.9075285236,
1.9605865478515625,
0.0,
0.0,
0.0,
-1.4682111924439027,
0.0,
0.0,
0.0,
0.7580000201996882
]
},
"geometricError": 3.0013520398709526,
"refine": "REPLACE",
"content": {
"uri": "LOD-1/Mesh-XR-YR-XL-YL.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381797.0566558838,
-306.8850908095091,
377056.90650367737,
1.9605865478515625,
0.0,
0.0,
0.0,
-1.4682111924439027,
0.0,
0.0,
0.0,
0.7569751739501953
]
},
"geometricError": 0.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-0/Mesh-XR-YR-XL-YL.b3dm"
},
"children": []
}
]
}
]
},
{
"transform": null,
"boundingVolume": {
"box": [
381792.428971598,
-306.7096088996181,
377058.4635953903,
1.2540753577486612,
0.0,
0.0,
0.0,
-1.217301500772919,
0.0,
0.0,
0.0,
0.34636783599853516
]
},
"geometricError": 9.029050177826647,
"refine": "REPLACE",
"content": {
"uri": "LOD-2/Mesh-XL-YR-XR-YR.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381792.428971598,
-306.7096088996181,
377058.4635953903,
1.2540753577486612,
0.0,
0.0,
0.0,
-1.217301500772919,
0.0,
0.0,
0.0,
0.34636783599853516
]
},
"geometricError": 3.0048377955934074,
"refine": "REPLACE",
"content": {
"uri": "LOD-1/Mesh-XL-YR-XR-YR.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381792.4297943115,
-306.7146993667402,
377058.4635953903,
1.2548980712890625,
0.0,
0.0,
0.0,
-1.2122110336508172,
0.0,
0.0,
0.0,
0.34636783599853516
]
},
"geometricError": 0.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-0/Mesh-XL-YR-XR-YR.b3dm"
},
"children": []
}
]
}
]
},
{
"transform": null,
"boundingVolume": {
"box": [
381789.2540130615,
-306.5757446289065,
377059.1010770798,
1.9208831787109375,
0.0,
0.0,
0.0,
-1.2544555664065058,
0.0,
0.0,
0.0,
0.9838495254516602
]
},
"geometricError": 9.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-2/Mesh-XL-YR-XL-YR.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381789.2540130615,
-306.5757446289065,
377059.1010770798,
1.9208831787109375,
0.0,
0.0,
0.0,
-1.2544555664065058,
0.0,
0.0,
0.0,
0.9838495254516602
]
},
"geometricError": 3.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-1/Mesh-XL-YR-XL-YR.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381789.2540130615,
-306.5757446289065,
377059.1010770798,
1.9208831787109375,
0.0,
0.0,
0.0,
-1.2544555664065058,
0.0,
0.0,
0.0,
0.9838495254516602
]
},
"geometricError": 0.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-0/Mesh-XL-YR-XL-YR.b3dm"
},
"children": []
}
]
}
]
},
{
"transform": null,
"boundingVolume": {
"box": [
381793.1354827881,
-306.87336730957054,
377057.13337802887,
1.9605865478515625,
0.0,
0.0,
0.0,
-1.5174102783205115,
0.0,
0.0,
0.0,
0.9838495254516602
]
},
"geometricError": 9.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-2/Mesh-XL-YR-XR-YL.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381793.1354827881,
-306.87336730957054,
377057.13337802887,
1.9605865478515625,
0.0,
0.0,
0.0,
-1.5174102783205115,
0.0,
0.0,
0.0,
0.9838495254516602
]
},
"geometricError": 3.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-1/Mesh-XL-YR-XR-YL.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381793.1354827881,
-306.87336730957054,
377057.13337802887,
1.9605865478515625,
0.0,
0.0,
0.0,
-1.5174102783205115,
0.0,
0.0,
0.0,
0.9838495254516602
]
},
"geometricError": 0.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-0/Mesh-XL-YR-XR-YL.b3dm"
},
"children": []
}
]
}
]
},
{
"transform": null,
"boundingVolume": {
"box": [
381789.2143096924,
-306.6798400878905,
377057.31337793195,
1.9605865478515625,
0.0,
0.0,
0.0,
-1.3523864746094887,
0.0,
0.0,
0.0,
0.8038496223452967
]
},
"geometricError": 9.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-2/Mesh-XL-YR-XL-YL.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381789.2143096924,
-306.6798400878905,
377057.31337793195,
1.9605865478515625,
0.0,
0.0,
0.0,
-1.3523864746094887,
0.0,
0.0,
0.0,
0.8038496223452967
]
},
"geometricError": 3.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-1/Mesh-XL-YR-XL-YL.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381789.2143096924,
-306.6798400878905,
377057.31337793195,
1.9605865478515625,
0.0,
0.0,
0.0,
-1.3523864746094887,
0.0,
0.0,
0.0,
0.8038496223452967
]
},
"geometricError": 0.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-0/Mesh-XL-YR-XL-YL.b3dm"
},
"children": []
}
]
}
]
},
{
"transform": null,
"boundingVolume": {
"box": [
381800.9778289795,
-306.767150878906,
377055.16567897797,
1.9605865478515625,
0.0,
0.0,
0.0,
-1.531524658202983,
0.0,
0.0,
0.0,
0.9838495254516602
]
},
"geometricError": 9.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-2/Mesh-XR-YL-XR-YR.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381800.9778289795,
-306.767150878906,
377055.16567897797,
1.9605865478515625,
0.0,
0.0,
0.0,
-1.531524658202983,
0.0,
0.0,
0.0,
0.9838495254516602
]
},
"geometricError": 3.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-1/Mesh-XR-YL-XR-YR.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381800.9778289795,
-306.767150878906,
377055.16567897797,
1.9605865478515625,
0.0,
0.0,
0.0,
-1.531524658202983,
0.0,
0.0,
0.0,
0.9838495254516602
]
},
"geometricError": 0.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-0/Mesh-XR-YL-XR-YR.b3dm"
},
"children": []
}
]
}
]
},
{
"transform": null,
"boundingVolume": {
"box": [
381797.0566558838,
-306.8529048639073,
377055.16567897797,
1.9605865478515625,
0.0,
0.0,
0.0,
-1.5635990423426733,
0.0,
0.0,
0.0,
0.9838495254516602
]
},
"geometricError": 9.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-2/Mesh-XR-YL-XL-YR.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381797.0566558838,
-306.8529048639073,
377055.16567897797,
1.9605865478515625,
0.0,
0.0,
0.0,
-1.5635990423426733,
0.0,
0.0,
0.0,
0.9838495254516602
]
},
"geometricError": 3.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-1/Mesh-XR-YL-XL-YR.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381797.0566558838,
-306.8529048639073,
377055.16567897797,
1.9605865478515625,
0.0,
0.0,
0.0,
-1.5635990423426733,
0.0,
0.0,
0.0,
0.9838495254516602
]
},
"geometricError": 0.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-0/Mesh-XR-YL-XL-YR.b3dm"
},
"children": []
}
]
}
]
},
{
"transform": null,
"boundingVolume": {
"box": [
381800.598526001,
-306.81608581542946,
377053.19797992706,
1.5812835693359375,
0.0,
0.0,
0.0,
-1.5775604248044885,
0.0,
0.0,
0.0,
0.9838495254516602
]
},
"geometricError": 9.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-2/Mesh-XR-YL-XR-YL.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381800.598526001,
-306.81608581542946,
377053.19797992706,
1.5812835693359375,
0.0,
0.0,
0.0,
-1.5775604248044885,
0.0,
0.0,
0.0,
0.9838495254516602
]
},
"geometricError": 3.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-1/Mesh-XR-YL-XR-YL.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381800.598526001,
-306.81608581542946,
377053.19797992706,
1.5812835693359375,
0.0,
0.0,
0.0,
-1.5775604248044885,
0.0,
0.0,
0.0,
0.9838495254516602
]
},
"geometricError": 0.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-0/Mesh-XR-YL-XR-YL.b3dm"
},
"children": []
}
]
}
]
},
{
"transform": null,
"boundingVolume": {
"box": [
381798.0997772217,
-306.7204665011967,
377053.77236871375,
0.9174652099609375,
0.0,
0.0,
0.0,
-1.3724955208273286,
0.0,
0.0,
0.0,
0.4094607387378346
]
},
"geometricError": 9.04098667445511,
"refine": "REPLACE",
"content": {
"uri": "LOD-2/Mesh-XR-YL-XL-YL.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381798.0997772217,
-306.7204665011967,
377053.77236871375,
0.9174652099609375,
0.0,
0.0,
0.0,
-1.3724955208273286,
0.0,
0.0,
0.0,
0.4094607387378346
]
},
"geometricError": 3.0068233527187975,
"refine": "REPLACE",
"content": {
"uri": "LOD-1/Mesh-XR-YL-XL-YL.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381798.0997772217,
-306.719277815399,
377053.7704878341,
0.9174652099609375,
0.0,
0.0,
0.0,
-1.3694351309816,
0.0,
0.0,
0.0,
0.41134161842637695
]
},
"geometricError": 0.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-0/Mesh-XR-YL-XL-YL.b3dm"
},
"children": []
}
]
}
]
},
{
"transform": null,
"boundingVolume": {
"box": [
381793.51969558396,
-306.8246459960935,
377055.4646641562,
1.5763737519737333,
0.0,
0.0,
0.0,
-1.403167724609517,
0.0,
0.0,
0.0,
0.6848643472185358
]
},
"geometricError": 9.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-2/Mesh-XL-YL-XR-YR.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381793.51969558396,
-306.8246459960935,
377055.4646641562,
1.5763737519737333,
0.0,
0.0,
0.0,
-1.403167724609517,
0.0,
0.0,
0.0,
0.6848643472185358
]
},
"geometricError": 3.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-1/Mesh-XL-YL-XR-YR.b3dm"
},
"children": [
{
"transform": null,
"boundingVolume": {
"box": [
381793.51969558396,
-306.8246459960935,
377055.4646641562,
1.5763737519737333,
0.0,
0.0,
0.0,
-1.403167724609517,
0.0,
0.0,
0.0,
0.6848643472185358
]
},
"geometricError": 0.0,
"refine": "REPLACE",
"content": {
"uri": "LOD-0/Mesh-XL-YL-XR-YR.b3dm"
},
"children": []
}
]
}
]
}
]
}
}validation_report.json
{
"date": "2025-07-15T09:24:59.820Z",
"numErrors": 23,
"numWarnings": 11,
"numInfos": 10,
"issues": [
{
"type": "CONTENT_VALIDATION_ERROR",
"path": "LOD-2/Mesh-XL-YL-XR-YR.b3dm",
"message": "LOD-2/Mesh-XL-YL-XR-YR.b3dm caused validation errors",
"severity": "ERROR",
"causes": [
{
"type": "BINARY_INVALID_ALIGNMENT",
"path": "LOD-2/Mesh-XL-YL-XR-YR.b3dm",
"message": "The byte length must be aligned to 8 bytes",
"severity": "ERROR"
},
{
"type": "CONTENT_VALIDATION_ERROR",
"path": "LOD-2/Mesh-XL-YL-XR-YR.b3dm",
"message": "Content LOD-2/Mesh-XL-YL-XR-YR.b3dm caused validation errors",
"severity": "ERROR",
"causes": [
{
"type": "CONTENT_VALIDATION_ERROR",
"path": "/accessors/1",
"message": "Accessor's total byteOffset 26094 isn't a multiple of componentType length 4.",
"severity": "ERROR"
},
{
"type": "CONTENT_VALIDATION_ERROR",
"path": "/accessors/2",
"message": "Accessor's total byteOffset 94986 isn't a multiple of componentType length 4.",
"severity": "ERROR"
},
{
"type": "CONTENT_VALIDATION_INFO",
"path": "/meshes/0/primitives/0/attributes/TEXCOORD_0",
"message": "bufferView.target should be set for vertex or index data.",
"severity": "INFO"
},
{
"type": "CONTENT_VALIDATION_INFO",
"path": "/materials/0",
"message": "This object may be unused.",
"severity": "INFO"
}
]
}
]
},
{
"type": "CONTENT_VALIDATION_ERROR",
"path": "LOD-1/Mesh-XL-YL-XR-YR.b3dm",
"message": "LOD-1/Mesh-XL-YL-XR-YR.b3dm caused validation errors",
"severity": "ERROR",
"causes": [
{
"type": "BINARY_INVALID_ALIGNMENT",
"path": "LOD-1/Mesh-XL-YL-XR-YR.b3dm",
"message": "The byte length must be aligned to 8 bytes",
"severity": "ERROR"
},
{
"type": "CONTENT_VALIDATION_ERROR",
"path": "LOD-1/Mesh-XL-YL-XR-YR.b3dm",
"message": "Content LOD-1/Mesh-XL-YL-XR-YR.b3dm caused validation errors",
"severity": "ERROR",
"causes": [
{
"type": "CONTENT_VALIDATION_ERROR",
"path": "/accessors/1",
"message": "Accessor's total byteOffset 26094 isn't a multiple of componentType length 4.",
"severity": "ERROR"
},
{
"type": "CONTENT_VALIDATION_ERROR",
"path": "/accessors/2",
"message": "Accessor's total byteOffset 94986 isn't a multiple of componentType length 4.",
"severity": "ERROR"
},
{
"type": "CONTENT_VALIDATION_INFO",
"path": "/meshes/0/primitives/0/attributes/TEXCOORD_0",
"message": "bufferView.target should be set for vertex or index data.",
"severity": "INFO"
},
{
"type": "CONTENT_VALIDATION_INFO",
"path": "/materials/0",
"message": "This object may be unused.",
"severity": "INFO"
}
]
}
]
....Metadata
Metadata
Assignees
Labels
No labels