3D引擎是什么?
聽到“引擎”兩個字,你可能首先會想到汽車引擎,為汽車提供動力的核心部件。如果沒有引擎,汽車就只能是一個模型,它就無法跑起來。
3D模型也一樣,我們用3DMax軟件制作了一個非常逼真、精美的3D模型,還有光影和動畫效果,甚至每一根發絲都是那么真實,但它是“死”的,不能與人互動。
而3D引擎是讓模型“活”起來。假設我們把3D應用或者3D游戲看作一輛正在奔跑的汽車,那3D引擎就是隱藏在內部驅動它去運行的底層技術。
這就是3D引擎的能力,它為3D模型賦予了“交互方法、物理定律、劇情腳本、AI智能”,讓開發者不需要編寫很多代碼,就能讓3D模型在“體”、“相”、“用”三方面逼近現實世界真實的人和物。
而且與汽車引擎不同,汽車沒引擎不能跑,3D應用和游戲沒引擎也可以運行,3D引擎更像“汽車工廠”,本質上是一種開發游戲和應用的軟件。
實時渲染與離線渲染
講到這里,需要給大家澄清一個概念,剛才說我們引擎是驅動3D應用和3D游戲在不斷的運行,那有伙伴問了:電影院里我們也經??吹揭恍?D渲染的非常精美畫面,那是不是也跟3D引擎有關系?
實際上電影畫面大多數都是離線渲染出來的,跟我們今天聊的3D引擎不是一回事兒,3D引擎的渲染方式是實時的。
那離線渲染引擎和實時渲染引擎有什么本質上的區別呢?
實時渲染(Real-time Rendering)從字面的意思非常容易理解,就是我們要實時看到渲染之后的3D效果。
3D應用和3D游戲這種必須要滿足與用戶之間強交互,比如最常見的3D游戲《英雄聯盟》,或者是一些帶有交互的3D應用,比如智慧城市、智慧工廠等數字孿生項目,一般來說保證流暢運行至少24FPS:只有達到或者超過1秒鐘播放24張連貫圖像,才能人眼觀看時沒有卡頓的感覺。
離線渲染(Offline Rendering)是跟實時渲染相對應的,簡單來說就是我們不需要實時的看到渲染效果的場景。最早電影每幀都要花上幾天的時間來渲染,渲染完成后輸出的一個完整的電影視頻,給到院線去放映就可以了。
即使到今天硬件發展如此迅速,現在電影渲染依然是很慢的。比如電影《阿凡達》如果說在一個普通電腦上渲染,可能還要幾百年的時間,隨著云渲染技術的愈加成熟,直接在渲染農場也能很快完成電影渲染任務。
3D引擎與集成電路很像,都是內部復雜,使用起來反而沒那么復雜。下面這個架構圖就是實時渲染的游戲引擎架構示例,我們可以看到里面包括很多功能模塊,實時渲染是一部分,還有聲音模塊、渲染模塊、圖形系統、UI 系統和內存管理。我們常用的數字孿生引擎里邊也有相應的一些邏輯,比如數據儲戶、孿生體互相控制,還有物理仿真等等。
3D引擎的發展歷史
3D引擎的發展歷史是3D游戲行業發展史的縮影。其實在三十多年前,電子游戲出現的早期,沒有游戲引擎也能開發游戲,我們熟悉的瑪麗兄弟、魂斗羅,都是程序員用簡陋的代碼編輯器,從零開始一行一行寫代碼開發出來的。
在紅白機時代,游戲開發者如何既節省性能又增強游戲體驗:
想必大家很熟悉超級馬里奧這款游戲,下方展示兩張圖,我們可以看到左側的畫面中天空有白云,地上有草叢。大家有沒有發現,白云和草叢長得很像,形狀完全一樣只是顏色發生了變化。
實際上,白云和草叢只用了一張圖,游戲開發者為了保持游戲的性能節約內存,想盡各種辦法。再比如右側的怪物,它有一個不斷左右腳不斷向前踏步的動作,一會兒左邊腳大,一會兒右邊腳大,這樣來回翻轉來實現走動效果的。
那時,用戶的期望很低,游戲的玩法也是很簡單,所以允許使用這種作坊式的粗糙方法。后來游戲市場規模越來越大,用戶要求越來越高,游戲玩法也越來越復雜,這就導致游戲的代碼量變得非常巨大。
開發者們發現每次做游戲都一行行敲代碼很耗時費力,所以能不能設計一套代碼庫?把最基礎、最常用的功能都封裝好,這樣下次做新游戲就不用重新寫代碼了。
一開始,這種想法只是在一些游戲公司中的一小部分程序員中做嘗試,程序員在開發某個功能時多留一個心眼,把未來可能重用的部分單獨剝離出來。這種嘗試就像荒野中微微閃現的星火,但這些零散的可重復利用的代碼塊還遠遠稱不上“引擎”。
終于,1993年一個改變時代的大神出現了,他就是約翰·卡馬克,ID Software的創始人。他設計了人類第一款3D引擎,帶領團隊在短短幾年內就創造了《DOOM》《德軍總部》《雷神之錘》《狂怒》等如雷貫耳的游戲大作。今天,卡馬克被譽為FPS之父、3D游戲之父。
卡馬克和其他程序員不同,他在動手開發游戲之前就先設計了一整套基礎代碼的框架和開發規范,并將所有的基礎代碼寫好,還留下了方便調用的接口,比如圖像渲染接口、3D加速接口、軌跡控制接口等,這樣其他程序員在開發游戲時就可以像拼樂高積木一樣,快速搭建出各種游戲應用,也使得游戲的規劃更合理,功能更穩定,并且游戲開發者只需要將精力聚焦游戲規則本身,提升了游戲開發效率。而這個基礎代碼庫就是最早的3D游戲引擎。
卡馬克開發的世界上第一款3D游戲《德軍總部3D》讓人們看到了一個全新的游戲世界、感受到極為震撼的游戲體驗。這款游戲一出現,一下子引爆了大量的3D游戲需求。后來有一家叫“烏鴉”的游戲開發公司找到卡馬克,買下了這個游戲引擎的授權,于是烏鴉公司就用這款引擎快速開發了不少暢銷游戲。游戲行業就此誕生了一個新的細分市場:3D游戲引擎。
直到今天,3D引擎行業發展進程中,伴隨互聯網時代變遷、軟硬件技術更迭,行業本身出現了不同專業領域的發展方向,逐漸進化出不同領域的專用引擎。
3D引擎賦能創新應用
從2021年開始,元宇宙逐漸進入人們的視野,將成為下一代互聯網的科技革命浪潮。而ChatGPT的爆火,讓元宇宙的熱度逐漸退去,人們開始冷靜下來思考,元宇宙概念變得更加真實,與之相關的數字孿生、XR等產業也展現出更為實用的商業價值。
元宇宙造就了一種全新的、身臨其境的數字世界,想要構建一個與現實世界高度貼合甚至是超越現實世界的“元宇宙”,前提需要創造一個與現實世界1:1還原的虛擬世界,關鍵核心點則是數字孿生,而數字孿生也是構建元宇宙的核心技術之一。
3D引擎所提供的渲染能力和實時交互是數字孿生所需的必要能力之一。開發數字孿生的引擎模擬現實世界自然法則越豐富越強大,就能越好地讓數字孿生體身上的信息發揮作用,數字孿生體被3D引擎驅動,就如同現實物體被自然法則驅動。
因此3D引擎能力決定著數字孿生技術的成熟度,也決定了元宇宙在虛實映射與虛實交互中所能支撐的完整性。
可以預見到,3D引擎將成為下一代互聯網的“CAD”。
如果說數字孿生開發離不開“3D引擎”
那該如何選擇最合適的3D引擎?
3D游戲引擎能否開發數字孿生?
B/S架構和C/S架構如何比較?
常見的WebGL與WebGPU又有什么關系?
......
下一期我們再為大家詳細講解。
審核編輯黃宇
-
CAD
+關注
關注
17文章
1081瀏覽量
72367 -
3D引擎
+關注
關注
0文章
6瀏覽量
8141
發布評論請先 登錄
相關推薦
評論