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
	 François Mockers
						François Mockers