OpenSceneGraph:学习笔记

1、Geometry类型:

纹理坐标的设置:设置该几何体的顶点(按顺序)所对应纹理图片上的哪一处位置(二维XY坐标均默认为0.0~1.0)

	texture->setImage(image);   //设置纹理图片
        //纹理环绕:当纹理坐标超出默认范围(0.0~1.0)时,该怎么输出(还有CLAMP_TO_EDGE,CLAMP_TO_BORDER)  
        texture->setWrap(osg::Texture2D::WRAP_S, osg::Texture2D::REPEAT);  //X轴,重复(默认)
	texture->setWrap(osg::Texture2D::WRAP_T, osg::Texture2D::MIRROR);  //Y轴,镜像
        //纹理过滤:例,当有一个很大的物体但是纹理的分辨率很低的时候
	texture->setFilter(osg::Texture2D::MIN_FILTER, osg::Texture2D::NEAREST);  //设置纹理被缩小时的纹理过滤方式(默认最邻近)
        texture->setFilter(osg::Texture2D::MAG_FILTER, osg::Texture2D::LINEAR);   //设置纹理被放大时的纹理过滤方式

2、QT+OSG编译:

使用qt5的库来编译OSGQT的组件时,需要修改osg根目录下的Cmakelist.txt文件(非常重要),添加如下两句(在文件开始添加即可)
set(DESIRED_QT_VERSION "5" CACHE STRING "")
set(CMAKE_PREFIX_PATH "C:\Qt\Qt5.3.1\5.3\msvc2010_opengl" CACHE PATH "")
(注意上面的路径修改成你QT5安装的路径)
重新打开cmake-gui,设置源代码和工程目录

set(DESIRED_QT_VERSION "5" CACHE STRING "")
set(CMAKE_PREFIX_PATH "C:\Qt\Qt5.3.1\5.3\msvc2010_opengl" CACHE PATH "")
(注意上面的路径修改成你QT5安装的路径)

重新打开cmake-gui,设置源代码和工程目录

3、矩阵:

OSG使用行主序的概念来保存矩阵的16个元素。将矩阵应用于空间变换时,参照此公式:vec = vec *mat3。可看成右乘的顺序进行空间变换。
如果试图将某一级局部坐标系下的顶点V变换为世界坐标V',则需要将各级局部坐标系的变换矩阵依次相乘。假设在世界坐标系下变换矩阵M 0,依次累积,直至V所在局部坐标系的变换矩阵M n,那么级联矩阵得到V'的公式为:
V' = V·M n ·M n-1 ·... ·M 1 ·M 0
从世界坐标V'转换为局部坐标V的过程完全是这一公式的逆转,即:

V = V'·(Mn·Mn-1·...·M1·M0)-1 = V'·M0-1·M1-1·...·Mn-1

4、osg::Object

OpenSceneGraph:学习笔记_第1张图片OpenSceneGraph:学习笔记_第2张图片

5、包围盒:

 OSG采用Node类来表达一个基本节点,也就是作为所有类型的场景节点的基类,它需要一个BoundingSphere类来表达自己的包围球形体,并且需要一些方法来实时更新包困球的大小和位置。当某个节点的子节点发生变化时(删除,新增,改变自身包围体形状),需要重新计算该节点的包围球数据,并递归到场景的根节点,以便维护场景BVH(包围体层次)树的可用性。

6、RenderInfo类:

RenderInfo类的工作是记录当前OpenGL渲染状态、窗口信息以及图形设备的信息。


你可能感兴趣的:(OSG学习)