osg学习
文章平均质量分 50
weixin_44682398
这个作者很懒,什么都没留下…
展开
-
osg学习之HUD设置的七个步骤
HUD本质1、HUD是二维的2、必须要在最后渲染3、需要在其他相机的基础上进行渲染4、不接受窗口事件5、始终显示6、HUD本质上就是一个Camera相机HUD创建步骤1、创建一个Camera相机,用于HUD,根据HUD本质属性进行设置;2、创建一个文字对象,进行属性设置,并加入Geode节点;3、创建一个几何体,压入顶点,并设置法线;4、创建纹理坐标;5、创建一个纹理对象,并与纹理坐标绑定;6、将纹理坐标贴上;...原创 2021-02-04 09:51:46 · 892 阅读 · 0 评论 -
osg学习之相机跟随
最近一直在研究osg中关于相机跟随节点运动方面的事情,有一些收获,此处记录一下。现将实现效果展示一下。程序初始化运行后,视点在坦克模型后方100处,如下图所示:当按下键盘中的“A”键时,坦克模型向左转,视点同时进行跟随,如下图所示:向右转向基本相同,此处不再截图演示。以上功能看似较为简单,仔细研究了一下,将其中与数学相关的部分抽取了出来,建立坐标模型如下图所示:上述问题抽象为数学问题来表达的话,可以表述为有一个以O点为中心、半径为R的圆,点A、B都在圆上,A的坐标为(x0, y0),B的坐原创 2021-02-04 09:51:17 · 1000 阅读 · 1 评论 -
osg学习之访问器简单总结
对访问器原理进行一下简单总结与访问器相关有三个重要的函数,现将它们简单总结一下。accept函数accept函数顾名思义,就是用于接受访问器,所以这个函数被定义在基类osg::Node中,用于osg::NodeVisitor访问器中的apply方法,函数定义与实现代码如下:/** Visitor Pattern : calls the apply method of a NodeVisitor with this node's type.*/virtual void accept(NodeVisi原创 2021-01-26 15:37:00 · 603 阅读 · 0 评论 -
osg学习之智能指针
osg的内存管理主要通过osg::Referenced和osg::ref_ptr两个重要的类以智能指针的形式实现的。类图osg::Referenced类图如下图所示:osg::ref_ptr类图如下图所示:堆内存释放问题众所周知,C++内存管理中一个老大难的问题就是堆上的内存释放问题,主要面临两个问题,一是由于程序员的疏忽常常忘记释放,二是意外的提前释放导致其它正在使用此指针的对象出现程序运行崩溃。智能指针解决方案智能指针如何解决以上问题?第一个问题的解决方案,对比栈内存使用方法,我们可原创 2021-01-19 16:51:19 · 592 阅读 · 0 评论 -
OSG飞机姿态控制笔记
飞机飞行姿态控制。飞机机头俯仰摆动根据代码分析,本质上是飞机绕X轴进行旋转,代码如下:例如,让机头仰起30度float roll = osg::inDegrees(-30.0f);osg::Quat rotation(osg::Quat(roll, osg::Vec3(1.0, 0.0, 0.0)));运行效果:例如,让机头俯下30度float roll = osg::inDegrees(30.0f);osg::Quat rotation(osg::Quat(roll, osg::Ve原创 2021-01-15 17:46:38 · 1775 阅读 · 3 评论 -
OSG旋转之欧拉角度旋转
左手坐标系下欧拉旋转定义欧拉旋转需要计算3个旋转分量的作用之和,即沿Z轴的航向(Heading)角度、沿X轴的俯仰(Pitch)角度以及沿Y轴的横滚(Roll)角度。原创 2021-01-15 17:46:05 · 650 阅读 · 0 评论 -
OSG视图相关类简单整理
osgViewer::Viewer osgViewer::Viewer为一个单独的场景scene保存一个单独的view,单视图的管理是通过osgViewer::Viewer来实现的。在osgViewer::Viewer中,只允许单视图,单视图可以同时包含多个相机渲染,也可以在多窗口中渲染。为了能够进行正常的渲染,还需要创建一个图形环境(默认的情况下已经创建了一个)。有时为了方便控制场景渲染,需要设置一个合适的图形环境窗口。osgViewer::Viewosg::View主要用来管理所有的相机视图。它原创 2021-01-15 17:44:26 · 668 阅读 · 0 评论 -
osg视图VPW矩阵变换总结
1、V 表示摄像机的观察矩阵(View Matrix),它的作用是把对象从世界坐标系变换到摄像机坐标系。因此,对于世界坐标系下的坐标值worldCoord(x0, y0, z0),如果希望使用观察矩阵VM 将其变换为摄像机相对坐标系下的坐标值localCoord(x’, y’, z’),则有:localCoord = worldCoord * VM此外,观察矩阵可以理解为“摄像机在世界坐标系下的变换矩阵的逆矩阵”,因此Camera类也专门提供了getInverseViewMatrix 这样一个函数,它的原创 2021-01-15 17:43:52 · 1305 阅读 · 0 评论