Egret3D 研究報告(一)初試


 

了解的朋友應該知道我最近一直都在鼓吹webgl.

今天有一點時間,加了一個Egret3D的群,就開始了這個坑。

耳聽為虛,眼見為實。讓我們盪起雙槳,一起去刷一下egret

打開姿勢

至於以什么姿勢打開,就讓我用截圖來解釋吧。

由於我是vs重度愛好者,egretWing用起來實在是苦不堪言,於是我又安裝了

基本的姿勢問題,請詢Egret各種社區,我們就來談一談代碼。

Egret3D基本概念

第一眼看到的代碼是這樣的,我勒個擦,讓構造函數直接解決問題,這如果是我的兄弟,已經可以領辭退補助了。

不談審美與愛好的問題,這個我們下一步會實際動手改一改,然我們看一下egret3D怎么玩。

Egret3DDrive.requestContext3D是真正的入口。

提供視口參數,初始化webgl對象,然后回調。(這種東西寫在構造里我依然看不下去)

 

然后初始化一個view3D對象,view3D對象差不多就是一個場景的概念。

場景的組織也使用場景圖的概念,view3d下面的節點可以組成一棵樹。

 

Cameracontroller這東西不屬於很核心的代碼,不理他也沒所謂。就是一個控制攝像機轉頭的鼠標操作。反正是update驅動的。實際項目開發中面對各種各樣的需求,不太會直接套用這個,把他作為一個示例就可以了。

 

然后view3D.renden 就行了(喂,確認不是拼錯了么,應該是render吧)

 

然后就是最最常規的update驅動。(幀驅動,主循環,不太清楚的同學可以參考博主的c#入門文字)

 

Egret3D的場景樹

 

有這個view3D,就可以構成一個場景樹,既然是場景樹結構,那我們來看看他的結點構成

和Unity的場景樹單一結點類型,但是關聯到GameObject可以用組件聚合改變場景結點功能的設計不同。

其實unity這種設計現在的引擎用的比較多。

Egret3d使用一個更古老的設計方法,結點多態。

結點基類是

每個Object3D下面都可以再掛n個字節點。

 

然后有五個類型繼承自他

分別是

1.billboard(朝向攝像機的面片)

2.Entity(一個空節點,設計意圖不明)

3.Mesh(模型結點)

4. 攝像機

5. 燈光們

因為此時還沒有官方文檔,原諒我直接看源碼

Egret3D的資源管理

Egret3D設計了AssetsManager,但是擴展性並不強,沒有提供統一的二進制和字符串資源下載方式。

設計了三種格式 ESM, EAM, ECA,分別是模型,動畫模型,攝像機動畫,但是未見諸文檔。

最關鍵的場景圖,居然沒有設計存取格式。

 

小結

Egret3D還處於一個比較早期的階段,基礎建築尚不成熟。

  1. 存在renden這樣的拼寫錯誤
  2. 沒有文檔
  3. 資源管理不完善,沒有提供統一的二進制資源和字符串資源下載方式,不易擴展
  4. 場景節點沒有預留擴展性,連一個userdata:any 都沒留
  5. 天空盒初始化接口不統一,資源不來自TextureLoader

從設計上還是模仿as3的接口設計,但是畢竟是中國人在建設的開源引擎。

從感情上我更願意幫助egret3d去建設,更勝於使用相對成熟的babylon.js.

這個blog系列的后續部分我們會一點一滴的去改善和建設Egret3D。

 


免責聲明!

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



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