[Bf-blender-cvs] [d95eabf0a93] master: mball_tessellate: Simplify face creation
Germano
noreply at git.blender.org
Fri Nov 10 15:58:53 CET 2017
Commit: d95eabf0a937e788e1ebd6f9297b3c80db7913e2
Author: Germano
Date: Fri Nov 10 12:58:34 2017 -0200
Branches: master
https://developer.blender.org/rBd95eabf0a937e788e1ebd6f9297b3c80db7913e2
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
===================================================================
M source/blender/blenkernel/intern/mball_tessellate.c
===================================================================
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;
}
}
More information about the Bf-blender-cvs
mailing list