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