【发布时间】:2015-10-28 05:21:38
【问题描述】:
一段时间以来,我一直在努力解决 Maya 中的一个问题,但无论是在此站点上还是在此站点之外,我都找不到解决方案。我创建了帐户,以便可以直接向社区提出问题并希望得到答案。
问题是这样的: 在建模过程中,人脸索引(例如 obj.f[0])理所当然地被弄乱了。我需要从用户指定的起点按顺序重新排序该面部索引。 这是将面放入选择列表中。 (Maya 会根据 face_index 号放列表,这不是我们想要的) 澄清一下,人脸索引本身不需要改变。它只需要正确进入列表即可。
到目前为止我做了什么: 我能够编写一些代码来选择一条多边形。选定的面将转换为边列表,然后 Maya 搜索共享同一边的面并将其按顺序附加到新列表中。这在条带中很容易实现,因为相邻面只共享一条边。 伪代码为:
select geo
select start face and make new_list
converts geo_sel into list
for geo_sel_face in geo_sel:
convert to edge
for new_list_face in new_list:
convert to edge
if edge in geo_sel_face in new_list_face:
ordered_list.append(geo_sel_face)
类似的东西。当然,在处理像平面这样的完整表面时,代码会完全中断,因为至少有两条边与其他面共享。
它的用途: 我写了一个脚本,基本上是在表面上种植草(或任何其他类型的几何图形)。原始脚本寻找面部中心并在面部中心种植草,或者你有什么。它还将限制方向为法线。但是,索引是混乱的,并且无法进行需要适当索引的额外工作。如果列表是人类可读的而不是机器可读的,这将对数据管理有很大帮助,这就是为什么我正在寻找一种方法来做到这一点。
最后: 我试图寻找一个解决方案,但似乎没有找到一个完整的表面。或许我需要换个角度思考这个问题,并且非常感谢社区的任何帮助或启发。
感谢您的宝贵时间!
【问题讨论】:
-
那么,您需要按顺序在一组面孔和索引不同但看起来相同的新面孔之间进行映射吗?或者您想以某种确定的方式订购一张面孔列表?
-
你好,谢谢你的回复!后者,以确定的方式对人脸列表进行排序。想象一架 3x3 的飞机。建模后经常会出现人脸索引混乱的情况。我想重新排序,例如,plane.face[0] 从左上角开始,然后是 plane.face[1] 下一个垂直,依此类推。我可以分离所有面并重新组合,或者使用 MFnMesh::createInPlace 做类似的事情。但无论哪种方式都需要我进行某种手动选择。这对小数量来说没什么大不了的,但是当一个场景有数百个时,那就太疯狂了。