李青
你還記得動畫電影《玩具總動員》里那個忠誠又機(jī)靈的牛仔伍迪嗎?還記得《飛屋環(huán)游記》里那個八歲的探險家小胖羅素嗎?和傳統(tǒng)二維動畫片相比,你會不會覺得還是三維動畫的色彩更豐富,人物形象和情景更細(xì)膩、更逼真呢?是的,因?yàn)檫@類影片是利用日新月異的計算機(jī)技術(shù)處理、加工而成的新一代動畫片。那你知道動畫師是如何利用計算機(jī)技術(shù)制作動畫片的嗎?那些栩栩如生的人物形象是如何設(shè)計出來的呢?你可能沒有想過,設(shè)計這些形象還和數(shù)學(xué)有著密不可分的關(guān)系呢!
小小動畫 ?巨大工程
我們在觀看動畫電影的時候往往會感嘆:“為什么這么短??!”好看的動畫電影在我們看來當(dāng)然是越長越好,但實(shí)際上這些“太短”的動畫電影能夠呈現(xiàn)在我們面前可是凝聚了制作人員大量的心血與勞動。
傳統(tǒng)動畫片的誕生過程
二維畫面是平面上的畫面。用紙張、照片或計算機(jī)屏幕顯示,無論畫面的立體感有多強(qiáng),終究只是在二維空間上模擬真實(shí)的三維空間效果。我們先來簡單地了解一下像《木偶奇遇記》這類傳統(tǒng)動畫片是如何制作出來的。二維動畫片里的畫面看上去只有寬度和高度,動畫師根據(jù)故事腳本用鉛筆在紙上勾畫出其中的人物和故事進(jìn)展,然后在叫作“透明片”的塑料紙上為這些連續(xù)的畫面著色。每一張透明片上的畫面在電影里算作一幀,要制作一部動畫片需要繪制出成千上萬張這樣的畫片。接著,在手繪的彩色背景映襯下,用特殊的照相機(jī)把所有著了色的畫片一一拍下,再用膠片把這些照片以每秒24幀的速度翻拍成電影。當(dāng)然,在制作過程中還要加上對話、音效、音樂等配套工作。過去制作二維動畫片是一項(xiàng)非常繁重的工作,現(xiàn)在隨著計算機(jī)性能的提高,很多制作環(huán)節(jié)已經(jīng)被計算機(jī)軟件取代了,比如動畫師可以直接用電子畫板繪制畫面,用計算機(jī)軟件著色,模擬攝像機(jī)的運(yùn)動和效果等。
計算機(jī)上完成的三維動畫片
三維動畫看上去既有寬度和高度,同時也有深度,因此表現(xiàn)得更真實(shí)生動。制作之前首先得有一個動人的故事腳本,然后繪制出其中的人物、主要場景和故事情節(jié),并根據(jù)人物個性設(shè)計出他們的造型。接著把故事二維化,此后關(guān)鍵,就是在計算機(jī)的三維動畫軟件中為這些人物造型設(shè)計模型。為了讓模型能做出各種自然的表情和動作,還要配上可操作的虛擬骨骼和肌肉運(yùn)動工具。一切準(zhǔn)備就緒以后,動畫師就開始根據(jù)事先編排好的故事情節(jié),像擺弄木偶那樣操控模型的一舉一動,讓他們按照故事進(jìn)展的需要說話、跳躍、奔跑等。再配上合適的虛擬燈光、背景、道具的效果和人物對話,在一個裝有數(shù)百臺高性能計算機(jī)的叫作“渲染農(nóng)場”的地方,完成動畫片每幀的制作以及幀的合成。后期加上修補(bǔ)、潤色和音效,一部動畫片就算基本完成了。
制作一部長約90分鐘的三維動畫電影,其投入是巨大的。20年前的《玩具總動員1》,是世界上首部完全用計算機(jī)制作的動畫電影,具有里程碑的意義。當(dāng)時動用了27位動畫師、22位技術(shù)指導(dǎo)、61位藝術(shù)家和工程師,設(shè)計了400個計算機(jī)三維模型。制作這部電影總共花了80萬個機(jī)器工時、完成了114240幀的動畫。而且渲染階段相當(dāng)耗時,就當(dāng)時的計算機(jī)性能而言,117臺計算機(jī)全天運(yùn)行,1周能渲染完成3分鐘的動畫片段,90分鐘的片子光渲染就需要花30周,7個多月的時間,而寫故事竟然花了他們3年的時間,因此,用3、4年的時間制作完成一部動畫片并不足為奇,有的甚至要花更長的時間。
精益求精的主角
牛仔伍迪是影片《玩具總動員》的主角,因此制作團(tuán)隊(duì)對他的模型設(shè)計要求特別高:他身上需要控制的活動點(diǎn)多達(dá)723個,其中臉部有212個,僅嘴巴就有58個。整部影片的合成渲染使用了117臺計算機(jī)、300個計算機(jī)處理器。他的制作簡直可以說是精益求精。
數(shù)學(xué)概念 ?無處不在
在生活中,我們看得見摸得到的任何物體都有形狀,而大多數(shù)物體的形狀都是由連續(xù)圓滑的曲線和曲面組成的。藝術(shù)家和動畫師關(guān)心的是事物的形象和形狀,而計算機(jī)能懂的只有一串串?dāng)?shù)字和方程式。如何讓計算機(jī)模擬出看似簡單的圓滑曲面或者說自然立體的形狀呢?換個專業(yè)的問法就是,如何找出合理的計算機(jī)算法生成這樣的圖像呢?這就需要先找到合理的算術(shù)、幾何、代數(shù)的運(yùn)算法則,然后將這些數(shù)學(xué)運(yùn)算法則翻譯成計算機(jī)可以操作的語言來實(shí)現(xiàn)。
如果你仔細(xì)觀看動畫片,可能不難覺察到,其實(shí)數(shù)學(xué)的概念無所不在。比如,《玩具總動員》里的伍迪從A點(diǎn)走到B點(diǎn),就可以用方程式XB=XA+LAB表達(dá)伍迪現(xiàn)在在直角坐標(biāo)系里的位置。
動畫人物伍迪在直角坐標(biāo)系里平移的呈現(xiàn)
如果突然看到一個人物或者道具隨著鏡頭的拉近比原先的大了,比如說大了兩倍,那就可以用方程得到變大的那個數(shù)。如果有物體旋轉(zhuǎn),就要涉及到更為復(fù)雜的包括正弦函數(shù)和余弦函數(shù)在內(nèi)的三角函數(shù)理論,而平移、按比例縮/放、旋轉(zhuǎn)都離不開坐標(biāo)幾何的應(yīng)用。
真實(shí)視效 ?數(shù)學(xué)助力
上面曾提到,對于三維動畫片來說,要解決的關(guān)鍵問題是,如何讓人物和道具看上去像真的那樣有著自然流暢的曲線和曲面。皮克斯動畫工作室的科學(xué)家們找到了一種非常精妙的數(shù)學(xué)方法,解決了這個難題,這就是中點(diǎn)細(xì)分法,其中還用到了拋物線的原理。獲得完美曲線的基本思路是從一條線段開始的,先把線段從中間對分,然后再把對分過的兩段線再分別對分,按照這個規(guī)律一直分下去,找到每次對分線段的中點(diǎn)坐標(biāo)。這一過程是可以用方程表現(xiàn)的。
用這個基本解析幾何原理,我們就可以把一個四邊形變成一個橢圓形。首先畫一個等邊四邊形(a),然后均分每個邊獲得8個點(diǎn)、8條線段(b),這時候圖形基本沒有變化。接著,把這8個點(diǎn)都按照順時針方向移動線段長的1/2(c)。然后均分里圈上的線段(d),得到16個點(diǎn)。再把這16個點(diǎn)按照順時針方向移動線段長的1/2,就形成了(e)比較圓滑的曲線。再細(xì)分下去就得到32個點(diǎn)的圖形(f),如果還不滿意,可以繼續(xù)細(xì)分到64個點(diǎn)的曲線。
用中點(diǎn)細(xì)分法不僅能生成曲線和自然形狀,而且還能生成平滑的曲面。在三維動畫計算機(jī)軟件里,這些點(diǎn)和線組成的網(wǎng)格就像虛擬的骨骼和肌肉,可以任由動畫師隨意操縱。中點(diǎn)細(xì)分次數(shù)越多,物體表面越圓滑自然。
一部動畫片是否好看,不僅要看人物的臉部是否逼真,還要看他們運(yùn)動時,以及周圍道具和自然景觀是否同樣具有真實(shí)感,而這些視效也必須以數(shù)學(xué)為基礎(chǔ)。
動畫片里用到的數(shù)學(xué)原理,有簡單的算術(shù),也有復(fù)雜的幾何、函數(shù)、代數(shù),甚至高等數(shù)學(xué),如微分、積分。讀了上面的大致介紹,當(dāng)你再欣賞動畫片的時候,不要忘了在那些美麗動人的故事背后還有數(shù)學(xué)的功勞。數(shù)學(xué)是研究科學(xué)問題的基礎(chǔ),無論你將來想從事化學(xué)、生物學(xué)、物理學(xué),還是經(jīng)濟(jì)學(xué)等領(lǐng)域的工作,或者做動畫片,都要學(xué)好數(shù)學(xué)。
(責(zé)任編輯/王楓)