OSG 3.0 三维视景仿真技术开发详解

第一章 OSG三维渲染引擎概述

OSG的主要功能包括以下几个方面:

1. 可以实时高效地绘制和控制使用建模软件所建立的3D模型, 如3DMAX、MAYA、Creator等制作的3D模型, 该功能是场景渲染的基本功能。

2. 支持多种外设, 如操作杆、游戏柄、轨迹球、方向盘、键盘鼠标等。

3. 除了传统的二维屏幕上进行三维展示外, OSG还可以完成红绿偏移的立体投影, 实现真正的立体展示。

4. 支持骨骼动画、关键帧动画、颜色动画等各种流行的动画。

OSG的相关扩展:

OSG的相关扩展,OSG针对每个特定应用,也有很多的开发者进行开发和完善,难能可贵的是然后还进行了开源。本文的目的是让大家能够站在巨人肩上,可以选择在能找到的成熟的开源库基础上开发。   ----FreeSouth注。

  1. osgBullet: OSG和 Bullet 物理引擎的结合。
  2. osgCairo: OSG 和 Cairo API 的结合,Cairo是一个2D图形库。
  3. osgEarth: 基于分页数据的功能强大的开源地球地形系统。.
  4. osgEphemeris: 模型星象数据的开源工程。
  5. osgOcean: 用来模拟海洋。
  6. osgRiver: 有爱好者基于osgOcean修改的模拟河流的库。
  7. osgPPU: 一个基于OSG的post-render的库。
  8. osgToy and osgVRPN:  OSG实用库,包含OSG和VRPN的结合。
  9. osgWorks: 一个OSG的工具库,包含很多实用类。
  10. osgTransparencyToolkit: 一个实现了多重透明的OSG实用工具库。
  11. osg.JS: 使用JS实现的OSG。
  12. osgAndroid: 在Android上开发OSG程序的工具库。
  13. osgRecipes: array主导的,将OSG与AntTweakBar、AssImp、Awesomium、FreeImage、Kinect、PhysX、Spark、TUIO、VLC进行结合的集合库。
  14. osgExp: 用于在3DMAX中将模型导出成OSG/IVE。
  15. osgNV: 为OSG提供对CG语言的支持,提供一些示例。
  16. osgART: OSG的增强现实库。
  17. osgGLSL: OSG写的Shader的一些示例。
  18. osgToy: toys for OSG。
  19. osgVisual: 一个地形可视化库,里面包含了OSG和sliverning, triton相结合的功能。
  20. osgXI: array主导的,包含了很多GPU效果和游戏开发组件,也包含对CG以及maya导出的支持。
  21. delta3D: 美国海军研院所投入研发的基于OSG的军事仿真库。
  22. osghimmel: OSG另一个和天空星象模拟的库。
  23. osgEphemeris: 天体和星象模拟软件。
  24. flightgear: 基于OSG的极为专业的飞行模拟软件,有osgEarth的版本。
  25. osgcal: OSG和cal结合的库。CAL是做骨骼动画的。
  26. osgHaptics: OSG和Haptics结合的库。Haptics是一个触觉相关的系统。
  27. osgVirtualEnvironment: Configurable, device-independent virtual reality engine built on top of OpenSceneGraph.
  28. osgAudio: 3D声音库,将OSG与FMOD结合。
  29. osgAL: 3D声音库,将OSG与openAL结合。
  30. osgModeling: array主导的,使用OSG建贝塞尔曲面等各种偏数学模型的库。
  31. osgode: 将osg与ODE相结合的库,ODE是个物理引擎。
  32. osgsmallcity: 如其名所述,模型一个小城市。
  33. osgpango: osg和pango的结合,pango是个专业的文字渲染库,比如:可以渲染跳动的文字等。

OSG的学习资料

1. 《OpenSceneGraph参考手册》(OpenSceneGraph Refrence Manuals)

2. 《OpenSceneGraph快速入门指南》(OpenSceneGraph Quick Start Guide)

3. 《最长的一帧》

4. 《OpenSceneGraph三维渲染引擎设计与实践》

5. 《OpenSceneGraph 3.0 Beginner‘s Guide》

6. 《OpenSceneGraph三维渲染引擎编程指南》

7. 《OpenSceneGraph程序设计》

OSG的编译与安装

源码包下载: http://www.openscenegraph.org/downloads/developer_releases/OpenSceneGraph-3.2.0.zip

第三方库下载: http://trac.openscenegraph.org/projects/osg/wiki/Downloads/Dependencies

数据文件下载: http://trac.openscenegraph.org/projects/osg/wiki/Downloads/SampleDatasets

CMAKE 编译配置:

勾选以下可选项:

BUILD_MFC_EXAMPLE

BUILD_OSG_APPLICATION

BUILD_OSG_EXAMPLES

配置3rdParty:

COLLADA_DOM_ROOT : X:\3rdparty\include\1.4\dom

COLLADA_ZLIB_LIBRARY : X:\3rdparty\lib/zlib1.lib

CURL_INCLUDE_DIR : X:\3rdparty\include

CULR_LIBRARY : X:\3rdparty\lib\curllib.lib

CULR_LIBRARY_DEBUG : X:\3rdparty\lib\curllibd.lib

FREETYPE_INCLUDE_DIR : X:\3rdparty\include

FREETYPE_INCLUDE_DIR_freetype2 : X:\3rdparty\include

FREETYPE_INCLUDE_DIR_ft2build : X:\3rdparty\include

FREETYPE_LIBRARY : X:\3rdparty\lib\freetype237.lib

FREETYPE_LIBRARY_DEBUG : X:\3rdparty\lib\freetype237d.lib

GIFLIB_INCLUDE_DIR : X:\3rdparty\include

GIFLIB_LIBRARY : X:\3rdparty\lib\giflib.lib

GIFLIB_LIBRARY_DEBUG : X:\3rdparty\lib\giflibd.lib

GLUT_INCLUDE_DIR : X:\3rdparty\include

GLUT_LIBRARY : X:\3rdparty\lib\glut32.lib

GLUT_LIBRARY_DEBUG : X:\3rdparty\lib\glut32D.lib

GLUT_glut_LIBRARY : X:\3rdparty\lib\glut32.lib

JPEG_INCLUDE_DIR : X:\3rdparty\include

JPEG_LIBRARY : X:\3rdparty\lib\libjpeg.lib

JPEG_LIBRARY_DEBUG : X:\3rdparty\lib\libjpegD.lib

PNG_INCLUDE_DIR : X:\3rdparty\include
PNG_LIBRARY : X:\3rdparty\lib\libpng13.lib

PNG_LIBRARY_DEBUG : X:\3rdparty\lib\libpng13D.lib

TIFF_INCLUDE_DIR : X:\3rdparty\include

TIFF_LIBRARY : X:\3rdparty\lib\libtiff.lib

TIFF_LIBRARY_DEBUG : X:\3rdparty\lib\libtiffD.lib

ZLIB_INCLUDE_DIR : X:\3rdparty\include

ZLIB_LIBRARY : X:\3rdparty\lib\zlib1.lib

ZLIB_LIBRARY_DEBUG : X:\3rdparty\lib\zlib1d.lib

注: CMAKE -G "Visual Studio 12 2013"

OSG的组织结构

OSG采用命名空间的开发模式, 每个命名空间代表一大类功能, 如osgDB、osgViewer、osgFX、osgShadow等。总的来说, OSG的组成部分分为以下几个方面:

OSG 核心库: 提供了OSG渲染绘制以及进程等基本功能;

OpenThreads: OSG使用OpenThreads完成进程管理;

OSG 库: 提供渲染绘制最基本的功能, 以及场景结点管理、图形绘制以及渲染状态管理等功能;

osgDB库: 提供对模型的读写功能, 与读写相关的功能都使用此类调度, 包括数据分页管理等功能;

osgGA库: 提供事件响应功能, 通过与操作系统交互, 使得程序可以响应外来事件, 如键盘、鼠标、方向盘等各类事件;

osgViewer库: 提供OSG程序中的框架, 可理解为场景管理库;

osgUtil库: 提供一些实用的绘制优化等功能, 如迪洛尼三角面绘制功能、法线生成功能等;

结点工具箱: 扩展OSG核心功能, 为OSG渲染场景提供某些特效和高级功能, 如动画、阴影、大地形、文字显示等;

osgAnimation: 场景动画处理库;

osgFX: 场景特效库;

osgManipulator: 提供一些操作器, 如TrackBall、驾驶等;

osgParticle: 粒子系统库, 提供一些实用功能, 如雨效、雪效、火焰等;

osgShadow: 提供场景阴影绘制功能, 并为多种阴影绘制技术给予支持;

osgSim: 仿真工具库, 包括DOF结点、点光源等诸多与虚拟仿真相关功能;

osgTerrain: 地形处理库, 用于实现读取和显示实时地形;

osgText: 文字处理库;

osgVolume: 实现体渲染, 并提供各种体渲染的技术支持;

osgWidget: osg的UI库, 提供按钮、标签栏等常用UI设计功能;

osgIntrospection: 封装OSG与其他语言交互的实现代码;

osg文件读写插件: 提供OSG所支持的模型格式, 几乎包括了所有图片与3D模型格式。

OSG常用工具

osgViewer: 模型查看工具

osgVersion: 库版本检测

osgArchive: 压缩工具

osgConv: 格式转换与压缩工具

第二章 OSG应用基础

事件响应

基本几何图元

模型读写

模型控制

超级指针

第三章人机交互与动画控制

OSG事件响应机制

  大多数应用程序都响应键盘和鼠标事件, 键盘和鼠标事件是操作系统的标准事件, 系统捕获这些事件之后将其放入消息队列中, 然后由个应用程序进程处理。

动画

  MD2模型格式是大型网络游戏中常用的模型格式, OSG有支持读取MD2格式的插件。

  关键帧动画, 也称顶点动画, 是通过绘制每一帧来形成动画, 每一帧其实就是模型特定姿态的一个"快照"。通过在帧间进行插值, 可以得到平滑的动画效果。这有点像把每个动作画在纸上, 最后翻阅而形成动画。

  骨骼动画, 是指模型具有互相连接的“骨骼”组成的骨架结构,通过改变骨骼的朝向和位置来为模型生成动画。骨骼动画比顶点动画要求更高的处理器性能,但同时它也具有更多的优点,骨骼动画可以更容易、更快捷地创建。需要注意的是, 只有矩阵是无法形成动画的, 还需要蒙皮, 加之蒙皮的运动, 带动蒙皮, 就形成动画了。

  OSG定义骨骼动画由三部分组成: 骨骼、蒙皮、骨骼运动。

  骨架(osgAnimation::Skeleton): 存放骨骼的骨架, 每一个骨骼的根节点, 都要依附于一个骨架。

  骨头(osgAnimation::Bone): 真正组成整个骨骼动画的矩阵变换。

  运动(osgAnimation::BasicAnimationManager): 用来管理骨骼运动的类, 每一种运动对应一个Channel。

  蒙皮(osgAnimation::RigGeometry): 定义蒙皮, 通过osgAnimation::VertexInfluenceMap来使骨骼和蒙皮进行关联。

 第四章 漫游、跟随与碰撞检测

  操作器几乎是任何VR项目的基础。漫游器是操作器中很重要的一种, 对漫游器有一个最重要的要求, 即按照用户要求的方式进行漫游。

  OSG中场景的核心管理器是Viewer, 而漫游时需要响应事件, 如鼠标移动, 场景也会随之变化, 响应事件的类是osgGA::GUIEventHandler。

时间: 2024-11-05 11:31:17

OSG 3.0 三维视景仿真技术开发详解的相关文章

GL-Studio GL Studiov3.0.2 1CD(视景仿真完整好用 +Y圆方橱柜

Paradigm Sysdrill v2009 1CD\Parasoft.C.Plus.Plus.Test.Professional.v6.7.4.0.Incl.Patch.and.Keymaker-ZWT\PDMS.v12.0.SP6-ISO 1DVD\VPstudio v10.03C8 1CD(包括中文版)\膜结构设计软件Easy 8.2\ 187\MSC.MD.NASTRAN.V2010\MSC.MD.Nastran.v2010.1.3-ISO 1DVD\MSC.Patran.v2010-

《Linux设备驱动开发详解:基于最新的Linux 4.0内核》china-pub预售

<Linux设备驱动开发详解:基于最新的Linux 4.0内核>china-pub今日上线进入预售阶段: http://product.china-pub.com/4733972 推荐序一 技术日新月异,产业斗转星移,滚滚红尘,消逝的事物太多,新事物的诞生也更迅猛.众多新生事物如灿烂烟花,转瞬即逝.当我们仰望星空时,在浩如烟海的专业名词中寻找,赫然发现,Linux的生命力之旺盛顽强,斗志之昂扬雄壮,令人称奇.它正以摧枯拉朽之势迅速占领包括服务器.云计算.消费电子.工业控制.仪器仪表.导航娱乐等

《Linux设备驱动开发详解:基于最新的Linux 4.0内核》china-pub 预售

<Linux设备驱动开发详解:基于最新的Linux 4.0内核>china-pub今日上线进入预售阶段: http://product.china-pub.com/4733972 推荐序一 技术日新月异,产业斗转星移,滚滚红尘,消逝的事物太多,新事物的诞生也更迅猛.众多新生事物如灿烂烟花,转瞬即逝.当我们仰望星空时,在浩如烟海的专业名词中寻找,赫然发现,Linux的生命力之旺盛顽强,斗志之昂扬雄壮,令人称奇.它正以摧枯拉朽之势迅速占领包括服务器.云计算.消费电子.工业控制.仪器仪表.导航娱乐等

《Linux设备驱动开发详解(基于最新4.0内核)》前言

Linux从未停歇脚步.Linus Torvalds,世界上最伟大的程序员之一,Linux内核的创始人,Git的缔造者,仍然在没日没夜的合并补丁,升级内核.做技术,从来没有终南捷径,拼的就是坐冷板凳的傻劲. 这是一个连阅读都被碎片化的时代,在这样一个时代,人们趋向于激进.浮躁.内心的不安宁使我们极难静下心来研究什么.我见过许许多多的Linux工程师,他们的简历书写着"精通"Linux内核,有多年的工作经验,而他们的"精通"却只是把某个寄存器从0改成1,从1改成0的不

struts2.0中Action的对象生命周期详解!!(转)

原文出处:http://blog.csdn.net/wxy_g/article/details/2071662 有很多人问Struts2.0中的对象既然都是线程安全的,都不是单例模式,那么它究竟何时创建,何时销毁呢? 这个和struts2.0中的配置有关,我们来看struts.properties ### if specified, the default object factory can be overridden here ### Note: short-hand notation is

Java6.0中Comparable接口与Comparator接口详解

Java6.0中Comparable接口与Comparator接口详解 说到现在,读者应该对Comparable接口有了大概的了解,但是为什么又要有一个Comparator接口呢?难道Java的开发者都吃饱撑着没事做吗? 再谈Comparator接口之前,大家应该先了解一个叫“策略模式”的东东.一下是百度百科对策略模式的描写: 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化.(原文:The Strategy Pattern

Android开发经典书籍下载——《Android 4高级编程》《疯狂Android讲义》《Android应用开发详解(郭宏志)》《Android应用案例开发大全》《Android 3D游戏开发技术》

这是我收集的关于android开发方面的经典书籍,高清PDF电子版,可以在我的百度网盘免费下载,希望对需要的朋友有帮助. 目录: <Android 4高级编程>(附完整源代码) <疯狂Android讲义> <Android应用开发详解(郭宏志)> <Android应用案例开发大全> <Android 3D游戏开发技术> <Android内核剖析 柯元旦> <深入理解Android  卷1> <深入理解Android

MySQL Server 5.0–安装及配置/MySQLInstanceConfig.exe用法详解

MySQL Server 5.0–安装及配置/MySQLInstanceConfig.exe用法详解 http://blog.csdn.net/feihong247/article/details/7791105 配置MySQL步骤: 1.       运行MySQL Server安装目录下bin/MySQLInstanceConfig.exe.出现如下所示的向导界面 . 点击"Next"进入下一步. 2.       如果MySQLInstanceConfig在MySQL Serve

【甘道夫】HBase(0.96以上版本)过滤器Filter详解及实例代码

说明: 本文参考官方Ref Guide,Developer API和众多博客,并结合实测代码编写,详细总结HBase的Filter功能,并附上每类Filter的相应代码实现. 本文尽量遵从Ref Guide中"9.4. Client Request Filters"的行文顺序,便于读者对比查看,但内容比官方文档更加详实. 欢迎转载,请注明来源: http://blog.csdn.net/u010967382/article/details/37653177 目录: 引言 -- 参数基础