[Bf-blender-cvs] [a0c54d7] master: Fix part of T38304: cycles render problem with zero length curve segments.
Brecht Van Lommel
noreply at git.blender.org
Mon Feb 10 18:40:42 CET 2014
Commit: a0c54d71d8a432e85fbcd9b01d05a52dee2659c3
Author: Brecht Van Lommel
Date: Mon Feb 10 18:33:27 2014 +0100
https://developer.blender.org/rBa0c54d71d8a432e85fbcd9b01d05a52dee2659c3
Fix part of T38304: cycles render problem with zero length curve segments.
Now these are removed from the curve.
===================================================================
M intern/cycles/blender/blender_curves.cpp
===================================================================
diff --git a/intern/cycles/blender/blender_curves.cpp b/intern/cycles/blender/blender_curves.cpp
index fb3e968..49728c5 100644
--- a/intern/cycles/blender/blender_curves.cpp
+++ b/intern/cycles/blender/blender_curves.cpp
@@ -174,8 +174,8 @@ bool ObtainCacheParticleData(Mesh *mesh, BL::Mesh *b_mesh, BL::Object *b_ob, Par
CData->curvekey_time.reserve(CData->curvekey_time.size() + num_add*(ren_step+1));
for(; pa_no < totparts+totchild; pa_no++) {
+ int keynum = 0;
CData->curve_firstkey.push_back(keyno);
- CData->curve_keynum.push_back(ren_step+1);
float curve_length = 0.0f;
float3 pcKey;
@@ -184,14 +184,20 @@ bool ObtainCacheParticleData(Mesh *mesh, BL::Mesh *b_mesh, BL::Object *b_ob, Par
b_psys.co_hair(*b_ob, pa_no, step_no, nco);
float3 cKey = make_float3(nco[0], nco[1], nco[2]);
cKey = transform_point(&itfm, cKey);
- if(step_no > 0)
- curve_length += len(cKey - pcKey);
+ if(step_no > 0) {
+ float step_length = len(cKey - pcKey);
+ if(step_length == 0.0f)
+ continue;
+ curve_length += step_length;
+ }
CData->curvekey_co.push_back(cKey);
CData->curvekey_time.push_back(curve_length);
pcKey = cKey;
keyno++;
+ keynum++;
}
+ CData->curve_keynum.push_back(keynum);
CData->curve_length.push_back(curve_length);
curvenum++;
}
More information about the Bf-blender-cvs
mailing list