Notifications
Clear all

[Closed] Transform matrix from a NodeTransformMonitor gives illegal self-referencing?

 eks

After reading the documentation and particularly this thread:

http://forums.cgsociety.org/showthread.php?t=535988

I got a grasp of how to use NodeTransformMonitors.

The problem is I have a node with a position_list() controller, the first a bezier_position() and the second a script_controller(). On this script_controller I was trying to use the self transform matrix for some calculations but I can’t get it no matter what.

I can get either the position, rotation or scale values, with say var.modifiers[1].refNodes[3].node.position.controller[1].value, but the transformation matrix itself always give the “illegal self-referencing error” (with var.modifiers[1].refNodes[3].node.transform). This also happens if I try var.modifiers[1].refNodes[3].node.position.controller.value.

There’s no way whatsoever to get the self transformation matrix of a node on a script_controller?

What I’m trying to do is sort of what eek described here:

a.attribute.node.pos.controller[2].controller + offset position (add this offset only to one of them) This will make two object control each other a > b and b < a. Its essentially the same as instancing a controller but give you flexibility.

But with the whole transformation (or just the position and rotation values)

3 Replies

Indeed, you answer by yourself,
dunno why… i just confirm.

 PEN

Node transform helper can’t help you as you are creating a loop. The position tracks that you are driving are boiled down to the matrix. If you then try and access that matrix to work out what that matrix will be you have a loop. Accessing the controllers will work but you can’t get the result of the script controller as that would be a loop again.

What exactly are you trying to do? What are you creating?

 eks

PEN! Sorry taking this long to respond!

I’m creating some controllers to animate a motocross bike on the air. I was actually trying to create something like two point objects that behaved like they were “children of each other”. So yeah, making a circular reference loop work.

Say I get point A and rotate and move and point B behaves like a child of point A. Then I get point B and move and rotate and point A then behaves like a child of point B.

Is it possible to do something like this on Max? I got it sort of working with weak references, but it was never close to a “child of each other”. And on top of that I would have multiple of those (something around 5 points, and ideally they all would behave like child of the node being manipulated at the moment).