基于OSG的海面仿真

OSG中国官网 http://www.osgchina.org/

OSG-ocean的效果图如下

proland的效果图如下

下面为OSG和OCEAN的配置

配置方法转自 http://blog.csdn.net/sohu_2011/article/details/7909803

下面所有的文件都可以在 http://download.csdn.net/detail/xdjinjian/5698027 下载到

一步步编译OsgOcean

电脑:

操作系统:win7

编译器:vs2010

显卡:NVIDIA GeForce GTX 550Ti

准备工作

一 安装cmake

网络下载cmake,并安装;

我安装的是cmake-2.8.9-win32-x86.exe

二 下载OSG并编译

osgOcean 1.0.1是用osg开发的,所以要安装OSG,官网上说可以用OSG2.8.2编译,所以我下载了OSG2.8.2源码来编译。OSG的国外官网进不去,但是国内的osgchina可以下载源码,

网络地址:http://www.osgchina.org/projects/osgcn/wikicn/Downloads.php

目前下载OSG2.8.2只能通过该网址提供的svn来下载;下面是svn

http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.8.2b

编译OSG2.8.2

(一)  下载3rdParty_Win32binaries_2005_05_10.zip

可在http://www.osgchina.org/projects/osgcn/wikicn/Downloadscn/Dependencies.php下载

(二)  下载OpenSceneGraph-Data-2.0.zip

可在http://www.osgchina.org/projects/osgcn/wikicn/Downloadscn/SampleDatasets.php

(三)  通过cmake生成vs工程

3rdParty_Win32binaries_2005_05_10.zip解压,将加压目录copy到osg2.8.2目录内

OpenSceneGraph-Data-2.0.zip解压,将解压目录copy到osg2.8.2目录内

在osg2.8.2目录内建一个build目录,cmake会把vs工程产生到该目录下

打开安装的cmake,填写osgsource code目录与build binaries目录:

如图:

之后点击Configure,然后选择编译器

然后,点击finished

此时,cmake会显示出很多红色,表示需要配置,有些需要配置有些采用默认即可;

需要配置的相有:

ACTUAL_3DPART_DIR:填写上面解压3rdpart目录即可;编译32未程序,要包含x86子目录内容,如果64位填写x64目录,即:

E:\ocean\osg2_8_2b\3rdParty\x86或

E:\ocean\osg2_8_2b\3rdParty\x64

BUILD_MFC_EXAMPLE:选中

CMAKE_INSTALL_PREFIX:最后安装目录,也就是要把 bin目录,include目录,lib目录copy到该目录下,这样其他工程只要引用该目录内容,即可使用osg

点击generate,在build目录下回产生VS工程,打开工程build即可

用vs2010编译osg2.8.2会出现语法错误,如back_inserter错误,只要在文件开头包含

#include<iterator>即可

还可能遇到png错误,将

png_set_gray_1_2_4_to_8(png);

改为      png_set_expand_gray_1_2_4_to_8(png);

编译ALL_BUILD工程

编译INSTALL工程,此时可能遇到如下错误:

这个错误的意思是:

E:\ocean\osg2_8_2b\build\src\OpenThreads\win32目录下的中44行记录的

“E:/ocean/osg2_8_2b/build/bin/Debug/../../bin/ot11-OpenThreadsd.dll”找不到

把..翻译过来就是:“E:/ocean/osg2_8_2b/build/bin/bin/ot11-OpenThreadsd.dll”

根本不存在E:/ocean/osg2_8_2b/build/bin/bin/这个目录,查看E:/ocean/osg2_8_2b/build/bin/目录,发现ot11-OpenThreadsd.dll在E:\ocean\osg2_8_2b\build\bin\Debug目录下;

这个有两种办法解决这个问题:

方法一:“E:/ocean/osg2_8_2b/build/bin/Debug/../../bin/ot11-OpenThreadsd.dll”改成

E:\ocean\osg2_8_2b\build\bin\Debug

但是这种方法劳动量很大,很为工程中有cmake_install.cmake文件要修改;

方法二:把ot11-OpenThreadsd.dll copy到E:/ocean/osg2_8_2b/build/bin/目录下;

会有很多dll 需要copy;

再次build INSTALL工程,会出现如下错误:

意思是src/osgPlugins/osgAnimation/cmake_install.cmake文件的32行记录的

E:/ocean/osg2_8_2b/build/bin/Debug/../osgPlugins-2.8.2/osgdb_osganimationd.dll

找不到,解决方法同上面方法二;

Osg编译完毕

三 编译osgOcean

一 准备快速傅里叶变换库

有连个可用库:FFTW, FFTSS

我选择了FFTW,下载地址:

http://www.fftw.org/install/windows.html

加压之后,在启动vs命令行,并切换到解压目录:

然后运行如下三个命令:

    lib /def:libfftw3-3.def
     lib /def:libfftw3f-3.def
     lib /def:libfftw3l-3.def

然后会在目录中生成.h文件.lib文件,这也是编译时要连接的文件;

(二)编译osgOcean

首先采用上面用cmake生成osg工程的步骤产生osgOcean工程;

生成结构如下:

打开osgOcean.sln,

编译ALL_BUILD

会出现一大堆连接错误,原因是:

没有连接.lib文件,工程属性中添加所有osg的.lib文件

注意也要把快速傅里叶变换的库也加进来;

再编译一次,成功,完毕;

把oceanExample设置为启动工程,把工作路径设置为exe所在目录:

把E:\ocean\osgOcean\osgOcean-Source-1.0.1\osgOcean中的resources目录copy到上面的工作目录中,这样exe可以找到纹理文件等;

其中注意到OSGOCEAN中的库的设置为

final:enjoy your ocean

基于proland的海面仿真

下载地址 http://proland.inrialpes.fr/

其中OCEAN 是其中的一个例子 直接下载就可以了 不用编译

但注意运行OCEAN时的时候 先是显示一个单单的球(那是地球= =!)之后用滚轮放大 直到出现海面为止。

OSG和ProLand 的海面仿真的更多相关文章

  1. OSG开发概览

    1 OSG基础知识 Ø OSG是Open Scene Graphic 的缩写,OSG于1997年诞生于以为滑翔机爱好者之手,Don burns  为了对滑翔机的飞行进行模拟,对openGL的库进行了封 ...

  2. OSG开发概览(转载)

    OSG开发概览 1 OSG基础知识 Ø OSG是Open Scene Graphic 的缩写,OSG于1997年诞生于以为滑翔机爱好者之手,Don burns  为了对滑翔机的飞行进行模拟,对open ...

  3. OSG-基础知识-程序框架

    本文转至http://www.cnblogs.com/shapherd/archive/2010/08/10/osg.html 作者写的比较好,再次收藏,希望更多的人可以看到这个文章 互联网是是一个相 ...

  4. [比较老的文章]三维渲染引擎 OGRE 与 OSG 的比较综述

    1 .引言随着计算机可视化.虚拟现实技术的飞速发展,人们对实时真实感渲染以及场景复杂度提出了更高的要求.传统的直接使用底层图形接口如OpenGL.DirectX开发图形应用的模式越来越暴露出开发复杂性 ...

  5. [OSG]OpenSceneGraph FAQ 以及OSG资源

    1.地球背面的一个点,计算它在屏幕上的坐标,能得到吗? 不是被挡住了吗? 答:计算一个空间点的屏幕坐标,使用osgAPEx::GetScreenPosition函数.当空间点处于相机视空间内(不管它是 ...

  6. OSG使用更新回调来更改模型

    OSG使用更新回调来更改模型 转自:http://blog.sina.com.cn/s/blog_668aae7801017gl7.html 使用回调类实现对场景图形节点的更新.本节将讲解如何使用回调 ...

  7. osg实例介绍

    osg实例介绍 转自:http://blog.csdn.net/yungis/article/list/1 [原]osgmotionblur例子 该例子演示了运动模糊的效果.一下内容是转自网上的:原理 ...

  8. osg,vtk,ogre的区别

    osg使用过一年,阅读过一部分源代码,vtk也断续使用过三四年了,ogre研究的比较深入,基本上比较熟悉它的整体结构,说说个人的看法 vtk是一个算法库,里面包括了很多挺不错的算法,如果做有限元云图, ...

  9. 基于HTML5的燃气3D培训仿真系统

    最近上线了的基于HTML5的燃气3D培训仿真系统,以前的老系统是采用基于C++和OpenGL的OpenSceneGraph引擎设计的,OSG引擎性能和渲染效果各方面还是不错的,但因为这次新产品需求要求 ...

随机推荐

  1. Tensorflow一些常用基本概念与函数(三)

    摘要:本系列主要对tf的一些常用概念与方法进行描述.本文主要针对tensorflow的数据IO.图的运行等相关函数进行讲解.为‘Tensorflow一些常用基本概念与函数’系列之三. 1.序言 本文所 ...

  2. 快捷方式控制台调试each这种方法的时候怎么停

    1.ctrl +' 2.当遇到angular.each的时候ctrl + ; 3.进入之后,还是先ctrl+'; angular中: 当遇到forEach之后,又一次ctrl+;就回到你的each之后 ...

  3. windows电脑使用技巧及常用CMD

    管理用户和组 win+R,输入 compmgmt.msc 本地用户和组->用户 本地安全策略 win+R,输入 secpol.msc 本地策略->安全选项,启用禁止空密码登录如下图,可以防 ...

  4. oracle 10g 用dbms_xmlgen将数据表转成xml格式

    oracle 10g 用dbms_xmlgen将数据表转成xml格式 oracle 10g 用dbms_xmlgen将数据表转成xml格式 oracle用plsql将sql查询的所有数据导出为xml

  5. [Python开发工具] Pycharm之快捷键

    [Python开发工具] Pycharm之快捷键 1 全局搜索: Ctrl+Shift+F,不过PyCharm的更强大, 你可以点选左侧某个目录后再按Ctrl+Shift+F, 这样默认会搜索改目录; ...

  6. Alpha冲刺一 (5/10)

    前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/9989898.html 作业博客:https://edu.cnblogs.com/campus/ ...

  7. tcpdump学习笔记

    简介     简单的说,tcpdump就是一个抓包工具,类似Wireshark.     tcpdump可以根据使用者的定义过滤/截取网络上的数据包,并进行分析.tcpdump可以将数据包的头部完全接 ...

  8. Oracle 分析函数及常用函数

    什么叫分析函数(Analytic function)? Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是 对于每个组返回多行,而聚合函数对于每个组 ...

  9. Echart参数详解收藏

    最全: https://www.cnblogs.com/Kqingniao/p/5833419.html 柱形图: https://blog.csdn.net/qq_36330228/article/ ...

  10. iOS 关于时间天数星期月份的总结

    #import <Foundation/Foundation.h> @interface NSDate (SLExtend) // 判断是否是本周更早 - (BOOL)isThisWeek ...