Comments (4)
A short update: From the options mentioned above, I think that only option B is a reasonable one. Options C and D would require modifying the GLB data in a way that should not be required by someone who just wants to "wrap" a GLB into a B3DM. Option B should be easy to implement for clients (and there's already a draft PR for covering this in the validator). But it may require a clarification in the specification. The suggestion for that is tracked at CesiumGS/3d-tiles#729
from 3d-tiles-validator.
This should be fixed via #258 and will be part of the next release. It now implements the validation according to the clarifications in the spec that have been added via CesiumGS/3d-tiles#729 : It is possible to insert padding bytes at the end of the B3DM data (to ensure that its length is divisible by 8). These padding bytes are added after the GLB payload, but will be ignored in the validation of the GLB payload.
from 3d-tiles-validator.
Just a short ping for now:
The validator is correct here. There are some data sets that cause validation issues which have only been detected with the new validator. These data sets include unit test- and sample data in CesiumJS, as well as some of the older sample models in the 3d-tiles-samples repository. (We recently started addressing these issues, e.g. by fixing the spec data via CesiumGS/cesium#10852, but we plan to also apply similar fixes to all other tilesets that are publicly available).
For the ll.b3dm
in particular: This B3DM file was originally intended to be "just some dummy object". Unfortunately, it appears in many samples and tests (and ... sometimes the file sizes of these "instances" are different - I think none of them is really "valid" in terms of the alignment requirements).
I just did some experiments, with some preliminary, in-flight results shown in PaddingIssues-2023-01-03.zip. It contains 4 versions of a dummy tileset that refers to the ll.b3dm
:
- A, the original one, where the 3D Tiles Validator complains: "The byte length must be aligned to 8 bytes"
- B, with additional 0-bytes at the end of the B3DM, where the glTF validator complains: "Extra data after the end of GLB stream."
- C, with additional 0-bytes at the end of the BIN chunk of the GLB, where the glTF validator complains: "GLB-stored BIN chunk contains 4 extra padding byte(s)."
- D, with additional
It is... unfortunate that it is not trivially possible to wrap a GLB into a B3DM without modifying the GLB itself, on a level that one normally does not even have access to (when somebody is just using some existing GLB file or GLB writer). We're currently investigating possible solutions for this issue.
from 3d-tiles-validator.
Ok thanks!
The whole padding rule system feels a bit academic to me, resulting in lots of 'invalid' tilesets that show up in clients anyway. Maybe it's an option to get rid of it?
from 3d-tiles-validator.
Related Issues (20)
- Refining the report format and report file handling
- Cycles in external tilesets are not detected HOT 1
- TypeScript compilation fails HOT 5
- Tool can't be packaged HOT 1
- Validator fails to resolve GLB from I3DM with URI with spaces
- Build broken? HOT 1
- Streamline the validation of arrays of objects
- 3DTILES_content_gltf ? HOT 3
- Allow validation of tile content files
- Geometric error inconsistencies should be a WARNING and not an ERROR
- Out of memory crash HOT 1
- glTF extension support? HOT 4
- ValidFeatureIdAttributeWithLargerFeatureCount.gltf not valid HOT 8
- ValidFeatureIdAttributeWithByteStride.glb not a 3D Tile HOT 1
- Tests with texture and nullFeatureid missing HOT 1
- PropertyAttributesPropertyAttributePropertyMaxMismatch.gltf is valid HOT 7
- Handle invalid alignments more graciously
- Missing 'refine' in root tile is not detected
- Simplify filtering of validation report files
- False positive regarding EXTENSION_FOUND_BUT_NOT_USED in child tileset HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from 3d-tiles-validator.