Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/object/object_bake.c
| Show First 20 Lines • Show All 220 Lines • ▼ Show 20 Lines | |||||
| static DerivedMesh *multiresbake_create_loresdm(Scene *scene, Object *ob, int *lvl) | static DerivedMesh *multiresbake_create_loresdm(Scene *scene, Object *ob, int *lvl) | ||||
| { | { | ||||
| DerivedMesh *dm; | DerivedMesh *dm; | ||||
| MultiresModifierData *mmd = get_multires_modifier(scene, ob, 0); | MultiresModifierData *mmd = get_multires_modifier(scene, ob, 0); | ||||
| Mesh *me = (Mesh *)ob->data; | Mesh *me = (Mesh *)ob->data; | ||||
| MultiresModifierData tmp_mmd = *mmd; | MultiresModifierData tmp_mmd = *mmd; | ||||
| DerivedMesh *cddm = CDDM_from_mesh(me); | DerivedMesh *cddm = CDDM_from_mesh(me); | ||||
| DM_set_only_copy(cddm, CD_MASK_BAREMESH); | DM_set_only_copy(cddm, &CD_MASK_BAREMESH); | ||||
| if (mmd->lvl == 0) { | if (mmd->lvl == 0) { | ||||
| dm = CDDM_copy(cddm); | dm = CDDM_copy(cddm); | ||||
| } | } | ||||
| else { | else { | ||||
| tmp_mmd.lvl = mmd->lvl; | tmp_mmd.lvl = mmd->lvl; | ||||
| tmp_mmd.sculptlvl = mmd->lvl; | tmp_mmd.sculptlvl = mmd->lvl; | ||||
| dm = multires_make_derived_from_derived(cddm, &tmp_mmd, scene, ob, 0); | dm = multires_make_derived_from_derived(cddm, &tmp_mmd, scene, ob, 0); | ||||
| Show All 9 Lines | |||||
| static DerivedMesh *multiresbake_create_hiresdm(Scene *scene, Object *ob, int *lvl, bool *simple) | static DerivedMesh *multiresbake_create_hiresdm(Scene *scene, Object *ob, int *lvl, bool *simple) | ||||
| { | { | ||||
| Mesh *me = (Mesh *)ob->data; | Mesh *me = (Mesh *)ob->data; | ||||
| MultiresModifierData *mmd = get_multires_modifier(scene, ob, 0); | MultiresModifierData *mmd = get_multires_modifier(scene, ob, 0); | ||||
| MultiresModifierData tmp_mmd = *mmd; | MultiresModifierData tmp_mmd = *mmd; | ||||
| DerivedMesh *cddm = CDDM_from_mesh(me); | DerivedMesh *cddm = CDDM_from_mesh(me); | ||||
| DerivedMesh *dm; | DerivedMesh *dm; | ||||
| DM_set_only_copy(cddm, CD_MASK_BAREMESH); | DM_set_only_copy(cddm, &CD_MASK_BAREMESH); | ||||
| /* TODO: DM_set_only_copy wouldn't set mask for loop and poly data, | /* TODO: DM_set_only_copy wouldn't set mask for loop and poly data, | ||||
| * but we really need BAREMESH only to save lots of memory | * but we really need BAREMESH only to save lots of memory | ||||
| */ | */ | ||||
| CustomData_set_only_copy(&cddm->loopData, CD_MASK_BAREMESH); | CustomData_set_only_copy(&cddm->loopData, CD_MASK_BAREMESH.lmask); | ||||
| CustomData_set_only_copy(&cddm->polyData, CD_MASK_BAREMESH); | CustomData_set_only_copy(&cddm->polyData, CD_MASK_BAREMESH.pmask); | ||||
| *lvl = mmd->totlvl; | *lvl = mmd->totlvl; | ||||
| *simple = mmd->simple != 0; | *simple = mmd->simple != 0; | ||||
| tmp_mmd.lvl = mmd->totlvl; | tmp_mmd.lvl = mmd->totlvl; | ||||
| tmp_mmd.sculptlvl = mmd->totlvl; | tmp_mmd.sculptlvl = mmd->totlvl; | ||||
| dm = multires_make_derived_from_derived(cddm, &tmp_mmd, scene, ob, 0); | dm = multires_make_derived_from_derived(cddm, &tmp_mmd, scene, ob, 0); | ||||
| cddm->release(cddm); | cddm->release(cddm); | ||||
| ▲ Show 20 Lines • Show All 374 Lines • Show Last 20 Lines | |||||