OSG和ProLand 的海面仿真
基于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 的海面仿真的更多相关文章
- OSG开发概览
1 OSG基础知识 Ø OSG是Open Scene Graphic 的缩写,OSG于1997年诞生于以为滑翔机爱好者之手,Don burns 为了对滑翔机的飞行进行模拟,对openGL的库进行了封 ...
- OSG开发概览(转载)
OSG开发概览 1 OSG基础知识 Ø OSG是Open Scene Graphic 的缩写,OSG于1997年诞生于以为滑翔机爱好者之手,Don burns 为了对滑翔机的飞行进行模拟,对open ...
- OSG-基础知识-程序框架
本文转至http://www.cnblogs.com/shapherd/archive/2010/08/10/osg.html 作者写的比较好,再次收藏,希望更多的人可以看到这个文章 互联网是是一个相 ...
- [比较老的文章]三维渲染引擎 OGRE 与 OSG 的比较综述
1 .引言随着计算机可视化.虚拟现实技术的飞速发展,人们对实时真实感渲染以及场景复杂度提出了更高的要求.传统的直接使用底层图形接口如OpenGL.DirectX开发图形应用的模式越来越暴露出开发复杂性 ...
- [OSG]OpenSceneGraph FAQ 以及OSG资源
1.地球背面的一个点,计算它在屏幕上的坐标,能得到吗? 不是被挡住了吗? 答:计算一个空间点的屏幕坐标,使用osgAPEx::GetScreenPosition函数.当空间点处于相机视空间内(不管它是 ...
- OSG使用更新回调来更改模型
OSG使用更新回调来更改模型 转自:http://blog.sina.com.cn/s/blog_668aae7801017gl7.html 使用回调类实现对场景图形节点的更新.本节将讲解如何使用回调 ...
- osg实例介绍
osg实例介绍 转自:http://blog.csdn.net/yungis/article/list/1 [原]osgmotionblur例子 该例子演示了运动模糊的效果.一下内容是转自网上的:原理 ...
- osg,vtk,ogre的区别
osg使用过一年,阅读过一部分源代码,vtk也断续使用过三四年了,ogre研究的比较深入,基本上比较熟悉它的整体结构,说说个人的看法 vtk是一个算法库,里面包括了很多挺不错的算法,如果做有限元云图, ...
- 基于HTML5的燃气3D培训仿真系统
最近上线了的基于HTML5的燃气3D培训仿真系统,以前的老系统是采用基于C++和OpenGL的OpenSceneGraph引擎设计的,OSG引擎性能和渲染效果各方面还是不错的,但因为这次新产品需求要求 ...
随机推荐
- LA 4636 积木艺术
https://vjudge.net/problem/UVALive-4636 题意: 给出正视图和侧视图,判断最少要用多少个立方体. 思路: 首先正视图里出现的积木个数都是必须的,记录下每一列积木的 ...
- 创建maven或者Gradle项目的时候GroupId和ArtifactId以及Version是什么意思?
GroupId 是项目组织的唯一标识符,在实际开发中对应JAVA的包的结构,就是main目录里java的目录结构,如 ‘com.itcast.demo’. ArtifactId是项目的唯一标识符,在实 ...
- shell 脚本sed替换文件中某个字符串
有些大文件,特别的大.有几百兆,甚至更大. 用文本编辑器打开十分的费劲,电脑都卡死了. 想替换其中的字符串,很麻烦. 这个时候有了shell,简直强大到爆炸! # du -h user.sql 304 ...
- CentOS6.4_x86_120g__20160306.rar
安装的镜像包: CentOS-6.4-i386-bin-DVD1to2(CentOS-6.4-i386-bin-DVD1.iso / CentOS-6.4-i386-bin-DVD2.iso) 1. ...
- Rails-Treasure chest1 (自定义Model网址;多语言包; 时区设置, TimeZone类; 格式日期时间; 表单单选UI; 表单多选UI;Select2 Plugin)
自定义Model网址: 随机值网址SecureRandom.base58 多语言包, 包括默认语言设置和user自设置. 时区设置, TimeZone类 ,增加user自选时区功能 格式日期时间: x ...
- nodejs 前端工具总结
htmlhint https://github.com/yaniswang/HTMLHint 使用 var HTMLHint = require("htmlhint").HTMLH ...
- 探究JS中对象的深拷贝和浅拷贝
深拷贝和浅拷贝的区别 在讲深拷贝和浅拷贝的区别之前,回想一下我们平时拷贝一个对象时是怎么操作的?是不是像这样? var testObj1 = {a: 1, b:2}, testObj2=testObj ...
- 001——数组(一)数组知识及foreach函数应用
<?php /**数组(一)数组知识及foreach函数应用*/ /*数组:在一个变量中,存储一个或多个值,每一个元素都有一个访问ID * * */ /* * //索引型数组 $arr=arra ...
- zookeeper和Kafka集群安装配置
3个虚拟机,首先关闭防火墙,在进行下面操作 一.java环境 yum list java* yum -y install java-1.8.0-openjdk* 查看Java版本 Java -vers ...
- git一键提交修改文件
git一键提交修改文件 首先安装git, 有git bash: 新建一个gitcmt文件,放置于与你的项目同级的目录里: 使用:打开git bash, 方法1. git pull\git status ...