2024-10-02 22:23:19 发布
网友
我正在寻找一个python函数或脚本,它可以检查场景中所有uv壳的边界,包括超出边界或太靠近边界。在
我找到的脚本主要用于查找选定对象中的所有uv壳。 https://polycount.com/discussion/196753/maya-python-get-a-list-of-all-uv-shells-in-a-selected-object
但是我想检查所有uv壳的边界,如果场景中有任何错误,它可以精确地显示不规则的模型。在
谢谢
这是一个非常简单的例子。它在场景中的所有网格上循环,使用cmds.polyEvaluate收集它们的UV边界框。如果它发现任何粘在提供的边界框之外的内容,它会将它们添加到列表中。它返回两个结果:第一个是整个场景的uv边界,第二个是目标边界框之外的项目列表。在
cmds.polyEvaluate
import maya.cmds as cmds def scene_uv_bounds(target = (0,0,1,1)): umin, vmin, umax, vmax = 0, 0, 0, 0 for item in cmds.ls(type='mesh'): out_of_bounds = [] # polyEvaluate -b2 returns [(umin, umax) , (vmin, vmas)] uvals, vvals = cmds.polyEvaluate(item, b2=True) #unpack into separate values uumin, uumax = uvals vvmin, vvmax = vvals if uumin < target[0] or vvmin < target[1] or uumax > target[2] or vvmax > target[3]: out_of_bounds.append(item) umin = min(umin, uumin) umax = max(umax, uumax) vmin = min(vmin, vvmin) vmax = max(vmax, vvmax) return (umin, vmin, umax, vmax), out_of_bounds #usage uv_bounds, out_of_bounds_meshes = scene_uv_bounds()
根据您的内容,您可能需要管理不同项目上的活动UV集,但对于简单的单通道情况,这可以捕获大多数情况。在
这是一个非常简单的例子。它在场景中的所有网格上循环,使用
cmds.polyEvaluate
收集它们的UV边界框。如果它发现任何粘在提供的边界框之外的内容,它会将它们添加到列表中。它返回两个结果:第一个是整个场景的uv边界,第二个是目标边界框之外的项目列表。在根据您的内容,您可能需要管理不同项目上的活动UV集,但对于简单的单通道情况,这可以捕获大多数情况。在
相关问题 更多 >
编程相关推荐