Replies: 1 comment
-
|
Answered my own questions after a night's rest 😜 :
fn debug_scene(
q_toplevel_parent: Query<(&bevy_scene::SceneInstance, &Children, Entity)>,
q_any_parent: Query<(&Children, Entity)>,
q_has_aabb: Query<Entity, With<bevy_render::primitives::Aabb>>,
mut commands: Commands,
) {
if let Ok((_, children, parent_ent)) = q_toplevel_parent.get_single() {
let mut stack = Vec::new();
let mut descendents = Vec::new();
for &child_ent in children.iter() {
stack.push(child_ent);
while stack.len() > 0 {
let it = stack.pop().unwrap();
descendents.push(it);
if let Ok((cs,p)) = q_any_parent.get(it) {
for c in cs.iter() { stack.push(*c) };
}
}
}
info!("total descendents: {}", descendents.len());
for &d in descendents.iter() {
if let Ok(ent) = q_has_aabb.get(d) {
info!("descendent has aabb");
commands.entity(ent).insert(ShowAabbGizmo::default());
}
}
}
}This helped me confirm there is something wrong with the AABB calculation but the frustum culling is correct! |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
I'm observing what appears to be a frustum culling bug on an imported gltf scene. This lead me to digging into some internals.
I wanted to add
ShowAabbGizmobut it doesn't work. I suspect that is because theSceneRootcomponent does not have aMesh3dso an AABB is never added to it. That's where I wanted to dive in and see how I could interact with the Scene's inner world, or even easier: pull all of it's contents out into the main world. That might even be what's being done when it is spawned but after an hour of reading through source code I cannot tell.So that lead me to a few general questions out of curiosity:
Scenestore it's ownWorldrecursively as a child in the mainWorld?bevy_renderand/or the extraction process take this into account? And if not, how does it work? Just spawning all things in theScene's world in the main one, and usingParent/Childrenlinks?And more specific questions about my particular suspected issue:
ShowAabbGizmoto a mesh within aSceneRoot?GltfScenes? This asset contains animations, so I think I must use the Scene and not e.g. the soleGltfPrimitiveconverted to aMesh3d(the fox examples use the full scenes, which is all I have to go off of for idiomacy).Beta Was this translation helpful? Give feedback.
All reactions