照相建模,5,000+ 張照片還原實景大場面!

編者按:
2019年,舉世聞名的巴黎圣母院被燒毀。幸運的是,早在幾年前已有學(xué)者對整個巴黎圣母院的外部建筑結(jié)構(gòu)和內(nèi)部角落如屋頂、拱頂、樓梯間等都進行了完整掃描和建模,對后續(xù)重建工作起到了很大幫助。
隨著技術(shù)發(fā)展,Photogrammetry(照相建模)被大量寫實類游戲應(yīng)用于人臉、物體、地形掃描,如《戰(zhàn)地》、《星戰(zhàn)》、《FIFA》、《刺客信條》,以及NExT 在研AA游戲《重生邊緣》,不僅提高了游戲的真實度,也極大縮短了開發(fā)周期。
本文是Photogrammetry生產(chǎn)管線上篇,讓讀者對照片采集、后期數(shù)據(jù)處理、還原三維模型的一系列工作流和解決方案有整體了解。下篇將著重介紹數(shù)據(jù)處理中運用到的Delight去光照工具。
作者金力,NExT 高級技術(shù)美術(shù),一枚養(yǎng)了4只貓咪并為其竭誠服務(wù)的新時代貓奴,崇尚貓主們獨立而慵懶,高傲且與世無爭的生活方式(#^.^#)。


Photogrammetry是一種通過對一系列照片里的圖像信息進行對比、測量,并把這些信息翻譯成模型、貼圖等有用信息的技術(shù)。它的輸入是一系列照片,輸出是點云信息、3D模型信息和貼圖信息。簡而言之使用這個技術(shù),我們可以通過對物體拍攝各個角度的照片,并把這些照片導(dǎo)入軟件,快速生成還原模型的外貌和顏色。
首先我們看一下這兩張照片,你能告訴我哪張是真實拍攝的照片,哪張是我在3D軟件里的截圖嗎?的確從肉眼上很難分清,這也是Photogrammetry的優(yōu)點——還原真實性。

下圖模型,是我用手機在辦公桌前拍攝的,一共拍攝了27張照片,并把它導(dǎo)入軟件生成,整個過程不超過15分鐘。

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

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


讓我們先來看下Photogrammetry和普通美術(shù)管線的流程:
Photogrammetry生產(chǎn)管線

普通美術(shù)管線

相比普通美術(shù)管線,Photogrammetry的優(yōu)點是:
快速生成高模;
更精準(zhǔn)的外形;
更真實的顏色還原。
就好比下面照片里的頭骨,美術(shù)可能需要一周或更久對它進行高模的雕琢,以及顏色貼圖的制作,而使用Photogrammetry可以在短短數(shù)小時完成上述工作。

但它也有缺點:
不適合制作非寫實素材,一定要有可拍攝物體;
不適合表面光澤度較高的物體,如金屬、玻璃;
依賴良好的光照環(huán)境:棚拍時,需對物體進行打光,確保每個面都有良好的照明。外拍時,盡量選擇陰天,用來避免比較強烈的光影對比和陰影;

拍攝照片
相機推薦采用全畫幅單反相機,方便后期校色、擁有更好的EV控制、更高的成像質(zhì)量,鏡頭采用可變焦鏡頭,外拍時備足記憶卡和電池,同時還要準(zhǔn)備好三腳架、色卡(含18灰卡)、卷尺、反光板、大疆無人機、偏振鏡等。

在拍攝前首先把相機調(diào)整到M檔,固定白平衡,然后輸出格式為Raw格式。
選定拍攝目標(biāo)后使用色卡的18灰卡面確定相機在當(dāng)前環(huán)境下的曝光,分別調(diào)整ISO、快門速度以及光圈,讓相機擁有一個合理的曝光范圍。在拍攝物體前,需要先拍攝色卡。

對物體進行拍攝時,要保持剛才調(diào)整好的相機參數(shù),中途不能有任何變化,每一張照片需要保持與前一張照片有20%到30%的重疊區(qū)域。采用單點對焦、自動對焦,以拍攝物為中心,大約每15度就需要拍攝一組照片。拍攝時,可以采取蹲姿、立姿、俯拍,確保每個角度的照片都有覆蓋到。最后再檢查一下有沒有跑焦或者模糊的照片,進行補拍。
下面三維軟件里的每個小點,就代表了一個相機的機位,可以看出我們對它進行了360度的拍攝,每個角度都有覆蓋到。

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

為了拍攝足夠清晰并且有連續(xù)性的照片,建議使用支持Raw檔連拍,掛可換相機的大疆“悟”這樣的專業(yè)無人機。另外,因為無人機的ssd容量有限,通常還需要準(zhǔn)備筆記本和移動硬盤,以便于存儲數(shù)據(jù)。

無人機操作不慎很容易“炸機”,實際飛行前需仔細閱讀說明書,并在安全的地方操練。不僅要盡量避免發(fā)生飛行事故,在實際拍攝時,受制于電池、飛行時間有限,熟練的飛行技術(shù)也有助于盡快飛到合適的拍攝位置,保持合適的拍攝距離,減少調(diào)整時間。在出發(fā)前,還要檢查禁飛區(qū)、事先規(guī)劃好飛行路線,對建筑物通常需要完整的環(huán)繞飛行。
無人機與用相機拍攝的目的相同,但實際情況稍有不同。無人機飛行范圍較遠,拍攝過程中光照環(huán)境差異較大,因此如果用手動模式拍攝,需不停調(diào)整曝光。經(jīng)過實踐,邊控制飛行邊調(diào)拍攝參數(shù)比較困難,一般自動模式反而效果較好。無人機拍攝距離越遠,拍攝到的表面的特征信息越少,拍攝時要盡量靠近。但實際還是會比拿相機拍攝要遠,因此較好還原模型所需的照片要多得多。
色卡校色
因為相機的出廠商和硬件都是不一樣的,拍出來的照片多少會有一點偏色。拍攝環(huán)境對物體的顏色有很大影響,為了還原真實性,所以要對它進行校色。將之前拍攝的色卡的照片,分別對齊顏色、白平衡、曝光三項進行校準(zhǔn),生成顏色配置文件,并使用這個文件對一系列照片進行批量校色。

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

游戲精度模型制作
高模生成結(jié)束后,由于它的面數(shù)非常之高,復(fù)雜度可能從數(shù)百萬到上千萬面,可以看出左邊這張圖,它的多邊形已經(jīng)密到看不清了。需要首先對它進行面數(shù)的優(yōu)化,我們在ZBrush里對這個石雕進行優(yōu)化,從800萬面大約減到了1.4萬面,然后同時可以用ZRemesher對拓撲進行一次優(yōu)化。

優(yōu)化完這個模型,把它導(dǎo)入Maya或者Max進行拓撲的修正和UV的展開,為之后的貼紙烘焙做好工作。

之前我們導(dǎo)出的高模包含了其模型本身和顏色貼圖信息,我們需要把這些信息烘焙到我們剛才制作好的低模上,我們一般的烘焙的貼圖有:Base Color 、Tangent Space Normal和AO貼圖。這三張貼圖,我們在平時的PBR游戲貼圖制作的流程中是經(jīng)常用到的,同時我們也可以選取烘焙Height Map,像Bent Normal和W Normal。
這些貼圖在之后Delight去光照的流程里也會有用到,推薦烘焙的軟件有xNormal和Substance Designer。
除此之外,我們PBR管線還需要Roughness和Metallic這兩張至關(guān)重要的貼圖。由于我們拍攝的模型都是相對粗糙的非金屬模型,那我們可以用Base Color和Normal Map大致推算出它的Roughness。

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

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

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


分享我們的一次拍攝和制作經(jīng)歷,實際上當(dāng)時碰到了非常多問題。
沒有時間?沒有預(yù)算?
我們的目標(biāo)是拍攝一個廢棄工廠,事先在網(wǎng)上尋找合適目標(biāo),最終選取了一個即將要拆除的工廠。我們在地圖上大致找了一些參考,并制定了一些簡單的拍攝計劃,但由于這個工廠平時進不去,我們也不知道進去到底能不能取到想要的素材,最終在有限的經(jīng)費和協(xié)商下,爭取進去拍攝一天。

按照事先的分配,我們對工廠的各個角落進行取材,并收集到了大約5,000多張照片,從中篩選出69個可以還原的模型。
但我們只有四個美術(shù),由于年底大家手頭還有其他的活兒,每人每周大概只能工作三到五個小時,而我們的Deadline是2個月后。
困擾我們的另一個問題是,由于事先沒有實地考察,有一些要規(guī)劃拍攝的東西和實際上看到的有較大出入,有些可能因為人走不上去,沒法取景。這就讓我們反思了一下關(guān)卡的制作流程。
普通來說,一個關(guān)卡制作周期可以分為從原畫設(shè)計,然后白模制作、制作游戲模型,到把這些游戲模型替換白盒,基本上要做的東西都是事先規(guī)劃好,然后模型也是人工制作的。

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

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

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

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

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

如何制作貼圖
之前說的Roughness貼圖和合并貼圖,我們使用了Substance Designer對它們進行了批量化處理。但這樣就可以了嗎?不,由于外拍時受天氣的影響,照片上多少會有一些陰影,或者說在一些背光的面會比較暗,我們的Base color不可以包含陰影,所以我們同時開發(fā)了Delight(去光照)工具。
Delight在自動化管線里加入了對Base Color的去陰影處理。左邊這張圖就是在我們?nèi)リ幱爸?,可以看到它有非常強烈的陰影,右邊這張是去完陰影后。

最終我們在三天時間內(nèi),使用自動化生產(chǎn)流程完成了所有的Placeholder模型制作,并且交給美術(shù)關(guān)卡進行擺放,然后我們把足夠的時間,留給后續(xù)人工處理一些近處的模型。

以下是在引擎里截的一些截圖。

我們對Base Color進行Delight的處理,可以給它加入一些時間上的變化,也就是光照的變化。

以下是我們此次拍攝的廢棄工廠建模。

下篇將帶來Delight去光照工具的分享,敬請期待!