OSG开发专栏(点击传送门)
上一篇:无
下一篇:《OSG开发笔记(二):OSG帮助文档编译》
前言
需要用到三维立体变换、三维球体等三维开发,之前准备使用opengl,但是opengl较为底层,综合考量选型osg。
OSG概述
简介
OpenSceneGraph(简称OSG)使用OpenGL技术开发,是一套基于C++平台的应用程序接口(API),它让程序员能够更加快速、便捷地创建高性能、跨平台的交互式图形程序。它作为中间件(middleware)为应用软件提供了各种高级渲染特性,IO,以及空间结构组织函数;而更低层次的OpenGL 硬件抽象层(HAL)实现了底层硬件显示的驱动。
优势
OpenGL技术为图形元素(多边形、线、点……)和状态(光照、材质、阴影……)的编程提供了标准化的接口。而OSG开发的主要意义在于,将3D场景定义为空间中一系列连续的对象,以进行三维世界的管理。正是由于场景及其参数定义的特点,通过状态转化、绘图管道和自定制等操作,OSG还可以用于优化渲染性能。
从系统开发人员的角度看,相比工业标准OpenGL 或其它的图形库,OSG的优点显而易见。除了开源和平台无关性以外,它封装并提供了数量众多的提升程序运行时性能的算法、针对包括分页数据库在内的几乎所有主流数据格式的直接数据接口、以及对脚本语言系统Python 和Tcl 的支持,特别的,支持脚本语言系统的意义不仅限于用户可以使用除C++语言以外的工具进行图形系统的开发,事实上,对弱类型计算机语言的支持将突破现有交互式图形系统在人-机交互性能方面的最终限制。
OSG采用以下思想和工具进行构建:
- ANSI标准C++;
- C++标准模板库(STL);
- 设计模式(Design patterns)。
这些工具使得OSG的开发者可以在自己喜好的平台上进行开发,并且依据用户所要求的平台进行配置。
OSG支持骨骼动画、关键帧动画等各种流行的动画,它可以把3DMAX建立的动画模型转化成OSG格式导入到项目中进行控制,osgAnimation库中有大量的动画实用类。在OSG相关扩展中,最引人注目的是osgEarth、VPB与osgOcean,它们可以帮助开发人员完成一个功能强大且完善的三维地形展示系统,osgEarth功能类似于GoogleEarth,且地形的实时生成效率可媲美GoogleEarth。osgOcean是OSG的扩展海洋模块,特点是可以逼真地仿真大面积水域,也可以在此基础上做二次开发。可实现的效果如下图:
硬件需求
如今的OSG 已经可以在多种硬件平台和操作系统上运行,并且能够在大部分计算机系统上正常使用。
处理器:OSG 可以在大部分的CPU 上编译通过。OSG 具备线程安全性,并且可以有效利用多处理器和双核结构的特性。OSG 可以在32 位或者64 位处理器上运行通过。
图形:你的计算机系统需要配置一块AGP 或者PCI 总线的图形显示卡。OSG可以在大部分用于建模,仿真和游戏的专业级或大众级图形设备上运行。可以运行OSG 的图形设备必须高效地支持OpenGL,因此你应当从设备商处获得最新的OpenGL 设备驱动程序。OSG 对显卡RAM 的需求因用户的使用而异,但是256MB 应当足够了。OSG 可以在多管(multi-pipe)显示系统上运行,并且可以利用多显卡来提升渲染速度。
RAM:最小的系统RAM 内存需求是由显示数据的数量和类型决定的。推荐配置为1GB,大型数据集的开发可能需要更多的内存支持。
磁盘:和RAM 一样,磁盘空间的需求大小由数据量决定。对于任何程序来说,更高速和更大容量的磁盘无疑可以减少数据读取的时间。
软件需求
可以运行OSG的平台需要具备OpenGL的支持能力,以及C++的编译环境,支持OSG的系统包括Solaris,IRIX,Windows,Mac OSX,HP-UX,Sony Platystation等等,不过XBox除外。 和OpenGL类似,OSG的核心并没有提供窗口系统的功能,但是其扩展功能里包含osgviewer可以很好地支持各种显示和操控。当然用户也可以自由选择所需的图形开发接口,如GLUT,X11/Motif,Win32,MacOS X,Qt,wxWindows,Fox等。
笔者主要是Qt项目。
OSG编译
下载
当最新版本为:3.6.3,编译的话存一些奇怪的问题,估计是代码变化了,但是3.4.0就没有这些问题,所以下载3.4.0版本。
osg官网:Home
3.6.3 csdn下载:OpenSceneGraph-OpenSceneGraph-3.6.3.rar-C++代码类资源-CSDN下载
3.4.0 csdn下载:OpenSceneGraph-OpenSceneGraph-3.4.0.rar-C++代码类资源-CSDN下载
使用cmake配置目标工程
补充:附加qt5.9.3的mingw32版本
步骤一:修改源码CMakeList
set(DESIRED_QT_VERSION "5" CACHE STRING "")
set(CMAKE_PREFIX_PATH "C:\Qt\Qt5.9.3\5.9.3\mingw53_32" CACHE PATH "")
步骤二:填入Qt5Widget头文件,configure会找到其他
补充(2019年7月16日补充):添加字体插件freetype
添加freetype插件,不添加该插件会在给场景中添加文字无法显示,如下图:
步骤一:下载freetType2
官网地址:FreeType Downloads
步骤二:单独编译freeType2
步骤三:使用命令行编译
步骤四:修改OSG编译的freetype配置
使用qt命名行编译
多跑几次make,最后不带-j的状态make一次,因为有些库前后依赖问题。
编译好的osg库下载(不带qt,不包括osgQt)
csdn:osg3.4.0-win-mingw32-Lib.rar-QT其他资源-CSDN下载
编译好的osg库下载(带qt,包括osgQt)
csdn:osg3.4.0.rar-QT其他资源-CSDN下载
参考资料
OSG学习记录一_wangyezidong的专栏-CSDN博客
上一篇:无
下一篇:《OSG开发笔记(二):OSG帮助文档编译》
原博主博客地址:长沙红胖子Qt C++ Linux Arm_长沙红胖子_CSDN博客-Qt开发,图形图像处理,OpenCV图像处理领域博主
原博主博客导航:红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中..._长沙红胖子Qt C++ Linux Arm-CSDN博客_qt 红胖子
本文章博客地址:OSG开发笔记(一):OSG介绍、编译_长沙红胖子Qt C++ Linux Arm-CSDN博客_osg