天天看點

骨骼動畫編譯osgCal

轉載 原文http://blog.csdn.net/wuwangrun/article/details/8239451

今天學到書《OpenSceneGraph三維渲染引擎程式設計指南》的骨骼動畫示例,遇到了編譯osgCal問題,書上說的不詳細,網上就查到一遍相關文章

http://www.cnkinect.com/thread-15697-1-1.html

寫的挺完整,我照着做基本沒大問題,這裡自己在他的文章基礎上重新整理總結了一下

1、 編譯Cal3D,目的就是得到cal3d_d.lib、cal3d_d.dll及cal3d.lib,cal3d.dll,後面編譯osgCal依賴cal3d庫檔案(本例中隻用到庫檔案,動态庫隻是附屬物)。

1.1、cal3d源碼擷取,通過SVN擷取最新的源碼,最新源碼下載下傳位址:

http://svn.gna.org/svn/cal3d/trunk 。下載下傳的源碼檔案包含以下三個檔案夾

1.2、打開cal3d,找到cal3d.sln,打開該工程,包含12個工程,這裡我們隻需要buildCal3D工程,選擇該工程,右擊,在彈出框中選中build,單擊。等待幾分鐘就可以在bin檔案下的Debug和Releas得到cal3d_d.lib、cal3d_d.dll(debug模式)及cal3d.lib、cal3d.dll(release模式)。

1.3、在cal3d目錄下建立lib、include、bin檔案夾,将cal3d_d.dll、cal3d.dll拷貝到bin檔案;cal3d_d.lib、cal3d.lib拷貝到lib檔案夾;将src的所有檔案拷貝到include檔案夾。到這裡編譯osgCal的準備工作就完成了。

2、 編譯osgCal,編譯osgCal就是為了得到osgCald.dll、osgCald.lib及osgCal.dll、osgCal.lib(後面帶d的是在debug模式下得到的,不帶的是release模式)。

2.1、svn擷取最新源碼,最新源碼擷取位址:

https://osgcal.svn.sourceforge.net/svnroot/osgcal/trunk/osgCal

2.2、打開Cmake,生成osgCal解決方案。将osgCal檔案下的CMakeLists.txt拖到CMake 2.8.7。

點選Configure,選擇編譯的環境

2.3、安照下面的要求,配置參數。

這是重點。這裡的include路徑及lib檔案幾乎都是手動加過去的。

對幾個重要的參數作個解釋,其他參數自行修改:

CAL3D_INCLUDE_DIR      cal3d的include檔案的路徑(E:/cal3d/cal3d/include)

CAL3D_LIBRARY          cal3d的lib檔案(E:/cal3d/cal3d/lib/cal3d_d.lib)

OPEN_THREADS_INCLUDE_DIR 

OpenThreads的include路徑

(D:/osgSDK/OpenSceneGraph-2.8.2/include/OpenThreads)

OPEN_THREADS_LIBTARY

OpenThreads的lib路徑(D:/osgSDK/OpenSceneGraph-2.8.2/lib/OpenThreads)

OSG_INCLUDE_DIR         

osg的include檔案路徑(D:/osgSDK/OpenSceneGraph-2.8.2/include)

OSG_LIBRARY             

osg的lib檔案(D:/osgSDK/OpenSceneGraph-2.8.2/lib/osg.lib)

2.4、參數配置完畢後,第二次點選configure。

确定無誤後點選Generate,顯示Configuring done,表明配置成功,将生成解決方案。

注意:這裡include及lib路徑要與osgCal工程下的Tools-Options-Projects and Solutions-C++ Directories的include及lib路徑相一緻。要是在CMake中未添加這些include及lib路徑(前提是Generating done),在工程中再添加include及lib路徑也是可以的。Cmake中允許有警告,但是不要有錯誤,否則編譯會通不過去。

2.5、打開osgCal.sln解決方案,注意:檢查Tools-Options-Projectsand Solutions-C++ Directories中的include及lib路徑是否正确。Build ALL_BUILD。等待十幾分鐘,顯示6 succeeded,0 faild,表明編譯成功。

我在編譯的時候遇到無法解析的錯誤,在相應遇到問題的工程屬性下加上lib依賴項Cal3D.lib,再進行編譯,成功。

2.6、将osgCald.dll、osgCal.dll拷貝到bin檔案;osgCald.lib、osgCal.lib拷貝到lib檔案夾。

經過千辛萬苦,終于得到了所需要的osgCald.dll、osgCal.dll及osgCald.lib、osgCal.lib。

2.7、配置osgCal環境

将osgCal下的include裡面osgCal放到之前編譯OSG的那個include下。相應的dll和lib也放到對應的目錄下,這樣就不用再配置環境變量了。就可以開始跑例子啦。

注:最後如果碰到問題大多應該是環境配置的問題,我是把所有要用的include dll lib 都放到了一起,包括為編譯osgCal所生成的Cal3D的dll lib,這樣就不用再另外設定環境變量路徑神馬的了

繼續閱讀