8年,從2D到3D,我的學習之路

2022-02-04 19:10:44 字數 2717 閱讀 9280

mickey 寫了一篇 《乙個本科畢業生創業兩年的感悟》,從他的視角,總結了我們合作的兩年經歷。

我也來寫一篇,介紹我的學習之路,希望對大家有所幫助,謝謝大家~

1.直接從0開始做專案,邊做邊學習,在做的過程中不斷思考和反思當前的設計和實現,不斷地修正,不斷地迭代。

2.做完乙個專案後,沉澱和昇華:

a)根據做專案中遇到的問題,針對性地看一些經典書籍和學習資料

b)寫一些文章,分享自己的學習經歷和技術心得

非常感謝老師對我的信任,讓我能在第乙個專案就負責開發乙個比較大規模的完整**~

整個專案歷時8個月,前端、後端、資料庫我都要開發。

通過該專案,我學習了測試驅動的思想(後端和邏輯層寫了很多測試)、分層架構、mvc、重構、領域驅動的思想,學習了前端、後端、資料庫的技術。

再次感謝老師的支援,讓我能夠自由地研究自己感興趣的內容。

做完**後,我先後開發了 貪吃蛇->連連看->炸彈人 這三個html5遊戲,中間又做了幾個小**。 其中,我完全使用測試驅動來開發炸彈人遊戲。

詳見:發布我製作的jquery貪吃蛇遊戲

連連看炸彈人遊戲開發系列

通過做遊戲,我學習並應用了物件導向的思想和設計模式,學習了2d遊戲中的基本概念和領域模型。

從做的遊戲中,我看到了一些通用模式,促使我開始提煉遊戲引擎。

詳見:提煉遊戲引擎系列

發布html5 2d遊戲引擎yengine2d

詳見:發布html5 rts遊戲-古代戰爭

我在上學的時候,通過邊做專案邊學習,看了一些書。

此處分享我看了哪些書、看了幾遍、有什麼心得,詳見:2011-2023年收集的經典書和心得

webgl、3d引擎等方面可以參考:

分享收集的webgl 3d學習資源

分享我收集的引擎、圖形學、webgl方面的電子資料

我用提煉的引擎寫了個demo。

詳見:動作類遊戲demo

在工作上,我有幸加入了釘釘的前端開發團隊,參與桌面版釘釘的開發。

我學習了angular,開發了搜尋、群組、快捷鍵等功能。

通過參與該專案,我學習了乙個真正的商業專案是怎樣開發的,也學習了前端的更多技術,感謝專案老大~

此時我看到了babylonjs的3d demo,非常震撼。我已經迫不及待地想要學習3d技術了!我加入了北京的乙個創業公司,開始接觸webgl技術。

感謝該公司,技術上對我有很多啟發~比如我第一次看到了類似於unity的元件化架構的引擎,而我之前一直參考cocos 2d,用的是繼承架構。我也學習了使用渲染命令佇列來解藕邏輯和渲染的設計思想。

我是如何開始學習webgl的呢?

1.我找到了《webgl程式設計指南》這本書,把大部分demo實現了一遍;

2.再次第二遍實現demo,提煉3d引擎的雛形;

3.用提煉的引擎實現了乙個「自由瀏覽場景」的demo。

通過學習3d,我感受到了3d引擎的巨大魅力,我決定自己開發乙個3d引擎!

辭職,回家,從0開始,開發3d引擎。

我學習了函式式反應程式設計的思想,模仿rxjs,寫了個wonder-frp庫,這就花了我1個月的時間,為我以後學習函式式程式設計埋下了伏筆。

我出於學習的目的,盡可能地加入更多的功能(模型,動畫,地形,水,陰影。。。。。。),並沒有考慮給別人使用。

雖然引擎是全覆蓋的單元測試用例,並且我注重**質量,但是效能方面沒有過多地優化,也沒有外部的使用反饋。所以引擎屬於自己玩的玩具。

開發了一年後,我認為需要到外界獲取一些反饋和交流,所以我參加了工作,並在工作中收集相關反饋,繼續改進引擎。

我用引擎做了一些demo,並開始應用到手機端。

同事反饋:引擎太笨重,應該更加地模組化。感謝同事對引擎的改進建議,讓我看到了引擎很多的不足。

辭職,回家,我決定重寫引擎。

此時我開始學習函式式程式設計的思想,這再次重新整理了我的認知。因此我從物件導向切換到函式式程式設計,開始重寫設計引擎,立足於真正的商業應用,能夠支援大型場景:

1.使用js庫,進行函式式程式設計

2.支援多執行緒

3.支援webgl2

4.支援延遲渲染

開發一段時間後,我認為js庫進行函式式程式設計非常不方便,**不好看,而且效能也不好。

我關注到reason的發展,認為reason已經足夠成熟,可以使用了。

於是我們引擎和編輯器完全重寫,從typescript切換到reason,使用data oriented設計,開始真正的函式式程式設計。

從重寫到發布,《乙個本科畢業生創業兩年的感悟》已經很好地總結了這段時間的經歷。

終於,wonder 1.0正式版發布,完成了我們創業的第一步,交付了第乙個可以真正使用的產品。

從學習3d,到發布1.0產品,經歷了4年。

我們的引擎和編輯器開源,詳見:

wonder.js引擎

wonder-editor編輯器

詳見路線圖。

因為興趣,就會自發地想去學習,每天都有興奮感。解決乙個個問題後,也很有成就感。

我也看好web 3d的潛力,這是乙個有技術門檻,需要長期鑽研,厚積薄發的領域,很適合我。

感謝網際網路的便利,所有相關的知識都可以在網上搜尋到。所以現在是最好的時代,能走到**全憑自己驅動。

我們做的wonder產品-3d引擎和編輯器,技術上很有挑戰,永無止境,這不就是對我最好的禮物嗎?

我會持續地學習3d開發,把wonder打造成世界上成熟的產品,讓web 3d開發變得輕而易舉,為世界作出貢獻。

2d遊戲引擎 8年,從2D到3D,我的學習之路

mickey 寫了一篇 乙個本科畢業生創業兩年的感悟 從他的視角,總結了我們合作的兩年經歷。我也來寫一篇,介紹我的學習之路,希望對大家有所幫助,謝謝大家 1.直接從0開始做專案,邊做邊學習,在做的過程中不斷思考和反思當前的設計和實現,不斷地修正,不斷地迭代。2.做完乙個專案後,沉澱和昇華 a 根據做...

2D到3D 外參矩陣估計

1.背景 最近正在做姿態估計,簡單搜姿態估計的關鍵字得到的資訊不夠完整,所以把搜到的資訊加上自己的理解整合在這篇文章。2.正向3d到2d的過程 首先3d物體在世界座標系,也就是我們現實世界,物體是現實中的絕對尺寸,以m為單位。現實世界的物體認為成剛體,那麼這個剛體和相機之間會有乙個相對位置。對於物體...

3d點投影到2d螢幕,矩陣計算

最近在優化vibe輸出的3d關節點抖動問題。需要將3d點投影到2d螢幕上。3d點通過相機投影到2d螢幕上,通過一系列矩陣相乘可以求得。但是具體操作實現說明太少,本文用來記錄投影流程的實現。附python實現 3d 轉 2d 的流水線如下 世界座標系 相機座標系 投影矩陣 畫素對映 生成 世界座標系和...