You need to have the output connected to something or else Maya will never
request a node compute.  It only calculates nodes when it needs to.  You
should be able to just use the worldMatrix just fine.

Chad


On Fri, Aug 13, 2010 at 8:11 AM, susanta <susant...@gmail.com> wrote:

> "worldmatrix is only updated on demand.."
>
> Yea, That also I have speculated...
>
> "Try instead hooking up to matrix and parentmatrix plugs of the node
> whose worldmatrix you want. They should get pushed to your node and
> then you can just concatenate them in compute() to get the world
> matrix."
>
> My problem is little bit typical :). this is not about computing world
> matrix...say like, my node is connected in this order: NodeA -> NodeB-
> > NodeC->.......-> NodeD->MyNode. Now what I want to achieve, instaed
> of using any callback system use DAG system, to evalute myNode's
> compute block while any of the node in the hierarchy is changing
> trasform matrix. Now if I plugin parentmatrix / matrix from nodeD, I
> think if nodeD is affected then only it will evalute mynode....but not
> for other nodes up in the hierarchy. So to find a clean way I have
> tried to use worldMatrix of NodeD (as worldMatrix change is true for
> change in any depth) as I not want to plug with all other node's
> matrix in the hierarchy. But seems like I'm wrong :(...need to find a
> better solution. Any way thanks man.
>
> On Aug 13, 3:10 pm, Adam Mechtley <adam.mecht...@gmail.com> wrote:
> > Iirc, worldmatrix is only updated on demand (eg, you getAttr on it or on
> a plug that depends on it). Try instead hooking up to matrix and
> parentmatrix plugs of the node whose worldmatrix you want. They should get
> pushed to your node and then you can just concatenate them in compute() to
> get the world matrix.
> >
> > Sent from my iPhone
> >
> > On Aug 13, 2010, at 6:44, susanta <susant...@gmail.com> wrote:
> >
> > > Hi Guys,
> >
> > > I'm trying to create a custom MPX node, which is doing some
> > > calculation based on a bone's scale in a hierarchy. So far my compute
> > > code is working properly. I want to run the compute block always if
> > > the any bone in the hierarchy got new world matrix (either by pos, rot
> > > or scale change). But what I'm getting here, worldmatrix attribute of
> > > a node not getting changed always untill you querry from outside (eg.
> > > through MEL). Below is my test code....I have a input matrix plug
> > > which connected to worlMatrix of a tranformNode. I expect when I'm
> > > scaling or moving position of the transform node...compute block of my
> > > node should get called...but not getting desired result...am I missing
> > > somthing?
> >
> > > Thanks
> > > Susanta
> >
> > > class ChainLengthCalc(omx.MPxNode):
> > >    kPluginNodeTypeName = "ChainLengthCalc"
> > >    kPluginNodeTypeId = om.MTypeId(0xd1a9257)
> > >    def __init__(self):
> > >        omx.MPxNode.__init__(self)
> >
> > >    def compute(self,plug,dataBlock):
> > >        if plug == self.currentChainLength:
> > >            print "hello"
> > >            return om.MStatus.kSuccess;
> > >        return m.MStatus.kUnknownParameter;
> >
> > >    @classmethod
> > >    def creator(cls):
> > >        return omx.asMPxPtr( cls() )
> >
> > >    @classmethod
> > >    def initialize(cls):
> > >        unitAttr = om.MFnUnitAttribute()
> > >        cls.currentChainLength = \
> > >        unitAttr.create("currentChainLength", "ccl",
> > >                om.MFnUnitAttribute.kDistance, 0)
> > >        unitAttr.setKeyable(False)
> > >        unitAttr.setWritable(False)
> > >        cls.addAttribute(cls.currentChainLength)
> >
> > >        mAttr = om.MFnMatrixAttribute()
> > >        cls.drivingBoneMatrixAttr = mAttr.create( "drivingBoneMatrix",
> > > "dbm")
> > >        mAttr.setStorable(True)
> > >        mAttr.setWritable(True)
> > >        cls.addAttribute(cls.drivingBoneMatrixAttr)
> >
> > >        cls.attributeAffects(cls.drivingBoneMatrixAttr,
> > > cls.currentChainLength)
> >
> > > --
> > >http://groups.google.com/group/python_inside_maya
> >
> >
>
> --
> http://groups.google.com/group/python_inside_maya
>

-- 
http://groups.google.com/group/python_inside_maya

Reply via email to