码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-11-19 20:59:01      阅读:5143      评论:0      收藏: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。 

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

标签:

原文地址:http://www.cnblogs.com/long3216/p/4978933.html

(0)
(2)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!