Revision: 15298
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15298
Author:   nicholasbishop
Date:     2008-06-21 22:21:31 +0200 (Sat, 21 Jun 2008)

Log Message:
-----------
Vertices in the base mesh now get displaced.

Modified Paths:
--------------
    branches/soc-2008-nicholasbishop/source/blender/blenkernel/BKE_multires.h
    
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/cdderivedmesh.c
    branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c
    
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/subsurf_ccg.c

Modified: 
branches/soc-2008-nicholasbishop/source/blender/blenkernel/BKE_multires.h
===================================================================
--- branches/soc-2008-nicholasbishop/source/blender/blenkernel/BKE_multires.h   
2008-06-21 18:20:32 UTC (rev 15297)
+++ branches/soc-2008-nicholasbishop/source/blender/blenkernel/BKE_multires.h   
2008-06-21 20:21:31 UTC (rev 15298)
@@ -91,6 +91,7 @@
 int MultiresDM_get_totlvl(struct DerivedMesh *);
 int MultiresDM_get_lvl(struct DerivedMesh *);
 int MultiresDM_get_totorfa(struct DerivedMesh *);
+int MultiresDM_get_totorco(struct DerivedMesh *);
 int MultiresDM_get_totored(struct DerivedMesh *);
 void MultiresDM_set_update(struct DerivedMesh *, void (*)(struct 
DerivedMesh*));
 
@@ -124,5 +125,6 @@
 void multires_displacer_weight(MultiresDisplacer *d, const float w);
 void multires_displacer_anchor(MultiresDisplacer *d, const int type, const int 
side_index);
 void multires_displacer_anchor_edge(MultiresDisplacer *d, const int, const 
int, const int);
+void multires_displacer_anchor_vert(MultiresDisplacer *d, const int);
 void multires_displacer_jump(MultiresDisplacer *d);
 void multires_displace(MultiresDisplacer *d, float out[3]);

Modified: 
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- 
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/cdderivedmesh.c
   2008-06-21 18:20:32 UTC (rev 15297)
+++ 
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/cdderivedmesh.c
   2008-06-21 20:21:31 UTC (rev 15298)
@@ -1241,6 +1241,11 @@
 
 }
 
+int MultiresDM_get_totorco(struct DerivedMesh *dm)
+{
+       return ((MultiresDM*)dm)->totorco;
+}
+
 void *MultiresDM_get_subco(DerivedMesh *dm)
 {
        return ((MultiresDM*)dm)->subco;

Modified: 
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c
===================================================================
--- 
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c    
    2008-06-21 18:20:32 UTC (rev 15297)
+++ 
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/multires.c    
    2008-06-21 20:21:31 UTC (rev 15298)
@@ -1536,6 +1536,20 @@
        }
 }
 
+void multires_displacer_anchor_vert(MultiresDisplacer *d, const int v)
+{
+       const int e = d->sidetot - 1;
+       d->x = d->y = 0;
+       if(v == d->face->v2)
+               d->x = e;
+       else if(v == d->face->v3)
+               d->x = d->y = e;
+       else if(v == d->face->v4)
+               d->y = e;
+
+       d->type = 5;
+}
+
 void multires_displacer_jump(MultiresDisplacer *d)
 {
        if(d->sidendx == 0) {
@@ -1681,6 +1695,17 @@
                                ++d.subco;
                        }
                }
+               
+               for(i = 0; i < MultiresDM_get_totorco(dm); ++i) {
+                       IndexNode *n;
+                       for(n = map[i].first; n; n = n->next) {
+                               multires_displacer_init(&d, dm, n->index, 1);
+                               multires_displacer_anchor_vert(&d, i);
+                               multires_displace(&d, mvert->co);
+                       }
+                       ++mvert;
+                       ++d.subco;
+               }
        }
 }
 

Modified: 
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- 
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/subsurf_ccg.c 
    2008-06-21 18:20:32 UTC (rev 15297)
+++ 
branches/soc-2008-nicholasbishop/source/blender/blenkernel/intern/subsurf_ccg.c 
    2008-06-21 20:21:31 UTC (rev 15298)
@@ -693,7 +693,23 @@
 
                DM_copy_vert_data(dm, result, vertIdx, i, 1);
                VecCopyf(mvert->co, ccgSubSurf_getVertData(ss, v));
+               if(mmd) {
+                       int numFaces = ccgSubSurf_getVertNumFaces(ss, v);
+                       int vertface;
 
+                       VecCopyf(mr_orig, mvert->co);
+                       mr_orig += 3;
+
+                       multires_displacer_weight(&d, 1.0f / numFaces);
+                       for(vertface = 0; vertface < numFaces; ++vertface) {
+                               CCGFace *f = ccgSubSurf_getVertFace(ss, v, 
vertface);
+                               int faceIdx = 
GET_INT_FROM_POINTER(ccgSubSurf_getFaceFaceHandle(ss, f));
+                               multires_displacer_init(&d, result, faceIdx, 0);
+                               multires_displacer_anchor_vert(&d, vertIdx);
+                               multires_displace(&d, mvert->co);
+                       }
+               }
+
                *((int*)ccgSubSurf_getVertUserData(ss, v)) = i;
                *origIndex = ccgDM_getVertMapIndex(NULL, ss, v);
                ++mvert;


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

Reply via email to