用Matrix在Maya2020里实现对offsetParentMatrix约束的切换

在Maya2020里有了offset parent matrix 属性,这样用matrix对物体做约束的时候就可以少很多节点,且结构更清晰简洁,那么下面就实现下这个功能。

首先创建两个locator,一个小球,用来模拟这个小球收到这两个locator的约束,而且是可以切换约束,即可以受locator1约束,也可以受locator2约束。

在这里插入图片描述

既然是用matrix来做约束,那么就再创建两个multMatrix节点,用这两个matrix节点的主要目的是做带有便宜值的matrix约束,就类似于Maya的parentConstraintkeep offset功能,首先我们要求出这两个locator和小球的分别的初始偏移值,可以用下面的代码来获得:

import maya.api.OpenMaya as OpenMaya

node = 'pSphere1'
driver = 'locator1'
offset = (
        OpenMaya.MMatrix(cmds.getAttr("{}.worldMatrix[0]".format(node)))
        * OpenMaya.MMatrix(cmds.getAttr("{}.matrix".format(node))).inverse()
        * OpenMaya.MMatrix(cmds.getAttr("{}.worldInverseMatrix[0]".format(driver)))
    )

分别获取完他们的初始值,然后需要把这个初始值复值给multMatrix的matrixIn[0]

cmds.setAttr("{}.matrixIn[0]".format(mult), 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值