[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15298] branches/soc-2008-nicholasbishop/ source/blender/blenkernel: Vertices in the base mesh now get displaced.
Nicholas Bishop
nicholasbishop at gmail.com
Sat Jun 21 22:22:33 CEST 2008
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;
More information about the Bf-blender-cvs
mailing list