Fix T49179: Parts of mesh disappear with adaptive subdivision
Problem was zero length normal caused by a precision issue in patch evaluation. This is somewhat of a quick fix, but is better than allowing possible NaNs to occur and cause problems elsewhere.
This commit is contained in:
@@ -284,7 +284,12 @@ struct OsdPatch : Patch {
|
|||||||
|
|
||||||
if(dPdu) *dPdu = du;
|
if(dPdu) *dPdu = du;
|
||||||
if(dPdv) *dPdv = dv;
|
if(dPdv) *dPdv = dv;
|
||||||
if(N) *N = normalize(cross(du, dv));
|
if(N) {
|
||||||
|
*N = cross(du, dv);
|
||||||
|
|
||||||
|
float t = len(*N);
|
||||||
|
*N = (t != 0.0f) ? *N/t : make_float3(0.0f, 0.0f, 1.0f);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BoundBox bound() { return BoundBox::empty; }
|
BoundBox bound() { return BoundBox::empty; }
|
||||||
|
Reference in New Issue
Block a user