食人魔相机方向给定矢量和角度
Ogre camera orientation given vector and angle
在ogre3d中,我想设置方向,将矢量为"正常"的矢量"正常"(作为箭头指向我的眼睛)和一个旋转相机的角度(例如倾斜我的头)。我可以通过此技巧来使用它:
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));
我不确定这是否适用于每个价值,而且似乎是骇人听闻的。我正在寻找更正确的东西,例如使用Quaternions和Ogre::Camera::setOrientation()
。
此示例不起作用:
Quaternion orientation(Degree(angle), vector);
camera->setOrientation(orientation);
因为相机由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;
}
,因为它只是指出,这不是从旋转矢量和相关角度创建四频的方式,而是相机使用Quaternion/旋转的方式。如果您使用的是诸如摄像机之类的FPS,则需要使用SetFixedyAxis()函数来使摄像机不会围绕Y轴旋转,或者您希望将其固定的任何轴旋转。那我不确定您想实现什么:
Vector3 target = camera->getPosition() + vector;
camera->lookAt(target);
当您通过将其指向另一个摄像机的方向向量时。只需在相机实例上使用setFixedyaxis(true),您就可以完成。
相关文章:
- 使用Unreal C++获取VR耳机的世界位置/方向
- 了解 GLM- openGL 中的相机转换
- OpenGL相机和相机空间转型的困惑
- 在C++中向零方向近似的最佳方法
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- OpenVR:向视图方向移动
- 通过 API 控制 DJI 相机
- 将相机数据从服务器实时流式传输到客户端
- 来自逆 vp 矩阵和相机位置的光线方向不正确
- OpenCV - Python 断言错误:SAD 算法 - 立体相机视差图计算
- Qt 和 Android - 如何使用 Qandroidjniobject 启动相机
- 在Windows(C++)中使用USB相机拍摄高分辨率照片
- 带有枚举方向/类型的气泡排序结构数组
- 如何在相机类中添加胶卷
- OpenGL通常"Up"方向?
- 强制Qt相机视频格式
- 相机的旋转方向在一段时间后反转
- 食人魔相机方向给定矢量和角度
- 3d相机-如何改变相机方向