谷歌地圖是如何實現大規模 3D 建模的?對沙盤遊戲的建模有何啟發?

事無巨細全覆蓋,無論是知名建築,還是髒亂差的民居,還是綠化植被,都有建模。拉近後精細度也好,任意旋轉視角不受影響。 尤其是東京,墨西哥城一類的數量極多,建築外形無規劃的房屋工作量巨大。

巴黎

里約

紐約

威尼斯

阿姆斯特丹

維也納

東京

墨西哥城


看到這個題目真是很巧,我來講講我實習時候的見聞吧!

先說結論,這種三維模型是由無人機航拍測繪生成的。

之前在廣州市城市規劃與勘測設計研究院實習的時候參與過一個關於無人機在城市規劃和測繪中的應用的研究項目,科普一下這種三維模型是怎樣生成的。

一、用什麼做?
進行測繪的無人機有兩種類型,即固定翼螺旋翼,各有優劣。插一句題外話,專業級別設備並非消費級無人機可望之項背,畢竟價格擺在那裡:中高端無人機的價格約在40萬~90萬人民幣的區間內,都能買一輛雷克薩斯了:)

這個萌萌噠傢伙就是固定翼無人機的一種,瑞士sensefly生產的ebee/eBee-RTK版無人機(屬於入門中檔,價格40+萬rmb)

開箱說明書中的參數如下:

eBee是一款由瑞士senseFly公司生產的輕量級、高度耐用、可重複多次使用的無人機,具有操作簡便、輕便安全的特點。它可實現自動飛行獲取影像全自動著陸等操作,能夠快速生成高質量2D和3D航空測繪成果


【參數】

96cm翼展

起飛重量小於700g

運輸箱尺寸55×45×25cm

鋰聚合物電池/11.1V/2150mAh

45分鐘在空時長

巡航速度36-57km/h

抗風能力45km/h(六級風)

1600萬像素相機(定製佳能S110RGB)

單次飛行覆蓋區域1.5-10平方公里

二、能做出什麼?

彩色點雲、真正射影像、數字表面模型、全自動三維模型。現有的航攝系統具備自動的數據處理能力。

彩色點雲,激光掃描得到。

正投影圖,比起一般衛星圖的優勢在於不會有透視(看不到建築立面)

具有高程信息的數字地表面模型。

三維模型,也就是題中所提到的。其實只是測繪成果的一個部分而已。

三、如何進行測繪?
測繪的步驟具體包括:
劃定測繪區域 -&> 規劃航線 -&> 放飛 -&> 進行數據處理

(1)劃定測繪區域
這個沒有什麼好說的,對於特定城市區域,自然是要劃定一個邊界。而像谷歌這種全市範圍的測繪建模,也需要將一個城市分成一個個小的測繪單元。這也是受到無人機的續航時間和日照時長的限制所決定的。

(2)規劃航線

設定起飛點、降落點和飛掠航線。(這裡以另一型號的無人機系統為例)

飛掠軌跡

(3)放飛
這裡也沒啥好說的,不過需要提前申請,以及注意氣象條件。

(4)數據處理
這一步是將採集到的數據通過數據處理系統(與無人機配套)進行處理,生成前述的測繪成果。相關的數據和模型是可以直接導入GIS軟體的。

雖然這些資料基本上不涉密,但是我還是在能夠輔助闡述的前提下儘可能用了零散而非同一項目中的圖片資料,望見諒。(簽了保密協議的人是我啊喂)


@工常邵 @王楚 @董惟禮 提到的都基本正確,在經歷過最早的簡單box extrusion和Sketup 3D Warehouse之後,新一代的google map/earth基本上是基於GIS信息加上航拍信息再三維重建得到的,大家的答案中也從不同的角度說了具體的方式。我這裡只是提供一些信息,看看Google 自己是怎麼說的。

原鏈接在這裡:https://www.youtube.com/watch?v=HMBJ2Hu0NLw
The Next Dimension of Google Maps

這個視頻上傳於2012年,過去的4年中肯定還有很多新的科技不斷的投入到Google Map中,但大體上還是能夠幫助我們理解Google map是如何來的,以及如何運作的。中間還講了很多其他的feature比如google map maker, offline mode,street view。與題目相關的三維模型部分在最後38分鐘處,由google earth的PM Peter Birch上台介紹當時還是新科技尚未全面推廣的三維模型重建技術。

2003 年,當時的Google買下了三維地理信息公司Keyhole, Inc,開始了自己的Google Map/Earth 之路(只有Topography高程信息以及很低像素的貼圖)。

2005年,第一次有了三維的建築模型在Google Earth上屹立起來,不過我們還不能稱其為建築模型,只能說是簡單的massing(只有幾何信息,無材質)。

2006年,這個階段應該就是其他一些答案中提到的3D warehouse時期,配合自家的Sketchup, 可以將模型建的更加精細同時配合以更精確的材質貼圖(但僅有少數landmark available,大部分依然只是廣闊的terrain以及被「拍平」了的房子)。

2008年,地形加建築模型的完善版。這個時候3D warehouse已經有了大量的信息來支持Google Map/Earth,但在地形上面放建築畢竟不是高效的做法,同時還有很多交接和場地的問題(圖中的Coit Tower左下角就很尷尬的懸在了半空中) 。

新的技術通過無人機對測繪的建築/區域拍攝四個不同傾角以及正下方的照片(Oblique Imagery),然後通過照片以及高程信息,重建場地以及建築的mesh模型,之後再把材質和mesh整合起來。具體的過程其他答案中也都提到了,也推薦看Google自己在演示中的講解,我這裡就主要放一些截圖幫助大家理解:

最後這張Peter談到了即使完成了Textured 3D Mesh,還有很多的整理,封裝,優化工作,能夠使得世界各地不同的用戶得到這樣的信息。雖然我並沒有很get到這些紅的綠的線是做什麼的。。。Anyway,大致的流程就是如此,當然具體操作中的各種問題如果討論起來估計夠發好多paper了。如果你對通過照片重建3D模型感興趣,Autodesk有一款手機app叫做123D catch,能夠通過手機拍照來重建模型,自己在家就可以試一試(對拍照角度要求比較嚴格):https://youtu.be/OxsmnDKO7D0


基本上沒什麼幫助。因為兩者的目的訴求完全不同。衛星地圖3D建模的終極目標是提供視覺為主物理信息。而對於開發世界遊戲,實際遊戲世界建模只是其中很小一部分,真正費時費工夫的是其背後的遊戲邏輯。打個比方,用樂高搭個車子挺容易,但是要讓車子能跑,那就完全是另外一番功夫了。


王楚和董惟禮說的都不完全正確。其他很多人(包括題主)把3D建模和3D重建完全搞混了。

先說結論:
1. 谷歌用了航拍和街景兩個系統的圖片;
2. 目標物體的ground truth谷歌自己也沒有;
3. 照片越多,距離越近,重建結果越清晰。
4. 由現實中物體的2D照片和深度信息重建出3D結構,叫3D Reconstruction(3D重建),不叫3D建模(3D modeling)

一個計算機視覺最基本的理論:如果用已知攝像頭為K的照相機,以旋轉和位移分別為[R_1|t_1][R_2|t_2]的兩個位置對同一物體拍攝,那麼照片中每個對應點都可以三角化重建到三維坐標中。

首先Google沒有所謂的「精細真3D模型」,更沒有公司提供「假3D模型」。事實上只要航拍和谷歌街景照片就足以重建所有的點。但這個理論最大的問題是,距離越遠,每個點的誤差也就越大,那麼如何去解決這個問題呢?.....

很顯然......谷歌自己也沒有ground truth去對比(谷歌面試時自己說的)。所以一個樓照片越多,角度越大,特徵點越多,理論上重建的模型誤差越小(因為還要用各種least square演算法去最小化reprojection error),小鎮子或者沒辦法全面拍攝的地方就沒辦法了。

嗯,確實也用街景照片了,因為航拍照片是遠遠不夠的。從天空到地面這麼遠的距離,確實太遠了。只有用了近距離的谷歌街景照片,才能減小誤差,也才能重建樓宇之間被遮擋的部分。


(更正提示:在看了@王楚的答案以後去搜索了一下相關文章,發現我之前寫的答案錯了。程序建模的主要數據來自航拍,而不是衛星圖片。衛星圖片的清晰度和可提供角度都不夠完成谷歌地圖精度的建模。下面特此跟正。 這裡還提供一個網址,裡面有提供通過圖片自動合成模型的軟體,該軟體同時也可以做3D掃描:PMVS2CMVS

簡短答案:用飛機航拍同一地點不同角度的傾斜照片,然後通過程序合成生成出立體模型。

比如東南西北方向的45度角照片各一張,正上方再一張,然後就可以了。(只是打比方,具體需要多少張照片我不清楚,應該是越多越好)不過谷歌地圖肯定對很多地標或著名景點進行過人工優化。

但是谷歌地圖也不是每處地方都精心雕琢過,隨便找些角落就能夠看出來這種建模程序的痕迹。比如巴黎,隨便找一排街邊的法國梧桐,就很明顯了。有些樹背陽有陰影的地方,空隙太小,拍照照不出來,然後程序就沒法識別出來,就會把樹和後面的房子模型連到一起去,或者樹梢與地面都是連在一起的。比如下圖,注意看樹和河岸公共區域的過渡:

其實谷歌地圖很多地方用程式貼圖都沒有經過人工修補,細節都不經看的,比如下面中間偏右的這個街角處建築的立面:

對於地圖建模來說,這種全自動方法的好處那是不用廢話的。
對於沙盤遊戲來說,這種全自動而不需要人工參與的建模應該跟遊戲的本質相違背吧。

非相關專業人士,個人愚見,期待能有高人攜帶乾貨來具體講解下。

以上。


不要忘記谷歌街景啊,街景中兩個位置之間移動的時候可以很明顯看出四周由於不同平面位置不同造成的扭曲。這說明谷歌街景小車是可以取得深度信息的,或者谷歌有能力僅僅依據圖片獲得深度信息,或者谷歌用了不知道哪來的黑科技。然後高度圖微型和雷達應該可以解決。側面和頂面的數據都有了,生成立體圖像的條件就已經充分了。

另外還有一條路,現在衛星圖像不僅有從正上方照下來的,還有一些事帶有一定傾斜角度的。從各個角度拍攝同一物體,只要角度充分,構建模型應該不成問題(準確度沒法保證,不過對於建築足夠了)。
各地地標都是人工建模的。


本人剛好在從事相關的工作,不算高手,分享一下。
google earth的3d模型存在3種情況,分別說明一下

1 精細真3d模型,如題主所示。這種首先一定是航拍,其次一定需要傾斜相機,最後一定要高重疊。當然重疊越高,效果越好。照片解析度越高,效果越好。至於技術上感興趣的同學,可以搜索pmvs查看相關論文,論文的作者古河之前就在Google。

2 假3d模型。比如google earth版本的北京故宮。這種就是委託給外包公司,美術手動建模的。沒聽說用戶可以手動上傳,知道的麻煩把相關信息告訴我一下。

3 簡單的地形起伏。這種是利用等高線圖,使用gis的演算法生成的3d模型。等高線的數據是衛星生成的,具體演算法不是十分清楚,但是估計原理也與基於情況一類似。

另外google為啥沒有中國的,很簡單因為不讓飛。那麼中國有類似的么?不遠了,請大家期待 : )

更新
謝謝大家支持,關於沙盒遊戲的問題。我本人也是這類遊戲的愛好者,gta,睡狗都玩過。使用現在的3d建模效果遠遠達不到沙盒遊戲的效果,如果要達到航拍肯定不行,可能是需要一種類似街景車的設備,然後配合航拍才行。

不過現在的效果倒是很適合空戰遊戲,期待有利用這種技術的遊戲上市,其實這種有些時候成本比僱傭美術低。

另外看到還有說激光掃描儀的,激光掃描儀比較適合室內,以及區域很小的情況。對於大規模場景建模激光掃描儀的效果遠比不上基於圖片建模的效果(至少我看到的是這樣),而且建模的樣子也有很大區別。


看到各位關於「無人機自動測繪」的描述了,在下來補充一點點信息。
首先非常著名的各大建築都是由專業人員手動建模的,剩下的絕大多數是無人機測繪,不過還有一份貢獻來自於大量Google SketchUp(中譯名草圖大師)用戶的貢獻。出於練習也好,想要提高自己家鄉建築的知名度也好也好,甚至是房地產商宣傳時用的模型,經過一定的簡化可以上傳到Google的伺服器,作為一個更高精度(大部分情況下)的模型出現在谷歌地圖當中。對這個功能感興趣的朋友可以在SKP界面的工具欄最右側找到圖標,SKP8.0是地球和紙箱子的圖案,2014/2015/2016的版本是藍色條紋球體和小房子。


居然沒有人回答到點上。
谷歌用的是無人飛機。飛機圍繞城市,拍照,並使用激光掃描城市建築。
隨後計算機將激光測距轉換成模型,將照片用作紋理應用在模型上。對於計算機來說,無論是建築,地形,樹木,都是同一個模型里的組件。
這也是 white house 是人工建模而非激光掃描的原因。


空三定向,密集匹配,點雲構網,紋理映射


前面有回答是熱心網友做的。
作為熱心網友的一員我來補個圖吧。

具體的建築已經不記得了,拿著工具畫了一個下午結果稀里糊塗少花了一塊然後被拒了……


沙盤遊戲?行業的一般叫法是沙盒遊戲,這種模型對沙盒遊戲幫助不大,因為精度太低了,類似GTA那種級別的沙盒遊戲對環境的要求高多了。
gm這種可以幫助開發人員快速了解城市全貌,但是實際開發過程中要用一套自己的過程生成技術或規則重新生成遊戲場景,還是很複雜的。
考慮到遊戲內城市大多是借鑒某個城市,不會百分百還原,其實還是相當於重新設計一個城市。


好像谷歌租了上千台飛思相機來做這個吧。
今年剛接觸的實景三維建模,利用ContextCapture Center(原smart 3d)進行自動的三維重建。還有一些類似的軟體比如街景工廠,pix4d,photoscan,photomesh,不過對比來看CC的效果和效率絕對是領先的水平。
現在國內的測繪院和規劃部門也開始大量的進行這項工作,城市級的三維建模可能會用大飛機或者直升飛機,搭載十鏡頭的飛思相機,或者專業的徠卡的航攝儀。普通的小項目也就是用固定翼或者多軸,現在自己組的傾斜相機,一般相機基本都是用的索尼的,小的是索尼的鏡頭相機qx100或者qx1。固定翼上有搭載a7r,5100,6000的。不過感覺RX 1的效果也不錯,看南方測繪要推一款左右相機飛井字型航線的多軸。這些相機基本上換了鏡頭可能效果才好一些,福倫達,適馬,蔡司的鏡頭都有人在用。這兩年工業級的多軸非常火,但是 今年看了太多家的多軸,好幾十萬有的甚至百萬的東西,渣的不行。一個一個都是產品不成熟著急往外推,敢搭載著傾斜相機飛25分鐘的都還沒出來。
不得不說中國的軟體跟國外有很大的差距,以前覺得大學學的東西基本用不到。沒想到一款軟體就是完完全全的把攝影測量學這本書搬了過來,空中三角測量,空間後方交會,相對定向,絕對定向,共線方程,光束法平差,各種坐標系的轉換。其實以前一直不喜歡自己的這個專業,一直以為會像個民工一樣扛著架子到處跑,風裡來雨里去的。當接觸到傾斜攝影測量這個專業就像發現了新世界,每天都有提高的感覺真好。很傻瓜式的軟體,卻總是讓你有一種成就感。可以給你們看看我們公司做的一個小廟的模型。

哈爾濱
http://oss.aliyuncs.com/ifatest/Web/3Mx_HaErBin_church/App/index.html#%2F
山西
http://oss.aliyuncs.com/ifatest/Web/3MX_fabu/App/index.html#%2F

其實模型的精度完全取決於你的GSD,也就是同一款相機飛的越低越好,或者是同一高度選用焦距和感測器尺寸稍大的相機。做出來的實景模型真的比人工模型真實也看起來舒服的多。很多公司開始利用實景模型去做遊戲場景或者是vr,高精度的模型放進遊戲場景里那體驗還是很爽的,想想當有一天你熟悉的地方被放進遊戲,然後再將你生成一個真三維模型,這個體驗想想都期待。很多遊戲公司在用fbx的模型格式,但有一個很大的問題大場景的數據量過大,也都在做著這方面的優化。

也有服裝公司也開始接觸這款軟體,在研究真正的三維試衣的可能性。

手底下大大小小的也用CC做過不少項目了,因為軟體一些的局限性有些數據做出來是不能直接進行利用的,需要經營後期修飾,利用dp,傑魔,3d max這些軟體來對建築或者破洞進行一定的修整。然後將模型放到一些平台里,比如skyline,超圖,偉景行,這些公司的平台軟體擁有了大量的市場,效果也確實還不錯。


使用傾斜攝影測量技術 簡單來說 應該類似這個東西 當且僅當刀片越來越多時,獲得了更多的蘋果切片時,就能更真實地反應這個蘋果的三維輪廓,輔以貼圖即可成模。


上面大多數回答只是說了圖像採集部分,沒有說到核心演算法,即有了圖像如何生成這些模型。
正好做過一些相關工作,說說我知道的。
這應該是基於圖像的三維重構。簡單來說,現在的三維重構演算法可以做到:你繞目標一周拍一些圖像,就可以重構出表面模型。圖像當然是越多越好。原理涉及到特徵點提取(SIFT特徵)、相機姿態求解、稀疏點雲重構和最後的密集重建(一般是表面重建);
這位大牛:Noah Snavely -- Cornell Computer Science 是該領域的傑出貢獻者,其貢獻在於 相機姿態求解、稀疏點雲重構 這兩步。屬於structure from motion 範疇。
另一位大牛:Yasutaka Furukawa"s Homepage 是密集重構方面的傑出貢獻者,屬於multi view stereo範疇 。
兩位大牛在2008年合作發表一篇「Building Rome in a Day」(項目主頁)
論文部分截圖:

還有項目主頁:Photo Tourism 就是從互聯網上下載的某一經典的遊客拍的圖像,進行三維重構。示意圖:第二列就是場景的稀疏點雲模型以及相機位置的示意圖。

有演算法就可以反解出該圖像拍攝時相機的位置,最後生成三維點雲。後續的密集重建有多重多樣。
兩位大牛在計算機視覺頂會上每年都會有文章,包括CVPR ECCV ICCV 等。
另外,該技術也在應用於文化遺產三維資料庫建立等。由於涉及到特徵點提取,所以紋理不豐富的目標效果較差,此外,反光強烈、薄的結構效果也不好。參考:Multi-View Stereo: A Tutorial Yasutaka Furukawa and Carlos Hernandez
Foundations and Trends in Computer Graphics and Vision, 2015


正好從事這方面的工作,這種精細程度的大範圍三維重建,現在基本使用傾斜攝影照片自動三維重建(全世界基本都是用Smart3D)而來的,傾斜照片以前大部分是大飛機飛的,最近流行使用無人機拍攝(可以飛的更低,100米高度)模型的精細程度更高,一般是5個相機,前後左右下個一個,也有用兩個相機的然後配合旋轉拍攝的(主要是要形成同一物體不同角度的照片),然後使用smart3d進行自動三維重建(密集匹配點雲,空三,自動構TIN,貼紋理等),對於精細要求很高的對象,基本只能使用3dsmax來單獨建模


謝邀。
我對谷歌地圖這個沒有研究,但是看了幾位高票答案,結合近期看的眾多講座,猜想可能確實如最高票答案所說,利用無人機進行傾斜攝影,通過點雲數據進行三維重建。
至於對沙盤遊戲建模的啟發,我認為 @Avatar Ye說的不無道理,谷歌地圖的這一技術只是為了完善LBS以及增加其地理空間信息的精度和適用性,而沙盤遊戲開發的重心並不在此,不過如果真能完全重構整個世界,也算是做了一點微小的工作。


正巧,去年設計並製造了一款傾斜相機,也來強答吧。
三維重建,目前業內主要用傾斜相機來採集數據,小型的可以用無人機飛,但更專業的一般還是有人飛機飛的數據。
目前業內常用的傾斜相機主要有徠卡和微軟(我知道的部分),通常是下視一台,45度傾斜四台,中畫幅相機。
配合POS系統,照相的同時記錄當時的姿態和位置,便於模型重建。
採集回的照片和數據除了可以三維重建之外,還可以給出某個地點的四周傾斜影像,傾斜相機數目越多,能給出的傾斜影像越多。
三維重建完成後再用照片里提取的紋理進行貼圖,完成實際看到的模型。
目前可以三維重建已經可以達到厘米級精度。
我的那款相機採用13台全畫幅相機(一台下視,12台傾斜)像素超過5億,可以對每個地點採集13個角度的畫面。重建精度可以更好,而且還能提供更多的傾斜影像。
而且因為每次拍攝的照片全部與相鄰照片有重疊,實際上也是一台全景相機,還可以拼接成一個完整的全景畫面。可以用來做空中瀏覽。


去年暑假在那邊實習過 大概了解了整個過程

其實用的就是計算機視覺的sfm以及多視角幾何那一套東西 直接從航拍圖像出結果 沒有用點雲之類的數據 大概是成本上以及精度上綜合考慮的折中方案吧

至於衛星數據嘛 主要用途不是重建三維模型 畢竟數據量達不到重建所需的密集程度 而且價格昂貴 不過衛星圖像的用途還是很廣泛的


機載激光雷達可以根據反射波形得到點雲,重建後就是三維模型了,再配合航拍影像可以得到點雲顏色或者紋理


我記得以前可以自己上傳,在sketchup里,在裡面獲取地圖,然後製作,再回傳,至於大規模的只有谷歌的人才清楚吧


傾斜攝影測量可以大規模三維建模,三維激光點雲可以高精度三維建模。


推薦閱讀:

板塊運動、地理、氣候如何影響人類歷史,地球歷史和人類歷史的互動有何關係 ?
治理華北地區霧霾,把太行山炸開管用嗎?
如何理解「曾母暗沙自古以來屬於中國」?
釣魚島上成群的黑山羊哪來的?
除了美國黃石火山以外還有什麼主要的超級火山? 它們各自有什麼特點?

TAG:遊戲 | 地理 | Google地圖 | 谷歌(Google) | 3D建模 |