星期六, 9月 17, 2005

雜記:關於......

關於信仰~
每個人不同,為了某些理由,選擇了,或者必須要有信仰?

關於鬼神~
相信,但不想靠近,敬鬼神而遠之?

關於命運~
或許命終就註定,但也許有些事不知道比較好?

關於待人~
即便你再小心,似乎永遠會忽略到別人其實很在意的小地方,是遲鈍?

關於夢想~
到底是愈來愈近,還是愈來愈模糊?

關於??

無論如何......
時間還是一分一秒不停的流逝......

而我......
只是愚蠢的凡人罷了。

星期三, 9月 14, 2005

FF7 AC發售




一延再延的FF7 AC終於發售了,不過似乎偷跑,比預定日期早發行了;看完後真的覺得讚阿^^,大體上都算滿意,不過還是覺得有不少遺憾;可能因為製作期拖太長,之前已經放出不少片段,很多片段發售前就看過了,所以會覺得實際內容並沒讓人有太多驚喜之處;動作場面真的很多,也算精采,但整體劇情很短,製作時應該在動作上花很大功夫吧;主要人物如同之前公佈的消息,都有登場,可惜劇情太短了,配角戲份很少;本篇故事艾莉絲有讓她出現,不過並沒復活,是以另一種型態登場^^a...
蒂法這個腳色總覺得整體比例model似乎有點怪怪,雖然特寫局部都還蠻好的,但出現半身以上就有這種感覺。尤菲倒是做的蠻不錯,不過戲份太少啦=.=..   最後的反派依舊是....
其他,恩,場景不多,只招喚巴哈姆特....還有片尾曲時主角騎摩托車畫面有跟實拍畫面合成,但總覺得合的不好,主角跟看起來有點像玩具=.=...可能因為原本設定就不是寫實人物吧,所以搭起來怪怪滴。

ㄜ,這樣說起來好像缺點不少,不過基本還是覺得很棒,其實想看更多阿~~~
就像片頭字幕~

此片謹獻給曾經熱愛過這個世界

和這個世界的夥伴們一起度過無數歲月的人們

讓我們在一次聚首一起來紀念那段時光

星期日, 9月 11, 2005

Texture Projection 和 Texture Map

文章來源

在 XSI 中,我們發現 Get > Property 功能表的頭兩項很類似,一項是 Texture Projection - 紋理投射 菜單組[參見 圖1],另一項是 Texture Map - 紋理映射屬性 功能表組[參見 圖2]。初學者會感到困惑,這兩組功能表中的命令有何區別呢?下文將對這一問題做簡要的闡述。

Texture Projection 屬性 - 紋理投射屬性 和 Texture Map 屬性 - 紋理映射屬性 常常是服務於 紋理 這樣一個概念的(具體怎樣服務於紋理,見下文)。而 紋理 這一概念又是隸屬於 Maps - 映射圖 這麼一個概念的。那麼,要弄清 Texture Projection 和 Texture Map 這兩類屬性的區別,最好先讓我們來認識一下 Maps - 映射圖。
在 XSI 裏面有很多種 Maps - 映射圖,用途和特點各有不同,但大致可以分這麼五類 Maps - 映射圖。這五類 Maps - 映射圖 本質上都用來表達或記錄 3D 物體表面(或 3D 物體的組成部分)的某種資訊(顏色、透明度、某一數值的強度等),因而有著很多內在的聯繫。這五類 Maps 分別是:
1. Texture Maps - 紋理映射圖,在很多場合也叫做 紋理貼圖 或者簡單的稱為 紋理,用於控制顏色、透明度、Bump - 凹凸 和 Displacement - 分形位移 等屬性,例如物體表面、粒子發射時的顏色、毛髮的顏色等等。我個人認為,習慣上,Texture Maps - 紋理映射圖 用於控制顏色時才應該稱呼為 紋理貼圖 或者 紋理。還要注意:儘管“紋理映射圖”和“紋理映射屬性”使用了同一個英文片語(Texture Map(s)),但在使用過程中請注意區分:翻譯為“紋理映射圖”的Texture Map是泛指通常所說的“紋理貼圖”,這就是此刻我們談論的所謂第一類 Maps。它其實是一個在電腦圖形學中比較通用的術語,可以很粗略的認為其指代一張圖片;而翻譯為“紋理映射屬性”的Texture Map則特別指代XSI這款軟體當中幾何體所擁有的Texture Map類屬性節點。是我們下文要談論的話題,也是我們在文章開頭提問和例圖中涉及的那個概念。
2. Weight Maps - 權重(音:仲)圖,權重圖記錄的是資料,用以表徵三維物體表面的屬性,比如,可以用一張圖片來控制 Push 操作的作用範圍及強度,這時候,很顯然,權重圖記錄的資料就用來控制 Push 操作的幅度,使得在同一物體的表面的各個地方受到 Push 程度各不相同。
3. Envelope Weight Maps - 蒙皮權重(音:仲)圖 ,事實上,蒙皮權重圖可以看作是一般的權重圖的特例,它專門用於記錄蒙皮物體(Polygon、Curve、Surface甚至任何物體)和控制物體(骨骼、Implicit、Null甚至任何物體)之間的關聯資訊。更明白地說,就是記錄控制物體以多大的程度去控制設為蒙皮的物體。
4. Shadow Maps - 陰影分佈圖,Shadow Map 僅當有一盞或多盞燈光啟用了Shadow Map 演算法,並且渲染選項中開啟了Shadow Map 陰影演算法開關時,才可用。Shadow Maps 用於記錄 Shadow Map 演算法得出的陰影在各個物體表面的分佈情況。
5. Photon Maps - 光子分佈圖 和 Final Gather Maps - FG 強度分佈圖,這兩種 Map 某種意義上也可以看作是 Weight Map,因為記錄的也是資料。它們記錄的是“間接光照”的強度系數值。
另:XSI 中還有 Render Maps 屬性 - 渲染資訊圖屬性 這麼一個概念。簡單的說,就是先為一個物體定義一個或多個 渲染資訊圖屬性,然後通過 渲染到渲染資訊圖 這一功能把渲染的結果 Bake(Bake 意為“烘焙(音:備)“,這裏理解為把資訊記錄下來)到該物體的某個 渲染資訊圖屬性 裏面。之後,由於這個 渲染資訊圖屬性 記錄了這次渲染的結果的某些資訊或完整資訊(例如,利用 Pass 功能,可以讓某個 渲染資訊圖 僅僅記錄物體表面對周圍環境反射得到的影像),因而我們可以將其(渲染結果資訊)象使用普通的紋理貼圖那樣“貼”在這個物體的表面,從而避免在今後的渲染中重複計算這類資訊(例如這裏的反射資訊)。很顯然,為了正確的“貼”上這一預先渲染好的結果,應該選用和生成該渲染資訊圖 時相一致的 Texture Projection。從這一應用角度看,我個人認為可以把 Render Maps 屬性 - 渲染資訊圖屬性 看成是 Texture Maps - 紋理映射圖(或紋理貼圖)的特例或延伸,用作材質層面的紋理。
其他的 Maps,諸如 Vertex Color Maps - 頂點色彩分佈圖、和 Normal Maps - 法線資訊圖 等等,均和上述五類常用Map有類似之處,或者算是紋理的推廣與擴展,或者兼有紋理和權重圖的一些性質,但都不外乎是記錄物體表面的一些特定的資訊,構成一張“圖”,因而,均可參照前面一類Map的概念進行理解。限於篇幅在此就不一一介紹了。

好,我們認識了 XSI 中的一些 Maps,但後面的四大類 Maps 都不是我們這裏所關心的重點,姑且不作進一步討論。現在我們專門來考察 Texture Maps - 紋理映射圖 (也就是所謂 紋理貼圖)這一類。

首先,Texture Maps - 紋理映射圖 可用于定義物體表面的顏色(花飾、紋理、色澤),也可以用來定義物體表面 Bump - 凹凸 或者 Displacement - 分形位移 的程度。這時候,Texture Maps - 紋理映射圖 被用於材質設計層面,它們是作為 Render Tree 裏面的一個節點出現的,例如 Image 節點、CheckerBoard 節點、Fractal 節點等等。
而將設計好的 2D 紋理隨同整個材質賦予一個或多個 3D 物體時,會遇到這樣一個問題:怎樣才能把平面的紋理(圖片、動畫、過程紋理等)正確的按照藝術家(也就是我們自己 )的要求“貼”到或者說“包裹”到一個立體的物體的表面呢?這時候,我們就要借助這個(這些) 3D 物體自幾的一種屬性,也就是本文真正要討論的主要概念之一 ——Texture Projection 屬性 - 紋理投射屬性。
每當設計好一個帶有紋理或者凹凸貼圖的材質,並把這個材質賦給一個或多個 3D 物體時,必須為每一個 3D 物體分別 創建或找到 至少一個 紋理空間。
所謂 紋理空間,就是指容納一個紋理的抽象的數學空間,2D 紋理需要 2D 紋理空間來容納,相應的,3D 紋理需要 3D 的紋理空間來容納。
我們知道,通常描述一種空間的數學方法是定義座標,相對應的,XSI (事實上是整個電腦圖形學領域)中有一個叫 紋理座標 的概念,用來量化地描述容納一張張 紋理 的一個個 紋理空間。紋理座標 即通常所說的 UV 座標(或 UVW 座標,其中 W 表示容納 3D 紋理 的紋理空間的第三個維度,在此我們暫不討論)。
一個 3D 物體要使用一個紋理空間(也可以粗略的理解為要使用一張貼圖),具體作法是:在這個紋理空間內,為該 3D 物體的每一個 Vertex - 頂點 確定一個 紋理座標值(UV 座標),以使得這個 3D 物體的每一個 Vertex - 頂點 都能和這個紋理空間所容納的紋理圖片上的資訊(通常當然是顏色或透明資訊)一一對應,這樣一來,材質中所帶的紋理貼圖,借助這個紋理空間(即借助這套 UV 座標 資訊),就可以正確的對應到 3D 物體的表面。為每個 Vertex - 頂點 定義 UV 座標 的這一過程,就叫做 Texture Mapping - 進行紋理映射,而定義好的 UV 座標 資訊保存在哪里呢?它們正是保存在我們的Texture Projection 屬性 - 紋理投射屬性 裏面。
這段文字顯然不是很通俗易懂,那麼,我們換一個意思一樣但更通俗的說法:
我們在為每一個 3D 物體賦材質時,都要為該 3D 物體指明這個材質中包含的紋理貼圖應該怎樣“包裹”到這個物體的表面,也就是要說明 3D 物體表面的哪一個 Vertex - 頂點 具體應該對應到紋理上的哪一個圖元(注意,事實上過程紋理並沒有圖元)的顏色(或透明度)上。關鍵就是要建立這個一一對應的關係,而這個過程就叫“進行貼圖”。並且 3D 物體的 Vertex - 頂點 與紋理上的點的對應資訊就被保存在每個 3D 物體各自的一種屬性裏面,而這個屬性正式我們的 Texture Projection 屬性 - 紋理投射屬性。把最後這句話反過來說就是:
一個 3D 物體的一個 Texture Projection 屬性 - 紋理投射屬性 保存了該 3D 物體所獲得的材質中包含的紋理應該如何“貼”到自己表面的相關資訊。
並且注意,每個 3D 物體都可以有不止一個 紋理空間 供自己使用。
例如,要為一個女子肖像模型進行貼圖,一張漂亮的小月亮圖片 可以貼在臉頰上,而另外幾張小星星 的圖片則可以貼在這個模型的額頭 上。
那麼,貼月亮的時候,要定義和記錄月亮圖片和這個肖像模型的對應關係,好讓女子肖像模型中除臉頰外的所有 Vertex - 頂點 都在月亮圖片的範圍外。這個對應資訊就保存在這個女子肖像模型的一個 Texture Projection 屬性 內。
同樣的,女子肖像模型還要分別建立另外幾種對應關係,以便那幾張小星星的圖片也能正確到對應到這個女子的額頭的正確的位置。
儘管有可能把某些讀者搞糊塗,我還是要強調,紋理空間 不能等同於 紋理,因而,準確地說法和上述通俗說法有小的差別。我們應該說紋理映射過程(貼圖過程)是將 3D 物體的 Vertex - 頂點 對應到紋理空間中(也即找到這些頂點的 UV 座標);而不應該說紋理映射過程是將 3D 物體的 Vertex - 頂點 對應到紋理圖片上。在剛才的為女子肖像模型進行貼圖的例子中,如果紋理空間都已經定義好了,也就是這個女子肖像模型的若干個Texture Projection 屬性 都建立了之後,如果我們把月亮的圖片和其中一個小星星的圖片對調,那麼這個女子的臉頰上將出現一顆小星星,而她的額頭則是幾顆星星和一個小月亮。很顯然,Texture Projection 屬性 記錄的不是 Vertex - 頂點 與某一張圖片的對應關係,而僅僅是記錄了一組紋理座標,或者說,記錄了一種貼圖的方法,一種任意一張圖片或者過程紋理在貼到這個模型表面時都可以使用的“貼”法。
一句話,一個 3D 物體的每個Texture Projection 都定義了一種貼圖的方式,以供這個 3D 物體自己選用。

Texture Maps - 紋理映射圖 還有另一類用途,系用來定義各種由顏色控制的參數。典型的,可以用一張紋理圖來定義毛髮物體的顏色,使得頭皮各個地方生長出的毛髮不相同,以模擬挑染頭髮的效果。還可以用來控制粒子發射器發射粒子的初始顏色,這樣,粒子發射器各個部分發射的粒子顏色各不相同,五彩斑斕。
那麼,這裏顯然也有一個紋理需要對應 3D 物體表面的問題,只不過,在這一種情況下,紋理按要求對應到 3D 物體的表面之後,不是用來控制物體的顏色資訊、透明度資訊或者凹凸資訊,而是用來控制非材質屬性的某種資料屬性。
在這種情況下,我們也需要一個類似 Texture Projection 屬性 的東西,來記錄該 3D 物體的 Vertex - 頂點 與在這些用於非材質層面的紋理(圖片、動畫或過程紋理等)的對應關係。這個東西就是 Texture Maps - 紋理映射圖屬性。
綜上所述,不論Texture Maps - 紋理映射圖(圖片、動畫或過程紋理或是Render Maps)是用於設計材質(表達色彩、凹凸),還是用於控制參數(控制粒子、毛髮),都有一個公共的問題,就是都需要將二維的紋理和三維的物體的表面對應起來,即都要記錄 Vertex - 頂點 的 UV 座標 資訊。而在 XSI 中,針對這兩類不同的場合,紋理空間的 UV 座標 分別記錄在不同的屬性中:
對於 材質層面 的應用,UV 座標 資訊保存在該 3D 物體的 Texture Projection 屬性 中
對於 非材質層面 的應用,UV 座標 資訊保存在該 3D 物體的 Texture Map 屬性 中
至於為什麼要在這兩種場合分別採用不同的屬性來記錄 UV 座標,答案很簡單:
材質是可以通用的,同一個材質可以應用到多個不同的 3D 物體上,如果這個材質帶有貼圖,那麼每一個使用該材質的 3D 物體都需要各自確定這個材質中包含的貼圖如何對應到自己的表面。
還要提醒您,材質以及材質包含的貼圖是公用的,但貼圖的方法卻是每個物體各自擁有的。
而用於控制某個 3D 物體的非材質層面的屬性時,由於受控制的屬性是這個3D 物體私有的,不可以被共用,因而在 XSI 中需要和材質對象區別對待。
還要補充說明一下 Texture Support - 紋理投射支援物件:
Texture Support - 紋理投射支援物件 用來方便直觀地對一個或多個 3D 物體的 Texture Projection 屬性 或 Texture Map 屬性 進行控制,並且使得紋理的動畫更加容易。
Texture Projection 屬性 和 Texture Map 屬性 常常以 Texture Support - 紋理投射支援物件 為載體,至少在前二者剛被創建時是這樣。但 Texture_Support 物件僅僅是一個輔助物體,因而在不需要使用它們時,完全可以讓 3D 物體的 Texture Projection 屬性 或 Texture Map 屬性 脫離 Texture Support 物件而單獨存在,例如,你可以凍結(Freeze)幾何體的構造歷史或僅僅凍結其紋理座標編輯操作歷史,這時,Texture Support 物件就會被刪除。
顯然,每個 Texture Support - 紋理投射支援物件 都可以同時控制一個或多個 Texture Projection 屬性 或 Texture Map 屬性。
最後簡單說明一下其他的 Maps 在“貼”到 3D 物體表面時的情形:對於 Weight Map - 權重圖、Envelope Weight Map - 蒙皮權重圖、Photon Map - 光子分佈圖 和 Final Gather Map - FG 強度分佈圖, 由於使用時並不需要將二維物件和三維物件建立對應關係,即沒有一個從二維到三維的轉化過程,因而不必為這類 Map 定義紋理空間,這類 Map 都可以叫做 3D Map。顯然,將它們對應到三維幾何體的表面,既不需要借助該物體的任何 Texture Projection 屬性,也不需要借助該物體的任何 Texture Map 屬性。