基於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時的時候 先是顯示一個單單的球(那是地球= =!)之后用滾輪放大 直到出現海面為止。
