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:
Diffstat (limited to 'source/blender/editors/object/object_bake.c')
-rw-r--r--source/blender/editors/object/object_bake.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/source/blender/editors/object/object_bake.c b/source/blender/editors/object/object_bake.c
index d1d41af1e50..16198e9e50e 100644
--- a/source/blender/editors/object/object_bake.c
+++ b/source/blender/editors/object/object_bake.c
@@ -367,16 +367,16 @@ static void do_multires_bake(MultiresBakeRender *bkr, Image* ima, MPassKnownData
DerivedMesh *dm= bkr->lores_dm;
ImBuf *ibuf= BKE_image_get_ibuf(ima, NULL);
const int lvl= bkr->lvl;
- const int tot_face= dm->getNumFaces(dm);
+ const int tot_face= dm->getNumTessFaces(dm);
MVert *mvert= dm->getVertArray(dm);
- MFace *mface= dm->getFaceArray(dm);
- MTFace *mtface= dm->getFaceDataArray(dm, CD_MTFACE);
+ MFace *mface= dm->getTessFaceArray(dm);
+ MTFace *mtface= dm->getTessFaceDataArray(dm, CD_MTFACE);
float *pvtangent= NULL;
if(CustomData_get_layer_index(&dm->faceData, CD_TANGENT) == -1)
DM_add_tangent_layer(dm);
- pvtangent= DM_get_face_data_layer(dm, CD_TANGENT);
+ pvtangent= DM_get_tessface_data_layer(dm, CD_TANGENT);
if(tot_face > 0) { /* sanity check */
int f= 0;
@@ -387,7 +387,7 @@ static void do_multires_bake(MultiresBakeRender *bkr, Image* ima, MPassKnownData
data.mvert= mvert;
data.mtface= mtface;
data.pvtangent= pvtangent;
- data.precomputed_normals= dm->getFaceDataArray(dm, CD_NORMAL); /* don't strictly need this */
+ data.precomputed_normals= dm->getTessFaceDataArray(dm, CD_NORMAL); /* don't strictly need this */
data.w= ibuf->x;
data.h= ibuf->y;
data.lores_dm= dm;
@@ -514,7 +514,7 @@ static void get_ccgdm_data(DerivedMesh *lodm, DerivedMesh *hidm, const int *orig
int grid_size, S, face_side;
int *grid_offset, g_index;
- lodm->getFace(lodm, face_index, &mface);
+ lodm->getTessFace(lodm, face_index, &mface);
grid_size= hidm->getGridSize(hidm);
grid_data= hidm->getGridData(hidm);
@@ -619,7 +619,7 @@ static void *init_heights_data(MultiresBakeRender *bkr, Image *ima)
height_data->ssdm= subsurf_make_derived_from_derived(bkr->lores_dm, &smd, 0, NULL, 0, 0, 0);
}
- height_data->origindex= lodm->getFaceDataArray(lodm, CD_ORIGINDEX);
+ height_data->origindex= lodm->getTessFaceDataArray(lodm, CD_ORIGINDEX);
return (void*)height_data;
}
@@ -631,7 +631,7 @@ static void *init_normal_data(MultiresBakeRender *bkr, Image *UNUSED(ima))
normal_data= MEM_callocN(sizeof(MNormalBakeData), "MultiresBake normalData");
- normal_data->origindex= lodm->getFaceDataArray(lodm, CD_ORIGINDEX);
+ normal_data->origindex= lodm->getTessFaceDataArray(lodm, CD_ORIGINDEX);
return (void*)normal_data;
}
@@ -709,7 +709,7 @@ static void apply_heights_callback(DerivedMesh *lores_dm, DerivedMesh *hires_dm,
int pixel= ibuf->x*y + x;
float vec[3], p0[3], p1[3], n[3], len;
- lores_dm->getFace(lores_dm, face_index, &mface);
+ lores_dm->getTessFace(lores_dm, face_index, &mface);
st0= mtface[face_index].uv[0];
st1= mtface[face_index].uv[1];
@@ -729,7 +729,7 @@ static void apply_heights_callback(DerivedMesh *lores_dm, DerivedMesh *hires_dm,
if(height_data->ssdm) {
get_ccgdm_data(lores_dm, height_data->ssdm, height_data->origindex, 0, face_index, uv[0], uv[1], p0, n);
} else {
- lores_dm->getFace(lores_dm, face_index, &mface);
+ lores_dm->getTessFace(lores_dm, face_index, &mface);
if(mface.v4) {
interp_bilinear_mface(lores_dm, &mface, uv[0], uv[1], 1, p0);
@@ -776,7 +776,7 @@ static void apply_tangmat_callback(DerivedMesh *lores_dm, DerivedMesh *hires_dm,
int pixel= ibuf->x*y + x;
float n[3], vec[3], tmp[3]= {0.5, 0.5, 0.5};
- lores_dm->getFace(lores_dm, face_index, &mface);
+ lores_dm->getTessFace(lores_dm, face_index, &mface);
st0= mtface[face_index].uv[0];
st1= mtface[face_index].uv[1];
@@ -824,7 +824,7 @@ static void count_images(MultiresBakeRender *bkr)
bkr->image.first= bkr->image.last= NULL;
bkr->tot_image= 0;
- totface= dm->getNumFaces(dm);
+ totface= dm->getNumTessFaces(dm);
for(a= 0; a<totface; a++)
mtface[a].tpage->id.flag&= ~LIB_DOIT;
@@ -997,8 +997,11 @@ static DerivedMesh *multiresbake_create_loresdm(Scene *scene, Object *ob, int *l
*lvl= mmd->lvl;
if(*lvl==0) {
+
+ /* BMESH_TODO, baking from level zero currently doesnt give correct results */
+
DerivedMesh *tmp_dm= CDDM_from_mesh(me, ob);
- dm= CDDM_copy(tmp_dm);
+ dm= CDDM_copy(tmp_dm, 0);
tmp_dm->release(tmp_dm);
} else {
MultiresModifierData tmp_mmd= *mmd;
@@ -1142,7 +1145,7 @@ static void multiresbake_startjob(void *bkv, short *stop, short *do_update, floa
DerivedMesh *dm= data->lores_dm;
MTFace *mtface= CustomData_get_layer(&dm->faceData, CD_MTFACE);
- clear_images(mtface, dm->getNumFaces(dm));
+ clear_images(mtface, dm->getNumTessFaces(dm));
}
}