ogre摄像机围绕物体转动如何实现?

jinling4388 2019-06-05 01:37:00
有实现最好,没有能提供解决方案也好。
我的想法是pitch、yaw和roll还是要用的,但是位置也要重设。
...全文
130 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinling4388 2019-06-06
  • 打赏
  • 举报
回复
引用 1 楼 smwhotjay 的回复:


vector3df My3rdCamera::sphericalXYZ(f32 compassAngle, f32 elevationAngle, f32 radius){ 

compassAngle = compassAngle * -1;
elevationAngle = elevationAngle * -1;

elevationAngle = elevationAngle + 90;

f32 x = radius * cos(compassAngle * PI/180.0f ) * sin(elevationAngle * PI/180.0f );
f32 z = radius * sin(compassAngle * PI/180.0f ) * sin(elevationAngle * PI/180.0f );
f32 y = radius * cos(elevationAngle * PI/180.0f );

vector3df result;
result.X = x;
result.Y = y;
result.Z = z;
return result;
}


核心就是个三角函数


你这个是平面的圆形变换,我这个是球面的三维空间变换,要比平面复杂很多。
而且即使是平面,你也是默认的圆心为(0,0)。
smwhotjay 2019-06-05
  • 打赏
  • 举报
回复


vector3df My3rdCamera::sphericalXYZ(f32 compassAngle, f32 elevationAngle, f32 radius){ 

compassAngle = compassAngle * -1;
elevationAngle = elevationAngle * -1;

elevationAngle = elevationAngle + 90;

f32 x = radius * cos(compassAngle * PI/180.0f ) * sin(elevationAngle * PI/180.0f );
f32 z = radius * sin(compassAngle * PI/180.0f ) * sin(elevationAngle * PI/180.0f );
f32 y = radius * cos(elevationAngle * PI/180.0f );

vector3df result;
result.X = x;
result.Y = y;
result.Z = z;
return result;
}


核心就是个三角函数

24,855

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧