皮克斯電影背後的數學—想學做電腦動畫,先學數學

原始影片請看連結

(粗略翻譯)

在皮克斯,我們在做的一切事情就是在說故事.但是,其中有個故事並沒有很常被提及,那就是關於製造動畫影片的過程中數學如何被大量的使用.我們一直在使用你從小學與中學時學到的數學.所以,讓我們從一個非常簡單的例子開始.

有任何人可以認出這個人是誰嗎?

Woody_Pride

是的,這是從玩具總動員來的伍迪.那,我們讓伍迪從舞台的左邊移動到舞台的右邊,就像(影片)這樣.

Woody_PrideWoody_Pride

信或不信,在這移動的過程,裡面就有非常多的數學.在哪呢?為了解釋它,首先有件事情很重要且必須先了解的是:圖形對藝術家與設計師而言就是形狀與影像,但對電腦而言,圖形就是一些數字與一些方程式.所以為了能夠在這兩個世界建立起橋樑,我們使用了一個數學概念,叫做“座標幾何”,是吧?就是,我們建立了一個座標系統,使用x來表示往右邊那個方向的距離,而y用來表示物體的高度.

coordinate

Woody_Pride

有了這些座標後,我們就可以來講伍迪在任何時間的位置是哪.舉例來說,假設我們知道圖片左下角的座標,我們當然知道圖片上所有點的座標.而剛才我們看到的一個小動畫,這個動作,就被稱為平移(translation).開始時,圖片左下方x的座標值設定為1,圖片移動後,座標值設定為5.所以,如果我們要把這以數學寫下,我們知道圖片最終的x座標,比初始位置多4.換句話說,平移的數學只不過就是加法而已.

x_{end}=x_{start}+4

那變換尺度呢?也就是讓物體變大或變小.所以能不能有人可以猜猜看,變換尺度的數學是什麼?

對,就是乘法.

如果你想讓東西變成兩倍大,你必須要把圖形的xy座標同乘2.所以這就告訴我們,在數學中換尺度的方法就是乘法.

x_{end}=2\cdot x_{start}

 那旋轉呢?好吧,把它轉過來.Woody_Pride2旋轉的數學,就是三角學(三角函數)以下就是來描述旋轉的數學公式(註:只取x座標)

x_{end}=\cos\theta\cdot x_{start}+\sin\theta\cdot y_{start}.

 一開始的時候看起來讓人覺得可怕,這個公式可能是你在八年級或九年級(註:國二或國三)會學到.如果,你在課堂上學三角函數時,當你在想,這些東西哪裡可以用到時,你只需要記得,在任何時候,你在我們的電影中(皮克斯電影),看到任何旋轉的物體,背後就使用到了這個數學(註:三角函數).我自己是在七年級時愛上數學,這裡有任何七年級的學生嗎?有一些.我七年級的理化老師(原文:教科學的老師science teacher)教我如何使用三角函數去計算我造的火箭將會昇得多高.我認為這實在是讓人覺得不可思議(amazing).從此之後,我就迷上了數學.這當然是一些比較老派的數學.就是那些從很古老的時候就已經知道且由過世的希臘數學家所發展的數學.有個迷思說,人們已經了解所有的數學了.事實上,所有的數學都已經被了解了.但是,真實的故事是這樣:一直都有新數學被創造出來,而且有一些就是由我們皮克斯所創造.我想要給各位一個例子.這裡有一些從我們早期電影中的一些角色.

nemo

 

Monsters_Inc

 

 

 

 

 

 

 

 

od2villan

 

 

 

 

 

 

 

 

 

從海底總動員,怪獸電力公司,玩具總動員第二集來的.有人知道左上角藍色的角色是誰嗎?是多莉,這很簡單.這裡有一個比較難的,有誰知道右下角這個人是誰嗎?玩具商艾爾,沒錯.我們要注意到這些角色的特點是它們其實是相當複雜的.它們的形狀都相當複雜.事實上,關於這個玩具清潔工(基理先生),我有個例子.在中間的玩具清潔工,這是他的手.你可以想像,帶他的手通過機場安檢是多麼的有趣.(笑聲ing)他的手有著相當複雜的形狀.並不是只有一些球面跟圓柱面黏在一起而已.而且它不只是複雜而已,它移動的方式也是相當複雜.所以我們要來告訴你,我們如何做到這件事.為了做這件事情,我們來介紹什麼叫中點.midpoint

所以這裡有一些點AB然後有個線段連接它們.我們將從二維(幾何)開始.中點M將線段切割成兩個相等的線段.所以,這是幾何.為了讓這產生數字與方程式,我們必須引入座標系統.如果我們知道A點與B點的座標,我們很容易可以利用平均的方法(將A,B兩個座標位置取平均)計算出中點的座標.現在,你已了解足夠多皮克斯公司的工作了.讓我秀給你看看(Let me show you).讓我做一些有點可怕的事情.做一些實況模擬.現在,我有一個四邊形.接下來我的工作是從這裡生出一個光滑曲線.

4poly

而我們接下來要做的,就是使用取中點這個想法.首先,我要做的是動作是分割,也就是說,在這四個頂點的四個邊上,各加上中點.所以從4個點增加到8個點.但是這還不夠光滑.為了得到一個更光滑的曲線,我們順時鐘讓這些中點移動至這些中點與頂的的中點(請看影片),我們把它稱為平均法.所以我們得到了一個比較光滑的曲線.而我的工作是要得到一個光滑的曲線.所以接下來我該怎麼做呢?所以在做一次.分割與平均.所以,我得到了16個點.所以我要同時做分割與平均然後得到我所謂的"再細分".其實就是分割在取平均.接著我得到了32個點.如果還不夠光滑,就再繼續做.然後我得到64個點.你有看到光滑曲線從這裡出現了嗎?這就是我們如何創造出角色們的形狀.但請記得,在不久前我所說的,只有知道圖片靜態的形狀是不夠的,我們需要讓它動.然後為了讓這些圖形動,有一件關於再細分很酷的事情,你還記得(原文用see)玩具總動員中的外星人嗎?它會產生"嗚"的聲音的.準備好了嗎?我們要讓這些曲線動的方法就是讓最原始的四邊形的四個頂點動.好,我覺得這是很酷的.如果你不覺得,好吧,門就在那裡.接下來不會比這更好了.(笑ing)

分割與平均的方法也可以用在曲面上.所以接下來我會分割,然後平均.然後分割,然後平均.然後把這些放在一起,成為圖形的細分.這的確是我們創造三維空間中曲面角色的形狀的方法.這個再細分的方法最早是在1997年的一個短電影名叫棋局(Geri’s game)中有使用到.(註:請看連結)其實基理先生的外表如有形狀的貝殼一般,在玩具總動員2中以玩具清潔工的身份出現.他的雙手就是我們第一次使用上述的細分法畫成的.所以兩雙手各自都是細分法做成的曲面.他的臉也是細分法做成的曲面,他的外套也是.這是基理先生在還沒使用細分法畫成的手,接著是使用細分法畫成的(請看影片).所以使用細分法讓雙手,琢面等看起來更加的光滑.然後創造出你在銀幕上或電影院裡看到的這些美麗的曲面.從那時候開始,我們就使用這方法來創造出所有的角色.

BRAVE

這是勇敢傳說中的領導角色凱莉.她的衣著就是一個細分法做出來的曲面,包含她的手,她的臉也是.還包含了他的家族成員的臉跟手都是.今天,我們看到了加法,乘法,三角函數,還有幾何學在我們的動畫電影中扮演的角色.再給我多一點時間,我可以讓你看看,線性代數,微分學,積分學也扮演著角色.今天,我要讓大家了解的是:你要記得,所有你所學到從中學甚至到大學二年級的程度的數學,在皮克斯,我們每天一直在用,謝謝.

譯者註:

數學很有用
數學很有用
數學很有用
很重要所以要說三遍

附註:皮克斯作圖的論文連結

[閒談]法老師的小學數學時間12*8?8*12?

法老師在幾個禮拜前看到了一題選擇題:

812

今天又看到李家同教授的文:別在為難小孩子了!所以決定來寫這篇文章.

想來跟大家說一下這個問題的解釋.首先,個人覺得8\times 1212\times 8不應該同時出現在選項裡頭.因為8\times 1212\times 8都是正確的答案.再者,我來解釋一下8\times 12是什麼.

在這個世界上你將8\times 12定義成812相加或是128相加都可以.因為兩者結果得到相同,所以這世界上沒有唯一的表示法.在西方世界,如美國,就採取了

定義一:

8\times 12=12+12+12+12+12+12+12+12812

這樣的記號,例如:參考網頁.在台灣,我們是記

定義二:

8\times 12=8+8+8+8+8+8+8+8+8+8+8+8 (128)

至於為何這樣規定,我也不知道,應該跟中文的語言(文法)有關係(或是歷史上,從以前就是這麼記).數字的乘法跟東西有沒有單位沒有任何關係,完全就是看國家使用乘法的習性.當然,數學的建立是必須建立在某些規則才能發展的,所以台灣小學數學在定義乘法時,使用了第二種.在教學時,可以讓學生習慣一種定義後,讓學生嘗試發現交換乘法順序並不影響結果時,學生就會發現乘法的交換律.既然這個世界上並不存在唯一定義8\times 12的方法,自然同時出現8\times 1212\times 8就不恰當.如果小學老師硬是要考8\times 12就是128,那麼就會讓學生死板的規範在這個規則裡,個人覺得不好.因為規則定義的方式不唯一.

當然有人會說,那矩陣乘法如何如何,就是這樣規定.但請記住,矩陣乘法並不可換,所以怎麼定義是非常重要的,而矩陣乘法如何定義有全世界的共識(convention).所以並不能拿矩陣乘法的例子來說嘴.很多時候,數學家在定義某些數學概念時,一定會有某種共識去約束或是定義,而約束與定義都是有其原因,但在整數乘法中,我們並沒有只有一種定義,定義一與定義二皆可.所以本問題應該避免同時出現8\times 1212\times 8的選項.

[閒聊]大學數學解答的寫作方式

會想寫這篇文章,主要是要讓數學系的學生學習如何寫作數學的解答的寫作。而這裡強調的是你在寫作時必須注意到的點。通常一個數學問題的證明並不唯一,所以數學的證明或問題的解答並不唯一。但你可以加強你的寫作,讓你的讀者可以清楚的知道你的思考與推理過程

關於是非題的寫作

關於答案是正確的是非題的解答

範例1.每個向量空間都具有零向量。

這一題答案是:。相信很多人在寫解答的時候只會寫:對(or yes, true)等。但一個比較好的陳述方式是:根據課本P幾頁的向量空間的公設第XXX,我們知道向量空間必含有零向量。

範例2. 如果(a_{n})是收斂實數數列,並且a\in\mathbb{R},則

\displaystyle\lim_{n\to\infty}(a\cdot a_{n})=a\lim_{n\to\infty}a_{n}.

解答建議寫作方式:

:正確。在教科書XXX第X頁,根據極限性質的第X個,我們知道它是正確的。

要點:說明它正確需引述定義或定理(含出處)

關於答案是不正確的是非題解答

範例1. 在任何的向量空間中,ax=ay可以推得x=y

這一題答案是:。而在面對是非題答案是不對的時候,一定要舉出適當的反例來。舉例來說,我們取V=\mathbb{R}^{2}。取a=0x=(1,0)y=(0,1)。則x\neq yax=(0,0)=ay

範例2.假設(a_{n})(b_{n})是實數列。則

\displaystyle\lim_{n\to\infty}a_{n}\cdot\lim_{n\to\infty}b_{n}=\lim_{n\to\infty}a_{n}b_{n}.

當然我們知道這問題是錯的。這時候我們舉出實際的反例。

答:取數列(a_{n})(b_{n})定義如下。令a_{n}=nb_{n}=1/n。則a_{n}b_{n}=1。於是\lim_{n\to\infty}a_{n}b_{n}=1。我們知道\lim_{n\to\infty}a_{n}=\infty不存在,\lim_{n\to\infty}b_{n}=0。而

\displaystyle\lim_{n\to\infty}a_{n}\cdot\lim_{n\to\infty}b_{n}\neq\lim_{n\to\infty}a_{n}b_{n}.

所以我們知道這個問題的答案是:

要點:說明錯誤時必須要舉出具體的反例

關於證明的寫作

證明是必須要以嚴謹的方法寫作。每個論證都需要理由去說明。

命題:假設V是某個域上的向量空間,並且x,y,z\in V。如果x+z=y+z。則x=y

證明:根據向量空間的第X個公設我們知道,因為z\in V,存在v\in V使得z+v=0。於是兩邊x+z=y+z同時加上v可以得到

(x+z)+v=(y+z)+v.   (*)

根據公設X(向量加法的結合律),所以我們推得(x+z)+v=x+(z+v)(y+z)+v=y+(z+v)。因為z+v=0,所以我們推得x+(z+v)=x+0同理y+(z+v)=y+0。利用公設X,我們知道x+0=xy+0=y。利用(*)可以推得

x=x+0=x+(z+v)=(x+z)+v=(y+z)+v=y+(z+v)=y+0=y.

所以我們推得x=y

或許各位會覺得這樣的寫作很麻煩,但這是邏輯寫作的一種訓練。你要清楚的說明你論證的每一步驟都是合理的,而不是只有靠直覺來推理論題。直覺幫助我們思考問題,但把證明寫出來是另外一回事。這樣的訓練,對於初學者是相當重要的,也因此必須花上很長時間在寫作作業上。但千萬不要小看這樣的寫作訓練,往往寫作是幫助我們釐清或整理(數學)思緒一個重要方式。即使到了現在,筆者對於寫作數學證明的自我要求只有一天比一天更嚴格。(當然投稿論文時,必須斟酌字句那又是需要學習的另外一點。)

要點:

(1)引用的公設,定義,定理要說明出處。

(2)適當的對使用到的方程式或不等式標上記號。

(3)詳細說明你的論證理由。

(4)其它(筆者暫時還沒想到,等想到了再補充)