fix normals computation for gltf (#13396)
# Objective - some gltf files are broken since #13333 ``` thread 'IO Task Pool (2)' panicked at crates/bevy_render/src/mesh/mesh/mod.rs:581:9: `compute_flat_normals` can't work on indexed geometry. Consider calling either `Mesh::compute_smooth_normals` or `Mesh::duplicate_vertices` followed by `Mesh::compute_flat_normals`. ``` - test with example `custom_gltf_vertex_attribute` or `gltf_skinned_mesh` ## Solution - Call the wrapper function for normals that will either call `compute_flat_normals` or `compute_smooth_normals` as appropriate ## Testing - Ran the two examples mentioned above
This commit is contained in:
parent
450a9202d0
commit
a55e0e31e8
@ -502,7 +502,17 @@ async fn load_gltf<'a, 'b, 'c>(
|
|||||||
bevy_utils::tracing::debug!(
|
bevy_utils::tracing::debug!(
|
||||||
"Automatically calculating missing vertex normals for geometry."
|
"Automatically calculating missing vertex normals for geometry."
|
||||||
);
|
);
|
||||||
|
let vertex_count_before = mesh.count_vertices();
|
||||||
|
mesh.duplicate_vertices();
|
||||||
mesh.compute_flat_normals();
|
mesh.compute_flat_normals();
|
||||||
|
let vertex_count_after = mesh.count_vertices();
|
||||||
|
if vertex_count_before != vertex_count_after {
|
||||||
|
bevy_utils::tracing::debug!("Missing vertex normals in indexed geometry, computing them as flat. Vertex count increased from {} to {}", vertex_count_before, vertex_count_after);
|
||||||
|
} else {
|
||||||
|
bevy_utils::tracing::debug!(
|
||||||
|
"Missing vertex normals in indexed geometry, computing them as flat."
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(vertex_attribute) = reader
|
if let Some(vertex_attribute) = reader
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user