gpt4 book ai didi

c++ - 在 3 维中将对象旋转到 "look at"另一个对象?

转载 作者:太空狗 更新时间:2023-10-29 21:19:51 25 4
gpt4 key购买 nike

我想创建一个公式来旋转我的对象 (o1),使其始终指向另一个对象 (o2) 的方向,而不管 o1 的位置如何。

有点像下图中的相机: http://puu.sh/bLUWw/aaa653accf.png

到目前为止我得到了以下代码,但是偏航轴似乎是倒转的:

Vector3 lookat = { lookAtPosition.x, lookAtPosition.y, lookAtPosition.z };
Vector3 pos = { position.x, position.y, position.z };
Vector3 objectUpVector = { 0.0f, 1.0f, 0.0f };

Vector3 zaxis = Vector3::normalize(lookat - pos);
Vector3 xaxis = Vector3::normalize(Vector3::cross(objectUpVector, zaxis));
Vector3 yaxis = Vector3::cross(zaxis, xaxis);

Matrix16 pm = {
xaxis.x, yaxis.x, zaxis.x, 0,
xaxis.y, yaxis.y, zaxis.y, 0,
xaxis.z, yaxis.z, zaxis.z, 0,
0, 0, 0, 1
};

见下图: http://puu.sh/bLUSG/5228bb2176.jpg

我确定这只是一些必须交换的变量,但我找不到它们...

PS:对象矩阵的位置在后面相乘,为了测试...

最佳答案

我找到了我的问题的答案,事实证明我只需要像这样更改矩阵中值的顺序:

Matrix16 pm = {
xaxis.x, xaxis.y, xaxis.z, 0,
yaxis.x, yaxis.y, yaxis.z, 0,
zaxis.x, zaxis.y, zaxis.z, 0,
0, 0, 0, 1
};

关于c++ - 在 3 维中将对象旋转到 "look at"另一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26017467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com