查看: 2158|回复: 0
打印 上一主题 下一主题

[插件] Maya&Python&Nuke使用小技巧

[复制链接]

5472

主题

6

听众

1万

积分

版主

Rank: 7Rank: 7Rank: 7

纳金币
76544
精华
23

活跃会员 荣誉管理 突出贡献 优秀版主 论坛元老

跳转到指定楼层
楼主
发表于 2017-7-4 14:49:33 |只看该作者 |倒序浏览
1.使用c++写的mll插件可以直接用python调用,方法如同调用内置命令,但有时会遇到识别不了命令名的错误(name 'xxx' is not defined),即便是使用mel可以直接调用。
导致这个的原因,在于import maya.cmds在loadplugin xxx之前,而loadplugin之后python已经import的模块不会自己更新,所以需要重新import,如下:
1.png
2.虽然在此blog中时不时呻吟python很爽,但还是要再次的表达对python的惊喜!
nuke输出时write节点不会自动创建文件夹,所以如果输出图片序列到一个文件夹,如果这个文件夹不存在需要先创建好。如果上百个镜头,废话就是需要创建上百个文件夹,直接用python一分钟搞定:(写好后如果以后再创建此类任务就是几秒钟了)
2.png
执行后1秒钟python就会创建出87个文件夹,nuke里直接指定就ok了。
另外,我现在手中每个镜头都需要做这么几件事:
创建一个设计好的gizmo“framer”来显示timecode等
将framer的镜头号改为当前镜头
创建write节点
指定好write的输出路径(按镜头号)
将此nk文件保存到指定路径(按镜头号)
这些每次都要自己手动做么……not fasion,让python来吧~
下面就是上面任务的python版:
3.png
很简单吧,需要注意的是,python自带的input()在nuke里不能直接使用,nuke提供了一个getinput()来调出对话框获取输入。
这样执行finalizer()就可以一次执行了,但还是不够fasion,可以把这段def写到menu.py里,并且新建一个toolbar的command,这样在nuke里直接点击命令就可以完成这些操作,如下图的图标
4.gif
当然……创建文件夹和这个finalizer是可以合并到一个的。
3. python可以方便快速的完成一些简单数据的互导,比如maya<=>nuke。
在一些对火焰的亮度和地面的灯光强度要求一致的作品里,地面灯光强度的变化是在maya里使用表达式来控制的,想要后期让nuke中辉光和火焰透明度、亮度等跟随变化(……当然道理上是地面跟着火焰变的),本来使用过tracker+sampler的nuke表达式,但发现nuke的py表达式和maya不一样的地方在于,并不是完全执行完得到结果后再到下一帧,而是播放速度根本不受代码执行速度影响的,这就导致sampler在获取像素亮度结果出来之前nuke已经把非最终结果当成结果来用到效果里面并进入下一帧……十分纠结。 后来使用了一种很简单的方法解决了问题:在maya里把灯光亮度使用表达式逐帧输出到一个序列,然后在nuke中读入,一个for循环逐帧还原key帧,没有不同步的问题,所以完美解决~~


分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-22 22:11 , Processed in 0.416937 second(s), 31 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部