[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37111] branches/soc-2011-onion/source/ blender/blenkernel/intern/multires.c: Revision: 29350
Jason Wilkins
Jason.A.Wilkins at gmail.com
Fri Jun 3 01:31:18 CEST 2011
Revision: 37111
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37111
Author: jwilkins
Date: 2011-06-02 23:31:18 +0000 (Thu, 02 Jun 2011)
Log Message:
-----------
Revision: 29350
Author: nicholasbishop
Date: 5:46:29 PM, Tuesday, June 08, 2010
Message:
* A little refactoring, pulled some common code together in multire
Modified Paths:
--------------
branches/soc-2011-onion/source/blender/blenkernel/intern/multires.c
Modified: branches/soc-2011-onion/source/blender/blenkernel/intern/multires.c
===================================================================
--- branches/soc-2011-onion/source/blender/blenkernel/intern/multires.c 2011-06-02 23:25:38 UTC (rev 37110)
+++ branches/soc-2011-onion/source/blender/blenkernel/intern/multires.c 2011-06-02 23:31:18 UTC (rev 37111)
@@ -607,6 +607,19 @@
dispdm->release(dispdm);
}
+static DMGridData **copy_grids(DMGridData **grids, int totgrid, int gridsize)
+{
+ DMGridData **grids_copy = MEM_callocN(sizeof(DMGridData*) * totgrid, "subgrids");
+ int i;
+
+ for(i = 0; i < totgrid; ++i) {
+ grids_copy[i] = MEM_callocN(sizeof(DMGridData)*gridsize*gridsize, "subgrid");
+ memcpy(grids_copy[i], grids[i], sizeof(DMGridData)*gridsize*gridsize);
+ }
+
+ return grids_copy;
+}
+
static void multires_subdivide(MultiresModifierData *mmd, Object *ob, int totlvl, int updateblock, int simple)
{
Mesh *me = ob->data;
@@ -645,16 +658,12 @@
lowGridSize = lowdm->getGridSize(lowdm);
lowGridData = lowdm->getGridData(lowdm);
- subGridData = MEM_callocN(sizeof(float*)*numGrids, "subGridData*");
+ /* backup subsurf grids */
+ subGridData = copy_grids(highGridData, numGrids, highGridSize);
- for(i = 0; i < numGrids; ++i) {
- /* backup subsurf grids */
- subGridData[i] = MEM_callocN(sizeof(DMGridData)*highGridSize*highGridSize, "subGridData");
- memcpy(subGridData[i], highGridData[i], sizeof(DMGridData)*highGridSize*highGridSize);
-
- /* overwrite with current displaced grids */
+ /* overwrite with current displaced grids */
+ for(i = 0; i < numGrids; ++i)
multires_copy_dm_grid(highGridData[i], lowGridData[i], highGridSize, lowGridSize);
- }
/* low lower level dm no longer needed at this point */
lowdm->release(lowdm);
@@ -855,15 +864,13 @@
lowGridData = lowdm->getGridData(lowdm);
gridData = dm->getGridData(dm);
- subGridData = MEM_callocN(sizeof(DMGridData*)*numGrids, "subGridData*");
+ /* backup subsurf grids */
+ subGridData = copy_grids(highGridData, numGrids, highGridSize);
+
diffGrid = MEM_callocN(sizeof(DMGridData)*lowGridSize*lowGridSize, "diff");
+ /* write difference of subsurf and displaced low level into high subsurf */
for(i = 0; i < numGrids; ++i) {
- /* backup subsurf grids */
- subGridData[i] = MEM_callocN(sizeof(DMGridData)*highGridSize*highGridSize, "subGridData");
- memcpy(subGridData[i], highGridData[i], sizeof(DMGridData)*highGridSize*highGridSize);
-
- /* write difference of subsurf and displaced low level into high subsurf */
for(j = 0; j < lowGridSize*lowGridSize; ++j)
sub_v3_v3v3(diffGrid[j].co, gridData[i][j].co, lowGridData[i][j].co);
More information about the Bf-blender-cvs
mailing list