osg 相机坐标系
来源:互联网 发布:蓝牙聊天软件 编辑:程序博客网 时间:2024/05/18 04:57
先看这个例子:
#include <Windows.h>#include <osgViewer/Viewer>#include <osgDB/ReadFile>#include <osg/Node>int main(int argc,char** argv){osgViewer::Viewer view;view.setSceneData(osgDB::readNodeFile("cow.osg"));view.getCamera()->setProjectionMatrixAsPerspective(40.,1.,1.,100.);osg::Matrix trans;trans.makeTranslate(0.,0.,-12.);double angle(0.0);while (!view.done()){osg::Matrix rot;rot.makeRotate(angle,osg::Vec3(1.0,0.,0.));angle+=0.01;view.getCamera()->setViewMatrix(rot*trans);view.frame();}return 0;}
将相机设置到世界坐标系(0,0,12)的位置,向下看牛。同时,牛绕着x轴自传。
2、解说:
相机坐标系,和OpenGL的相机坐标系一致,+x:向右,+y:向上,+z:向前(向屏幕内部),
执行trans.makeTranslate(0.,0.,-12.);相当于讲像机从(0,0,0)移到(0,0,12)位置
(其实,也可以理解为:视图矩阵,就是相机在三维世界中,从原点变换到观察点所经过的变换矩阵的逆矩阵,
这样完全不用考虑相机坐标系,其实也不存在这一说法,说相机坐标系,只是为了便于理解),
这样正好可以看到牛。
3、为何效果是俯瞰牛呢,因为osg的世界坐标系是使用+z向上建模的。
执行rot.makeRotate(angle,osg::Vec3(1.0,0.,0.));相当说牛处在世界坐标系原来的位置(0,0,0),相机自己绕着(1,0,0)轴,以12单位长度进行圆周旋转运动。
4、关于osg的坐标系,指的是世界坐标系,而此处操作的是视图坐标系(相机坐标系,是世界坐标系的逆)
5、不要将相机问题同以下概念混淆:OSG坐标相当于OpenGL坐标系绕X轴正向逆时针旋转90度。
其他链接:
1、http://blog.csdn.net/cccstudyer/article/details/44994883
阅读全文
0 0
- osg 相机坐标系
- osg坐标系
- OSG坐标系解释????????
- osg坐标系转换
- osg坐标系理解
- OSG一个terrain相机
- OSG相机与视图
- osg相机漫游
- osg 相机操作
- osg 坐标系以及坐标变换
- OSG数学基础:坐标系变换
- OSG 视图与相机 类图
- 世界坐标系和相机坐标系,图像坐标系的关系
- 世界坐标系和相机坐标系,图像坐标系的关系
- 世界坐标系和相机坐标系,图像坐标系的关系
- 世界坐标系和相机坐标系,图像坐标系的关系
- 世界坐标系和相机坐标系,图像坐标系的关系
- 世界坐标系和相机坐标系,图像坐标系的关系
- sphinx rt ,实时索引,sphinx.conf配置事例
- 安卓自定义View进阶-MotionEvent详解
- 部分mongodb应用知识
- 深夜食堂:加班码代码太烧脑_你最爱哪种加班美食?
- 初看Java8新特性-Lambda表达式的语法规则
- osg 相机坐标系
- 认识自我
- 分布式理论之一:Paxos算法的通俗理解
- Java笔试题解-流程控制(3)
- Java访问权限修饰词
- 彻底解决Spring MVC 中文乱码 问题
- 【排序算法】 快速排序 quick sort(交换类排序)
- While emitting IR SIL function @_TFC21EncryptedMemo_Project14EMPassManageVC9initViewsfT_T_ for 'init
- 一分钟了解String、StringBuffer、StringBuilder的区别