首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >maya python脚本-如何检查模型的UV边界?

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

Stack Overflow用户
提问于 2018-07-24 18:18:41
回答 1查看 851关注 0票数 0

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

我找到的脚本主要用于查找选定对象中的所有uv壳。https://polycount.com/discussion/196753/maya-python-get-a-list-of-all-uv-shells-in-a-selected-object

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

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2018-07-25 03:01:13

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

代码语言:javascript
复制
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集,但对于简单的单通道情况,这适用于大多数情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51496127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档