以下是“烘焙枢轴工具”(bake Pivot tool)的python版本:

它是在一个基本的领域工作,但我可能会犯一些错误

在脚本的末尾,有用于查找包含代码的mel文件的命令。在import maya.cmds as cmds

import maya.mel as mel

def bakeCustomToolPivot(pos=1, ori=1):

# Check 1) must have an object(s) selected

objects = cmds.ls(sl=1, transforms=1)

shapes = cmds.ls(sl=1, shapes=1)

if len(shapes) > 0:

transforms = cmds.listRelatives(path=1, parent=1, type='transform')

objects += transforms

if len(objects) == 0:

cmds.error("m_bakeCustomToolPivot.kNoObjectsSelectedError")

return None

# Check 2) must be in the move/rotate/scale tool

currentCtx = cmds.currentCtx()

contextList = ["moveSuperContext", "manipMoveContext", "RotateSuperContext",

"manipRotateContext", "scaleSuperContext", "manipScaleContext"]

if currentCtx not in contextList:

cmds.error("m_bakeCustomToolPivot.kWrongToolError")

return None

# Check 3) must be in custom orientation mode

customOri = []

pivotModeActive = 0

customModeActive = 0

if currentCtx == "moveSuperContext" or currentCtx == "manipMoveContext":

customOri = cmds.manipMoveContext('Move', q=1, orientAxes=1)

pivotModeActive = cmds.manipMoveContext('Move', q=1, editPivotMode=1)

customModeActive = cmds.manipMoveContext('Move', q=1, mode=1) / 6

elif currentCtx == "RotateSuperContext" or currentCtx == "manipRotateContext":

customOri = cmds.manipRotateContext('Rotate', q=1, orientAxes=1)

pivotModeActive = cmds.manipRotateContext('Rotate', q=1, editPivotMode=1)

customModeActive = cmds.manipRotateContext('Rotate', q=1, mode=1) / 3

elif currentCtx == "scaleSuperContext" or currentCtx == "manipScaleContext":

customOri = cmds.manipScaleContext('Scale', q=1, orientAxes=1)

pivotModeActive = cmds.manipScaleContext('Scale', q=1, editPivotMode=1)

customModeActive = cmds.manipScaleContext('Scale', q=1, mode=1) / 6

if ori and not pos and not customModeActive:

cmds.error("m_bakeCustomToolPivot.kWrongAxisOriModeError")

return None

# Get custom orientation

if ori and customModeActive:

customOri[0] = mel.eval('rad_to_deg({})'.format(customOri[0]))

customOri[1] = mel.eval('rad_to_deg({})'.format(customOri[1]))

customOri[2] = mel.eval('rad_to_deg({})'.format(customOri[2]))

# Set object(s) rotation to the custom one (preserving child transform positions and geometry positions)

cmds.rotate(customOri[0], customOri[1], customOri[2], objects, a=1, pcp=1, pgp=1, ws=1, fo=1)

if pos:

for object in objects:

# Get pivot in parent space

# object = 'pSphere4'

old = [0, 0, 0]

m = cmds.xform(object, q=1, m=1)

p = cmds.xform(object, q=1, os=1, sp=1)

old[0] = (p[0] * m[0] + p[1] * m[4] + p[2] * m[8] + m[12])

old[1] = (p[0] * m[1] + p[1] * m[5] + p[2] * m[9] + m[13])

old[2] = (p[0] * m[2] + p[1] * m[6] + p[2] * m[10] + m[14])

# Zero out pivots

cmds.xform(objects, zeroTransformPivots=1)

# Translate object(s) back to previous pivot (preserving child transform positions and geometry positions)

new = cmds.getAttr(object + ".translate")[0]

cmds.move((old[0] - new[0]), (old[1] - new[1]), (old[2] - new[2]), object, pcp=1, pgp=1, ls=1, r=1)

# Exit pivot mode

if pivotModeActive:

mel.eval('ctxEditMode;')

# Set the axis orientation mode back to object

if ori and customModeActive:

if currentCtx == "moveSuperContext" or currentCtx == "manipMoveContext":

cmds.manipMoveContext('Move', e=1, mode=0)

elif currentCtx == "RotateSuperContext" or currentCtx == "manipRotateContext":

cmds.manipRotateContext('Rotate', e=True, mode=0)

elif currentCtx == "scaleSuperContext" or currentCtx == "manipScaleContext":

cmds.manipScaleContext('Scale', e=1, mode=0)

print(mel.eval('whatIs bakeCustomToolPivot;'))

print(mel.eval('whatIs performBakeCustomToolPivot;'))

bakeCustomToolPivot()

maya腿的蒙皮旋转枢轴_python Maya烘焙枢轴相关推荐

  1. maya腿的蒙皮旋转枢轴_ZBrush和Maya中制作半机械武僧(上)

    BY:Marcos Melco Marcos Melco是一位来自巴西的3D建模和纹理化艺术家,在视觉特效行业拥有3年的经验.在本文中,他将展示如何使用硬表面建模技术创建一个半机械武僧角色. 需要机械 ...

  2. maya腿的蒙皮旋转枢轴_MAYA更改、移动枢轴点

    移动选定对象的枢轴 选择一个变换工具,例如"移动工具"(Move Tool)."旋转工具"(Rotate Tool)或"缩放工具"(Scal ...

  3. maya腿的蒙皮旋转枢轴_Maya更改枢轴点,MAYA

    更改枢轴点 移动选定对象的枢轴 1.选择一个变换工具,例如"移动工具"(Move Tool)."旋转工具"(Rotate Tool)或"缩放工具&qu ...

  4. maya腿的蒙皮旋转枢轴_完美动力小课堂:怎么快速修改物体枢轴?这个方法值得收藏!...

    在Maya的学习使用过程中,经常会需要修改物体的枢轴,这期Maya使用技巧中,就来和大家分享一下新版本Maya中快速修改物体枢轴的方法. 自Maya2015中新增自定义枢轴的功能以来,很多同学甚至多年 ...

  5. maya腿的蒙皮旋转枢轴_MAYA动画:用驱动关键帧实现旋转门效果

    第一部分:驱动关键帧是maya里面的一种特殊的关键帧,它把一个属性数值和另一个属性数值连接在一起.对于一般的关键帧而言,是在某一个时间点上的.它的属性数值随着时间而动画.而对于驱动关键帧来说,是根据一 ...

  6. MAYA好学吗,如何系统学习MAYA,自学难吗?

    Maya好学吗? MAYA软件应用主要是动画片制作.电影制作.电视栏目包装.电视广告.游戏动画制作等. 刚开始接触Maya的同学都会有这样的疑问,Maya会不会很难学? 作为一款软件,Maya并不难学 ...

  7. 在maya里直接打开Houdini并导入maya输出的alembic文件

    当我们使用houdini做特效时,有时候我们会自己创建场景模型但是对与很对艺术家来说他们还是更喜欢使用maya去创建场景模型(当然随着houdini越来越强大,我们也可以使用houdini去创建场景模 ...

  8. ue4 maya max导入导出旋转坐标轴问题

    首先因为ue4没有unity导入管理那么方便,坐标轴之类的问题也是很长时间没有很好的解决过,所以要想控制一个流程还要借助插件. ue4可以把copy的内容输出到记事本上,这个也是导入这个流程的关键 下 ...

  9. maya骨骼绑定——蒙皮中的权重问题

    在制作龙落地的动画的时候,由于要旋转身体的上半部分,身体产生较大的变化,所以蒙皮中权重刷的是否合适就尤为关键了 下面介绍一下蒙皮的相关过程步骤: 首先要先在大纲视图中找到Global选项并点击 如图模 ...

最新文章

  1. [译]开始对Angular App进行单元测试(1)
  2. 移动端为何不使用click而模拟tap事件及解决方案
  3. 《Raspberry Pi用户指南》——2.4 使用外部存储设备
  4. 如何创建企业微信应用
  5. 《编译原理》实验报告——递归下降语法分析器的构建
  6. 如何查看oracle用户级别,用户级别的Oracle 导入导出
  7. android fragment fragmenttransaction,Android FragmentTransaction 常用方法总结
  8. JVM001_类文件结构
  9. [水动力学] 水动力学期末复习
  10. 怎么用c语言写贪吃蛇贴吧,刚学C语言,想写一个贪吃蛇的代码
  11. 厚积薄发,丰富的公用类库积累,助你高效进行系统开发(10)---各种线程同步的集合类...
  12. 全局替换资源_BitLocker+VHD替换TrueCrypt及其后继VeraCrypt
  13. Codeforces Round #245 (Div. 2): C. Xor-tree(BFS)
  14. 利用hugo生成静态站点
  15. 修改Dreamweaver(DW) cs6代码背景为黑色
  16. adc matlab代码,pudn-几种ADC设计的matlab源码
  17. Chrome浏览器(油猴子)插件安装使用教程
  18. WPF应用无法使用Snoop分析的解决办法
  19. ROS真车篇(一)激光雷达SLAM建图+自主导航+RGB深度相机
  20. 深入理解Java虚拟机——Parallel Old收集器

热门文章

  1. matlab消除泊松噪声,基于自适应噪声方差估计的去除泊松噪声的算法.PDF
  2. 行测笔记(主要知识点)
  3. 结构体类型数据单链表的操作
  4. php 文件预览 水印,PHP图片上传,预览图上传,水印设置
  5. 【通俗易懂】无线通信读书笔记02(自由空间路径损耗、两径模型)
  6. opencv在大图片上贴小图
  7. Java课程设计基于SSM的出租房管理
  8. mysql 一个sql查出俩个count_sql一个表中同时查询两个count的sql语句
  9. 网站盈利的10种方式
  10. 系分 - 操作系统 - 嵌入式