[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43894] branches/bmesh/blender/source/ blender: ensure tessface's are available while sculpting.
Campbell Barton
ideasman42 at gmail.com
Sun Feb 5 08:12:47 CET 2012
Revision: 43894
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43894
Author: campbellbarton
Date: 2012-02-05 07:12:46 +0000 (Sun, 05 Feb 2012)
Log Message:
-----------
ensure tessface's are available while sculpting.
Modified Paths:
--------------
branches/bmesh/blender/source/blender/blenkernel/BKE_mesh.h
branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c
branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
branches/bmesh/blender/source/blender/blenloader/intern/readfile.c
branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
branches/bmesh/blender/source/blender/editors/mesh/mesh_data.c
branches/bmesh/blender/source/blender/editors/sculpt_paint/sculpt.c
Modified: branches/bmesh/blender/source/blender/blenkernel/BKE_mesh.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_mesh.h 2012-02-05 07:09:30 UTC (rev 43893)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_mesh.h 2012-02-05 07:12:46 UTC (rev 43894)
@@ -260,6 +260,9 @@
void BKE_mesh_ensure_navmesh(struct Mesh *me);
+void BKE_mesh_calc_tessface(struct Mesh *mesh);
+void BKE_mesh_ensure_tessface(struct Mesh *mesh);
+
/*convert a triangle of loop facedata to mface facedata*/
void mesh_loops_to_mface_corners(struct CustomData *fdata, struct CustomData *ldata,
struct CustomData *pdata, int lindex[4], int findex,
Modified: branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c 2012-02-05 07:09:30 UTC (rev 43893)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c 2012-02-05 07:12:46 UTC (rev 43894)
@@ -446,14 +446,8 @@
/* yes, must be before _and_ after tesselate */
mesh_update_customdata_pointers(&tmp, TRUE);
- tmp.totface = mesh_recalcTesselation(&tmp.fdata, &tmp.ldata, &tmp.pdata,
- tmp.mvert,
- tmp.totface, tmp.totloop, tmp.totpoly,
- TRUE);
+ BKE_mesh_calc_tessface(&tmp);
- mesh_update_customdata_pointers(&tmp, TRUE);
-
-
CustomData_free(&me->vdata, me->totvert);
CustomData_free(&me->edata, me->totedge);
CustomData_free(&me->fdata, me->totface);
Modified: branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c 2012-02-05 07:09:30 UTC (rev 43893)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/mesh.c 2012-02-05 07:12:46 UTC (rev 43894)
@@ -2950,3 +2950,21 @@
CustomData_add_layer_named(&me->fdata, CD_RECAST, CD_REFERENCE, recastData, numFaces, "recastData");
}
}
+
+void BKE_mesh_calc_tessface(Mesh *mesh)
+{
+ mesh->totface = mesh_recalcTesselation(&mesh->fdata, &mesh->ldata, &mesh->pdata,
+ mesh->mvert,
+ mesh->totface, mesh->totloop, mesh->totpoly,
+ /* calc normals right after, dont copy from polys here */
+ FALSE);
+
+ mesh_update_customdata_pointers(mesh, TRUE);
+}
+
+void BKE_mesh_ensure_tessface(Mesh *mesh)
+{
+ if (mesh->totpoly && mesh->totface == 0) {
+ BKE_mesh_calc_tessface(mesh);
+ }
+}
Modified: branches/bmesh/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/bmesh/blender/source/blender/blenloader/intern/readfile.c 2012-02-05 07:09:30 UTC (rev 43893)
+++ branches/bmesh/blender/source/blender/blenloader/intern/readfile.c 2012-02-05 07:12:46 UTC (rev 43894)
@@ -3703,13 +3703,8 @@
* waiting until edit mode has been entered/exited, making it easier
* to recognize problems that would otherwise only show up after edits).
*/
- me->totface = mesh_recalcTesselation(&me->fdata, &me->ldata, &me->pdata,
- me->mvert,
- me->totface, me->totloop, me->totpoly,
- TRUE);
+ BKE_mesh_calc_tessface(me);
- mesh_update_customdata_pointers(me, TRUE);
-
me->id.flag -= LIB_NEEDLINK;
}
me= me->id.next;
Modified: branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c 2012-02-05 07:09:30 UTC (rev 43893)
+++ branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c 2012-02-05 07:12:46 UTC (rev 43894)
@@ -631,11 +631,7 @@
}
if (dotess) {
- me->totface = mesh_recalcTesselation(&me->fdata, &me->ldata, &me->pdata,
- me->mvert,
- me->totface, me->totloop, me->totpoly,
- /* possibly can set to FALSE here, but defaults to true */
- TRUE);
+ BKE_mesh_calc_tessface(me);
}
mesh_update_customdata_pointers(me, dotess);
Modified: branches/bmesh/blender/source/blender/editors/mesh/mesh_data.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/mesh_data.c 2012-02-05 07:09:30 UTC (rev 43893)
+++ branches/bmesh/blender/source/blender/editors/mesh/mesh_data.c 2012-02-05 07:12:46 UTC (rev 43894)
@@ -758,14 +758,9 @@
if(calc_edges || (mesh->totpoly && mesh->totedge == 0))
BKE_mesh_calc_edges(mesh, calc_edges);
- mesh->totface = mesh_recalcTesselation(&mesh->fdata, &mesh->ldata, &mesh->pdata,
- mesh->mvert,
- mesh->totface, mesh->totloop, mesh->totpoly,
- /* calc normals right after, dont copy from polys here */
- FALSE);
+ /* TODO, make this optional, we dont always want this! */
+ BKE_mesh_calc_tessface(mesh);
- mesh_update_customdata_pointers(mesh, TRUE);
-
polyindex = CustomData_get_layer(&mesh->fdata, CD_POLYINDEX);
/* add a normals layer for tesselated faces, a tessface normal will
contain the normal of the poly the face was tesselated from. */
Modified: branches/bmesh/blender/source/blender/editors/sculpt_paint/sculpt.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/sculpt_paint/sculpt.c 2012-02-05 07:09:30 UTC (rev 43893)
+++ branches/bmesh/blender/source/blender/editors/sculpt_paint/sculpt.c 2012-02-05 07:12:46 UTC (rev 43894)
@@ -2548,7 +2548,7 @@
/* Modifiers could depend on mesh normals, so we should update them/
Note, then if sculpting happens on locked key, normals should be re-calculated
after applying coords from keyblock on base mesh */
- mesh_calc_normals_mapping(me->mvert, me->totvert, me->mloop, me->mpoly, me->totloop, me->totpoly, NULL, NULL, 0, NULL, NULL);
+ mesh_calc_normals(me->mvert, me->totvert, me->mloop, me->mpoly, me->totloop, me->totpoly, NULL);
} else if (ss->kb)
sculpt_update_keyblock(ob);
}
@@ -2723,6 +2723,9 @@
ss->multires = NULL;
}
+ /* BMESH ONLY --- at some point we should move sculpt code to use polygons only - but for now it needs tessfaces */
+ BKE_mesh_ensure_tessface(ob->data);
+
ss->pbvh = dm->getPBVH(ob, dm);
ss->pmap = (need_pmap && dm->getPolyMap)? dm->getPolyMap(ob, dm): NULL;
More information about the Bf-blender-cvs
mailing list