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

MY BLOG DIRECTORY:

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

INTRODUCTION:

对于天天使用C++的人来说,学习和使用Maya脚本我觉得完全就像砍瓜切菜一般容易,唯一的难点在于记各种API以及熟练度上。下面我将记录一些maya里的脚本代码,也方便我日后Ctrl+C/V,我觉得三个小时学会Maya python脚本编程完全足够了。

C++派系出身的人写python的时候需要注意以下几点:

(1)请忘记类型这个概念,python中一切皆对象

(2)‘=’不是赋值,而是绑定一个名字

FORWARD DECLARATION:

下面是文章内容目录:

  1. Maya scripting basic concepts
  2. Create a poly
  3. Move, Scale, Rotate
  4. Create instance
  5. Loop Create Instance
  6. Random position
  7. Hide Object
  8. Group Objects
  9. Reset pivot
  10. Select Objects
  11. Object Type
  12. Create Constraint
  13. Animation key operations
  14. Create a window UI
  15. Add UI Elements Into Window
  16. Add/Get/Set Attribute
  17. Reconstruct Name String
  18. Add Expression
  19. Create a file or read write it
  20. Get vertex array in mesh object mode
  21. Write Vertex Data into file
  22. Save the file to the specified location and call out the selection path window
  23. Save maya file
  24. Snap shot
  25. Loop search Children or parent

MAIN CONTENT:

【1】Maya scripting basic concepts

在开始Maya编程之前一定要知道的是Maya的设计思想就是节点式。

v2-c7e9080940b8698a3f20a241c0e554b1_b.jpg

这个和Unity很类似,一个Transform下面装一个Shape,Transform节点里包含了物体的位置,缩放,旋转等信息。ShapeNode里包含了顶点,UV等模型形状信息。

Transform:

v2-732b2fa68580424b79ffdc1a37c96379_b.jpg

Shape:

v2-66740ff14120a1c281f1faeb3c48ea32_b.jpg

而一个Cube就是一个表,拿场景中的盒子为例

Cube = [CubeTransform, CubeShape]


【2】Create a poly

import maya.cmds as cmd

cubeList = cmd.ls('myCube')

if len(cubeList) > 0:
    cmd.delete(cubeList)

pCube = cmd.polyCube(w = 10, h = 10, d = 10, name = 'myCube')
v2-cd1d6552f394b8c4686b3a049bb6dce4_b.jpg

首先导入Maya的cmd然后从场景里找到是否存在一个叫myCube的Node列表。如果这个列表有长度,说明这个Cube已经创建了,需要先删除它然后重新创建。polyCube这个返回的是一个列表

Cube = [CubeTransform, CubeShape]

创建求或者其它图形同理:

pCube = cmd.polyCube(w = 10, h = 10, d = 10, name = 'myCube')
pSphere = cmd.polySphere(sx = 10, sy = 10, r = 5, name = 'mySphere')
pCylinder = cmd.polyCylinder(sx = 10, sy = 15, sz = 5, r = 5, h = 10, name = 'myCylinder')
pPolyTorus = cmd.polyTorus(r = 10, sr = 1, sx = 20, sy = 4, name = 'myTorus')

ls方法可以拿到Maya场景里的Node,并且把它存到一个列表里返回。因为Maya中物体的名字是唯一的所以上述代码是通过名字来拿物Node的。还可以通过物体类型来拿场景中的某一类物体,还可以通过选择列表拿物体,这些后面有论述。


【3】Move, Scale, Rotate

import maya.cmds as cmd

pCube = cmd.polyCube(w = 10, h = 10, d = 10, name = 'myCube')

cmds.move(0, 10, 0, pCube)
cmds.scale(2, 2, 2, pCube)
cmds.rotate(45, 45, 0, pCube)
v2-afdf78a96eda8d61099eca4d23a74647_b.jpg

也可以使用xform来设置一个transform node的属性。


【4】Create instance

import maya.cmds as cmd

pCube = cmd.polyCube(w =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

cpongo11

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

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

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

打赏作者

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

抵扣说明:

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

余额充值