若该文为原创文章,未经允许不得转载
原博主博客地址:https://blog.csdn.net/qq21497936
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/94428940
目录
前言
OSG概述
简介
优势
硬件需求
软件需求
OSG编译
下载
使用cmake配置目标工程
补充:附加qt5.9.3的mingw32版本
步骤一:修改源码CMakeList
步骤二:填入Qt5Widget头文件,configure会找到其他
补充(2019年7月16日补充):添加字体插件freetype
步骤一:下载freetType2
步骤二:单独编译freeType2
步骤三:使用命令行编译
步骤四:修改OSG编译的freetype配置
使用qt命名行编译
编译好的osg库下载(不带qt,不包括osgQt)
编译好的osg库下载(带qt,包括osgQt)
参考资料
《OSG开发笔记(一):OSG介绍、编译》
《OSG开发笔记(二):OSG帮助文档编译》
《OSG开发笔记(三):OSG使用osgQt嵌入Qt应用程序》
《OSG开发笔记(四):OSG不使用osgQt重写类嵌入Qt应用程序》:
《OSG开发笔记(五):OSG场景理解与基础类概述》
《OSG开发笔记(六):OSG内存管理》
《OSG开发笔记(七):OSG复现OpenGL入门示例和OSG坐标系》
《OSG开发笔记(八):OSG模型文件存储与读取》
《OSG开发笔记(九):OSG模型的基本操作之添加/删除、显示/隐藏、开关节点开/关》:
《OSG开发笔记(十):OSG模型的变换之平移、旋转和缩放》
《OSG开发笔记(十一):OSG渲染状态与2D纹理映射》
《OSG开发笔记(十二):OSG基本几何图形、内置几何类型》
《OSG开发笔记(十三):OSG三维纹理映射(体渲染)》
《OSG开发笔记(十四):OSG交互》
《OSG开发笔记(十五):OSG光照》
《OSG开发笔记(十六):OSG视口、相机和视点》
《OSG开发笔记(十七):OSG中的相机移动》
《OSG开发笔记(十八):OSG鼠标拾取pick、拽托球体以及多光源》
《OSG开发笔记(十九):OSG文字显示》
《OSG开发笔记(二十):OSG使用HUD显示文字》
《OSG开发笔记(二十一):OSG使用HUD绘制图形以及纹理混合模式》
《OSG开发笔记(二十二):OSG场景背景》
《OSG开发笔记(二十三):Qt使用QOpenGLWidget渲染OSG和地球仪》
《OSG开发笔记(二十四):OSG漫游之平移、转向和低抬头》
《OSG开发笔记(二十五):OSG漫游之CS移动、碰撞检测与跳跃》
《OSG开发笔记(二十六):OSG漫游之上下楼梯》
《OSG开发笔记(二十七):OSG路径漫游之录制播放固定路径动画》
《OSG开发笔记(二十八):OSG模型固定路径动画》
持续补充中…
需要用到三维立体变换、三维球体等三维开发,之前准备使用opengl,但是opengl较为底层,综合考量选型osg。
OpenSceneGraph(简称OSG)使用OpenGL技术开发,是一套基于C++平台的应用程序接口(API),它让程序员能够更加快速、便捷地创建高性能、跨平台的交互式图形程序。它作为中间件(middleware)为应用软件提供了各种高级渲染特性,IO,以及空间结构组织函数;而更低层次的OpenGL 硬件抽象层(HAL)实现了底层硬件显示的驱动。
OpenGL技术为图形元素(多边形、线、点……)和状态(光照、材质、阴影……)的编程提供了标准化的接口。而OSG开发的主要意义在于,将3D场景定义为空间中一系列连续的对象,以进行三维世界的管理。正是由于场景及其参数定义的特点,通过状态转化、绘图管道和自定制等操作,OSG还可以用于优化渲染性能。
从系统开发人员的角度看,相比工业标准OpenGL 或其它的图形库,OSG的优点显而易见。除了开源和平台无关性以外,它封装并提供了数量众多的提升程序运行时性能的算法、针对包括分页数据库在内的几乎所有主流数据格式的直接数据接口、以及对脚本语言系统Python 和Tcl 的支持,特别的,支持脚本语言系统的意义不仅限于用户可以使用除C++语言以外的工具进行图形系统的开发,事实上,对弱类型计算机语言的支持将突破现有交互式图形系统在人-机交互性能方面的最终限制。
OSG采用以下思想和工具进行构建:
这些工具使得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项目。
当最新版本为:3.6.3,编译的话存一些奇怪的问题,估计是代码变化了,但是3.4.0就没有这些问题,所以下载3.4.0版本。
osg官网:http://www.openscenegraph.org/
3.6.3 csdn下载:https://download.csdn.net/download/qq21497936/11259256
3.4.0 csdn下载:https://download.csdn.net/download/qq21497936/11259525
set(DESIRED_QT_VERSION "5" CACHE STRING "")
set(CMAKE_PREFIX_PATH "C:\Qt\Qt5.9.3\5.9.3\mingw53_32" CACHE PATH "")
添加freetype插件,不添加该插件会在给场景中添加文字无法显示,如下图:
官网地址:https://www.freetype.org/download.html
多跑几次make,最后不带-j的状态make一次,因为有些库前后依赖问题。
csdn:https://download.csdn.net/download/qq21497936/11259638
csdn:https://download.csdn.net/download/qq21497936/11261902
https://blog.csdn.net/wangyezidong/article/details/80605556
原博主博客地址:https://blog.csdn.net/qq21497936
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/94428940