我刚开始在 Python 中使用 OpenMesh。我首先尝试制作一个由单个四边形组成的 PolyMesh。这就是我所做的:
from openmesh import *
mesh = PolyMesh();
vh0 = mesh.add_vertex(PolyMesh.Point(0,0,0));
vh1 = mesh.add_vertex(PolyMesh.Point(1,0,0));
vh2 = mesh.add_vertex(PolyMesh.Point(1,1,0));
vh3 = mesh.add_vertex(PolyMesh.Point(0,1,0));
vh_list = [vh0, vh1, vh2, vh3];
fh0 = mesh.add_face(vh_list);
这将创建一个四边形网格。然后,想改进四边形一次,我想尝试:
vh4 = mesh.add_vertex(PolyMesh.Point(0.5,0,0));
vh5 = mesh.add_vertex(PolyMesh.Point(0.5,1,0));
vh_list = [vh4, vh1, vh2, vh5];
fh1 = mesh.add_face(vh_list);
以上给了我一个complex edge
错误。我从关于 SO 的其他问题中了解到,这是因为第二种情况下的 vh_list 没有定义第一面的一致方向。但是,我不想添加新面孔。也就是说,我认为该操作只会在 x = 0.5 处拆分 fh0,而不是在边缘索引 1 处创建附加到 fh0 的新面。有人可以谈谈如何做到这一点吗?我在文档中找不到“split_face”函数。
另外,如何在 Python 中访问特定边/网格组件的句柄?(我只找到了 C++ 的答案。)例如,我知道我可以遍历边缘,
for eh in mesh.edges():
但是,例如,我怎样才能直接获取边缘 2 的句柄并按如下方式使用它?
mesh.split_edge(eh,vh5)
谢谢!
编辑 1
我split
在 OpenMesh 文档中找到了该函数,但它需要一个顶点句柄作为输入,我可以在该顶点句柄处分割面部。在拆分后,它将网格转换为三角形网格。我不想要这个。我想在 x = 0.5 处将四边形分成两个四边形。谢谢你。
编辑 2
我尝试了另一种方法:首先删除 fh0,然后根据我想要的细化添加两个新面 fh0 和 fh1。我试着做
mesh.delete_face(fh0)
和 Python 段错误并退出。