Changeset View
Changeset View
Standalone View
Standalone View
source/blender/python/bmesh/bmesh_py_types.c
| Show First 20 Lines • Show All 1,073 Lines • ▼ Show 20 Lines | PyDoc_STRVAR( | ||||
| "\n" | "\n" | ||||
| " :arg object: The object data to load.\n" | " :arg object: The object data to load.\n" | ||||
| " :type object: :class:`Object`\n" | " :type object: :class:`Object`\n" | ||||
| " :arg deform: Apply deformation modifiers.\n" | " :arg deform: Apply deformation modifiers.\n" | ||||
| " :type deform: boolean\n" | " :type deform: boolean\n" | ||||
| " :arg cage: Get the mesh as a deformed cage.\n" | " :arg cage: Get the mesh as a deformed cage.\n" | ||||
| " :type cage: boolean\n" | " :type cage: boolean\n" | ||||
| " :arg face_normals: Calculate face normals.\n" | " :arg face_normals: Calculate face normals.\n" | ||||
| " :type face_normals: boolean\n"); | " :type face_normals: boolean\n" | ||||
| "\n" | |||||
| " .. deprecated:: 2.93\n" | |||||
| "\n" | |||||
| " The deform parameter is deprecated, assumed to be True, and will be removed in version " | |||||
| "3.0.\n"); | |||||
| static PyObject *bpy_bmesh_from_object(BPy_BMesh *self, PyObject *args, PyObject *kw) | static PyObject *bpy_bmesh_from_object(BPy_BMesh *self, PyObject *args, PyObject *kw) | ||||
| { | { | ||||
| static const char *kwlist[] = {"object", "depsgraph", "deform", "cage", "face_normals", NULL}; | static const char *kwlist[] = {"object", "depsgraph", "deform", "cage", "face_normals", NULL}; | ||||
| PyObject *py_object; | PyObject *py_object; | ||||
| PyObject *py_depsgraph; | PyObject *py_depsgraph; | ||||
| Object *ob, *ob_eval; | Object *ob, *ob_eval; | ||||
| struct Depsgraph *depsgraph; | struct Depsgraph *depsgraph; | ||||
| struct Scene *scene_eval; | struct Scene *scene_eval; | ||||
| Show All 24 Lines | static PyObject *bpy_bmesh_from_object(BPy_BMesh *self, PyObject *args, PyObject *kw) | ||||
| } | } | ||||
| if (ob->type != OB_MESH) { | if (ob->type != OB_MESH) { | ||||
| PyErr_SetString(PyExc_ValueError, | PyErr_SetString(PyExc_ValueError, | ||||
| "from_object(...): currently only mesh objects are supported"); | "from_object(...): currently only mesh objects are supported"); | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| if (use_deform == false) { | |||||
| PyErr_WarnEx(PyExc_FutureWarning, | |||||
| "from_object(...): the deform parameter is deprecated, assumed to be True, and " | |||||
| "will be removed in version 3.0", | |||||
| 1); | |||||
| } | |||||
| const bool use_render = DEG_get_mode(depsgraph) == DAG_EVAL_RENDER; | const bool use_render = DEG_get_mode(depsgraph) == DAG_EVAL_RENDER; | ||||
| scene_eval = DEG_get_evaluated_scene(depsgraph); | scene_eval = DEG_get_evaluated_scene(depsgraph); | ||||
| ob_eval = DEG_get_evaluated_object(depsgraph, ob); | ob_eval = DEG_get_evaluated_object(depsgraph, ob); | ||||
| bool need_free = false; | bool need_free = false; | ||||
| /* Write the display mesh into the dummy mesh */ | /* Write the display mesh into the dummy mesh */ | ||||
| if (use_deform) { | |||||
| if (use_render) { | if (use_render) { | ||||
| if (use_cage) { | if (use_cage) { | ||||
| PyErr_SetString(PyExc_ValueError, | PyErr_SetString(PyExc_ValueError, | ||||
| "from_object(...): cage arg is unsupported when dependency graph " | "from_object(...): cage arg is unsupported when dependency graph " | ||||
| "evaluation mode is RENDER"); | "evaluation mode is RENDER"); | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| me_eval = BKE_mesh_new_from_object(depsgraph, ob_eval, true); | me_eval = BKE_mesh_new_from_object(depsgraph, ob_eval, true); | ||||
| need_free = true; | need_free = true; | ||||
| } | } | ||||
| else { | else { | ||||
| if (use_cage) { | if (use_cage) { | ||||
| me_eval = mesh_get_eval_deform(depsgraph, scene_eval, ob_eval, &data_masks); | me_eval = mesh_get_eval_deform(depsgraph, scene_eval, ob_eval, &data_masks); | ||||
| } | } | ||||
| else { | else { | ||||
| me_eval = mesh_get_eval_final(depsgraph, scene_eval, ob_eval, &data_masks); | me_eval = mesh_get_eval_final(depsgraph, scene_eval, ob_eval, &data_masks); | ||||
| } | } | ||||
| } | } | ||||
| } | |||||
| else { | |||||
| /* !use_deform */ | |||||
| if (use_cage) { | |||||
| PyErr_SetString(PyExc_ValueError, | |||||
| "from_object(...): cage arg is unsupported when deform=False"); | |||||
| return NULL; | |||||
| } | |||||
| if (use_render) { | |||||
| me_eval = mesh_create_eval_no_deform_render(depsgraph, scene_eval, ob, &data_masks); | |||||
| } | |||||
| else { | |||||
| me_eval = mesh_create_eval_no_deform(depsgraph, scene_eval, ob, &data_masks); | |||||
| } | |||||
| } | |||||
| if (me_eval == NULL) { | if (me_eval == NULL) { | ||||
| PyErr_Format(PyExc_ValueError, | PyErr_Format(PyExc_ValueError, | ||||
| "from_object(...): Object '%s' has no usable mesh data", | "from_object(...): Object '%s' has no usable mesh data", | ||||
| ob->id.name + 2); | ob->id.name + 2); | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 3,134 Lines • Show Last 20 Lines | |||||