Tôi mới sử dụng chương trình 3.js và 3d nói chung, do đó, điều này có vẻ như là một câu hỏi rất đơn giản. Lý tưởng nhất, tôi hy vọng câu trả lời có thể giúp tôi hiểu các nguyên tắc cơ bản.Three.js - Cách xoay một đối tượng để tìm kiếm một điểm và định hướng về một điểm khác và hướng tới một
Tôi có một đối tượng cần "trỏ" tại một điểm khác (nguồn gốc, trong trường hợp này, để đơn giản), có thể được thực hiện dễ dàng với chức năng Object3D.lookAt(point)
. Điều này chỉ trục Z của đối tượng tại điểm độc đáo.
Tôi cũng muốn xoay đối tượng của mình, được gọi là looker
, xung quanh trục Z sao cho trục X của nó thường hướng tới đối tượng khác, refObj
. Tôi biết rằng trục X không thể trỏ trực tiếp tại refObj
trừ khi đối tượng đó xảy ra tạo thành một góc phù hợp với nguồn gốc. Tôi muốn trục X của looker
nằm trên mặt phẳng được tạo ra bởi origin
, refObj
và looker
, như diagramed dưới đây:
Cách đơn giản làm vòng quay dường như là để sửa đổi looker.rotation.z
, nhưng tôi không biết cách tính giá trị.
Nói chung, tôi muốn có phiên bản mở rộng của hàm lookAt
có toạ độ thứ hai mà trục X sẽ được định hướng. Một cái gì đó như thế này:
function lookAtAndOrient(objectToAdjust, pointToLookAt, pointToOrientXTowards)
{
// First we look at the pointToLookAt
objectToAdjust.lookAt(pointToLookAt);
// Then we rotate the object
objectToAdjust.rotation.z = ??;
}
tôi đã tạo ra một jsFiddle with the example diagramed above