什麼是3D引擎

2022-09-15 17:24:13 字數 1455 閱讀 3274

3d引擎作為乙個名詞已經存在了很多年,但即使是一些專業的引擎設計師,也很難就它的定義達成乙個共識。通常來說,3d引擎作為一種底層工具支援著高層的圖形軟體開發。你可以把它看成是對3d api的封裝,對一些圖形通用演算法的封裝,對一些底層工具的封裝。我無法準確的定義3d引擎的含義和作用,因為針對不同的使用者和開發專案,3d引擎完成的功能可能都有不同。因此,我將從功能的角度來定義3d引擎,這種定義法也許能更確切的表達出乙個3d引擎的真實含義。

3d引擎最基本的功能應該包括:

1.  對3維場景的資料管理

這裡的資料管理是乙個比較廣泛的定義,不同的3d引擎也許會擁有其中乙個或多個功能。這些功能包括:場景管理,物件系統,序列化,資料與外部工具的互動,底層3維資料的組織和表示。

場景管理: 這個名稱相信對3d引擎有一定認識的朋友都很熟悉了。通常它和scenegraph同時存在於一些架構方面的資料中。由於3d引擎可能會用來管理一些龐大的3d世界,在這個世界中物體與物體之間通常存在一些 相關/從屬/影響與被影響 關係,如何組織這些關係,並確切的將這些關係與3d引擎的其他功能聯絡起來,就是場景管理需要完成的工作。常有朋友問我場景管理是用的哪種演算法。從我的理解來講,場景管理是一種設計模式,而不是乙個具體的演算法,也許你會最終選擇bsp/quadtree/portal/...作為場景管理樹的結構,但是這些已經是實現層面的東西了,而且它們也遠遠不是場景管理的全部。因此我認為scene manager 和scene graph manager 這兩個概念還是分開理解比較好。

場景管理首先需要考慮如果表達場景中物體的關聯關係,這部分通常是由場景圖來實現的。通過乙個一對多的樹形結構已經可以滿足要求,當然考慮到資料層的共享和維護,允許子樹進行clone也是前期設計時需要考慮的乙個方面。再此之後,就需要考慮物體之間材質的繼承關係,動態環境如何嵌入到你選擇的場景圖中。在乙個考慮到互動和觸發機制的引擎中,還需要考慮物體之間如何傳送訊息。(比如乙個結合了物理引擎的場景)。實際上在整個引擎中你所涉及到的各種演算法和設計,都或多或少的會和場景管理發生聯絡。比如在乙個實現動態光影的引擎中,物體之間如何實現相互遮擋,光源的影響範圍如何在場景圖上繼承,都是在設計時需要考慮的問題。

2。功能合理的渲染器

之所以要說是合理的渲染器,是因為乙個引擎的渲染能力是由多方面決定的。比如一款以實時遊戲作為目標的遊戲,會選擇基於光柵化的渲染演算法。在這種設計前提下,幾何體一級的資料不會過於詳細,例如物體表面的brdf,折射率,紋理座標空間的變化率,切線空間的變化率(當然隨著硬體能力的提公升和shader能力的發展,這些資料也會出現在一些比較高階的遊戲引擎中),這時候即使你在設計初期就考慮到這些資料需求,並將它們表現在了render中,最後也不會由任何意義。

3。與外部軟體的互動能力

簡單的說,就是開發工具。任何一款3d引擎如果沒有開發工具都不能稱為是完整的。這些開發工具可能是一些檔案轉換器,場景編輯器,指令碼編輯器,粒子編輯器.... 

有了上面3種功能,就可以稱為3d引擎了。當然,如果要開發一款功能強大的引擎,那還有很多很多的功能需要滿足,其中一些功能將在後面的章節中有詳細的描述。 

什麼是3D引擎

3d引擎作為乙個名詞已經存在了很多年,但即使是一些專業的引擎設計師,也很難就它的定義達成乙個共識。通常來說,3d引擎作為一種底層工具支援著高層的圖形軟體開發。你可以把它看成是對3d api的封裝,對一些圖形通用演算法的封裝,對一些底層工具的封裝。我無法準確的定義3d引擎的含義和作用,因為針對不同的使...

3D建模 什麼是3ds Max?

3ds max是3d專業建模軟體,動畫和渲染應用程式的構建,前身是3d工作室和3d studio max,用於為娛樂行業製作3d動畫,模型,互動式遊戲和視覺效果。3ds max在設計3d模型的2d橫截面形狀中發揮著巨大作用。它可以通過使用稱為逆運動學的特殊特性來使角色栩栩如生,可以將角色的不同組成部...

3D手機遊戲引擎

一,寒霜2引擎 frostbite 2 engine 但手機上貌似不支援 二,虛幻3引擎 unreal engine 3 沒用過 三,unity 引擎 本人使用過 以上3d引擎我推測應該都是基於 opengl es2.0圖形庫支援嵌入式裝置。2d手機遊戲引擎 一,cocos2d x cocos2d ...