OSG(OpenSceneGraph)
OpenSceneGraph 学习笔记
醉逍遥_祥
just do IT
展开
-
OSG开发之模型移动、旋转、缩放
对模型最常用的操作莫过于移动了,有很多人不知道如何操作来移动一个模型。现在我们要明确一个事例,也就是说OSG把加入的模型默认都放在中点了,这非常的不好受。其实有些时候并不建议在场景中移动模型,替代的是模型在未加入场景之前位置就是完好的。 移动/旋转/缩放其实都是对矩阵进行操作,在OSG当中,矩阵可以当作一个特殊的结点加入到root当中,而矩阵下也可以另入结点,而加入的结点就会被这个矩阵处理过,比如...原创 2018-05-17 11:36:58 · 7230 阅读 · 1 评论 -
OSG 中智能指针陷阱 总结
先看下这个代码,有什么问题:#include <osg/Group>#include <osg/Node>#include <osg/Geode>osg::Geode *geode= NULL;osg::ref_ptr<osg::Group> root = NULL;void createNode(){ geode = new ...原创 2019-09-10 16:26:22 · 366 阅读 · 0 评论 -
OSG关键类(osg::Geode,osg::Drawable,osg::Shape,osg::Geometry)介绍
一、osg::Geode类类说明:Geode结点,是个几何结点,可以说是一个几何Group结点,一般的可绘制几何体都是通过它来传向root进行渲染。是OSG几何绘制的最高管理结点。1、Geode () Geode (const Geode &, const CopyOp ©op=CopyOp::SHALLOW_COPY)说明:构造函数,第二个构造函数意思为从一个已...原创 2019-03-19 14:54:38 · 4103 阅读 · 0 评论 -
OSG与其它编程语言扩展
osgswigosgswig - OSG与其它语言的结合靠的是 SWIG。SWIG 是一个用来用来将某种语言与其它语言相结合的,生成各种语言接口的优秀工具。在OSG中,osgswig当前支持 Python, Ruby 以及 Java bindings, 但是 SWIG 支持的其它语言 比如 Lua 和 C#是可选的。注意并不是所有的OSG特性都会被完好的被其它语言调用,这是由于SWIG的局...原创 2018-11-09 09:19:33 · 981 阅读 · 0 评论 -
OpenGL与OpenSceneGraph对比
将OpenGL中的功能与OSG对应功能进行列举: OpenGL function OpenSceneGraphimplementation glClear( GLbitfield mask ) osg::Camera::setClearMask(GLbitfield mask) osg::GraphicsContex...原创 2018-11-09 09:18:11 · 832 阅读 · 0 评论 -
OSG解析场景节点
往往需要分析加入到场景中模型的树结构,可以使用NodeVisitor,下面也提供了一种方法:void analyseGeode(osg::Geode *geode);void analysePrimSet(osg::PrimitiveSet*prset, const osg::Vec3Array *verts);void analyse(osg::Node *nd) { ///...原创 2018-11-09 09:14:44 · 828 阅读 · 0 评论 -
osgPlugins相关
OSG提供了很多的插件用来读取常用的数据格式,包括图像和模型等等。下面对插件的使用进行简单的描述。使用插件读取和保存数据当使用osgDB读取文件时,会自动根据文件的扩展名来到插件目录中寻找相应的插件,来实现。比如:> osgviewer cow.osg调用了osgdb_osg插件去读*.osg文件。> osgviewer model.flt调用了osgdb...原创 2018-11-09 09:03:40 · 1495 阅读 · 0 评论 -
OSG调试经验
1 尽量多的阅读文档. a) 可以在书籍菜单项下找到OSG的相关书籍,中英尽现。个人觉得必读的书有array的《最长的一帧》,《OSG三维渲染引擎设计与实现》,这是讲原理的,其它偏重于实际应用的书籍,择看便可。b) 熟悉中英文的OSG官方网站,英文链接,中文链接,中文论坛,英文上还有个 FAQ。c) 可以订阅右侧邮件列表,查看交流信息 mailing list archives 如果你是个...原创 2018-11-09 09:00:50 · 758 阅读 · 0 评论 -
OSG的插件
第三方插件众多,本文有些年龄了,直译的,里面介绍了一些插件的获取。VRML插件可以通过OpenVRML来下载VRML的源码,插件中需要该源码的编译结果。本文仅限于使用VRML0.14.3和VS2005版本,使用其它的VRML和VS版本也许会有不同,更高的VRML版本依赖了boost以及其它未知的改变。直接下载this package.里面包含一些预编译好的文件,我们并不使用,自己会重...原创 2018-11-09 08:59:04 · 1542 阅读 · 0 评论 -
在Visual Studio下编译OSG源码
写在前面:一切库都是由include,lib,bin组成,include中是头文件,lib中是链接文件,这两个是编译时候使用的,bin中是DLL文件这是运行时使用的,如果是静态链接库则没有DLL。因此OSG编译完成后也有这三个部分,OSG在使用CMAKE进行配置的时候,需要的第三方库也必有这三个部分,因为CMAKE是编译配置,所以只会让你配置include和lib,bin则运行时找到就可以了(往往...原创 2018-11-09 08:56:32 · 739 阅读 · 0 评论 -
osgUtil::DelaunayTriangulator 类进行模型有限元三角网格划分
osgUtil::DelaunayTriangulator类建立约束的delaunay(德洛内)三角网,delaunay(德洛内)三角网主要用于基于离散点数据构建三维表面。如经常用于构建地形表面。1、生成离散点数据2、三角化处理3、将三角化的图元添加到叶节点中osg::ref_ptr<osg::Geode> CreateModule_DelaunayTriangula...原创 2019-01-24 14:46:52 · 2362 阅读 · 1 评论 -
OSG载入模型部分阴影问题
OSG开发中, 有时会遇到载入模型后,模型部分显示是阴影的情况。这一般是没正确设置光源或者是OSG默认渲染的原因。解决方案: 1.关闭光源:node->getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::OFF| StateAttribute::OVERRIDE); ...原创 2018-08-02 16:16:09 · 1225 阅读 · 0 评论 -
浅谈OSG与游戏引擎
一、前言3D游戏就是三维游戏,3D 中的D是Dimensional(维)的缩写。三维游戏中的点的位置由三个坐标决定的[1]。客观存在的现实空间就是三维空间,具有长、宽、高三种度量。三维游戏(3D游戏)是相对于二维游戏(2D游戏)而言的,因其采用了立体空间的概念,所以更显真实,而且对空间操作的随意性也较强。也更容易吸引人。特点是游戏的视角可以随意变动,具有较强的视觉冲击力。而3D 游戏中的游戏引擎则...原创 2018-07-11 17:45:57 · 5104 阅读 · 0 评论 -
OSG开发之节点矩阵变换
一、基础知识1. 线性代数, 矩阵变换2. 空间几何, 向量3. C++知识4. SOG 框架二、OSG矩阵节点(osg::MatrixTransform)介绍两个常用函数:1. void setMatrix(const Matrix& mat) //设置变换矩阵注: 遵循SRT(Scale, Rotate, Translate)变换规则, 缩放-旋转-平移2. Matrix&...原创 2018-05-31 10:45:47 · 1894 阅读 · 2 评论 -
OSG内置几何体
osg::ref_ptr<osg::Node> createShape(){ osg::ref_ptr<osg::Geometry> geom = new osg::Geometry(); osg::ref_ptr<osg::Geode> geode = new osg::Geode(); float radius = 0.08f; float he...原创 2018-05-23 17:12:05 · 690 阅读 · 0 评论 -
OSG渲染模式设置实现半透明效果
一、代码osg::ref_ptr<osg::Node> createSceneGraph(){ osg::ref_ptr<osg::Geometry> geom = new osg::Geometry(); osg::ref_ptr<osg::Vec3Array> v = new osg::Vec3Array(); geom->setVer...原创 2018-05-23 16:55:02 · 2500 阅读 · 0 评论 -
OSG开发入门 HelloWorld实例
一、代码osg::ref_ptr<osg::Node> createSceneGraph(){ osg::ref_ptr<osg::Geometry> geom = new osg::Geometry(); osg::ref_ptr<osg::Vec3Array> v = new osg::Vec3Array(); geom->setVer...原创 2018-05-23 10:25:25 · 2414 阅读 · 0 评论 -
OSG 学习之粒子系统
文章目录说明1. 粒子系统简介2. 雨雪效果说明示例来源于《OSG程序设计教程》资源下载:https://download.csdn.net/download/qq_35097289/10609392https://download.csdn.net/download/qq_35097289/104889281. 粒子系统简介 粒子系统是用于不规则模...原创 2019-10-08 16:55:58 · 1441 阅读 · 0 评论