Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Dinges <blender@dingto.org>2013-12-21 03:20:16 +0400
committerThomas Dinges <blender@dingto.org>2013-12-21 03:20:16 +0400
commit9bd3a226aec3404c05c4d92eeb669b358a901fba (patch)
tree4bb9b0fc25d06547201b1d1660df6d4e03016096
parent14c9899a69c24aa457b700d2f0a20c8077538092 (diff)
Cleanup: Code and style cleanup for Cycles curve export code.
-rw-r--r--intern/cycles/blender/blender_curves.cpp151
1 files changed, 46 insertions, 105 deletions
diff --git a/intern/cycles/blender/blender_curves.cpp b/intern/cycles/blender/blender_curves.cpp
index 393effeefad..ed348e6726b 100644
--- a/intern/cycles/blender/blender_curves.cpp
+++ b/intern/cycles/blender/blender_curves.cpp
@@ -137,7 +137,6 @@ void InterpolateKeySegments(int seg, int segno, int key, int curve, float3 *keyl
if(key < CData->curve_firstkey[curve] + CData->curve_keynum[curve] - 2)
ckey_loc4 = CData->curvekey_co[key + 2];
-
float time1 = CData->curvekey_time[key]/CData->curve_length[curve];
float time2 = CData->curvekey_time[key + 1]/CData->curve_length[curve];
@@ -156,7 +155,6 @@ void InterpolateKeySegments(int seg, int segno, int key, int curve, float3 *keyl
bool ObtainCacheParticleData(Mesh *mesh, BL::Mesh *b_mesh, BL::Object *b_ob, ParticleCurveData *CData, bool background)
{
-
int curvenum = 0;
int keyno = 0;
@@ -170,22 +168,19 @@ bool ObtainCacheParticleData(Mesh *mesh, BL::Mesh *b_mesh, BL::Object *b_ob, Par
for(b_ob->modifiers.begin(b_mod); b_mod != b_ob->modifiers.end(); ++b_mod) {
if((b_mod->type() == b_mod->type_PARTICLE_SYSTEM) && (background ? b_mod->show_render() : b_mod->show_viewport())) {
BL::ParticleSystemModifier psmd((const PointerRNA)b_mod->ptr);
-
BL::ParticleSystem b_psys((const PointerRNA)psmd.particle_system().ptr);
-
BL::ParticleSettings b_part((const PointerRNA)b_psys.settings().ptr);
- if((b_psys.settings().render_type()==BL::ParticleSettings::render_type_PATH)&&(b_psys.settings().type()==BL::ParticleSettings::type_HAIR)) {
-
- int mi = clamp(b_psys.settings().material()-1, 0, mesh->used_shaders.size()-1);
+ if((b_part.render_type() == BL::ParticleSettings::render_type_PATH) && (b_part.type() == BL::ParticleSettings::type_HAIR)) {
+ int mi = clamp(b_part.material()-1, 0, mesh->used_shaders.size()-1);
int shader = mesh->used_shaders[mi];
- int draw_step = background ? b_psys.settings().render_step() : b_psys.settings().draw_step();
+ int draw_step = background ? b_part.render_step() : b_part.draw_step();
int ren_step = (int)powf(2.0f, (float)draw_step);
int totparts = b_psys.particles.length();
- int totchild = background ? b_psys.child_particles.length() : (int)((float)b_psys.child_particles.length() * (float)b_psys.settings().draw_percentage() / 100.0f);
+ int totchild = background ? b_psys.child_particles.length() : (int)((float)b_psys.child_particles.length() * (float)b_part.draw_percentage() / 100.0f);
int totcurves = totchild;
- if(b_psys.settings().child_type() == 0)
+ if(b_part.child_type() == 0)
totcurves += totparts;
if(totcurves == 0)
@@ -205,11 +200,10 @@ bool ObtainCacheParticleData(Mesh *mesh, BL::Mesh *b_mesh, BL::Object *b_ob, Par
CData->psys_closetip.push_back(get_boolean(cpsys, "use_closetip"));
int pa_no = 0;
- if(!(b_psys.settings().child_type() == 0))
+ if(!(b_part.child_type() == 0))
pa_no = totparts;
for(; pa_no < totparts+totchild; pa_no++) {
-
CData->curve_firstkey.push_back(keyno);
CData->curve_keynum.push_back(ren_step+1);
@@ -227,70 +221,50 @@ bool ObtainCacheParticleData(Mesh *mesh, BL::Mesh *b_mesh, BL::Object *b_ob, Par
pcKey = cKey;
keyno++;
}
- CData->curve_length.push_back(curve_length);
+ CData->curve_length.push_back(curve_length);
curvenum++;
-
}
}
-
}
}
return true;
-
}
bool ObtainCacheParticleUV(Mesh *mesh, BL::Mesh *b_mesh, BL::Object *b_ob, ParticleCurveData *CData, bool background, int uv_num)
{
-#if 0
- int keyno = 0;
-#endif
-
if(!(mesh && b_mesh && b_ob && CData))
return false;
-#if 0
- Transform tfm = get_transform(b_ob->matrix_world());
- Transform itfm = transform_quick_inverse(tfm);
-#endif
-
CData->curve_uv.clear();
BL::Object::modifiers_iterator b_mod;
for(b_ob->modifiers.begin(b_mod); b_mod != b_ob->modifiers.end(); ++b_mod) {
if((b_mod->type() == b_mod->type_PARTICLE_SYSTEM) && (background ? b_mod->show_render() : b_mod->show_viewport())) {
BL::ParticleSystemModifier psmd((const PointerRNA)b_mod->ptr);
-
BL::ParticleSystem b_psys((const PointerRNA)psmd.particle_system().ptr);
-
BL::ParticleSettings b_part((const PointerRNA)b_psys.settings().ptr);
- if((b_psys.settings().render_type()==BL::ParticleSettings::render_type_PATH)&&(b_psys.settings().type()==BL::ParticleSettings::type_HAIR)) {
-#if 0
- int mi = clamp(b_psys.settings().material()-1, 0, mesh->used_shaders.size()-1);
- int shader = mesh->used_shaders[mi];
-#endif
-
+ if((b_part.render_type() == BL::ParticleSettings::render_type_PATH) && (b_part.type() == BL::ParticleSettings::type_HAIR)) {
int totparts = b_psys.particles.length();
- int totchild = background ? b_psys.child_particles.length() : (int)((float)b_psys.child_particles.length() * (float)b_psys.settings().draw_percentage() / 100.0f);
+ int totchild = background ? b_psys.child_particles.length() : (int)((float)b_psys.child_particles.length() * (float)b_part.draw_percentage() / 100.0f);
int totcurves = totchild;
- if (b_psys.settings().child_type() == 0)
+ if (b_part.child_type() == 0)
totcurves += totparts;
if (totcurves == 0)
continue;
int pa_no = 0;
- if(!(b_psys.settings().child_type() == 0))
+ if(!(b_part.child_type() == 0))
pa_no = totparts;
BL::ParticleSystem::particles_iterator b_pa;
b_psys.particles.begin(b_pa);
for(; pa_no < totparts+totchild; pa_no++) {
-
- /*add uvs*/
+ /* Add UVs */
BL::Mesh::tessface_uv_textures_iterator l;
b_mesh->tessface_uv_textures.begin(l);
@@ -301,65 +275,47 @@ bool ObtainCacheParticleUV(Mesh *mesh, BL::Mesh *b_mesh, BL::Object *b_ob, Parti
if(pa_no < totparts && b_pa != b_psys.particles.end())
++b_pa;
-
}
}
-
}
}
return true;
-
}
bool ObtainCacheParticleVcol(Mesh *mesh, BL::Mesh *b_mesh, BL::Object *b_ob, ParticleCurveData *CData, bool background, int vcol_num)
{
-#if 0
- int keyno = 0;
-#endif
if(!(mesh && b_mesh && b_ob && CData))
return false;
-#if 0
- Transform tfm = get_transform(b_ob->matrix_world());
- Transform itfm = transform_quick_inverse(tfm);
-#endif
-
CData->curve_vcol.clear();
BL::Object::modifiers_iterator b_mod;
for(b_ob->modifiers.begin(b_mod); b_mod != b_ob->modifiers.end(); ++b_mod) {
if((b_mod->type() == b_mod->type_PARTICLE_SYSTEM) && (background ? b_mod->show_render() : b_mod->show_viewport())) {
BL::ParticleSystemModifier psmd((const PointerRNA)b_mod->ptr);
-
BL::ParticleSystem b_psys((const PointerRNA)psmd.particle_system().ptr);
-
BL::ParticleSettings b_part((const PointerRNA)b_psys.settings().ptr);
- if((b_psys.settings().render_type()==BL::ParticleSettings::render_type_PATH)&&(b_psys.settings().type()==BL::ParticleSettings::type_HAIR)) {
-#if 0
- int mi = clamp(b_psys.settings().material()-1, 0, mesh->used_shaders.size()-1);
- int shader = mesh->used_shaders[mi];
-#endif
+ if((b_part.render_type() == BL::ParticleSettings::render_type_PATH) && (b_part.type() == BL::ParticleSettings::type_HAIR)) {
int totparts = b_psys.particles.length();
- int totchild = background ? b_psys.child_particles.length() : (int)((float)b_psys.child_particles.length() * (float)b_psys.settings().draw_percentage() / 100.0f);
+ int totchild = background ? b_psys.child_particles.length() : (int)((float)b_psys.child_particles.length() * (float)b_part.draw_percentage() / 100.0f);
int totcurves = totchild;
- if (b_psys.settings().child_type() == 0)
+ if (b_part.child_type() == 0)
totcurves += totparts;
if (totcurves == 0)
continue;
int pa_no = 0;
- if(!(b_psys.settings().child_type() == 0))
+ if(!(b_part.child_type() == 0))
pa_no = totparts;
BL::ParticleSystem::particles_iterator b_pa;
b_psys.particles.begin(b_pa);
for(; pa_no < totparts+totchild; pa_no++) {
-
- /*add uvs*/
+ /* Add vertex colors */
BL::Mesh::tessface_vertex_colors_iterator l;
b_mesh->tessface_vertex_colors.begin(l);
@@ -370,15 +326,12 @@ bool ObtainCacheParticleVcol(Mesh *mesh, BL::Mesh *b_mesh, BL::Object *b_ob, Par
if(pa_no < totparts && b_pa != b_psys.particles.end())
++b_pa;
-
}
}
-
}
}
return true;
-
}
static void set_resolution(Mesh *mesh, BL::Mesh *b_mesh, BL::Object *b_ob, BL::Scene *scene, bool render)
@@ -398,8 +351,8 @@ void ExportCurveTrianglePlanes(Mesh *mesh, ParticleCurveData *CData, float3 RotC
int vertexno = mesh->verts.size();
int vertexindex = vertexno;
- for( int sys = 0; sys < CData->psys_firstcurve.size() ; sys++) {
- for( int curve = CData->psys_firstcurve[sys]; curve < CData->psys_firstcurve[sys] + CData->psys_curvenum[sys] ; curve++) {
+ for(int sys = 0; sys < CData->psys_firstcurve.size() ; sys++) {
+ for(int curve = CData->psys_firstcurve[sys]; curve < CData->psys_firstcurve[sys] + CData->psys_curvenum[sys] ; curve++) {
if(CData->curve_keynum[curve] <= 1 || CData->curve_length[curve] == 0.0f)
continue;
@@ -416,7 +369,7 @@ void ExportCurveTrianglePlanes(Mesh *mesh, ParticleCurveData *CData, float3 RotC
mesh->verts.push_back(ickey_loc_shfr);
vertexindex += 2;
- for( int curvekey = CData->curve_firstkey[curve] + 1; curvekey < CData->curve_firstkey[curve] + CData->curve_keynum[curve]; curvekey++) {
+ for(int curvekey = CData->curve_firstkey[curve] + 1; curvekey < CData->curve_firstkey[curve] + CData->curve_keynum[curve]; curvekey++) {
ickey_loc = CData->curvekey_co[curvekey];
if(curvekey == CData->curve_firstkey[curve] + CData->curve_keynum[curve] - 1)
@@ -460,8 +413,8 @@ void ExportCurveTriangleGeometry(Mesh *mesh, ParticleCurveData *CData, int resol
int vertexno = mesh->verts.size();
int vertexindex = vertexno;
- for( int sys = 0; sys < CData->psys_firstcurve.size() ; sys++) {
- for( int curve = CData->psys_firstcurve[sys]; curve < CData->psys_firstcurve[sys] + CData->psys_curvenum[sys] ; curve++) {
+ for(int sys = 0; sys < CData->psys_firstcurve.size() ; sys++) {
+ for(int curve = CData->psys_firstcurve[sys]; curve < CData->psys_firstcurve[sys] + CData->psys_curvenum[sys] ; curve++) {
if(CData->curve_keynum[curve] <= 1 || CData->curve_length[curve] == 0.0f)
continue;
@@ -471,9 +424,7 @@ void ExportCurveTriangleGeometry(Mesh *mesh, ParticleCurveData *CData, int resol
else
firstxbasis = normalize(cross(make_float3(0.0f,1.0f,0.0f),CData->curvekey_co[CData->curve_firstkey[curve]+1] - CData->curvekey_co[CData->curve_firstkey[curve]]));
-
- for( int curvekey = CData->curve_firstkey[curve]; curvekey < CData->curve_firstkey[curve] + CData->curve_keynum[curve] - 1; curvekey++) {
-
+ for(int curvekey = CData->curve_firstkey[curve]; curvekey < CData->curve_firstkey[curve] + CData->curve_keynum[curve] - 1; curvekey++) {
float3 xbasis = firstxbasis;
float3 v1;
float3 v2;
@@ -491,7 +442,7 @@ void ExportCurveTriangleGeometry(Mesh *mesh, ParticleCurveData *CData, int resol
v2 = CData->curvekey_co[curvekey] - CData->curvekey_co[curvekey-1];
}
- xbasis = cross(v1,v2);
+ xbasis = cross(v1, v2);
if(len_squared(xbasis) >= 0.05f * len_squared(v1) * len_squared(v2)) {
firstxbasis = normalize(xbasis);
@@ -499,8 +450,7 @@ void ExportCurveTriangleGeometry(Mesh *mesh, ParticleCurveData *CData, int resol
}
}
- for( int curvekey = CData->curve_firstkey[curve]; curvekey < CData->curve_firstkey[curve] + CData->curve_keynum[curve] - 1; curvekey++) {
-
+ for(int curvekey = CData->curve_firstkey[curve]; curvekey < CData->curve_firstkey[curve] + CData->curve_keynum[curve] - 1; curvekey++) {
int subv = 1;
float3 xbasis;
float3 ybasis;
@@ -521,7 +471,7 @@ void ExportCurveTriangleGeometry(Mesh *mesh, ParticleCurveData *CData, int resol
v2 = CData->curvekey_co[curvekey] - CData->curvekey_co[curvekey-1];
}
- xbasis = cross(v1,v2);
+ xbasis = cross(v1, v2);
if(len_squared(xbasis) >= 0.05f * len_squared(v1) * len_squared(v2)) {
xbasis = normalize(xbasis);
@@ -530,10 +480,9 @@ void ExportCurveTriangleGeometry(Mesh *mesh, ParticleCurveData *CData, int resol
else
xbasis = firstxbasis;
- ybasis = normalize(cross(xbasis,v2));
+ ybasis = normalize(cross(xbasis, v2));
for (; subv <= 1; subv++) {
-
float3 ickey_loc = make_float3(0.0f,0.0f,0.0f);
float time = 0.0f;
@@ -548,13 +497,13 @@ void ExportCurveTriangleGeometry(Mesh *mesh, ParticleCurveData *CData, int resol
radius = shaperadius(CData->psys_shape[sys], CData->psys_rootradius[sys], 0.0f, 0.95f);
float angle = M_2PI_F / (float)resolution;
- for(int section = 0 ; section < resolution; section++) {
+ for(int section = 0; section < resolution; section++) {
float3 ickey_loc_shf = ickey_loc + radius * (cosf(angle * section) * xbasis + sinf(angle * section) * ybasis);
mesh->verts.push_back(ickey_loc_shf);
}
- if(subv!=0) {
- for(int section = 0 ; section < resolution - 1; section++) {
+ if(subv != 0) {
+ for(int section = 0; section < resolution - 1; section++) {
mesh->add_triangle(vertexindex - resolution + section, vertexindex + section, vertexindex - resolution + section + 1, CData->psys_shader[sys], true);
mesh->add_triangle(vertexindex + section + 1, vertexindex - resolution + section + 1, vertexindex + section, CData->psys_shader[sys], true);
}
@@ -590,19 +539,17 @@ void ExportCurveSegments(Scene *scene, Mesh *mesh, ParticleCurveData *CData)
if(mesh->need_attribute(scene, ATTR_STD_CURVE_INTERCEPT))
attr_intercept = mesh->curve_attributes.add(ATTR_STD_CURVE_INTERCEPT);
- for( int sys = 0; sys < CData->psys_firstcurve.size() ; sys++) {
-
+ for(int sys = 0; sys < CData->psys_firstcurve.size() ; sys++) {
if(CData->psys_curvenum[sys] == 0)
continue;
- for( int curve = CData->psys_firstcurve[sys]; curve < CData->psys_firstcurve[sys] + CData->psys_curvenum[sys] ; curve++) {
-
+ for(int curve = CData->psys_firstcurve[sys]; curve < CData->psys_firstcurve[sys] + CData->psys_curvenum[sys] ; curve++) {
if(CData->curve_keynum[curve] <= 1 || CData->curve_length[curve] == 0.0f)
continue;
size_t num_curve_keys = 0;
- for( int curvekey = CData->curve_firstkey[curve]; curvekey < CData->curve_firstkey[curve] + CData->curve_keynum[curve]; curvekey++) {
+ for(int curvekey = CData->curve_firstkey[curve]; curvekey < CData->curve_firstkey[curve] + CData->curve_keynum[curve]; curvekey++) {
float3 ickey_loc = CData->curvekey_co[curvekey];
float time = CData->curvekey_time[curvekey]/CData->curve_length[curve];
float radius = shaperadius(CData->psys_shape[sys], CData->psys_rootradius[sys], CData->psys_tipradius[sys], time);
@@ -683,15 +630,15 @@ void ExportCurveTriangleUV(Mesh *mesh, ParticleCurveData *CData, int vert_offset
int vertexindex = vert_offset;
- for( int sys = 0; sys < CData->psys_firstcurve.size() ; sys++) {
- for( int curve = CData->psys_firstcurve[sys]; curve < CData->psys_firstcurve[sys] + CData->psys_curvenum[sys] ; curve++) {
+ for(int sys = 0; sys < CData->psys_firstcurve.size() ; sys++) {
+ for(int curve = CData->psys_firstcurve[sys]; curve < CData->psys_firstcurve[sys] + CData->psys_curvenum[sys] ; curve++) {
if(CData->curve_keynum[curve] <= 1 || CData->curve_length[curve] == 0.0f)
continue;
- for( int curvekey = CData->curve_firstkey[curve]; curvekey < CData->curve_firstkey[curve] + CData->curve_keynum[curve] - 1; curvekey++) {
+ for(int curvekey = CData->curve_firstkey[curve]; curvekey < CData->curve_firstkey[curve] + CData->curve_keynum[curve] - 1; curvekey++) {
time = CData->curvekey_time[curvekey]/CData->curve_length[curve];
- for(int section = 0 ; section < resol; section++) {
+ for(int section = 0; section < resol; section++) {
uvdata[vertexindex] = CData->curve_uv[curve];
uvdata[vertexindex].z = prevtime;
vertexindex++;
@@ -712,12 +659,10 @@ void ExportCurveTriangleUV(Mesh *mesh, ParticleCurveData *CData, int vert_offset
vertexindex++;
}
- prevtime = time;
-
+ prevtime = time;
}
}
}
-
}
void ExportCurveTriangleVcol(Mesh *mesh, ParticleCurveData *CData, int vert_offset, int resol, float3 *fdata)
@@ -727,14 +672,13 @@ void ExportCurveTriangleVcol(Mesh *mesh, ParticleCurveData *CData, int vert_offs
int vertexindex = vert_offset;
- for( int sys = 0; sys < CData->psys_firstcurve.size() ; sys++) {
- for( int curve = CData->psys_firstcurve[sys]; curve < CData->psys_firstcurve[sys] + CData->psys_curvenum[sys] ; curve++) {
+ for(int sys = 0; sys < CData->psys_firstcurve.size() ; sys++) {
+ for(int curve = CData->psys_firstcurve[sys]; curve < CData->psys_firstcurve[sys] + CData->psys_curvenum[sys] ; curve++) {
if(CData->curve_keynum[curve] <= 1 || CData->curve_length[curve] == 0.0f)
continue;
- for( int curvekey = CData->curve_firstkey[curve]; curvekey < CData->curve_firstkey[curve] + CData->curve_keynum[curve] - 1; curvekey++) {
-
- for(int section = 0 ; section < resol; section++) {
+ for(int curvekey = CData->curve_firstkey[curve]; curvekey < CData->curve_firstkey[curve] + CData->curve_keynum[curve] - 1; curvekey++) {
+ for(int section = 0; section < resol; section++) {
fdata[vertexindex] = color_srgb_to_scene_linear(CData->curve_vcol[curve]);
vertexindex++;
fdata[vertexindex] = color_srgb_to_scene_linear(CData->curve_vcol[curve]);
@@ -751,7 +695,6 @@ void ExportCurveTriangleVcol(Mesh *mesh, ParticleCurveData *CData, int vert_offs
}
}
}
-
}
/* Hair Curve Sync */
@@ -776,16 +719,16 @@ void BlenderSync::sync_curve_settings()
curve_system_manager->encasing_ratio = 1.01f;
if(curve_system_manager->primitive == CURVE_TRIANGLES && curve_system_manager->curve_shape == CURVE_RIBBON) {
- /*camera facing planes*/
+ /* camera facing planes */
curve_system_manager->triangle_method = CURVE_CAMERA_TRIANGLES;
curve_system_manager->resolution = 1;
}
if(curve_system_manager->primitive == CURVE_TRIANGLES && curve_system_manager->curve_shape == CURVE_THICK) {
- /*camera facing planes*/
+ /* camera facing planes */
curve_system_manager->triangle_method = CURVE_TESSELATED_TRIANGLES;
}
if(curve_system_manager->primitive == CURVE_LINE_SEGMENTS && curve_system_manager->curve_shape == CURVE_RIBBON) {
- /*tangent shading*/
+ /* tangent shading */
curve_system_manager->line_method = CURVE_UNCORRECTED;
curve_system_manager->use_encasing = true;
curve_system_manager->use_backfacing = false;
@@ -803,8 +746,7 @@ void BlenderSync::sync_curve_settings()
curve_system_manager->use_backfacing = false;
}
- if(curve_system_manager->modified_mesh(prev_curve_system_manager))
- {
+ if(curve_system_manager->modified_mesh(prev_curve_system_manager)) {
BL::BlendData::objects_iterator b_ob;
for(b_data.objects.begin(b_ob); b_ob != b_data.objects.end(); ++b_ob) {
@@ -823,7 +765,6 @@ void BlenderSync::sync_curve_settings()
if(curve_system_manager->modified(prev_curve_system_manager))
curve_system_manager->tag_update(scene);
-
}
void BlenderSync::sync_curves(Mesh *mesh, BL::Mesh b_mesh, BL::Object b_ob, int motion)