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;


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to