Comments (4)
A set of helper functions might be the best solution to this. It keeps the parsing core as is and it doesn't bloat the uses of pointers + doesn't create redundancy in the representation, but for every individual pointer it's obvious as to how to recover the index.
from cgltf.
Is computing the indices a problem? gltfpack uses indices extensively in various parts of the pipeline and it wasn't a big problem, even though the code is sometimes a little repetitive. If we only have indices, this breaks compatibility but also makes cgltf more cumbersome to use as you need to convert from indices to pointers. If we have both indices and pointers everywhere, then we'd need to store the equivalent data redundantly, which, in addition to being a bit wasteful, probably breaks cases where a file is loaded, mutated, and saved via cgltf_write (as existing code would need to be changed to update both indices and pointers...).
from cgltf.
Needing to recompute indices (something I suspect most users do) adds a bit of trickiness since the user needs to carefully determine which pointers can get turned into indices and which ones don't since the API doesn't make this a clear contract. Even though implementation is trivial for users to do it themselves, adding some helper functions to the API would at least provide such a contract and make it easier to functionally verify usage. e.g. cgltf_get_material_index(const cgltf_data*, const cgltf_material*)
.
from cgltf.
That solution works for me as well. Thanks for looking into it!
from cgltf.
Related Issues (20)
- Add support for MSFT_texture_dds extension HOT 1
- Potential Undefined Behaviour in "cgltf_component_read_index"
- How to enable draco support? HOT 3
- fopen or strcpy this function or variable is unsafe. HOT 1
- Library will not compile if using GCC in Windows.
- Node parent sanity check prevents loading files created with UniGLTF-1.27 HOT 5
- different joints for same primitive
- Stack allocate cgltf_data structure? HOT 1
- Possible to have individual flags for metallic and roughness? HOT 4
- Invalid gltf file with EXT_mesh_gpu_instancing HOT 2
- Double-precision transform hierarchy
- native app EXT_meshopt_compression support HOT 2
- GLTF primitive type not written correctly? HOT 1
- Support for KHR_animation_pointer HOT 2
- load glb crash HOT 3
- Support for EXT_texture_webp HOT 2
- Reading glTF binary files in GLB format HOT 2
- Incorrect parsing of numeric values from glb file HOT 2
- Based on the current node, how to find out the bufferView number? 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 cgltf.