diff options
author | Thomas Dinges <blender@dingto.org> | 2013-12-21 03:20:16 +0400 |
---|---|---|
committer | Thomas Dinges <blender@dingto.org> | 2013-12-21 03:20:16 +0400 |
commit | 9bd3a226aec3404c05c4d92eeb669b358a901fba (patch) | |
tree | 4bb9b0fc25d06547201b1d1660df6d4e03016096 /intern | |
parent | 14c9899a69c24aa457b700d2f0a20c8077538092 (diff) |
Cleanup: Code and style cleanup for Cycles curve export code.
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/blender/blender_curves.cpp | 151 |
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) |