TGDC | 騰訊互娛金力,李奇:如何重建室外3D大場景?

GameLook報道/2020年12月7日- 10日,由騰訊游戲學院舉辦的第四屆騰訊游戲開發者大會(Tencent Game Developers Conference,簡稱TGDC)在線上舉行。

TGDC自 2017年創辦以來,一直堅持以開發者視角與需求為出發點,結合行業發展趨勢,對大會內容進行不斷升級和擴充,旨在為國內外游戲專業人士打造開放的交流分享平臺,推動游戲行業良性發展、探索游戲更多可能。

在第三日(12月9日)的活動中,來自騰訊互動娛樂NExT Studios高級技術美術師金力和高級工程師李奇,他們從Photogrammetry制作流程,在實際運用中出現的問題,以及Delight工具的介紹三個方面出發,向我們分享了在游戲領域中的如何重建室外3D大場景。

以下是演講具體內容:

金力:大家好,我叫金力,我是一名技術美術,來自騰訊NExT工作室。今天我要分享的題目是Photogrammetry在游戲領域中的應用。

這次分享主要由三部分組成:一,介紹Photogrammetry的美術制作流程;二,我們在實際應用中遇到的問題;第三部分,Delight工具的介紹,將由我的同事李奇做詳細的介紹。

Photogrammetry近年來這個詞在游戲領域里越來越多的被提及,什么是Photogrammetry?

它是一種通過對一系列照片里的圖像信息進行對比、測量,并把這些信息翻譯成模型、貼圖等有用信息的技術。它的輸入是一系列照片,輸出是點云信息、3D模型信息以及貼圖信息。簡而言之使用這個技術,我們可以通過對物體拍攝各個角度的照片,并把這些照片導入軟件,快速生成還原模型的外貌和顏色,讓我們來更清楚地認識它。

首先我們看一下這兩張照片,你能告訴我哪張是真實拍攝的照片,而哪張是我在3D軟件里的截圖嗎?是右邊這張,你猜對了嗎?的確從肉眼上很難分清,這也是Photogrammetry的優點,還原真實性,接下來讓我們更仔細地認識它。

首先它是一組點云數據并且通過點云數據生成模型,最后再把照片的顏色投射到模型上。

大家看這個模型,是我用這部手機在我的辦公桌前拍攝的,一共拍攝了27張照片,并且把它導入軟件生成,這整個過程不超過15分鐘。

看一下它在3D空間里的樣子。

它有什么優缺點呢?

它的優點就像我剛才介紹的,它能快速地生成高模,擁有更精準的外形和更真實的顏色還原。就好比這個照片里的頭骨,可能美術需要一周或者更久的時間對它進行高模的雕琢,以及顏色貼圖的制作,而使用Photogrammetry,我們可以在短短數小時完成上述工作。

但是它的前提就如它的缺點,一定要有可拍攝的物體,就好比對那些天馬行空的設計,一些非寫實類的設計是沒有辦法制作的。第二,拍攝的時候需要依賴良好的光照環境,比如棚拍的時候,我們需要對它進行打光,確保每個面都有良好的照明,在外拍的時候,我們盡量要選擇陰天,用來避免比較強烈的光影對比,以及比較強烈的陰影。第三,對于表面光澤度比較高的物體,比如金屬、玻璃,我們是沒有辦法完成的。

Photogrammetry已經在大量寫實類游戲里有廣泛的應用。例如《戰地》、《星戰》系列、《FIFA》系列、《刺客信條》等游戲都使用Photogrammetry技術,對人臉掃描、物件掃描、地形掃描。在極大了提高了真實度的同時,也極大縮短了一些物體的制作周期。

另外Photogrammetry在其他領域也有廣泛的用武之地,比如對古生物化石和古文物的數字化保存,對地貌的三維重建,甚至可以通過顯微鏡制作微生物的三維模型,可以說只要有照片能拍攝到的它都能使用。

那這樣一個技術,我們如何把它引入到游戲的制作過程中呢?

我們梳理了一下美術的制作流程,分別為拍攝照片、校色生成、3D模型、模型優化、貼圖烘焙,最后導入引擎。而和普通美術管線相比,我們可以看出Photogrammetry的另一個優勢在于,高模的制作周期極大的縮短。

下面分享一下我們總結的Photogrammetry制作流程。

首先是設備的選擇,推薦采用單反相機,可以輸出Raw格式,方便后期的校色,以及擁有更好的EV控制和更高的成像質量,鏡頭我們采用可變焦鏡頭,外拍的時候,我們要備足記憶卡和電池,同時一定要準備好色卡。

在拍攝之前,我們首先把相機調整到M檔,固定白平衡,然后輸出格式為Raw格式。

選定拍攝目標后我們使用色卡的18灰卡面確定相機在當前環境下的曝光,分別調整ISO、快門速度以及光圈,讓相機在當前的環境下,擁有一個合理的曝光范圍。在拍攝物體前,我們需要先拍攝色卡。

對物體進行拍攝時,我們要保持剛才調整好的相機參數,中途不能有任何變化,每一張照片需要保持與前一張照片有20%到30%的重疊區域。對焦方式我們采用單點對焦、自動對焦,以拍攝物為中心,大約每15度我們需要拍攝一組照片。拍攝的時候,我們可以采取蹲姿、立姿、俯拍,確保每個角度的照片都有覆蓋到。最后我們檢查一下有沒有跑焦或者模糊的照片,進行補拍。

像右圖這張,是我們在三維軟件里的截圖。它每個小點,就代表了一個相機的機位,可以看出我們對它進行360度的拍攝,每個角度都有覆蓋到。

而對于一些比較高大的建筑,像這樣一個在佘山上的教堂,我們用無人機對它拍攝了將近2000多張各個角度的照片,來對它進行三維的重建。

色卡校色,為什么要進行校色呢?

因為我們的相機都是不一樣的,生產廠商不一樣,硬件也不一樣,所以拍出來的照片多少會有一點偏色。我們前面說到了要還原真實性,所以我們就要對它進行校色,我們要把之前拍攝的色卡的照片,分別對齊顏色、白平衡、曝光三項進行校準,生成顏色配置文件,并使用這個文件對一系列照片進行批量地校色。

3D模型生成,我們主要使用的軟件是Reality capture和Photoscan,它們的輸入是剛才校色完的照片,輸出是高模、頂點色和顏色貼圖。對高模我們有一個多邊形數量的限制,大約不能超過3000萬,如果太高的話,我們可能在之后的制作中會遇到麻煩。

高模生成結束后,由于它的面數非常之高,它的復雜度可能從數百萬到上千萬面,可以看出左邊這張圖,它的多邊形已經密到看不清了。我們需要首先對它進行面數的優化,我們可以在Zbrush里對這個石雕進行優化,從800萬面大約減到了1.4萬面,然后同時可以用zRemesher對拓撲進行一次優化。

優化完這個模型,我們把它導入Maya或者Max進行拓撲的修正和UV的展開,為之后的貼紙烘焙做好工作。

之前我們導出的高模包含了其模型本身的信息和顏色貼圖信息,我們需要把這些信息烘焙到我們剛才制作好的低模上,我們一般的烘焙的貼圖有:Basecolor 、Tangent Space Normal和AO貼圖。這三張貼圖,我們在平時的PBR游戲貼圖制作的流程中是經常用到的,同時我們也可以選取烘焙Heightmap,像bent normal和w normal。

這些貼圖在之后Delight的流程里也會有用到,推薦烘焙的軟件有Xnormal和substance。

除此之外,我們PBR管線還需要Roughness和metallic這兩張至關重要的貼圖。由于我們拍攝的模型都是相對粗糙的非金屬模型,那我們可以用basecolor和normalmap大致推算出它的roughness。

并且把metallic和Roughness以及AO貼圖,分別存到一張貼圖的RGB三個通道中,這樣可以有效地減少之后在材質里對貼圖數量的應用。

最后把低模和烘焙好的貼圖一起導入引擎,并把貼圖連到相應的材質通道里賦予模型。這個模型就是我們在UE4里的截圖。

這是一些我們用3D掃描還原到引擎的模型,它們包含了像航拍建筑、古建筑、石雕、樹木、石頭、磚墻,甚至一些人為去除高光的車輛模型。

沒有時間?沒有預算?但是沒有問題!這是我們的一次拍攝和制作經歷,實際上我們碰到了非常多的問題。

我們的目標是拍攝這樣一個廢棄的工廠,事先我們在網上尋找合適的目標,并最終選取了一個即將要拆除的工廠,我們在地圖上大致找了一些參考,并制定了一些簡單的拍攝計劃,但是由于這個工廠平時進不去的,所以我們也不知道進去到底能不能取到我們想要的素材,最終在有限的經費和協商下,我們可以進去拍攝一天。

按照事先的分配,我們對工廠的各個角落進行取材,并且收集到了大約5000多張照片,并從中篩選出69個可以還原的模型。但是讓我們看看其他數字,我們只有四個美術,但由于年底每人每周大概只能工作三到五個小時,而我們的deadline是2個月后。

困擾我們的另一個問題是,由于事先沒有實地考察,有一些要規劃拍攝的東西和實際上看到的有比較大的出入,有些可能因為人走不上去,沒辦法取景。這就讓我們反思了一下關卡的制作流程

普通來說,一個關卡制作周期可以分為從原畫設計,然后白模制作、制作游戲模型,到把這些游戲模型替換白盒,基本上要做的東西都是事先可以規劃好,然后模型也是人工制作的。

對我們來說即使制作了白盒模型,實地拍攝時,我們不一定可以取材到合適的模型去替換。我們所擁有的是大量掃描數據,就這讓我們重新制定了計劃,從現有的模型中選擇合適的來拼接關卡。

這就是從5000張照片里我們篩選出的69個物件,以我們的預算和人力,根本不可能把這些物件用我剛才介紹的流程一一做好,并且導入引擎,交給關卡設計師。怎么辦呢?

我們重新定義了美術制作管線,我們必須要用自動化處理大部分的模型,我把這部分模型定義為Placeholder,就是可以作為預覽或者遠景。首先交給關卡設計師進行關卡的擺放,并且在有限的人力下,合理地選擇進出的模型進行人工優化。

如何處理模型?這里我們引入了Houdini的自動管線,對生產高模進行自動減面檢面、自動拓撲、自動UV展開,并且烘焙貼圖,甚至自動Lod的制作。

不得不說自動處理的模型和人工制作的模型還是有比較大的差距的。它缺陷主要是,它的拓撲和UV比較不是很理想,但是也有一部分模型,由于模型比較簡單,它自動生成的UV和拓撲還是可以的,就好比這個時裝。

之前說的roughness貼圖和合并貼圖,我們使用了substance designer對它們進行了批量化處理。

但是這樣就可以了嗎?不,由于外拍的時候天氣原因的影響,照片上多少會有一些陰影,或者說在一些背光的面會比較暗,我們的base color不可以包含陰影,所以我們同時開發了Delight工具。

Delight在自動化管線里加入了對base color的去陰影處理。左邊這張圖就是在我們去陰影之前,可以看到它有非常強烈的陰影,右邊這張是去完陰影后。

最終我們在三天時間內,使用自動化生產流程完成了所有的place holder模型制作,并且交給美術關卡進行擺放,然后我們把足夠的時間,留給后續人工處理一些近處的模型。以下是我在引擎里截的一些截圖。

由于我們對base color進行Delight的處理,我們就可以給它加入一些時間上的變化,也就是光照的變化,下面我播放一個我們的demo視頻。


好,我的部分到此結束,接下來由李奇同學介紹Delight工具。

李奇:大家好,我叫李奇,是Next的程序(員)。剛才金力已經大致介紹了一下我們工作室Photogrammetry的內容生產管線,接下來由我介紹一下,我們在去光照上做的工作。

那為什么要去光照呢?我們現在的模型,其實是在現實中拍攝的照片,然后以照片來還原的模型,那它必然帶有拍攝的時候環境中的那些光照信息,而且都是在不同的環境下拍攝的,每次的光線都不一樣,那它生成的三維模型的貼圖也是一樣是由多張照片采集來的平均色,所以一樣會帶有這些信息,我們有時候無法選擇在什么條件下完成模型的拍攝任務。

就像這個模型一樣,很明顯是帶光照的,然后它生成的漫反射貼圖也是帶光照、帶影子的,這樣的模型導入引擎使用的話,你必須要把光照給去掉,你才可以在引擎里面重新給它打上游戲關卡的光照。

我們提出了一個可以去掉太陽光影子的方案,接下來我跟大家介紹一下。

首先我們需要準備一些貼圖數據,因為我們在去光照工具中不會直接使用模型數據,我們需要生成左邊那個位置貼圖跟右邊那個法線貼圖,我們才可以在工具里面完成剩下的Delight工作。這兩張貼圖呢我們可以用高模來進行烘焙,也可以用簡單的Shader來進行轉寫,只是這樣子轉寫的話是模型,低模的數據,但是其實沒有太大關系。

之后我們需要在模型上面,指定兩個點,就像這個一樣,我們需要指定影子投影的原點,還有影子投出去以后的位置點,然后指定完以后呢,我們得到了一個直射光的方向信息。

有了直射光方向,我們便可以渲染模型自身的Shadow Map,然后可以把它直接轉寫成UV空間的Mask,用來標記哪個部分是在影子里,哪個部分不在影子里。

然后采集LUT,我們實際上用了兩張五維的LUT,以貼圖讀取的位置和法線經緯度為坐標,對漫反射貼圖的每一個像素進行采集,然后將亮面和暗面的顏色累計到兩張LUT上,得到亮面和暗面的平均色信息。

為LUT生成Mips,將相鄰的像素和顏色權重加起來獲得平均的顏色信息,這樣就可以保證每一個坐標都有采樣值可用,而且其也拿到了更平均化的信息,然后我們就完成了前面的數據準備,可以進行去光照了。

對漫反射貼圖的每一個像素,我們使用它的位置還有法線方向信息,對兩個LUT分別進行查詢,查詢的結果可以上傳亮度差,然后再用亮度差對陰影的部分進行Delight,就能得到去光照后的結果。

我們實際上還為LUT采樣,實現了線性插值,以改善結果。左邊是沒有插值的結果,右邊是插值后的結果,可以看到有明顯的改善。

完成去光照以后,我們得到了右圖的結果,然后左圖的話是沒有經過去光照的結果。

這個方法處理大多數模型沒什么問題,但是有些顏色比較復雜的模型,用這個方法可能會有顏色溢出的情況,導致結果不夠理想,所以我們還提出了第二個方法。

首先先對影子的Mask做邊緣提取,只保留位置和法線都連續的地方,這樣可以避免UV接縫的地方影響結果,以找到邊緣為中心,采集一定區域的像素的平均色,這個大小是可以配置的,比如64×64,分成亮暗兩個部分的平均色,其中亮部分在采集的時候是要考慮法線方向的影響。

然后以位置為坐標,將剛才計算出來的光源亮度采集到一張LUT里面,這樣LUT就保存著區域的光照信息,再對陰影中的像素,進行LUT的查詢,既可拿到亮度信息,然后就可以去光照。

這是去光照以后的結果,左邊為原始模型,右邊為去光照以后的模型。作為對比,左邊是Agisoft去光照工具生成的結果,右邊是我們的工具生成的結果。

我們還實現了去環境光遮蔽的功能,算法主要來自于Unity的工具,主要原理是采集平均色,然后通過多次的LUT采集和采樣,讓整體顏色和亮度都更接近平均值。我們實現了去環境光遮蔽的結果是這樣的。

我們現在將整套去光照流程,包括直射光的指定和貼圖的生成也都集成在Houdini中,與之前介紹的整個自動處理管線流程也很好地結合在了一起,這就是我們在去光照上做的工作。

我的部分的分享暫時告一段落了,謝謝大家。

以上就是我們今天的分享,還有一個Q&A環節。

我們從觀眾的問題中選取了一些問題,并且進行回答。

Q&A

第一個問題是請問你們拍攝的時候是幾個人拍攝的?前面的校色流程是否可以保證每個人用不同相機的時候都有一樣的色彩?對拍攝有沒有特別的要求?

實際上我們在拍攝剛才那個佘山的教堂的時候,在拍攝下面部分的時候,我們是采用了多機位,然后每個同學的相機也是不同型號的,但是我們貫徹了一個制作流程,就是我們拍攝每組照片之前都會對灰卡進行測光,并且拍每一組照片前都會拍攝色卡,這樣的話,就能保證我們在后期對每一組照片進行校色的時候,把他們校到同樣一個色彩,這樣是可以的。

第二個問題我想由李奇來回答。

第二個問題是還原PBR材質的時候,應該還需要另外幾張貼圖,你們還有什么對應的解決方案嗎?

其實我們之前分享的流程里面,就已經有通過漫反射貼圖粗略地估算法線和粗糙度貼圖的流程,放到引擎中用其實結果也還不錯。但畢竟只是估算,結果不是那么準確吧,現在我們也在探索通過傳統光學測量解算,或者是通過AI深度學習這兩個方案,來嘗試生成更好的PBR貼圖。

今天我們的分享到此結束,感謝大家。

如若轉載,請注明出處:http://www.hongkong333.com/2020/12/408389

關注微信
韩国和日本免费不卡在线a_有码av高清电视免费观看_国产国语对白露脸正在播放