Three.js - Jak obracać obiekt, aby spojrzeć na jeden punkt i orientować się w kierunku drugiego
Jestem nowym użytkownikiem three.js i ogólnie programowania 3d, więc może się to wydawać bardzo prostym pytaniem. W idealnej sytuacji mam nadzieję, że odpowiedź pomoże mi zrozumieć podstawowe zasady.
Mam obiekt, który musi „wskazać” w innym punkcie (w tym przypadku pochodzenie, dla uproszczenia), co można łatwo zrobić za pomocąObject3D.lookAt(point)
funkcjonować. To ładnie wskazuje oś Z obiektu.
Chcę także obrócić mój obiekt, wywołanylooker
, wokół swojej osi Z, tak że jego oś X wskazuje ogólnie na inny obiekt,refObj
. Wiem, że oś X nie może wskazywać bezpośrednio narefObj
chyba że obiekt ten powstaje pod kątem prostym względem początku. Chcę osi Xlooker
leżeć na płaszczyźnie stworzonej przezorigin
, refObj
ilooker
, jak pokazano poniżej:
Najprostszym sposobem wykonania rotacji wydaje się być modyfikacjalooker.rotation.z
, ale nie wiem, jak obliczyć, jaka powinna być wartość.
Ogólnie chciałbym rozszerzoną wersjęlookAt
funkcja, która pobiera drugą współrzędną, do której oś X byłaby zorientowana. Coś takiego:
function lookAtAndOrient(objectToAdjust, pointToLookAt, pointToOrientXTowards)
{
// First we look at the pointToLookAt
objectToAdjust.lookAt(pointToLookAt);
// Then we rotate the object
objectToAdjust.rotation.z = ??;
}
StworzyłemjsFiddle z powyższym przykładem