gpt4 book ai didi

c++ - glulookat() 用法-opengl 和 C++

转载 作者:行者123 更新时间:2023-11-28 08:12:26 26 4
gpt4 key购买 nike

0你能帮我解决这个场景吗:我有一个 3D 世界,我想以第一人称方式定位相机(真正的目的是在旅行时从宇宙飞船内部的第一人称视角通过小行星带)。在这种情况下,glulookat 的参数是什么?我想到了:

gluLookAt(30, 30, 30, 0, 0, 0, 0, 1, 0);//the up vector would be normal y axis

这对吗?

另外,如果我想让相机随船一起移动,该怎么做?移动船时,我还应该从 glulookat 移动“眼睛”坐标吗?像眼睛坐标(glulookat 的前 3 个参数)应该与船坐标相同?

最佳答案

您建议的 gluLookAt 调用会将相机定位在 (30,30,30) 并将其指向原点。

gluLookAt(Ship_Position_X,Ship_Position_Y,Ship_Position_Z,
Ship_Forward_X,Ship_Forward_Y,Ship_Forward_Z,
0,1,0);

这更像是您所需要的。你必须在每一帧调用它,这样相机才能跟随船的运动。如果您希望飞船进行桶形滚动,则必须使用额外的变量来跟踪向上 vector 。

我喜欢用某种结构来保存坐标,这样我就可以重载 gl 函数来获取它们并编写更短的函数调用,例如

// roll your own glVec, or use a co-ordinate class provided by a library you happen to be using.
inline void gluLookAt(glVec position, glVec forward, glVec up)
{
gluLookAt(position.x,position.y,position.z,forward.x,forward.y,forward.z,up.x,up.y,up.z);
}

关于c++ - glulookat() 用法-opengl 和 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8646829/

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