diff options
author | Germano <germano.costa@ig.com.br> | 2017-11-10 17:58:34 +0300 |
---|---|---|
committer | Germano <germano.costa@ig.com.br> | 2017-11-10 17:58:34 +0300 |
commit | d95eabf0a937e788e1ebd6f9297b3c80db7913e2 (patch) | |
tree | d7f6964c07bebfc058bf575cef4fe7e02bfb5095 /source/blender/blenkernel/intern/mball_tessellate.c | |
parent | db7a78a2be7849f47c81c907ad0710ece66018b7 (diff) |
mball_tessellate: Simplify face creation
Faces that have the last two indices equal are considered triangles, and not those that the last index is 0
Improvement of 7% in performance of the `polygonize` function
Diffstat (limited to 'source/blender/blenkernel/intern/mball_tessellate.c')
-rw-r--r-- | source/blender/blenkernel/intern/mball_tessellate.c | 45 |
1 files changed, 11 insertions, 34 deletions
diff --git a/source/blender/blenkernel/intern/mball_tessellate.c b/source/blender/blenkernel/intern/mball_tessellate.c index 82d82ce71c4..a1ae3a7f572 100644 --- a/source/blender/blenkernel/intern/mball_tessellate.c +++ b/source/blender/blenkernel/intern/mball_tessellate.c @@ -412,16 +412,10 @@ static void make_face(PROCESS *process, int i1, int i2, int i3, int i4) cur[0] = i1; cur[1] = i2; cur[2] = i3; - - if (i4 == 0) { - cur[3] = i3; - } - else { - cur[3] = i4; - } + cur[3] = i4; #ifdef USE_ACCUM_NORMAL - if (i4 == 0) { + if (i4 == i3) { normal_tri_v3(n, process->co[i1], process->co[i2], process->co[i3]); accumulate_vertex_normals_v3( process->no[i1], process->no[i2], process->no[i3], NULL, n, @@ -526,40 +520,23 @@ static void docube(PROCESS *process, CUBE *cube) if (count > 2) { switch (count) { case 3: - make_face(process, indexar[2], indexar[1], indexar[0], 0); + make_face(process, indexar[2], indexar[1], indexar[0], indexar[0]); /* triangle */ break; case 4: - if (indexar[0] == 0) make_face(process, indexar[0], indexar[3], indexar[2], indexar[1]); - else make_face(process, indexar[3], indexar[2], indexar[1], indexar[0]); + make_face(process, indexar[3], indexar[2], indexar[1], indexar[0]); break; case 5: - if (indexar[0] == 0) make_face(process, indexar[0], indexar[3], indexar[2], indexar[1]); - else make_face(process, indexar[3], indexar[2], indexar[1], indexar[0]); - - make_face(process, indexar[4], indexar[3], indexar[0], 0); + make_face(process, indexar[3], indexar[2], indexar[1], indexar[0]); + make_face(process, indexar[4], indexar[3], indexar[0], indexar[0]); /* triangle */ break; case 6: - if (indexar[0] == 0) { - make_face(process, indexar[0], indexar[3], indexar[2], indexar[1]); - make_face(process, indexar[0], indexar[5], indexar[4], indexar[3]); - } - else { - make_face(process, indexar[3], indexar[2], indexar[1], indexar[0]); - make_face(process, indexar[5], indexar[4], indexar[3], indexar[0]); - } + make_face(process, indexar[3], indexar[2], indexar[1], indexar[0]); + make_face(process, indexar[5], indexar[4], indexar[3], indexar[0]); break; case 7: - if (indexar[0] == 0) { - make_face(process, indexar[0], indexar[3], indexar[2], indexar[1]); - make_face(process, indexar[0], indexar[5], indexar[4], indexar[3]); - } - else { - make_face(process, indexar[3], indexar[2], indexar[1], indexar[0]); - make_face(process, indexar[5], indexar[4], indexar[3], indexar[0]); - } - - make_face(process, indexar[6], indexar[5], indexar[0], 0); - + make_face(process, indexar[3], indexar[2], indexar[1], indexar[0]); + make_face(process, indexar[5], indexar[4], indexar[3], indexar[0]); + make_face(process, indexar[6], indexar[5], indexar[0], indexar[0]); /* triangle */ break; } } |