gpt4 book ai didi

python - 如何在 Maya 网格上找到选定顶点的对称对

转载 作者:太空宇宙 更新时间:2023-11-03 18:21:46 25 4
gpt4 key购买 nike

找到给定顶点的对称对(即网格左侧的顶点及其右侧等效点)的最佳(最快)方法是什么?是否可以在Python中使用开放的maya api这个还是有更好的方法?

最佳答案

你不想一遍又一遍地检查每个顶点相对于其他顶点的位置,那会非常慢。

一种简单的方法是为每个顶点获取一个哈希值(一个简单的比较操作),该哈希值对于两个对称的顶点来说是相同的。幸运的是元组 - 不是列表! - 可散列。所以算法是:

  1. 获取每个顶点的位置元组
  2. 为“左”(或“上”或“后”等)侧的所有顶点创建一个字典(位置:顶点)。
  3. 为另一侧的顶点创建第二个字典(位置:顶点),翻转对称轴:如果您正在执行左/右轴,则左侧列表将为

    { (x, y, z) : "pCube1.vtx[0]" }  #etc 

    正确的列表是

    { (-1 * x, y, z) : "pCube1.vtx[99]" } # and so on
  4. 在两个字典中重复的任何键都是对称的,因此您需要收集在两个字典中都出现的键,然后从它们代表的每一侧获取顶点:

    duplicates = [j for j in leftDictionary if j in rightDictionary]
    pairs = [leftDictionary[k], rightDictionary[k] for k in keys]

这在大网格上不会太快,但应该可以解决问题。

它可能存在问题的一个地方是,两侧之间是否存在浮点差异,因此视觉上对称的项目在数学上可能不对称。您可以修改它以匹配给定容差的数字,例如,量化您放入元组中的值 - 最简单的方法是将它们放大到某个因子,例如 1000,然后将它们转换为整数。原始方法会丢失一些看起来对称但不完全对称的东西,如果它们太接近,量化方法可能会破坏多个匹配。我会坚持使用原始数据,除非它无法满足您的需要。

关于python - 如何在 Maya 网格上找到选定顶点的对称对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23983096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com