python - 在 obj 中重新标记人脸
问题描述
假设我已经给出了顶点坐标列表和面列表(这里的面是四边形),其中每个面都指向顶点列表中的索引(如 obj 格式)。一个小例子:
v = np.array([[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [2, 0, 0], [2, 1, 0]])
f = np.array([[0, 1, 2, 3], [1, 4, 5, 2]])
f 的第一个条目意味着,在逆时针方向上,v 的前四个坐标对应于第一个面。但是可以说我出于某种原因不喜欢这种顶点的排序约定,并且想要一个看起来像这样的面部列表
f = np.array([[0, 1, 4, 3], [1, 2, 5, 4]])
为此,必须重新排序 v 中的顶点,使 v 看起来像这样
v = np.array([[0, 0, 0], [1, 0, 0], [2, 0, 0], [0, 1, 0], [1, 1, 0], [2, 1, 0]])
在这个小例子中,我只需交换 2 <-> 4。这实际上是对顶点的重新标记。
现在,我给出了巨大的列表,并且组合是一个网格结构(Z^2 组合),我想将给定的 f 重新标记为我的约定(我首先沿 x 轴计数)。所以我可以创建这个 f (我知道它是 amxn 网格)并且必须相应地重新排序 v 中的顶点。我怎样才能做到这一点?是否有一个聪明的排序内置函数可以做到这一点?
解决方案
推荐阅读
- css - 未在 Rails 应用程序中应用 CSS 更改
- javascript - JestJS - 多个 websocket 连接挂起 Jest
- python - 将包含小数的字符串转换为包含大熊猫列的 int 的字符串的干净方法?
- flutter - Controller.to 和 Controller.getInstance() 之间的 GetX 区别?
- javascript - 如何使用 JavaScript 或 C# 清除浏览器 (Chrome) 历史记录
- oauth-2.0 - Oauth2 授权码流程:我在哪里存储授权码?
- c++ - 缺少共享的正则表达式库,但已经安装了它的 yum 包
- web-applications - 服务器离线客户端在线时的 PWA 离线模式
- javascript - 正则表达式模式不包含零
- php - 如何使目录中的文件列表在 html/php 中看起来更干净?