| 
 
 济南友泉软件有限公司  
目前,国内CAx(CAD/CAE/CAM)软件开发大都采用OpenCASCADE、VTK等开源软包作为CAx前后处理器的技术原型:OpenCASCADE提供了丰富的几何造型相关的算法实现;VTK则提供了强大而实用的科学计算后处理相关的算法实现。  
但是,长期以来,OpenCASCADE、VTK等开源库的图形渲染在性能、质量等方面并不尽如人意。因此,像是三维几何建模软件FreeCAD的图形渲染既没有采用OpenCASCADE的渲染引擎,也没有采用VTK的渲染引擎,而是使用了OpenInventor (具体来说是Coin3D)。  
基于以上原因,需要探索能够满足行业需求的、专业化的图形渲染引擎。这就是笔者研究OpenSceneGraph为代表的图形渲染引擎的最主要的原因。  
OpenSceneGraph是一个跨平台的开源图形开发包,它为诸如飞行器仿真,游戏,虚拟现实、科学计算可视化等高性能图形应用程序开发而设计。它基于场景图的概念,它提供一个在OpenGL之上的面向对象的框架,从而能把开发者从实现和优化底层图形的调用中解脱出来,并且它为图形应用程序的快速开发提供很多附加的实用工具。  
本文详细描述WIndows 10下使用Visual Studio 2019编译OpenSceneGraph 3.6.5的操作流程。  
 
零、环境配置 
| 操作系统 | WIndows 10 64bit |  | 编译器 | Visual Studio 2019 Community Edition |  | Git | 2.29.1 |  | CMake | 3.15.0-rc2 |  | OpenScenGraph | 3.6.5 |  | 工作目录 | D:\YouQuan\CaeFrameworks\OpenSceneGraph |   
 
 
 
 
 
 
 
一、编译第三方库 
OpenSceneGraph部分插件依赖于zlib、libpng、libjpeg、libtiff、GLUT、GIFLIB、cURL等第三方库,因此需要首先完成这些第三方依赖库的编译。  
需要指出的是,针对某些特定平台,OpenSceneGraph Dependencies官网已经提供了这些第三方依赖包。  
1.1 获取项目构建文件 
cd D:\YouQuan\CaeFrameworks\OpenSceneGraph
git clone https://github.com/bjornblissing/osg-3rdparty-cmake.git
cd ./osg-3rdparty-cmake/
git checkout -b v1.0 v1.0
  
1.2 获取代码 
切换到D:\YouQuan\CaeFrameworks\OpenSceneGraph\3rdparty目录,按以下方法拉取第三方库源码  
| zlib | 1.2.11 | git clone --depth 1 --single-branch --branch v1.2.11 https://github.com/madler/zlib.git zlib |  | libpng | 1.6.37 | git clone --depth 1 --single-branch --branch v1.6.37 git://git.code.sf.net/p/libpng/code.git libpng |  | libjpeg |  |   下载libjpeg http://www.ijg.org/files/jpegsr9d.zip  解压jpegsr9d.zip  将jpegsr9d重命名为libjpeg   |  | libtiff | 4.2,0 | git clone --depth 1 --single-branch --branch v4.2.0 https://gitlab.com/libtiff/libtiff.git tiff |  | FreeType | 2.10.4 | git clone --depth 1 --single-branch --branch VER-2-10-4 git://git.sv.nongnu.org/freetype/freetype2.git freetype |  | GLUT |  |   git clone https://github.com/markkilgard/glut.git glut  cd ./glut  git reset --hard 8cd96cb440f1f2fac3a154227937be39d06efa53    |  | GIFLIB | 5.2.1 | git clone --depth 1 --single-branch --branch 5.2.1 https://git.code.sf.net/p/giflib/code.git giflib |  | cURL | 7.76.1 |   下载 cURL https://curl.se/download/curl-7.76.1.zip  解压curl-7.76.1.zip  重命名curl-7.76.1为curl   |   
 
 
 
 
 
 
 
 
 
 
 
 
 
1.3 构建项目 
  
   
1.4 编译、安装 
在Visual Studio 2019中构建"ALL_BUILD"项目完成编译;构建"INSTALL"项目完成安装。  
   
 
二、编译OpenSceneGraph 
 
2.1 拉取代码 
cd D:\YouQuan\CaeFrameworks\OpenSceneGraph
git clone https://github.com/openscenegraph/OpenSceneGraph.git
cd ./OpenSceneGraph/
git checkout -b OpenSceneGraph-3.6.5 OpenSceneGraph-3.6.5  
2.2 构建项目 
配置"ACTUAL_3RDPARTY_DIR"为“D:\YouQuan\CaeFrameworks\OpenSceneGraph\INSTALL”  
   
配置“CMAKE_INSTALL_PREFIX”为"D:\YouQuan\CaeFrameworks\OpenSceneGraph\INSTALL"?  
   
 
2.3 编译安装 
构建“ALL_BUILD”项目,可能会出现编译“Plugin curl”报如下错误,  
解决方法是将"D:\YouQuan\CaeFrameworks\OpenSceneGraph\3rdparty\curl\include"下的文件拷贝到"D:\YouQuan\CaeFrameworks\OpenSceneGraph\INSTALL\include\curl",然后修改"Plugin curl"工程属性,添加"D:\YouQuan\CaeFrameworks\OpenSceneGraph\INSTALL\include\curl"头文件搜索路径。  
   
??构建“INSTALL”项目,完成安装。  
   
2.4 测试 
从OpenSceneGraph官网下载测试数据OpenSceneGraph-Data-3.4.0.zip,使用present.exe程序进行测试,如下  
   
?  
文献资料 
杨化斌. Open Scene Graph 3.0 三维视景仿真技术开发详解. 国防工业出版社,  
网络资料 
OpenSceneGraph http://www.openscenegraph.org  
osg-3rdparty-cmake https://github.com/bjornblissing/osg-3rdparty-cmake  
OpenCASCADEhttps://www.opencascade.com/ https://www.opencascade.com/?VTKhttps://vtk.org/ https://vtk.org/  
FreeCADhttps://www.freecadweb.org/ https://www.freecadweb.org/  
附录A: 编译常见问题 
 
                
        
        
    
 
 |