- Home /
How to calculate required rotation of a parent object by a given rotation of a child
I have simple model of an atom consisting of a sphere as parent and cylinders as children coming out of it. These cylinders are docking points for connecting atoms to each other. When I want to "connect" one atom a1 via docking point d1 to an atom a2 with docking point d2, I can calculate the required position and rotation of d2 based on d1 in c# script. But how do I determine the rotation of d2, the parent object of a2? Especially when all atoms can have any position and rotation.
If you know q*v and q*q and q.inverse math, you can just walk yourself backwards to a2. Follow d2's local offset backwards using d2's rotation; draw a test point to be sure. Apply the free "roll" using d2's local axis. The final rotation of a2 probably involves d2's global rotation and the inverse of it's localRotation from a2.
(I did almost this exact thing, about a year ago. Don't have the code to look at, but this was the general idea. Took about an hour. If you make test points, you can educated guess + trial and error faster than you'd think.)
Hi that was the way I already tried, the funny thing was, that it was working in most cases but not in all. $$anonymous$$aybe I have to improve my knowledge in 3D vector math
Answer by RetepTrun · Oct 05, 2016 at 04:59 PM
Ok, so what you mean is you have more of those things in the picture and they should connect to each other at the ends of the cylinders sticking out.
What about doing this each time you want to align 2 objects:
call the objects obj1 and obj2.
Each has just 1 docking port to keep my description simple but the concept should still work for multiple connectors
each docking port has a connector transform pointing out and a transform pointing in
obj1 will remain stationary
obj2 will move to dock with obj1.
1)spawn empty gameobject (call it bob)
2)give bob the world position and rotation of obj2 inward pointing connector
3) parent obj2 to bob
4)give bob the position and rotation of obj1 outward pointing connector
5)unparent obj2 from bob
6)delete bob
Your answer
Follow this Question
Related Questions
"Center On Children" programmatically 1 Answer
Can one specify the parent of a gameobject in an array? 2 Answers
Moving a GameObject reffering to the coordinates of the parent Object 1 Answer
make parent of animated game object follow the game object's animation 0 Answers
Multiple Cars not working 1 Answer