[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23901] branches/nurbs25: * Isolines first draft

Emmanuel Stone emmanuel.stone at gmail.com
Sat Oct 17 12:06:15 CEST 2009


Revision: 23901
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23901
Author:   eman
Date:     2009-10-17 12:06:14 +0200 (Sat, 17 Oct 2009)

Log Message:
-----------
* Isolines first draft
 - First attempt at new RNA/Python UI stuff
 - Need to add Density and Resolution options
 - Doesn't respect Occlude Geometry yet

Modified Paths:
--------------
    branches/nurbs25/release/scripts/ui/buttons_data_curve.py
    branches/nurbs25/source/blender/blenkernel/BKE_curve.h
    branches/nurbs25/source/blender/blenkernel/intern/curve.c
    branches/nurbs25/source/blender/editors/space_view3d/drawobject.c
    branches/nurbs25/source/blender/makesrna/intern/rna_curve.c

Modified: branches/nurbs25/release/scripts/ui/buttons_data_curve.py
===================================================================
--- branches/nurbs25/release/scripts/ui/buttons_data_curve.py	2009-10-17 04:22:52 UTC (rev 23900)
+++ branches/nurbs25/release/scripts/ui/buttons_data_curve.py	2009-10-17 10:06:14 UTC (rev 23901)
@@ -219,9 +219,10 @@
 			col = split.column()
 			col.itemR(act_spline, "smooth")
 
+			col.itemR(act_spline, "isovis")
 
 bpy.types.register(DATA_PT_context_curve)
 bpy.types.register(DATA_PT_shape_curve)
 bpy.types.register(DATA_PT_geometry_curve)
 bpy.types.register(DATA_PT_pathanim)
-bpy.types.register(DATA_PT_active_spline)
+bpy.types.register(DATA_PT_active_spline)
\ No newline at end of file

Modified: branches/nurbs25/source/blender/blenkernel/BKE_curve.h
===================================================================
--- branches/nurbs25/source/blender/blenkernel/BKE_curve.h	2009-10-17 04:22:52 UTC (rev 23900)
+++ branches/nurbs25/source/blender/blenkernel/BKE_curve.h	2009-10-17 10:06:14 UTC (rev 23901)
@@ -73,6 +73,8 @@
 
 //nurbana functions
 void nurbanaInit( struct Nurb *nu);
+void nurbanaSizeChanged( struct Nurb *nu);
+void nurbanaResetIsoLines( struct Nurb *nu);
 
 void makeNurbfaces(struct Nurb *nu, float *coord_array, int rowstride);
 void makeNurbcurve(struct Nurb *nu, float *coord_array, float *tilt_array, float *radius_array, int resolu, int stride);

Modified: branches/nurbs25/source/blender/blenkernel/intern/curve.c
===================================================================
--- branches/nurbs25/source/blender/blenkernel/intern/curve.c	2009-10-17 04:22:52 UTC (rev 23900)
+++ branches/nurbs25/source/blender/blenkernel/intern/curve.c	2009-10-17 10:06:14 UTC (rev 23901)
@@ -799,7 +799,16 @@
 	}
 //	printweightsNurb();
 }
+void nurbanaSizeChanged(Nurb *nu)
+{
+	NRB_SizeChanged(nu->nurbanaPtr,nu->pntsu,nu->pntsv);
+}
 
+void nurbanaResetIsoLines(Nurb *nu)
+{
+	NRB_resetIsoLines(nu->nurbanaPtr); 
+}
+
 void nurbana3dmRead(char *str)
 { 
 //	if(G.scene->id.lib) return;
@@ -2919,6 +2928,7 @@
 	}
 }
 
+
 void switchdirectionNurb(Nurb *nu)
 {
 	BezTriple *bezt1, *bezt2;

Modified: branches/nurbs25/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- branches/nurbs25/source/blender/editors/space_view3d/drawobject.c	2009-10-17 04:22:52 UTC (rev 23900)
+++ branches/nurbs25/source/blender/editors/space_view3d/drawobject.c	2009-10-17 10:06:14 UTC (rev 23901)
@@ -4421,7 +4421,70 @@
 	}
 	glEnd();
 }
+static void draw_nurbisolines(View3D *v3d, Object *ob, Nurb *nurb)
+{
+	Nurb *nu;
+	BPoint *bp, *bp1;
+	int a, b, ofs, den,res,i;
 
+
+	DispList *dl;
+	if(v3d->zbuf) 
+		glDisable(GL_DEPTH_TEST);
+	glDepthMask(GL_FALSE);
+
+	nu= nurb;
+	while(nu) {
+		if(nu->hide==0) {
+			switch(nu->type & 7) {
+				case CU_NURBS:
+					/* draw isolines */
+					dl = ((Curve*)ob->data)->disp.first;
+
+					while(dl) {
+						den = dl->isoden;
+						res = dl->isores;
+						i =0;
+
+						glColor4ub(0x30, 0x30, 0xFF, 155);
+						glEnable( GL_BLEND );
+						glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
+
+						for(a=res;a<res*2;a++) {
+							glPointSize(5);
+							glBegin(GL_LINE_STRIP);
+							for(b=0;b<den;b++) {
+								glVertex3fv(&dl->iso[((a*den)+b)*3]);
+								i+=3;
+							}
+							glEnd();
+						}
+						glDisable( GL_BLEND );
+						glColor4ub(0xFF, 0x30, 0x30, 155);
+						glEnable( GL_BLEND );
+						glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
+
+						for(a=0;a<res;a++) {
+							glPointSize(5);
+							glBegin(GL_LINE_STRIP);
+							for(b=0;b<(den);b++) {
+								glVertex3fv(&dl->iso[(((b*res)+a)*3)]);
+							}
+							glEnd();
+						}
+						glDisable( GL_BLEND );
+						dl = dl->next;
+					}
+					break;
+			}
+		}
+		nu= nu->next;
+	}
+
+	glDepthMask(GL_FALSE);
+	glEnable(GL_DEPTH_TEST);
+}
+
 static void draw_nurbsverts(View3D *v3d, Nurb *nu, short sel, short hide_handles)
 {
 	BezTriple *bezt;
@@ -4610,6 +4673,12 @@
 	
 	if(v3d->zbuf) glEnable(GL_DEPTH_TEST);
 
+	/* draw isolines */
+	for(nu=nurb; nu; nu=nu->next) {
+		if(nurb->isovis)
+			draw_nurbisolines(v3d, ob, nu);
+	}
+
 	/*	direction vectors for 3d curve paths
 		when at its lowest, dont render normals */
 	if(cu->flag & CU_3D && ts->normalsize > 0.0015 && (cu->drawflag & CU_HIDE_NORMALS)==0) {
@@ -4651,7 +4720,8 @@
 		draw_nurbsverts(v3d, nu, 1, hide_handles);
 	}
 	
-	if(v3d->zbuf) glEnable(GL_DEPTH_TEST); 
+	if(v3d->zbuf) 
+		glEnable(GL_DEPTH_TEST); 
 }
 
 /* draw a sphere for use as an empty drawtype */

Modified: branches/nurbs25/source/blender/makesrna/intern/rna_curve.c
===================================================================
--- branches/nurbs25/source/blender/makesrna/intern/rna_curve.c	2009-10-17 04:22:52 UTC (rev 23900)
+++ branches/nurbs25/source/blender/makesrna/intern/rna_curve.c	2009-10-17 10:06:14 UTC (rev 23901)
@@ -216,11 +216,14 @@
 static void rna_Curve_update_data(bContext *C, PointerRNA *ptr)
 {
 	ID *id= ptr->id.data;
-	
+	Nurb *nu= (Nurb*)ptr->data;
+	nurbanaSizeChanged(nu);
+	nurbanaResetIsoLines(nu);
 	DAG_id_flush_update(id, OB_RECALC_DATA);
 	WM_event_add_notifier(C, NC_GEOM|ND_DATA, id);
 }
 
+
 static void rna_Nurb_update_handle_data(bContext *C, PointerRNA *ptr)
 {
 	Nurb *nu= (Nurb*)ptr->data;





More information about the Bf-blender-cvs mailing list