maya中抵消abc物体的transform进行动态解算

前两天朋友跟我讲了一个方法为了解决abc物体运动过快导致解算难度的问题 其实这个问题可以通过cache的速度进行处理,不过他所说的方法也很有意思,先记录在这里。

import maya.cmds as mc
point = mc.ls(sl=1)
world = mc.pointPosition(point[0],w=1)
transform = mc.createNode('transform',n='LOC')
locator = mc.createNode('locator',n=transform+'Shape',p=transform)
mc.move(world[0],world[1],world[2],'LOC')
mc.makeIdentity('LOC',apply=True,t=1,r=1,s=1,n=0,pn=1)
mc.select(point[0])
Constraint = mc.pointOnPolyConstraint(point[0],'LOC',maintainOffset=0,weight=1)
get_max_start = mc.playbackOptions(q=True,ast=True)
get_max_end = mc.playbackOptions(q=True,aet=True)
mc.bakeResults('LOC',time=(get_max_start, get_max_end),sampleBy=1,animation="keysOrObjects",sparseAnimCurveBake=False,simulation=True,)
mc.delete(Constraint[0])
multiplyDivide = mc.createNode('multiplyDivide')
mc.connectAttr('LOC.translate','%s.input1'%multiplyDivide)
obj = point[0].split('.')[0]
mc.connectAttr('%s.output'%multiplyDivide,'%s.translate'%point[0].split('.')[0])
mc.setAttr('%s.input2X'%multiplyDivide,-1)
mc.setAttr('%s.input2Y'%multiplyDivide,-1)
mc.setAttr('%s.input2Z'%multiplyDivide,-1)

这样做可以抵消abc的位移然后进行解算,当解算完成后可以将multi节点的参数再改回1即可。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值