Jestem nowym użytkownikiem programów three.js i 3d, więc może się to wydawać bardzo prostym pytaniem. Idealnie, mam nadzieję, że odpowiedź pomoże mi zrozumieć podstawowe zasady.Three.js - Jak obrócić obiekt, aby go spojrzeć? W jednym punkcie i orientować się w kierunku innego
Mam obiekt, który musi "wskazywać" w innym punkcie (pochodzenie, w tym przypadku dla uproszczenia), co można łatwo wykonać za pomocą funkcji Object3D.lookAt(point)
. To punktycznie ładnie wskazuje oś Z obiektu.
Chcę również obrócić mój obiekt o nazwie looker
wokół jego osi Z w taki sposób, że jego punkty osi X generalnie wskazują inny obiekt, refObj
. Wiem, że oś X nie może wskazywać bezpośrednio na refObj
, chyba że obiekt ten tworzy kąt prosty z punktem początkowym. Chcę osi X looker
leżeć na płaszczyźnie utworzonej przez origin
, refObj
i looker
, jak na schemacie przedstawionym poniżej:
Najprostszym sposobem robi obrót wydaje się zmodyfikowanie looker.rotation.z
, ale nie wiem, jak obliczyć, jaka powinna być wartość.
Ogólnie, chciałbym rozszerzoną wersję funkcji lookAt
, która przyjmuje drugą współrzędną, na którą zorientowana będzie oś X. 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łem jsFiddle with the example diagramed above