[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48848] trunk/blender/source/blender/ modifiers/intern/MOD_skin.c: Fix normals around root nodes of skin modifier output.
Nicholas Bishop
nicholasbishop at gmail.com
Thu Jul 12 07:55:08 CEST 2012
Revision: 48848
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48848
Author: nicholasbishop
Date: 2012-07-12 05:55:07 +0000 (Thu, 12 Jul 2012)
Log Message:
-----------
Fix normals around root nodes of skin modifier output.
The direction for these are flipped from other end caps, so add a root
flag to indicate whether the cap polygon's vertex output order should be
reversed.
Fixes bug [#32079] Skin-modifier calculates root's normals wrong
projects.blender.org/tracker/index.php?func=detail&aid=32079&group_id=9&atid=498
Modified Paths:
--------------
trunk/blender/source/blender/modifiers/intern/MOD_skin.c
Modified: trunk/blender/source/blender/modifiers/intern/MOD_skin.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_skin.c 2012-07-12 01:14:56 UTC (rev 48847)
+++ trunk/blender/source/blender/modifiers/intern/MOD_skin.c 2012-07-12 05:55:07 UTC (rev 48848)
@@ -91,6 +91,7 @@
CAP_START = 1,
CAP_END = 2,
SEAM_FRAME = 4,
+ ROOT = 8
} SkinNodeFlag;
typedef struct Frame {
@@ -502,6 +503,9 @@
/* End frame */
create_frame(&skin_nodes[v].frames[0], mvert[v].co, rad, mat, 0);
}
+
+ if (nodes[v].flag & MVERT_SKIN_ROOT)
+ skin_nodes[v].flag |= ROOT;
}
/* Returns 1 for seam, 0 otherwise */
@@ -1493,18 +1497,27 @@
}
if (sn->flag & CAP_START) {
- add_poly(so,
- sn->frames[0].verts[3],
- sn->frames[0].verts[2],
- sn->frames[0].verts[1],
- sn->frames[0].verts[0]);
+ if (sn->flag & ROOT) {
+ add_poly(so,
+ sn->frames[0].verts[0],
+ sn->frames[0].verts[1],
+ sn->frames[0].verts[2],
+ sn->frames[0].verts[3]);
+ }
+ else {
+ add_poly(so,
+ sn->frames[0].verts[3],
+ sn->frames[0].verts[2],
+ sn->frames[0].verts[1],
+ sn->frames[0].verts[0]);
+ }
}
if (sn->flag & CAP_END) {
add_poly(so,
- sn->frames[1].verts[3],
+ sn->frames[1].verts[0],
+ sn->frames[1].verts[1],
sn->frames[1].verts[2],
- sn->frames[1].verts[1],
- sn->frames[1].verts[0]);
+ sn->frames[1].verts[3]);
}
}
}
More information about the Bf-blender-cvs
mailing list