void drawGizmos(Color color) { var oldColor = Gizmos.color; Gizmos.color = color; var pos = transform.position; var rot = transform.rotation; var q = DualQuaternion.fromUnityTransform(rot, pos); //new DualQuaternion(rot.conjugate(), pos);//o_O Well, whatever. drawDualQuaternion(q); foreach (Transform cur in transform) { var childQ = DualQuaternion.fromUnityTransform(cur.transform.localRotation, cur.transform.localPosition); //new DualQuaternion(cur.transform.localRotation.conjugate(), cur.transform.localPosition); var childQ2 = q * childQ; drawDualQuaternion(childQ2); const int numSteps = 10; for (int i = 1; i < numSteps; i++) { float t = (float)i / (float)numSteps; var tmpQ = q.sclerp(childQ2, t); drawDualQuaternion(tmpQ); } } Gizmos.color = oldColor; }