Changeset View
Changeset View
Standalone View
Standalone View
source/blender/python/mathutils/mathutils_bvhtree.c
| Show First 20 Lines • Show All 1,039 Lines • ▼ Show 20 Lines | |||||
| /* return various derived meshes based on requested settings */ | /* return various derived meshes based on requested settings */ | ||||
| static Mesh *bvh_get_mesh( | static Mesh *bvh_get_mesh( | ||||
| const char *funcname, struct Depsgraph *depsgraph, struct Scene *scene, Object *ob, | const char *funcname, struct Depsgraph *depsgraph, struct Scene *scene, Object *ob, | ||||
| const bool use_deform, const bool use_cage, bool *r_free_mesh) | const bool use_deform, const bool use_cage, bool *r_free_mesh) | ||||
| { | { | ||||
| Object *ob_eval = DEG_get_evaluated_object(depsgraph, ob); | Object *ob_eval = DEG_get_evaluated_object(depsgraph, ob); | ||||
| /* we only need minimum mesh data for topology and vertex locations */ | /* we only need minimum mesh data for topology and vertex locations */ | ||||
| CustomDataMask mask = CD_MASK_BAREMESH; | CustomData_MeshMasks data_masks = CD_MASK_BAREMESH; | ||||
| const bool use_render = DEG_get_mode(depsgraph) == DAG_EVAL_RENDER; | const bool use_render = DEG_get_mode(depsgraph) == DAG_EVAL_RENDER; | ||||
| *r_free_mesh = false; | *r_free_mesh = false; | ||||
| /* Write the display mesh into the dummy mesh */ | /* Write the display mesh into the dummy mesh */ | ||||
| if (use_deform) { | if (use_deform) { | ||||
| if (use_render) { | if (use_render) { | ||||
| if (use_cage) { | if (use_cage) { | ||||
| PyErr_Format(PyExc_ValueError, | PyErr_Format(PyExc_ValueError, | ||||
| "%s(...): cage arg is unsupported when dependency graph evaluation mode is RENDER", funcname); | "%s(...): cage arg is unsupported when dependency graph evaluation mode is RENDER", funcname); | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| else { | else { | ||||
| *r_free_mesh = true; | *r_free_mesh = true; | ||||
| return mesh_create_eval_final_render(depsgraph, scene, ob, mask); | return mesh_create_eval_final_render(depsgraph, scene, ob, &data_masks); | ||||
| } | } | ||||
| } | } | ||||
| else if (ob_eval != NULL) { | else if (ob_eval != NULL) { | ||||
| if (use_cage) { | if (use_cage) { | ||||
| return mesh_get_eval_deform(depsgraph, scene, ob_eval, mask); /* ob->derivedDeform */ | return mesh_get_eval_deform(depsgraph, scene, ob_eval, &data_masks); /* ob->derivedDeform */ | ||||
| } | } | ||||
| else { | else { | ||||
| return mesh_get_eval_final(depsgraph, scene, ob_eval, mask); /* ob->derivedFinal */ | return mesh_get_eval_final(depsgraph, scene, ob_eval, &data_masks); /* ob->derivedFinal */ | ||||
| } | } | ||||
| } | } | ||||
| else { | else { | ||||
| PyErr_Format(PyExc_ValueError, | PyErr_Format(PyExc_ValueError, | ||||
| "%s(...): Cannot get evaluated data from given dependency graph / object pair", funcname); | "%s(...): Cannot get evaluated data from given dependency graph / object pair", funcname); | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| } | } | ||||
| else { | else { | ||||
| /* !use_deform */ | /* !use_deform */ | ||||
| if (use_render) { | if (use_render) { | ||||
| if (use_cage) { | if (use_cage) { | ||||
| PyErr_Format(PyExc_ValueError, | PyErr_Format(PyExc_ValueError, | ||||
| "%s(...): cage arg is unsupported when dependency graph evaluation mode is RENDER", funcname); | "%s(...): cage arg is unsupported when dependency graph evaluation mode is RENDER", funcname); | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| else { | else { | ||||
| *r_free_mesh = true; | *r_free_mesh = true; | ||||
| return mesh_create_eval_no_deform_render(depsgraph, scene, ob, NULL, mask); | return mesh_create_eval_no_deform_render(depsgraph, scene, ob, NULL, &data_masks); | ||||
| } | } | ||||
| } | } | ||||
| else { | else { | ||||
| if (use_cage) { | if (use_cage) { | ||||
| PyErr_Format(PyExc_ValueError, | PyErr_Format(PyExc_ValueError, | ||||
| "%s(...): cage arg is unsupported when deform=False and dependency graph evaluation mode is not RENDER", funcname); | "%s(...): cage arg is unsupported when deform=False and dependency graph evaluation mode is not RENDER", funcname); | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| else { | else { | ||||
| *r_free_mesh = true; | *r_free_mesh = true; | ||||
| return mesh_create_eval_no_deform(depsgraph, scene, ob, NULL, mask); | return mesh_create_eval_no_deform(depsgraph, scene, ob, NULL, &data_masks); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| PyDoc_STRVAR(C_BVHTree_FromObject_doc, | PyDoc_STRVAR(C_BVHTree_FromObject_doc, | ||||
| ".. classmethod:: FromObject(object, depsgraph, deform=True, render=False, cage=False, epsilon=0.0)\n" | ".. classmethod:: FromObject(object, depsgraph, deform=True, render=False, cage=False, epsilon=0.0)\n" | ||||
| "\n" | "\n" | ||||
| ▲ Show 20 Lines • Show All 227 Lines • Show Last 20 Lines | |||||