you are looking at right direction. yes. it must act as the node is a parent of another node and a child of that node at the same time.
but what you show is not a rig. we can call it… a “setup” tool. RIG is a controller based solution that being played as animation doesn’t need any callback or real time event support.
This is only with pos/rotation controller and wiring,
kind-of working, but very unstable:
http://www.sendspace.com/file/qsoryt (max 2012 x64)
rotate the helpers
that’s really not an easy task. but… try!
“‘But I tried though,’ he says. ‘Goddammit, I sure as hell did that much, now, didn’t I?’”
(“One Flew Over the Cuckoos Nest”, Ken Kesey)
denisT, did you use switching weight of some controllers to zero and backward in your solution?
the some kind of a trivial solution is to make a toggled constraint. you set a boolean key to one constraint, and it automatically inverses the another. sounds good. but it doesn’t solve the problem.
WE HAVE A SERIOUS PROBLEM. it’s a circular loop dependency.
in this task a node has to be a parent and a child of the same node.
to solve this puzzle you have to know: (there is a list in probability order)
what the circular dependency is
how to avoid the circular dependency
how to script a scripted transform controller
what a vector algebra is
some undocumented script controller … hmm… how to say… an evaluation order
good luck
Too bad I’m probably not going to be able to give this a shot (don’t think I can do it anyways).
Honestly I can’t really think of a production proven solution to this task solely controller based. The setup itself looks difficult to get stable. How do you see the user using this system? The nodes are independent by default and the user picks wich one is a parent for a certain frame (like Link Constraint)? What other settings there are? One big problem is how to deal when the user retimes the animation, deletes keyframes, etc. Have no idea how to deal with that without callbacks.
By vector algebra do you mean matrix multiplication? While the linking itself is a trivial matrix multiplication, for this setup it’s needed to relink stuff keeping the current node state in the scene, which in itself should not be a big deal. But doing this at different times doesn’t look so simple. There is a lot of room for problems.
This is something I’m looking forward to see…
Sorry if what I’m saying is nonsense, it’s purely speculation on my part for now…
I think I’d put this at my #1 most wished for rig so I really hope someone can figure this out and post it. I have tried and failed to do this many, many times. Anyone want to start a cash prize for the winner? I’ll put in the first $20!
that’s simple. it seems like i will be a winner. i’m waiting for at least 50 attempts… no interest is no recall.
i want to clear it again… there is mine solution. it is a scripted transform, the matrix algebra, the using of the current/next instance of a list controller… this is mine. BUT:
i… want…to…see… any…other!
trying to work on something atm with a scripted transform. its very tricky trying to keep everything in order :D.
what about something like this:
in a 3rd helper node, apply a look at constraint with two targets set at the objects you wish to rotate around each other. This will mean that a rotation script controller on that helper node will be executed whenever either of the two nodes are trasnformed.
The helper node can then hold weak references to the two nodes in this script controller.
Store the rotation of both nodes from last execution, and if one of their rotations changes (but not from application of the script) create a translation matrix of the rotation difference, in the space of the other node, and apply it.
I will dip into this challenge a little – yes its doable.
Mine can be a transform controller or pos/rotate controller.
Weak referencing to allow multi-directionalness.
Evaluation order has to follow a rule for all members. Else things get hairy.
A clue that helped me a while back:
You need to invalidate one transform to allow it inherit another.