坐标系:OGRE跟其它的图形引擎一样使用x,z来表示水平平面, 用y来表示垂直方向.面对你的显示器,x轴是从左到右,右边是正方向;y轴是从下到上,上方是正方向;z轴是从里向外,外面是正方向. OGRE是用向量类来表示位置跟方向的,Vector2,Vector3,Vector4是OGRE中定义的三种向量,然而我们最常使用的是Vector3. void setDirection(x, y, z); 设定方向 const Matrix& getProjectionMatrixRS() const; const Matrix& getViewMatrix() const; 因为支持多视口渲染(view port),OGRE为多视口维护了Z-ORDER, 根据Z-ORDER的不同来决定对相覆盖的视口的遮挡. 需要注意的是,即使被遮挡的部分每帧也是被渲染的,应考虑其代价. vpBack->setBackgroundColour(ColourValue(1.0f, 0.0f, 0.0)); //设置每帧是否自动清除缓冲 OGRE的2D坐标、CEGUI坐标、鼠标坐标 屏幕坐标系:左上角为(0, 0)右下角为(1, 1) OGRE的2D坐标系:左上角为(-1, 1)右下角为(1, -1) CEGUI坐标系:左上角为(0, 0),单位像素 转换公式(鼠标坐标=>OGRE的2D坐标) void setCorners(float left, float top, float right, float bottom) { 对于根据鼠标位置来产生射线: bool mousePressed(const OIS::MouseEvent &arg, OIS::MouseButtonID id) { ... ... 其中函数 Ray getCameraToViewportRay(Real x, Real y) const; // x and y are in “normalized” (0.0 to 1.0) screen coordinates 其中两个参数是对屏幕坐标系来说的, 所以 x = mousePos.d_x / float(arg.state.width) y = mousePos.d_y / float(arg.state.height) arg.state.width是渲染窗口的宽单位为像素 arg.state.height是渲染窗口的高单位为像素 mousePos.d_x是鼠标所在位置到渲染窗口左边界的距离单位为像素 mousePos.d_y是鼠标所在位置到渲染窗口上边界的距离单位为像素
|
Ogre坐标系,向量之间的转换
最新推荐文章于 2023-10-31 17:07:29 发布
原文地址:Ogre坐标系,向量之间的转换
作者:zhouwenjie