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

MY BLOG DIRECTORY:YivanLee:专题概述及目录​zhuanlan.zhihu.com42afae69d12d14607236c022a16ae4b4.png

INTRODUCTION:

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

MAIN CONTENT:

【1】Simple UV Operator

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

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数据采图,这些数据是有效的

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

SUMMARY AND OUTLOOK:

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

enjoy it

NEXT:

todo... maybe never...

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值