-
Notifications
You must be signed in to change notification settings - Fork 215
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
Support 3D Tile I3dm legacy tile format #854
Conversation
This allows the developer to override them usefully in situations where they need to be set e.g., make a debug library masquerade as release. Also allow CESIUM_DEBUG_PREFIX to be empty.
This is all very ad hoc and there will be more extensions that will have to be handled in the future. This function is currently only used by Cmpt parsing code, but one could imagine it being generally useful.
Initial commit of the main body of new code. A lot was taken or inspired from PntsToGltfConverter, which should now be refactored to use the new common functions. ENU rotations are not supported yet.
Haven't dug in real deep yet, but noticed there are no new unit tests . Might be nice to add a few, especially if you know of typical use cases, or cases that should fail for some reason. |
Yeah adding a Based on a quick look, I don't think it will be too big a change to make |
Agree with @kring , hidden waits aren't great when trying to improve performance. Will also chime in that hidden |
I'm rewriting the converter code to return a future.
What makes an IAssetAccessor::get call hidden? Or, put another way, what's the alternative when another get() needs to be made in the while processing the content of a previous read? I guess I should look at #779 to see what you're doing there. |
That's a fair question. In #779, a good example of the approach is here in
Admittedly, this is "a" solution to separating asset request work from other work. This PR hasn't been reviewed or merged, so there may be a better solution still. |
It's required now.
Construct an RTC_CENTER, in effect. Otherwise instance positions could be too large to render without jitter.
Simplified the code by not trying to optimize the inclusion of rotation and scale transforms.
Tests compile again.
Fix a real truncation issue, and some noise from overzealous gcc.
A simple function for computing a perpendicular vector.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@timoore I did a first pass through everything, and so far it's looking good! I definitely want to look more closely at the tile loading changes / actual matrix math, when I have some more uninterrupted time.
I tried to cut down on bikeshedding, but most of my comments ended up being about clarity. 😅 It can get confusing when both I3DM instances and ext_mesh_gpu_instancing
are operating in the same file. So I apologize in advance for the quantity and nitpickiness, feel free to push back if something is off
Cesium3DTilesContent/include/Cesium3DTilesContent/GltfConverters.h
Outdated
Show resolved
Hide resolved
Cesium3DTilesContent/include/Cesium3DTilesContent/LegacyUtilities.h
Outdated
Show resolved
Hide resolved
Cesium3DTilesContent/include/Cesium3DTilesContent/LegacyUtilities.h
Outdated
Show resolved
Hide resolved
Rename and rework arguments in response to review comments.
@timoore haven't forgotten about this PR, I'll plan to take another look tomorrow 🙏 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cesium3DTilesContent/include/Cesium3DTilesContent/LegacyUtilities.h
Outdated
Show resolved
Hide resolved
This follows the change in ImplicitQuadtreeLoader.
Thanks for addressing all the feedback @timoore ! Sorry I didn't see this earlier, you're welcome to @ me after you push changes to get my attention 😄 Merging now! |
Initial commit for discussion. Some implementation remains, such as implementation of the ENU rotation option.
I3dm strains the GltfConverters interface because it can require a "sub read" of external content: the instanced glb file can be specified by a URI. I created a "ConverterSubprocessor" subclass (pretty bad name) to pass, the async system asset Accessor, base URI, etc. GltfConverters::convert returns a complete model, not a future, so I do a wait() on the accessor future that returns the .glb file. I don't know if that's bad form or if there's a better alternative.
This addresses #458.