Fix 34764: cycles issue rendering instanced mesh with NaN coordinates.

This commit is contained in:
Brecht Van Lommel
2013-04-09 20:48:53 +00:00
parent 84ba3f6521
commit 34707c19f2
2 changed files with 46 additions and 7 deletions

View File

@@ -135,15 +135,29 @@ void Mesh::compute_bounds()
size_t verts_size = verts.size();
size_t curve_keys_size = curve_keys.size();
for(size_t i = 0; i < verts_size; i++)
bnds.grow(verts[i]);
if(verts_size + curve_keys_size > 0) {
for(size_t i = 0; i < verts_size; i++)
bnds.grow(verts[i]);
for(size_t i = 0; i < curve_keys_size; i++)
bnds.grow(curve_keys[i].co, curve_keys[i].radius);
for(size_t i = 0; i < curve_keys_size; i++)
bnds.grow(curve_keys[i].co, curve_keys[i].radius);
/* happens mostly on empty meshes */
if(!bnds.valid())
if(!bnds.valid()) {
bnds = BoundBox::empty;
/* skip nan or inf coordinates */
for(size_t i = 0; i < verts_size; i++)
bnds.grow_safe(verts[i]);
for(size_t i = 0; i < curve_keys_size; i++)
bnds.grow_safe(curve_keys[i].co, curve_keys[i].radius);
}
}
if(!bnds.valid()) {
/* empty mesh */
bnds.grow(make_float3(0.0f, 0.0f, 0.0f));
}
bounds = bnds;
}