Originally Posted by lecopivo
I didn't read the whole thread but I think I have solution to original problem just have a look http://www.youtube.com/watch?featur...d&v=5Oip-YiKuik
if you are interested in math behind have a look here http://tomsmathjourneys.blogspot.cz/
I will reference to the scene that I have in video i.e. two control locators and box which is controlled.
1. I am not doing any kind of parent switching to break evaluation loops! You can rotate around two points simultaneously. I do some funny math to figure out what actually means to rotate around two points at the same time.
2. Because of 1. directly moving locators is disabled. Imagine you rotate around locator1 so locator 2 get translated therefore the whole system has to move. But you just wanted rotate around locator1.
3. Rotation of locator1 is not altered by locator2 and vice versa. You have full control of locators rotation. This way I can break the dependency loop. If you need something fixed with system just link it to the box.
4. Position and rotation of system depends on history of locator's rotation. So you have to specify state of the system at some time t0 and than the node do some numerical integration from time t0 to time t. In current implementation the integration is done from time t0 to time t each time you change something. So even when you change from time t to time t+dt it will recalculate everything from time t0 to (t+dt). But It could just do one more step in the integration. But the advantage of current solution is that you can randomly jump in time.
5. It would be cool to have one move controlel which would be fix with the system but for now I don't know how to do this. If you need some move control just edit parent start position of the multiParentNode
Ok... @lecopivo, I read your revised method you posted in your updated blog (two pivot nodes A and B, and one helper node H). I do understand your math... and I have implemented a MAXscript DLX extension that calculates the matrix exponential (using angleaxis values to first construct the required cross-product matrix...)-- thus allowing me to sum the rotations of nodes A and B (regardless of order, as you explain in your blog) and apply the total rotation to node H...
...BUT I'm struggling with how to actually implement your "update equations" in a 3ds Max construct while avoiding illegal-self referencing or circular dependencies. I'm not sure if I should try and do all of this in a custom attribute definition on the helper node H. Or try and use wire expressions or script controllers???
Any ideas or guidance from anybody would be greatly appreciated. It would save me some headaches...