當前位置: 華文問答 > 數碼

為什麽在虛擬現實技術等用物理和數學規律模擬世界需要耗費大量的計算?

2015-01-20數碼

有一個理論是在【失控】中提出來的:

想要知道真實世界的結果只有一個方法,那就是執行這個世界。

要想完全精確的模擬這個世界執行,那就只有再造一個一模一樣的世界了。

題主在補充裏說道:「 為什麽真實世界裏無論簡單還是復雜的物理過程發生得都毫不費力? 」但事實上, 真實世界裏哪怕看起來再簡單不過的物理過程都復雜的不知凡幾

簡單如玻璃杯掉在地上摔碎,都有超過億億個分子在互相作用。玻璃的裂痕為什麽是這樣的而不是那樣的?為什麽這次的聲音比上一次摔碎的那個要清脆?

或許我們會回答:因為那裏有一些雜質,比別的地方脆弱,還因為玻璃的著地點在落地的瞬間傳遞的應力波是那種樣子而不是這種樣子。你甚至還可以接著解釋:影響玻璃杯的著地姿勢的包括當時的幾萬億個空氣裏面的分子和微塵……

總之,參與的分子太多了,而描述每一個分子都需要比較大的運算量。將這些海量分子一起模擬,這大大超出了所有電腦的計算能力,在可預見的未來根本就不可能。看,上帝用一個玻璃杯打敗了現在的人類。不過,我們根本就不需要這樣模擬:

需要復雜計算的情況有什麽共性? 」

真實世界是離散的、細致的,不精確到每個原子(甚至更深)是無法準確的復原它們。但人類在模擬現實的時候,其實不需要那麽高的精準度。我們只想 在視覺上復原 (不需要人類肉眼分辨率以下的細節)。那麽我們可以怎麽做呢? 近似復原

最簡單的情況,我們如何渲染一個3D的小球呢?一個自然的想法是將之模擬成多面體,然後再透過漫反射的物理規律計算光的照度,然後根據光的照度渲染。如何計算光照度呢?將光線模擬為一個比較小的小球,計算小球的執行路線以及透過的數量……對不起,打住,這種級別的運算量任何電腦都很難 hold 住,尤其是在你要渲染阿凡達的時候。你問我,這不是近似模擬嗎?是近似模擬,但幾乎沒有使用這種演算法的渲染器,它們使用的演算法是這樣的:將小球的邊緣的顏色計算好,然後在小球被人看見的這一個面選擇幾個點,計算這些點的顏色值,再然後對顏色進行插值。你大呼,這不是欺騙嗎?或許是吧,但這樣可以保證計算的速度。這裏的渲染顯然利用了一個(心理學、物理)原理,物體不會有銳利的顏色變化,所有的顏色變化都是連續的。

現有的商業引擎在渲染一些難以處理的情況(比如水、煙霧)時,更是各顯神通,使用各種各樣巧妙的演算法來計算。所謂 巧妙 的含義就是: 又快又好的欺騙人眼 。至於這是不是現實世界的執行規律,那並不重要。只要看起來像的,就是好演算法。

隨著硬件的提速,大家可以使用更「慢」的演算法(大部份時候,更「慢」意味著更好)。我絲毫不懷疑,20年之後,電腦可以使用演算法欺騙人眼。但即使是這時候的演算法,依然是近似復原,只不過精度已經超過了人眼分辨率的極限。

為什麽在虛擬現實技術等用物理和數學規律模擬世界需要耗費大量的計算?

回到最初的問題,這個問題有兩個答案:

  1. 因為模擬世界很難。
  2. 因為我們的技術還不夠強大。