【发布时间】:2021-08-20 19:16:43
【问题描述】:
我正在尝试细分三角形网格,直到每个边的长度小于任意值。我的方法很简单,我查看每条边并计算其长度。如果边的长度大于 100,我会细分包含该边的面。例如,我将共享一条边的一对面细分为 2 个面,然后更新顶点列表和面列表。但是,这仅处理大于 100 的第一条边。新形成的边可能与大于 100 的现有面共享边。我想检查所有这些边。我现在的猜测是,我可以递归或迭代地进行。我正在尝试递归地执行此操作,但我现在有一个我几乎不理解的代码,并且不确定它是否返回正确的结果。这是我到目前为止在伪代码中所拥有的。我将如何迭代地执行此操作?
vertices= [[0.0, 0.0, 0.0], [0.0, 0.0, 50.0], [0.0, 50.0, 0.0], [0.0, 50.0, 50.0], [100.0, 0.0, 0.0], [100.0, 0.0, 50.0], [100.0, 50.0, 0.0], [100.0, 50.0, 50.0]]
faces = [[6, 7, 4], [4, 7, 5], [2, 6, 0], [0, 6, 4], [3, 2, 1], [1, 2, 0], [7, 3, 5], [5, 3, 1], [2, 3, 6], [6, 3, 7], [1, 0, 5], [5, 0, 4]]
edges = get_edges_from_faces(faces)
def subdivide_mesh(faces, vertices,edges):
for edge in edges:
if length(edge) > 100:
create_new_faces_and_update() #delete the face sharing this edge and update faces list
add_new_vertices() # add new vertices to
edges = get_edges_from_faces(faces)
subdivide_mesh(faces, vertices, edges)
【问题讨论】:
-
你能分享一个示例输出吗?比您在此处列出的输入更少的东西