[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29350] branches/soc-2010-nicolasbishop/ source/blender/blenkernel/intern/multires.c: * A little refactoring, pulled some common code together in multires
Nicholas Bishop
nicholasbishop at gmail.com
Wed Jun 9 00:46:31 CEST 2010
Revision: 29350
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29350
Author: nicholasbishop
Date: 2010-06-09 00:46:29 +0200 (Wed, 09 Jun 2010)
Log Message:
-----------
* A little refactoring, pulled some common code together in multires
Modified Paths:
--------------
branches/soc-2010-nicolasbishop/source/blender/blenkernel/intern/multires.c
Modified: branches/soc-2010-nicolasbishop/source/blender/blenkernel/intern/multires.c
===================================================================
--- branches/soc-2010-nicolasbishop/source/blender/blenkernel/intern/multires.c 2010-06-08 22:40:02 UTC (rev 29349)
+++ branches/soc-2010-nicolasbishop/source/blender/blenkernel/intern/multires.c 2010-06-08 22:46:29 UTC (rev 29350)
@@ -460,6 +460,19 @@
return subsurf_make_derived_from_derived(dm, &smd, 0, NULL, 0, 0);
}
+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;
+}
+
void multiresModifier_subdivide(MultiresModifierData *mmd, Object *ob, int updateblock, int simple)
{
Mesh *me = ob->data;
@@ -498,16 +511,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], 4 /* TODO */, highGridSize, lowGridSize);
- }
/* low lower level dm no longer needed at this point */
lowdm->release(lowdm);
@@ -762,15 +771,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) {
int k;
for(k = 0; k < 4 /* TODO */; ++k)
More information about the Bf-blender-cvs
mailing list