Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2009-11-25 16:11:44 +0300
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2009-11-25 16:11:44 +0300
commita1bf207be31f4bb578e920bc472cc3471a6554ca (patch)
tree4c8eafd32e190c9d3292c0edf3ce27bb5bd5e31b /source/blender/blenkernel/intern/cdderivedmesh.c
parent90cc7c8abd7b4c36002031edba8b75207fb98086 (diff)
Sculpt: Subsurf
* Now uses the CCG DerivedMesh also in object mode, used to be edit mode only. * Create CD_ORIGINDEX layer on demand, to save memory. * Removed ss_to_cdderivedmesh function, and instead create ccgdm and then convert that to cddm, to avoid code duplication. * Added and implement DerivedMesh interface functions to obtain face grids. * Store edge/face flags more memory efficient. * Export CCGDerivedMesh struct in BKE_subsurf.h
Diffstat (limited to 'source/blender/blenkernel/intern/cdderivedmesh.c')
-rw-r--r--source/blender/blenkernel/intern/cdderivedmesh.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index a07965c2a58..e64d8a24934 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -184,21 +184,21 @@ static ListBase *cdDM_getFaceMap(DerivedMesh *dm)
if(!cddm->fmap) {
create_vert_face_map(&cddm->fmap, &cddm->fmap_mem, cddm->mface,
dm->getNumVerts(dm), dm->getNumFaces(dm));
- printf("rebuild fmap\n");
}
return cddm->fmap;
}
-static struct PBVH *cdDM_getPBVH(DerivedMesh *dm)
+static struct PBVH *cdDM_getPBVH(Object *ob, DerivedMesh *dm)
{
CDDerivedMesh *cddm = (CDDerivedMesh*) dm;
- if(!cddm->pbvh) {
+ if(!cddm->pbvh && ob->type == OB_MESH) {
+ Mesh *me= ob->data;
+
cddm->pbvh = BLI_pbvh_new();
- BLI_pbvh_build(cddm->pbvh, cddm->mface, cddm->mvert,
- dm->getNumFaces(dm), dm->getNumVerts(dm));
- printf("rebuild pbvh\n");
+ BLI_pbvh_build(cddm->pbvh, me->mface, me->mvert,
+ me->totface, me->totvert);
}
return cddm->pbvh;
@@ -1627,6 +1627,11 @@ DerivedMesh *CDDM_copy(DerivedMesh *source)
int numEdges = source->numEdgeData;
int numFaces = source->numFaceData;
+ /* ensure these are created if they are made on demand */
+ source->getVertDataArray(source, CD_ORIGINDEX);
+ source->getEdgeDataArray(source, CD_ORIGINDEX);
+ source->getFaceDataArray(source, CD_ORIGINDEX);
+
/* this initializes dm, and copies all non mvert/medge/mface layers */
DM_from_template(dm, source, numVerts, numEdges, numFaces);
dm->deformedOnly = source->deformedOnly;