Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
maya python脚本-如何检查模型的UV边界?_Python_Maya - Fatal编程技术网

maya python脚本-如何检查模型的UV边界?

maya python脚本-如何检查模型的UV边界?,python,maya,Python,Maya,我正在寻找一个python函数或脚本,它可以检查场景中所有uv壳的边界,包括超出边界或过于接近边界 我找到的脚本主要用于查找选定对象中的所有uv壳。 但是我想检查所有uv壳的边界,如果场景中有任何错误,它可以准确地显示不规则的模型 谢谢,这是一个非常基本的例子。它在场景中的所有网格上循环,使用cmds.polyeevalue收集它们的UV边界框。如果它发现任何东西粘在提供的边界框之外,它会将它们添加到列表中。它返回两个内容:第一个是整个场景的uv边界,第二个是目标边界框外的项目列表 impor

我正在寻找一个python函数或脚本,它可以检查场景中所有uv壳的边界,包括超出边界或过于接近边界

我找到的脚本主要用于查找选定对象中的所有uv壳。

但是我想检查所有uv壳的边界,如果场景中有任何错误,它可以准确地显示不规则的模型


谢谢,

这是一个非常基本的例子。它在场景中的所有网格上循环,使用
cmds.polyeevalue
收集它们的UV边界框。如果它发现任何东西粘在提供的边界框之外,它会将它们添加到列表中。它返回两个内容:第一个是整个场景的uv边界,第二个是目标边界框外的项目列表

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()
将maya.cmds作为cmds导入
def场景_uv_边界(目标=(0,0,1,1)):
umin,vmin,umax,vmax=0,0,0,0
对于cmds.ls(type='mesh')中的项:
超出范围=[]
#多元估值-b2收益[(umin,umax),(vmin,vmas)]
uvals,vvals=cmds.polyEvaluate(项,b2=True)
#解包成不同的值
uumin,uumax=uvals
vvmin,vvmax=vvals
如果uumintarget[2]或vvmax>target[3]:
超出范围。追加(项)
umin=min(umin,uumin)
umax=max(umax,uumax)
vmin=min(vmin,vmin)
vmax=max(vmax,vvmax)
返回值(umin、vmin、umax、vmax),超出范围
#用法
uv_边界,超出_边界_网格=场景_uv_边界()

根据您的内容,您可能需要管理不同项目上的活动UV集,但对于简单的单通道情况,这会捕获大多数情况。

您是否尝试扩展链接中的脚本?它似乎完全符合您的需要,扩展它以获得网格列表应该不是什么大问题。同意haggi键,您只需使用链接的脚本并检查公差,如果x或y大于1或小于0或接近此限制