Ein Problem das man in LSL/OSSL zum Glück nicht "zu Fuss" mit Vektor-/Matrizenrechung und der Eulerschen Drehmatrix lösen
muß. Die folgende URL erklärt das sehr schön, wie einfach sich das lösen lässt. :-)
www.virtualverse.one/forums/threads/kept...-another-object.178/
Codeschnipsel:
vector SF_spos = <x,y,z>; //start position
vector SF_epos = <x,y,z>; //end position
float fDistance = llVecDist(<SF_epos.x,SF_epos.y,0>,<SF_spos.x,SF_spos.y,0>;);//XY Distance
rotation rotZ = llRotBetween(<1,0,0>,llVecNorm(<fDistance, 0, SF_epos.z - SF_spos.z>;));//up/down rotation
rotation rotXY = llRotBetween(<1,0,0>,llVecNorm(<SF_epos.x - SF_spos.x,SF_epos.y - SF_spos.y,0>;));//left/right rotation
rotation absRot = rotZ*rotXY; //absolute rotation
llSetRot(absRot);
Möchte man statt dem Befehl llSetRot() lieber llSetKeyframedMotion() benutzen ist noch ein Schritt notwendig. Anders als llSetRot() erwartet llSetKeyframedMotion() relative Parameter.
rotation relRot = absRot/llGetRot();
llSetKeyframedMotion( [
<0.0, 0.0, 0.0>, relRot, 1.0
], );