[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