OSG开发笔记(一):OSG介绍、编译

若该文为原创文章,未经允许不得转载
原博主博客地址: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开发笔记(三):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模型固定路径动画

  持续补充中…

 

              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官网: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

使用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

       官网地址:https://www.freetype.org/download.html

步骤二:单独编译freeType2

      

步骤三:使用命令行编译

      

        

步骤四:修改OSG编译的freetype配置

        

        

        

使用qt命名行编译

      

       

       多跑几次make,最后不带-j的状态make一次,因为有些库前后依赖问题。

      

      

编译好的osg库下载(不带qt,不包括osgQt)

        csdn:https://download.csdn.net/download/qq21497936/11259638

编译好的osg库下载(带qt,包括osgQt)

        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

发布了255 篇原创文章 · 获赞 365 · 访问量 50万+

猜你喜欢

转载自blog.csdn.net/qq21497936/article/details/94428940