From e65784a0519e25e9ca560ab63758287cea45f123 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 6 Sep 2018 14:28:14 +0200 Subject: Python API: add loop triangles access, remove tessfaces. Loop triangles are tessellated triangles create from polygons, for renderers or exporters that need to match Blender's polygon tesselation exactly. These are a read-only runtime cache. Tessfaces are a legacy data structure from before Blender supported n-gons, and were already mostly removed from the C code. Details on porting code to loop triangles is in the release notes. Differential Revision: https://developer.blender.org/D3539 --- source/blender/python/bmesh/bmesh_py_api.c | 14 +++++++------- source/blender/python/bmesh/bmesh_py_types.c | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-) (limited to 'source/blender/python/bmesh') diff --git a/source/blender/python/bmesh/bmesh_py_api.c b/source/blender/python/bmesh/bmesh_py_api.c index 3edd2bac244..235ede1e8fd 100644 --- a/source/blender/python/bmesh/bmesh_py_api.c +++ b/source/blender/python/bmesh/bmesh_py_api.c @@ -113,30 +113,30 @@ static PyObject *bpy_bm_from_edit_mesh(PyObject *UNUSED(self), PyObject *value) } PyDoc_STRVAR(bpy_bm_update_edit_mesh_doc, -".. method:: update_edit_mesh(mesh, tessface=True, destructive=True)\n" +".. method:: update_edit_mesh(mesh, loop_triangles=True, destructive=True)\n" "\n" " Update the mesh after changes to the BMesh in editmode, \n" " optionally recalculating n-gon tessellation.\n" "\n" " :arg mesh: The editmode mesh.\n" " :type mesh: :class:`bpy.types.Mesh`\n" -" :arg tessface: Option to recalculate n-gon tessellation.\n" -" :type tessface: boolean\n" +" :arg loop_triangles: Option to recalculate n-gon tessellation.\n" +" :type loop_triangles: boolean\n" " :arg destructive: Use when geometry has been added or removed.\n" " :type destructive: boolean\n" ); static PyObject *bpy_bm_update_edit_mesh(PyObject *UNUSED(self), PyObject *args, PyObject *kw) { - static const char *kwlist[] = {"mesh", "tessface", "destructive", NULL}; + static const char *kwlist[] = {"mesh", "loop_triangles", "destructive", NULL}; PyObject *py_me; Mesh *me; - bool do_tessface = true; + bool do_loop_triangles = true; bool is_destructive = true; if (!PyArg_ParseTupleAndKeywords( args, kw, "O|O&O&:update_edit_mesh", (char **)kwlist, &py_me, - PyC_ParseBool, &do_tessface, + PyC_ParseBool, &do_loop_triangles, PyC_ParseBool, &is_destructive)) { return NULL; @@ -157,7 +157,7 @@ static PyObject *bpy_bm_update_edit_mesh(PyObject *UNUSED(self), PyObject *args, { extern void EDBM_update_generic(BMEditMesh *em, const bool do_tessface, const bool is_destructive); - EDBM_update_generic(me->edit_btmesh, do_tessface, is_destructive); + EDBM_update_generic(me->edit_btmesh, do_loop_triangles, is_destructive); } Py_RETURN_NONE; diff --git a/source/blender/python/bmesh/bmesh_py_types.c b/source/blender/python/bmesh/bmesh_py_types.c index b380fbd416e..3ce5a26de90 100644 --- a/source/blender/python/bmesh/bmesh_py_types.c +++ b/source/blender/python/bmesh/bmesh_py_types.c @@ -1246,15 +1246,15 @@ static PyObject *bpy_bmesh_calc_volume(BPy_BMElem *self, PyObject *args, PyObjec } } -PyDoc_STRVAR(bpy_bmesh_calc_tessface_doc, -".. method:: calc_tessface()\n" +PyDoc_STRVAR(bpy_bmesh_calc_loop_triangles_doc, +".. method:: calc_loop_triangles()\n" "\n" " Calculate triangle tessellation from quads/ngons.\n" "\n" " :return: The triangulated faces.\n" " :rtype: list of :class:`BMLoop` tuples\n" ); -static PyObject *bpy_bmesh_calc_tessface(BPy_BMElem *self) +static PyObject *bpy_bmesh_calc_loop_triangles(BPy_BMElem *self) { BMesh *bm; @@ -2733,7 +2733,7 @@ static struct PyMethodDef bpy_bmesh_methods[] = { /* calculations */ {"calc_volume", (PyCFunction)bpy_bmesh_calc_volume, METH_VARARGS | METH_KEYWORDS, bpy_bmesh_calc_volume_doc}, - {"calc_tessface", (PyCFunction)bpy_bmesh_calc_tessface, METH_NOARGS, bpy_bmesh_calc_tessface_doc}, + {"calc_loop_triangles", (PyCFunction)bpy_bmesh_calc_loop_triangles, METH_NOARGS, bpy_bmesh_calc_loop_triangles_doc}, {NULL, NULL, 0, NULL} }; -- cgit v1.2.3