Thanks for the reply, 

The problem turned out to be that I was moving the matrix pivot, not the 
transform pivot…

correct:
transformFunc.setRotatePivot( worldZero, om.MSpace.kWorld, 0 )
incorrect:
mTransformMtx.setRotatePivot( worldZero, om.MSpace.kWorld, 0 )

Of course, in practice I wanted to move a point (which doesn't have a rotate 
pivot) so I ended up doing doing the rotation with trigonometry.

                    angle = 10
                    s = math.sin(angle)
                    c = math.cos(angle)
             
                    inverseX = 0 - DistributeX
                    inverseY = 0 - DistributeY
                    
                    xNew = inverseX * c - inverseY * s
                    yNew = inverseX * s + inverseY * c
                    
                    DistributeX = 0-xNew
                    DistributeY = 0-yNew
                    DistributeZ = 0

And that worked perfectly :)

Thanks again,
Ian

On 3 Oct 2012, at 19:32, Emre Yilmaz <[email protected]> wrote:

> The first thing I'd try is changing transformFunc.setRotation(quat) at the 
> end to set to the whole matrix rather than just setting rotation:
> 
> transformFunc.set(tm)
> 
> If I'm understanding right, the effect you want is that if the cube is at 
> tx=10, and then you run the code, the cube will rotate around the origin.  
> But the cube is only one node, it doesn't have a parent.  Without a parent, 
> rotating it around the origin means touching its translate as well.  Beyond 
> that there may be issues computing the matrix itself, but that's where I'd 
> start.
> 
> -e
> 
> On Wed, Oct 3, 2012 at 2:23 AM, ianwaters <[email protected]> wrote:
> > Hi all, 
> >
> > I am trying to rotate an object around world zero regardless of where the
> > object itself is, this is the code I have, it rotates the point around it's
> > centre, I'm clearly doing something wrong when it comes to setting the
> > rotate pivot to world zero...
> >
> > Just create a cube in an empty scene, and run the code below.
> > Any glaring errors?
> >
> > node = 'pCube1'
> >
> > selList = om.MSelectionList()
> >
> > selList.add(node)
> >
> > mDagPath = om.MDagPath()
> >
> > selList.getDagPath(0, mDagPath) 
> >
> > transformFunc = om.MFnTransform(mDagPath) #node as transform function
> >
> > mTransformMtx = transformFunc.transformation()
> >
> > tm = om.MTransformationMatrix(mTransformMtx) #now we have a transformation
> > matrix 
> >
> > worldZero = om.MVector(0,0,0) #place to move the rotate pivot
> >
> > tm.setRotatePivot( worldZero, om.MSpace.kWorld, 0 ) #move the rotate pivot
> > to worldZero 
> >
> > quat = om.MQuaternion() #create a quaternion
> >
> > rotateValue = 60 #how far to rotate
> >
> > newTheta = math.radians( rotateValue ) #in radians
> >
> > quat.setToXAxis( newTheta ) #set rotation in the quaternion
> >
> > tm.addRotationQuaternion( quat.x, quat.y, quat.z, quat.w,
> > om.MSpace.kTransform ) #add to the transformation matrix
> >
> >
> > transformFunc.setRotation(quat) #set it
> >
> >
> > Cheers!
> > Ian 
> >
> > --
> > view archives: http://groups.google.com/group/python_inside_maya
> > change your subscription settings:
> > http://groups.google.com/group/python_inside_maya/subscribe
> 
> 
> -- 
> view archives: http://groups.google.com/group/python_inside_maya
> change your subscription settings: 
> http://groups.google.com/group/python_inside_maya/subscribe

-- 
view archives: http://groups.google.com/group/python_inside_maya
change your subscription settings: 
http://groups.google.com/group/python_inside_maya/subscribe

Reply via email to