OSG與OSG earth


說起來還是非常傷心的,自認為還算認真的學習OSG和OSGearth三個月,雖然是從零開始,但是想起來,學到的東西還真是少,甚至連一些皮毛都沒有學到。雖然學到的東西不多,但是我覺得有必要把我學習的歷程記錄下來,一方面,算是自我紀念,畢竟自己學習了三個月,還是有一些東西的,第二個方面,希望后來的學習者,能夠少走一些彎路,最后一方面,也希望能有高人,給我指點一下。4500RMB的教程買不起,也不知道是什么樣子,只能自己慢慢的摸索了。以下是我學習的歷程。
一、        什么是OSG、OSGearth?
一進入OSG、OSGearth學習的領域,我就想知道這到底是什么。然后就去各種百科,查到了對OSG和OSGearth的介紹,知道了一些歷史故事。說實在的,這些故事,對於學習掌握OSG的開發沒有什么用處。我更想知道OSG、OSGearth宏觀架構方面的知識。
如果當時,我看到OSG的解釋是這樣的:“OSG是開源場景圖形,這種圖形是由各種節點組成的,不同的節點對應不同的物體。常用的節點有三種:根節點、組節點、葉節點。通常為了方便圖形的保存,有一種osg格式的文件。Osg文件存儲各種模型,可以方便的進行加載。”我想我在學習《OpenSceneGraph快速入門指導》時,會輕松很多吧。當看到各種節點解釋的時候,不會不知道書中到底在說什么了。
同樣,我對OSGearth也有自己粗淺的看法:
OSGearth就是在OSG的基礎上,進行了二次開發。OSGearth中非常明顯的多了一個MapNode節點,OSGearth圖像中多了坐標信息,整體的架構和OSG一致,但是有多地方進行了包裝,方便進行一些地理計算、操作。Earth文件是保持地理圖像的文件,OSGearth一般對earth文件進行操作。
我這些看法都是非常粗淺,並且不一定准確。我也是根據自己這段時間的學習,對OSG和OSGearth粗淺認識的描述。那有沒有更為精確、宏觀的描述呢,或許有吧,但是我沒有找到。我覺得如果我在學習之前,腦海中就有這種宏觀的概念,是非常必要的,所以,盡管我不懂,但是我還要進行總結。
二、        OSG、OSGearth的源碼編譯、開始的界面
OSG、OSGearth的宏觀概念有了之后,就要開始進行細節開發了。最起碼先要讓自己的代碼能夠像osgviewer那樣加載cow.osg吧,或者顯示一個完整的能轉的地球出來吧。
按照《OSG程序設計》的指導,很容易就能寫出一個展示cow.osg的程序出來,並且還有細致的分析。說到這里我插一句,《OSG程序設計》這本書寫的有點虎頭蛇尾,前面寫的很細,看的很爽,給我一種,作者真牛逼的感覺,看到后面,寫的越來越粗糙了。當然,作者已經做的很好了,但是不免還是會令人有些遺憾!
OSGearth也是,如果動態庫、靜態庫文件完整的話,osgviewer就可以直接查看earth文件。這里又要插一句,怎么就沒有像《OSG程序設計》這樣的一本書來介紹OSGearth的開發呢!
通過寫了一些簡單的程序,可以發現,這些程序簡單的背后,是由庫文件支撐的。最開始,我想親自根據源代碼,生成這些庫文件,並且按照網上的一些教程,加上自己的不斷摸索,用了15天的時間,成功的生成了osgearth和osg的庫文件,並且也可以正常使用了,后來才發現,我生成的版本不支持中文,對於PNG格式的圖片支持的也不好。解決這個問題,花了我老長的時間,關鍵是到最后,我放棄了。OSG的中文支持解決了,但是OSGearth怎么也生成不了,后來就沒再去解決了。網上找了其他網友生成的庫用,功能挺完善的,不足就是,和最新的代碼不匹配,畢竟不是最新的版本。這個不足在一定程度上影響了代碼的編寫。我沒有解決這個問題,主要是,我覺得這個問題不是主要問題,可以先放一放,可以先用他人的庫文件代替。
我還是挺希望自己能夠成功生成自己的庫文件的。雖然我沒有生成完善的版本,但是在這個過程中,對源代碼的理解,加深了很多,同時也多了解了幾種開源程序的編譯方法,程序架構也知道了更多,其中經歷了很多莫名其妙的問題,解決之后,雖然不知道解決的原因,憑着一種感覺正確的解決了問題,還是很爽的。如果自己能夠嫻熟的編譯源代碼的話,那么修改源代碼也就更容易了,這樣就能更容易的打造專用的OSGearth和OSG程序了。當然,這個境界是很牛逼、很神、很向往的境界。
從現實來說,直接用他人生成的庫,還是方便很多,更容易上手。
三、        OSG、OSGearth中概念的學習、理解
經過前面兩節的學習,我對OSG、OSGearth的一些程序開發有了初步的認識。但是隨着我對教程的學習,發現其中有很多的概念,不知道什么意思,如“投影”“法線”“紋理”“高程數據”“渲染”“瓦片”……
        現在吧,我依然不是很理解這些名詞,但是我在理解這些名詞時,做了很多的努力,我就說說我是怎么學習理解這些名詞的。第一反應是百度或者谷歌搜索,但是發現搜到的內容根本不是自己要找的,當時就頭大了,在論壇中也沒有找到專門的名詞介紹的資料。我對這些有了直觀的認識,主要是通過學習OpenGL(后面有學習資料鏈接)后,有了自己的認識。如果沒有OpenGL的一些基礎知識的話,我覺得我很難理解這些概念,而如果不理解這些概念,看OSG入門教程中的一些例子,根本看不明白,很浪費時間。
        我學習OSGearth的過程,大體上是這樣。首先看了一遍《OpenSceneGraph快速入門指導》,然后看了一遍《OSG程序設計》。看完兩本書后,對OSG有了直觀的認識,並且可以運行一些小程序。后來又學習了OpenGL教程的前10章,對於其中的概念名詞,有了理解,然后又看了一遍《OpenSceneGraph快速入門指導》和《OSG程序設計》。此時感覺自己對於教程中的內容有了更多的理解,很多代碼都能看明白了。感覺OSG算是入門了,尤其當我搞明白其中的模型旋轉、位置計算的方法時,真的感覺我可以看懂其中的一些demo了。
        OSGearth學習時,也是看了一遍《OSGearth文檔》,發現里面全是介紹earth文件格式的,對於開發用處很少。OSGearth主頁上,有少量的開發代碼,能起的作用不大。我對OSGearth的學習,主要靠demo程序,自己一點點的猜測,理解,很是慢,並且學習的不系統,收獲很少,花了很長時間也就只看懂了2個demo程序
四、        我的收獲及疑惑
經過了前面的幾個學習階段,我發現我自己對OSG、OSGearth掌握的依然很少。我不知道問題出在哪里。難道我學習的方向錯了?我開始了對自己的質疑,希望能夠找到學習的正確方法。
教程沒有,入門的教程也都看完了,但是發現,仍然不能完成一個簡單的任務——在地球上顯示一張可以拖拽並調整方向的圖片。
雖然我知道一些節點,但是我不知道哪個節點可以加載圖片,操作圖片;雖然我知道如何用鼠標進行簡單的拖拽,但是我還不知道如何進行光標和經緯度的轉換。在這一刻,我感覺前面學習的基礎知識甚是零散,不成體系,無法對於實際應用產生幫助。
偶然間,發現一個demo程序osgearth_annotation,可以滿足一部分的需求,然后就進入demo程序的學習。有的demo程序比如osgearth_annotation就很好學,很好懂,有的demo程序相對就很難,並且demo程序很多,功能也不是很清楚,demo學習的也很慢。在對demo學習的過程中,學習的知識,自己還不能夠組合到體系中去,導致消化的特別慢,看了一些demo后,效率也很低,感覺沒有學到什么東西。
為了理解demo中的一些類,還跟蹤進入了源代碼。進入源代碼后,發現自己更加渺小了。代碼放在那里,就是那么寫的,愣是看不明白,看的頭大,不知道為什么要那么寫,目的是什么,和那些地方有什么關系。
從demo進行學習,感覺也不容易。從教程進行學習,感覺好的教程不好找,碰到問題只能自己一點點的去搜索,這樣又非常容易把思路引到其他地方去。真是不知道如何學習才好。有時候想想,如果4500的教程不錯,買一個仿佛也值得,但是自己是打工的,還花錢,有些舍不得。
我的收獲雖然也有很多,畢竟學到了很多零散的知識,那些入門教程中的東西也都知道了,三維圖形開發,有了一些理解,一些編程思想方面,從源碼中也學到了一些,但是覺得還是不太滿意。
我的疑惑更多,為什么我花了三個月,學的還是這個樣子,不花錢的話,應該怎么學?
五、        學習資料
OpenGL教程中文版
http://www.yakergong.net/nehe/
《OpenSceneGraph快速入門指導》
http://bbs.osgchina.org/forum.ph ... &extra=page%3D1
《OSG程序設計》
http://bbs.osgchina.org/forum.ph ... &extra=page%3D1
Osg官網說明
http://www.osgchina.org/
《OSGearth用戶手冊》
http://bbs.osgchina.org/forum.ph ... &extra=page%3D1
http://files.cnblogs.com/eaglezh ... %89%8B%E5%86%8C.pdf
OSGearth官網說明
http://docs.osgearth.org/en/latest/
OSG 源碼demo介紹
http://blog.csdn.net/yungis
http://www.cnblogs.com/indif/archive/2011/05/13/2045136.html
OSG 文檔
http://bbs.osgchina.org/forum.ph ... =osg%2B%CE%C4%B5%B5
OSGearth文檔
http://bbs.osgchina.org/forum.ph ... =osg%2B%CE%C4%B5%B5
OSG、OSGearth 源碼編譯參考(我根據以下的方法編譯出來一個不完全版,不支持中文,后來添加中文支持后,OSGearth)
http://www.cnblogs.com/eaglezhao ... 7/12/eaglezhao.html
http://www.cnblogs.com/eaglezhao/archive/2011/09/26/2192389.html
http://www.cnblogs.com/sunliming/archive/2011/10/24/2222556.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM