-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
MANYFOLD_mesh_progressive extension proposal #2464
base: main
Are you sure you want to change the base?
Conversation
Hopefully it's OK to tag @mlimper here, referring to "SRC" (which is literally impossible to sensibly search for 😆 - maybe you have comments or pointers) |
Thanks everyone : ) @javagl It's true, we produced an extension proposal and wrote about it in a paper 10 years ago :-D The "SRC" paper and talk recording are still available here (and in the ACM digital library): We had proposed this as a gltf extension too - knowing about the "classic" progressive meshes approach, but then still deciding against it. Back then, the following considerations were relevant:
I also heard engineers implementing a gltf workflow at a big company say that they want to avoid Draco because they think it adds too much decode overhead. In that sense, it seems worth evaluating decode times for different devices for the progressive meshes approach. So IMHO the most important considerations should be:
But that's really just my two cents here, just wanted to share that since I was mentioned and during the work we did 10 years ago we thought about similar topics, so just wanted to share some thoughts and the paper/videos we produced back then :-) |
Thanks for the comments! I will have a look at SRC, for sure. I first came across progressive meshes in about 2000, while doing my PhD, so this is also a blast from the past for me too! 😁 That's reminded me, I meant to ping @hhoppe for visibility on this as well. It definitely won't be appropriate for all situations, I agree. The geometry must be manifold as you say, and it may take a long while to encode and decode, so certainly if a user is looking at realtime applications and just dropping into a render buffer, it's not for them. However, for progressive display of models over a network, I think it will work much better than the alternative of waiting for a 100M file to download in full! BTW regarding manifold meshes: I think I've got an implementation that takes account of at least some non-manifold models, but that's all in the creation of the vertex split stream, which is intentionally left outside the scope of the proposal. Regarding compatibility: the way I've written it, anything that doesn't support the extension should be able to display the base mesh, which is encoded in the normal way - the examples I've tried load up the low-res mesh in F3D, for instance, with no changes. In fact, I see that as a potential feature; one possible application of this is for previewing commercial models, where you perhaps get sent the base mesh but only part (or none) of the progressive stream that gives you full detail. For context, my application is a web-based viewer for 3d print models (https://manyfold.app), which don't need to be realtime, but can be very large. Ideally, also, they're manifold (though definitely aren't always). |
This is a proposed extension for creating streamable meshes, using a progressive mesh approach. It achieves this by defining a series of "vertex splits" in the buffer, which, when applied correctly to a base mesh stored in the normal way, allow the progressive refinement of the mesh. In this way, the base mesh can be rendered as soon as its buffers are complete, and the vertex split buffer can be applied as it is loaded, most likely over a network.
The proposal is ready for feedback, though I've got a few things to round out before it's completely finished. I'm opening it now because I've just finished the file writing half of a reference implementation, which is linked in the proposal itself, so I'm reasonably confident that the proposal makes sense.
All feedback appreciated!