[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11762] trunk/blender/source/blender: * Curve tilt interpolation types
Matt Ebb
matt at mke3.net
Tue Aug 21 03:57:16 CEST 2007
Revision: 11762
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11762
Author: broken
Date: 2007-08-21 03:57:15 +0200 (Tue, 21 Aug 2007)
Log Message:
-----------
* Curve tilt interpolation types
Just a quickie feature I needed here at work- the previous linear
interpolation of tilt in curves can give nasty pinching problems
when trying to do flowing curves like a ribbon. This commit lets
you choose the interpolation type, between Linear, Cardinal, and
BSpline. The code was already set up for it pretty easily, mainly
needed to make the choice visible to the user.
Example:
http://mke3.net/blender/devel/etc/tilt_interp_types.png
Works on selected curve 'lines', menu in 'curve tools' panel in
edit mode.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/curve.c
trunk/blender/source/blender/include/butspace.h
trunk/blender/source/blender/makesdna/DNA_curve_types.h
trunk/blender/source/blender/src/buttons_editing.c
Modified: trunk/blender/source/blender/blenkernel/intern/curve.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/curve.c 2007-08-21 00:11:44 UTC (rev 11761)
+++ trunk/blender/source/blender/blenkernel/intern/curve.c 2007-08-21 01:57:15 UTC (rev 11762)
@@ -1445,7 +1445,7 @@
for(a=0; a<resolu; a++, fac+= dfac) {
- set_four_ipo(fac, t, KEY_LINEAR);
+ set_four_ipo(fac, t, nu->tilt_interp);
data_a[a]= t[0]*pprev->alfa + t[1]*prevbezt->alfa + t[2]*bezt->alfa + t[3]*next->alfa;
}
Modified: trunk/blender/source/blender/include/butspace.h
===================================================================
--- trunk/blender/source/blender/include/butspace.h 2007-08-21 00:11:44 UTC (rev 11761)
+++ trunk/blender/source/blender/include/butspace.h 2007-08-21 01:57:15 UTC (rev 11762)
@@ -453,6 +453,7 @@
#define B_SETRESOLU 2121
#define B_SETW4 2122
#define B_SUBSURFTYPE 2123
+#define B_TILTINTERP 2124
/* *********************** */
#define B_FONTBUTS 2300
Modified: trunk/blender/source/blender/makesdna/DNA_curve_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_curve_types.h 2007-08-21 00:11:44 UTC (rev 11761)
+++ trunk/blender/source/blender/makesdna/DNA_curve_types.h 2007-08-21 01:57:15 UTC (rev 11762)
@@ -116,9 +116,11 @@
float *knotsu, *knotsv;
BPoint *bp;
BezTriple *bezt;
+
+ short tilt_interp; /* KEY_LINEAR, KEY_CARDINAL, KEY_BSPLINE */
+ short pad;
int charidx;
- int pad;
} Nurb;
typedef struct CharInfo {
Modified: trunk/blender/source/blender/src/buttons_editing.c
===================================================================
--- trunk/blender/source/blender/src/buttons_editing.c 2007-08-21 00:11:44 UTC (rev 11761)
+++ trunk/blender/source/blender/src/buttons_editing.c 2007-08-21 01:57:15 UTC (rev 11762)
@@ -2794,6 +2794,10 @@
allqueue(REDRAWVIEW3D, 0);
}
break;
+ case B_TILTINTERP:
+ DAG_object_flush_update(G.scene, G.obedit, OB_RECALC_DATA);
+ allqueue(REDRAWVIEW3D, 0);
+ break;
case B_SUBSURFTYPE:
/* fallthrough */
case B_MAKEDISP:
@@ -2904,6 +2908,14 @@
nu= lastnu;
if(nu==NULL) nu= editNurb.first;
if(nu) {
+ if (ob->type==OB_CURVE) {
+ uiDefBut(block, LABEL, 0, "Tilt",
+ 467,87,72, 18, 0, 0, 0, 0, 0, "");
+ /* KEY_LINEAR, KEY_CARDINAL, KEY_BSPLINE */
+ uiDefButS(block, MENU, B_TILTINTERP, "Tilt Interpolation %t|Linear %x0|Cardinal %x1|BSpline %x2",
+ 467,67,72, 18, &(nu->tilt_interp), 0, 0, 0, 0, "Tilt interpolation");
+ }
+
uiBlockBeginAlign(block);
sp= &(nu->orderu);
uiDefButS(block, NUM, B_SETORDER, "Order U:", 565,90,102, 19, sp, 2.0, 6.0, 0, 0, "Nurbs only; the amount of control points involved");
More information about the Bf-blender-cvs
mailing list