MY BLOG DIRECTORY:
YivanLee:专题概述及目录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...