/* converts a cddm to a BMEditMesh. if existing is non-NULL, the * new geometry will be put in there.*/ BMEditMesh *DM_to_editbmesh(DerivedMesh *dm, BMEditMesh *existing, const bool do_tessellate) { BMEditMesh *em = existing; BMesh *bm; if (em) { bm = em->bm; } else { bm = BM_mesh_create(&bm_mesh_allocsize_default); } DM_to_bmesh_ex(dm, bm, do_tessellate); if (!em) { em = BKE_editmesh_create(bm, do_tessellate); } else { if (do_tessellate) { BKE_editmesh_tessface_calc(em); } } return em; }
BMesh *BKE_mesh_to_bmesh(Mesh *me, Object *ob) { BMesh *bm; bm = BM_mesh_create(&bm_mesh_allocsize_default); BM_mesh_bm_from_me(bm, me, false, true, ob->shapenr); return bm; }
void bc_triangulate_mesh(Mesh *me) { bool use_beauty = false; bool tag_only = false; BMesh *bm = BM_mesh_create(&bm_mesh_allocsize_default); BM_mesh_bm_from_me(bm, me, FALSE, 0); BM_mesh_triangulate(bm, use_beauty, tag_only, NULL, NULL); BM_mesh_bm_to_me(bm, me, FALSE); BM_mesh_free(bm); }
BMesh *DM_to_bmesh(DerivedMesh *dm, const bool calc_face_normal) { BMesh *bm; bm = BM_mesh_create(&bm_mesh_allocsize_default); DM_to_bmesh_ex(dm, bm, calc_face_normal); return bm; }
BMesh *DM_to_bmesh(DerivedMesh *dm) { BMesh *bm; bm = BM_mesh_create(&bm_mesh_allocsize_default); DM_to_bmesh_ex(dm, bm); return bm; }
BMesh *DM_to_bmesh(DerivedMesh *dm, const bool calc_face_normal) { BMesh *bm; const BMAllocTemplate allocsize = BMALLOC_TEMPLATE_FROM_DM(dm); bm = BM_mesh_create(&allocsize); DM_to_bmesh_ex(dm, bm, calc_face_normal); return bm; }
BMesh *BKE_mesh_to_bmesh(Mesh *me, Object *ob) { BMesh *bm; const BMAllocTemplate allocsize = BMALLOC_TEMPLATE_FROM_ME(me); bm = BM_mesh_create(&allocsize); BM_mesh_bm_from_me(bm, me, false, true, ob->shapenr); return bm; }
void bc_triangulate_mesh(Mesh *me) { bool use_beauty = false; bool tag_only = false; int quad_method = MOD_TRIANGULATE_QUAD_SHORTEDGE; /* XXX: The triangulation method selection could be offered in the UI */ BMesh *bm = BM_mesh_create(&bm_mesh_allocsize_default); BM_mesh_bm_from_me(bm, me, true, false, 0); BM_mesh_triangulate(bm, quad_method, use_beauty, tag_only, NULL, NULL); BM_mesh_bm_to_me(bm, me, false); BM_mesh_free(bm); }
void bc_triangulate_mesh(Mesh *me) { bool use_beauty = false; bool tag_only = false; int quad_method = MOD_TRIANGULATE_QUAD_SHORTEDGE; /* XXX: The triangulation method selection could be offered in the UI */ const struct BMeshCreateParams bm_create_params = {0}; BMesh *bm = BM_mesh_create( &bm_mesh_allocsize_default, &bm_create_params); BMeshFromMeshParams bm_from_me_params = {0}; bm_from_me_params.calc_face_normal = true; BM_mesh_bm_from_me(bm, me, &bm_from_me_params); BM_mesh_triangulate(bm, quad_method, use_beauty, tag_only, NULL, NULL, NULL); BMeshToMeshParams bm_to_me_params = {0}; BM_mesh_bm_to_me(bm, me, &bm_to_me_params); BM_mesh_free(bm); }