虚幻4渲染编程(DCC工具篇---Maya)【Maya Python Scripting(3)】

MY BLOG DIRECTORY:

YivanLee:专题概述及目录​zhuanlan.zhihu.com图标

INTRODUCTION:

第一卷是细碎的各种命令,第二卷是小功能组合,这一卷试一下写几个插件并且把插件做的功能能导入引擎里做效果,这也是弄脚本的核心目的。脚本工具适合做量大的,精度要求比较高的操作。


MAIN CONTENT:

【1】Simple UV Operator

v2-487f51d752f141f1862b9ea423a47c75_b.jpg
import maya.cmds as cmd

def EditPolyUVData():
    SelectMeshList = cmd.ls(selection = True, flatten = True)
    
    if len(SelectMeshList) > 0:
        MeshToModify = SelectMeshList[0]

        MeshUVArray = cmd.ls("{}.map[0:]".format(MeshToModify), flatten = True)

        for UV in MeshUVArray:
            cmd.select(UV)
            UScale = cmds.floatField('pUScale', q = True, value = True)
            VScale = cmds.floatField('pVScale', q = True, value = True)
            cmd.polyEditUV(scaleU = UScale)
            cmd.polyEditUV(scaleV = VScale)
            
        cmd.select(clear = True)
        cmd.select(MeshToModify)


def createWindow(pWindowTitle):
    
    windowID = 'myWindowID'
    
    if cmd.window(windowID, exists = True):
        cmd.deleteUI(windowID)
        
    cmd.window(windowID, title = pWindowTitle, sizeable = False, resizeToFitChildren = True)
    cmd.rowColumnLayout()
    
    cmds.floatField('pUScale')
    cmds.floatField('pVScale')
    cmds.button(label = 'ModifyPolyUVData', command = 'EditPolyUVData()')
    cmd.showWindow()
    
    
createWindow('MyWindow')

这里做了个简单的工具实例,主要是为了说明插件中数据的交换方法。我们把数据输入到窗口里,然后要使用的时候用query标志来申请从UI中拿到数据。


【2】Arrange mesh array's uv data

v2-3a1a676143fd76359652293fb08f6f08_b.jpg
import maya.cmds as cmd

def EditPolyUVData():
    
    MeshList = []
    MeshNunber = cmds.intField('SphereNumber', q = True, value = True)
    for i in range(0, MeshNunber, 1):
        NewSphere = cmd.polySphere(sx = 10, sy = 10, r = 5, name = 'mySphere' + str(i))
        MeshList.append(NewSphere[0])
        cmd.move(i * 10 , 0, 0, NewSphere)
    
    index = 0
    for MeshToModify in MeshList:
            
        MeshUVArray = cmd.ls("{}.map[0:]".format(MeshToModify), flatten = True)

        for UV in MeshUVArray:
            cmd.select(UV)
            cmd.polyEditUV(relative = True, uValue = index, vValue = 0)
            
        cmd.select(clear = True)
        cmd.select(MeshToModify)
        index += 1

def createWindow(pWindowTitle):
    
    windowID = 'myWindowID'
    
    if cmd.window(windowID, exists = True):
        cmd.deleteUI(windowID)
        
    cmd.window(windowID, title = pWindowTitle, sizeable = False, resizeToFitChildren = True)
    cmd.rowColumnLayout()
    
    cmds.text(label = 'Number:')
    cmds.intField('SphereNumber')
    cmds.button(label = 'ModifyPolyUVData', command = 'EditPolyUVData()')
    cmd.showWindow()
    
    
createWindow('MyWindow')

UV数据也可以作为有效数据,虽然采图的时候超过0-1是重复的,但是如果我们不用uv数据采图,这些数据是有效的

然后把它导入引擎做如下材质即可得到一个不知道什么效果的效果。似乎可以用来做霓虹灯灯泡。

v2-7f83222a9d433e4e34cffa9b530dbe8c_b.jpg
v2-71e733d550980f4e9989501070062000_b.gif



SUMMARY AND OUTLOOK:

我本来只是想研究下动画的,结果我发现绑定动画需要用到脚本然后就研究了下脚本,然后。。。就踏上了maya脚本的踩坑路。Maya里面用脚本操作这些东西虽然已经很方便了,但是相比于在Houdini里做这些还是麻烦许多,而且那些API真心难找,不过写游戏相关的脚本大部分要用到的我都总结了一遍。

enjoy it



NEXT:

todo... maybe never...

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cpongo11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值