gpt4 book ai didi

c++ - 给定 vector 和角度的 Ogre 相机方向

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:00 27 4
gpt4 key购买 nike

在 Ogre3d 中,我想设置方向,给相机 View 一个“正常”的 vector (作为指向我眼睛前方的箭头)和一个旋转相机的角度(比如倾斜我的头)。我可以用这个技巧让它工作:

float angle = 10; /* tilt my head 10 degrees to right */
Vector3 vector(0, 0, 1); /* z axis pointing forward */
Vector3 target = camera->getPosition() + vector;
camera->lookAt(target);
camera->roll(Degree(angle));

我不确定这是否适用于每个值,而且看起来很老套。我正在寻找更正确的东西,比如使用四元数和 Ogre::Camera::setOrientation()

这个例子不起作用:

Quaternion orientation(Degree(angle), vector);
camera->setOrientation(orientation);

因为相机沿 vector 旋转了angle

最佳答案

您可以轻松地将 vector 和角度转换为表示旋转的四元数。这就是众所周知的轴角四元数。我不知道您使用的是哪个四元数类(Ogre 中可能有一个)。但是,让我给你我写的四元数类的示例代码:

    Quaternion Quaternion::CreateFromAxisAngle(Vector3 axis, float angle) {
float half = angle * 0.5f;
float s = sin(half);

Quaternion result;
result.x = axis.x * s;
result.y = axis.y * s;
result.z = axis.z * s;
result.w = cos(half);
return result;
}

关于c++ - 给定 vector 和角度的 Ogre 相机方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13976163/

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