View Full Version : Relative Rotation/Translation Problem


Dubbie
12 December 2007, 10:21 PM
Here is my scenario:
I have two objects objA and objB not linked to each other. They each have a random rotation and position.

Here is what I want to do: Imagine that objB is linked to objA and then objA is basically given an identity matrix as its transform so that it returns to 0,0,0 and all rotation is reset. However, because objB was linked to it, objB is in exactly the same position RELATIVE to objA as it was previously.

What I want to know is how can I calculate the NEW transform matrix of objB without having to move or link anything?

I suspect this is simple, I just haven't been able to figure it out!

Thanks in advance,
Rhys.

RobertMayer
12 December 2007, 10:24 PM
Must it be in tansform matrix form? If not, you could use the Expose Transform, I think.

Dubbie
12 December 2007, 10:32 PM
I'm not sure I follow you there...
What other form would it be in?

RobertMayer
12 December 2007, 10:35 PM
If you use the Expose Transform helper, you can extract the different transformational data raw. (ie: The different between ObjA's X-Rotation and ObjB's X-Rotation).

Dubbie
12 December 2007, 10:46 PM
I think I follow you..

Problem is, I don't want to create any new objects or anything. (such as a transform helper) i just want to calculate the new transform.

RobertMayer
12 December 2007, 10:57 PM
Let me jump around with the concept when I get home (At the workplace now), unless someone can beat me to the punch.

floopyb
12 December 2007, 12:38 AM
try this before you assign the identity matrix to objA

$objB.transform = $objB.transform * (inverse $objA.transform)

Dubbie
12 December 2007, 01:53 AM
Thanks a million Floopy.

Thats exactly what I was after. Turns out I was close but not close enough!

RobertMayer
12 December 2007, 03:16 AM
-=has been beaten to the punch=-
glad you found a solution, mate.

CGTalk Moderation
12 December 2007, 03:16 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.


1