[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