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:
authorNicholas Bishop <nicholasbishop@gmail.com>2012-03-14 10:30:55 +0400
committerNicholas Bishop <nicholasbishop@gmail.com>2012-03-14 10:30:55 +0400
commit38d4848020bc08cc471310c282ac62e54e881fa8 (patch)
tree6eb423ab1b8f99a0be4d2715e8b5c485f78d2422 /source/blender/blenkernel
parentee9a00948b950f8361ef280b5f88674721a6698f (diff)
Don't wait for sculpt stroke to create PBVH.
This idea is borrowed from the multires modifier, which already checked if the object was in sculpt mode and, if so, created the PBVH. That check is now moved higher up the chain into mesh_build_data(), so that it occurs for CDDerivedMesh too. This also replaces an assert in cdDM_getPBVH for tesselated mesh faces with a call to create them if missing.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c6
-rw-r--r--source/blender/blenkernel/intern/cdderivedmesh.c4
2 files changed, 9 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index 235bc695b66..66cd8adc60b 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -1993,6 +1993,12 @@ static void mesh_build_data(Scene *scene, Object *ob, CustomDataMask dataMask,
ob->derivedFinal->needsFree = 0;
ob->derivedDeform->needsFree = 0;
ob->lastDataMask = dataMask;
+
+ if((ob->mode & OB_MODE_SCULPT) && ob->sculpt) {
+ /* create PBVH immediately (would be created on the fly too,
+ but this avoids waiting on first stroke) */
+ ob->sculpt->pbvh= ob->derivedFinal->getPBVH(ob, ob->derivedFinal);
+ }
}
static void editbmesh_build_data(Scene *scene, Object *obedit, BMEditMesh *em, CustomDataMask dataMask)
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index cc3705780e4..54f7fc1e483 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -276,7 +276,9 @@ static struct PBVH *cdDM_getPBVH(Object *ob, DerivedMesh *dm)
Mesh *me= ob->data;
cddm->pbvh = BLI_pbvh_new();
cddm->pbvh_draw = can_pbvh_draw(ob, dm);
- BLI_assert(!(me->mface == NULL && me->mpoly != NULL)); /* BMESH ONLY complain if mpoly is valid but not mface */
+
+ BKE_mesh_tessface_ensure(me);
+
BLI_pbvh_build_mesh(cddm->pbvh, me->mface, me->mvert,
me->totface, me->totvert);