Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/object/object_modifier.c
| Show First 20 Lines • Show All 90 Lines • ▼ Show 20 Lines | |||||
| static void modifier_skin_customdata_delete(struct Object *ob); | static void modifier_skin_customdata_delete(struct Object *ob); | ||||
| /******************************** API ****************************/ | /******************************** API ****************************/ | ||||
| static void object_force_modifier_update_for_bind(Depsgraph *depsgraph, Scene *scene, Object *ob) | static void object_force_modifier_update_for_bind(Depsgraph *depsgraph, Scene *scene, Object *ob) | ||||
| { | { | ||||
| if (ob->type == OB_MESH) { | if (ob->type == OB_MESH) { | ||||
| Mesh *me_eval = mesh_create_eval_final_view(depsgraph, scene, ob, 0); | Mesh *me_eval = mesh_create_eval_final_view(depsgraph, scene, ob, &CD_MASK_BAREMESH); | ||||
| BKE_id_free(NULL, me_eval); | BKE_id_free(NULL, me_eval); | ||||
| } | } | ||||
| else if (ob->type == OB_LATTICE) { | else if (ob->type == OB_LATTICE) { | ||||
| BKE_lattice_modifiers_calc(depsgraph, scene, ob); | BKE_lattice_modifiers_calc(depsgraph, scene, ob); | ||||
| } | } | ||||
| else if (ob->type == OB_MBALL) { | else if (ob->type == OB_MBALL) { | ||||
| BKE_displist_make_mball(depsgraph, scene, ob); | BKE_displist_make_mball(depsgraph, scene, ob); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 524 Lines • ▼ Show 20 Lines | if (ob->type == OB_MESH) { | ||||
| } | } | ||||
| else { | else { | ||||
| mesh_applied = BKE_mesh_create_derived_for_modifier(depsgraph, scene, ob, md, 1); | mesh_applied = BKE_mesh_create_derived_for_modifier(depsgraph, scene, ob, md, 1); | ||||
| if (!mesh_applied) { | if (!mesh_applied) { | ||||
| BKE_report(reports, RPT_ERROR, "Modifier returned error, skipping apply"); | BKE_report(reports, RPT_ERROR, "Modifier returned error, skipping apply"); | ||||
| return 0; | return 0; | ||||
| } | } | ||||
| BKE_mesh_nomain_to_mesh(mesh_applied, me, ob, CD_MASK_MESH, true); | BKE_mesh_nomain_to_mesh(mesh_applied, me, ob, &CD_MASK_MESH, true); | ||||
| if (md->type == eModifierType_Multires) | if (md->type == eModifierType_Multires) | ||||
| multires_customdata_delete(me); | multires_customdata_delete(me); | ||||
| } | } | ||||
| } | } | ||||
| else if (ELEM(ob->type, OB_CURVE, OB_SURF)) { | else if (ELEM(ob->type, OB_CURVE, OB_SURF)) { | ||||
| Curve *cu; | Curve *cu; | ||||
| int numVerts; | int numVerts; | ||||
| ▲ Show 20 Lines • Show All 699 Lines • ▼ Show 20 Lines | if (CustomData_external_test(&me->ldata, CD_MDISPS)) | ||||
| return OPERATOR_CANCELLED; | return OPERATOR_CANCELLED; | ||||
| RNA_string_get(op->ptr, "filepath", path); | RNA_string_get(op->ptr, "filepath", path); | ||||
| if (relative) | if (relative) | ||||
| BLI_path_rel(path, BKE_main_blendfile_path(bmain)); | BLI_path_rel(path, BKE_main_blendfile_path(bmain)); | ||||
| CustomData_external_add(&me->ldata, &me->id, CD_MDISPS, me->totloop, path); | CustomData_external_add(&me->ldata, &me->id, CD_MDISPS, me->totloop, path); | ||||
| CustomData_external_write(&me->ldata, &me->id, CD_MASK_MESH, me->totloop, 0); | CustomData_external_write(&me->ldata, &me->id, CD_MASK_MESH.lmask, me->totloop, 0); | ||||
| return OPERATOR_FINISHED; | return OPERATOR_FINISHED; | ||||
| } | } | ||||
| static int multires_external_save_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event)) | static int multires_external_save_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event)) | ||||
| { | { | ||||
| Object *ob = ED_object_active_context(C); | Object *ob = ED_object_active_context(C); | ||||
| MultiresModifierData *mmd; | MultiresModifierData *mmd; | ||||
| ▲ Show 20 Lines • Show All 378 Lines • ▼ Show 20 Lines | static Object *modifier_skin_armature_create(Depsgraph *depsgraph, Main *bmain, Scene *scene, Object *skin_ob) | ||||
| MVertSkin *mvert_skin; | MVertSkin *mvert_skin; | ||||
| MeshElemMap *emap; | MeshElemMap *emap; | ||||
| int *emap_mem; | int *emap_mem; | ||||
| int v; | int v; | ||||
| Scene *scene_eval = DEG_get_evaluated_scene(depsgraph); | Scene *scene_eval = DEG_get_evaluated_scene(depsgraph); | ||||
| Object *ob_eval = DEG_get_evaluated_object(depsgraph, skin_ob); | Object *ob_eval = DEG_get_evaluated_object(depsgraph, skin_ob); | ||||
| me_eval_deform = mesh_get_eval_deform(depsgraph, scene_eval, ob_eval, CD_MASK_BAREMESH); | me_eval_deform = mesh_get_eval_deform(depsgraph, scene_eval, ob_eval, &CD_MASK_BAREMESH); | ||||
| mvert = me_eval_deform->mvert; | mvert = me_eval_deform->mvert; | ||||
| /* add vertex weights to original mesh */ | /* add vertex weights to original mesh */ | ||||
| CustomData_add_layer( | CustomData_add_layer( | ||||
| &me->vdata, | &me->vdata, | ||||
| CD_MDEFORMVERT, | CD_MDEFORMVERT, | ||||
| CD_CALLOC, | CD_CALLOC, | ||||
| NULL, | NULL, | ||||
| ▲ Show 20 Lines • Show All 626 Lines • Show Last 20 Lines | |||||