顯示具有 貼圖 (texture) 標籤的文章。 顯示所有文章
顯示具有 貼圖 (texture) 標籤的文章。 顯示所有文章

2010年11月6日 星期六

模型已經上好骨架, 但要修改 UV ,怎麼辦?





假設有個模型已經上完骨架,weight也已經 paint 好了,好死不死發現 UV有些地方要修改甚至要重拆,怎麼辦?

這時候就可以按照以下的步驟把 新的UV順利套到原本 rig 好的模型身上:

  1. 我們假設這模型叫做 MeshA 。 先把它複製一份(假設叫 DupMeshA)。



  2. 在 DupMeshA 上 把 UV 拆好。



  3. 使用這一篇文章裡的成是把 DupMeshA 的 UV 轉到 MeshA 上(或你如果是用 Maya2008 以前的版本的話可以直接使用 Mesh->Copy Mesh Attributes->UV sets 達到同樣的目的)。在 MeshA 的 input上會產生一個新的 node叫 polyTransfer。



  4. 把 DupMeshA 的 history 殺掉。



  5. 殺掉 DupMeshA。步驟完畢。

2010年5月5日 星期三

複製 模型 UV ( Copy polygon UV )


以下的程式可以把一個拆好的UV 複製到其他 結構(topology)一樣的模型上. 什麼是結構一樣的模型?



使用方法:
  • 先選 UV 好的模型, 然後再選一個或多個要貼上UV的模型.
程式:

{
string $allObj[] =`ls -sl`;
string $source[];
$source[0] = $allObj[0];
string $target[] = stringArrayRemove($source,$allObj);

for($each in $target)
{
if(`polyCompare -fd $each $source[0]`==4 || `polyCompare -fd $each $source[0]`==12)
{
polyNormal -normalMode 0 -userNormalMode 0 -ch 1 $each;
polyTransfer -v 0 -vc 0 -uv 1 -ao $source[0] $each;
polyNormal -normalMode 0 -userNormalMode 0 -ch 1 $each;

}
else if(`polyCompare -fd $each $source[0]`==0 || `polyCompare -fd $each $source[0]`==8)
{
polyTransfer -v 0 -vc 0 -uv 1 -ao $source[0] $each;
}

}
}

2009年10月31日 星期六

使用 mental ray 把 occlusion bake 成貼圖 (texture)


Ambient occlusion 這幾年來已經成為圖學玩家的愛將. 在大部分的case來說,它可以大幅增加物件的立體感,也可以凸顯 物件的細節.

在Maya裡我們如果想要先把 occlusion 算成貼圖 (為了加快render速度或拿來跟其他貼圖做額外處理),可以使用 mental ray 的 color -> batch bake 功能.




Bake 大概要注意的設定:
  • objects to bake : selected (只處理被選取的物件) 或 all (處理所有物件)
  • Bake to : Texture (貼圖)
  • Bake shadows : 是否把陰影也算進來
  • Camera : 指定運算使用的攝影機
  • Color Mode : Occlusion
  • Occlusion rays : sample的一種. 數值越高效果越好,運算時間也增加. 預設值是 64
  • Occlusion falloff : 距離衰退值. 零代表不衰退.
  • X Y resolution : 產生貼圖大小
  • Bits per channel : 8 或 16 通常就夠了, 除非要當 render pass
  • samples : anti-aliasing 數值. 預設是 1
  • bake to one map: 是否只產生一張貼圖




以上的結果是沒使用final gather去算的. 不但速度很慢, noise 也稍多了一點. 許要使用更高的 occlusion ray 才可以產生較順的圖. Autodesk 在 說明書裡也比較推薦使用 final gather 去算 AO. 要把 final gather 打開的話是在 Window->Rendering Editors-> Render Settings->Indirect Lighting ->Final Gathering 的 選項裡把 final gathering 打勾.





這是加上 final gather 算的 AO. 速度加快不少,顏色分配也比較順. 拿到 AO的貼圖之後你就可以對它做很多事,例如把它乘上 diffuse 顏色,讓細節更明顯等等.

2009年4月29日 星期三

Copy UV 注意事項

如果你想把一個 polygon 模型的UV複製到另外一個一摩一樣的模型的話, Maya 的 Mesh->Copy Mesh Attributes 就是你的好幫手. 可是你可能不知道的是,就算形狀,點數,線數,面數一模一樣的模型,也不見得可以成功的把 UV複製過去,因為Copy UV成功條件有三個:
  1. 兩個模型的點數,線數,面數是一樣的.
  2. 兩個模型的點順序和面順序是一樣的.
  3. 兩個模型的 face winding order 是一樣的.

face winding order

我們就拿以下三個 case 來做範例...



A, B, C, D 這四個模型的點數,線數,面數都一樣,形狀也一模一樣(除了 D 是反方向). 我們就用 Copy Mesh Attributes 來把 A 的 UV 複製到 B, C, D 看看吧.


case1 : A 複製到 B

A可以成功的把 UV 複製到 B, 因為 它們都符合 (1), (2), (3) 這三個條件.



case2 : A 複製到 C

A 和 C 雖然 符合條件 (1) , 但不符合條件 (2), 所以 Copy UV 失敗了. C 因為作過某些更動(裡如 split, combine 等等的動作) 使得 vertex order 或face order 變得跟 A 不一樣. 如果你遇到這種 情況的話就必須用其他方法複製(例如 Mesh ->Transfer Attributes),除非你手動寫程式把 順序轉回跟A 一樣 再複製.


case3 : A 複製到 D

A和D 符合 條件(1) , (2) ,可惜的是它們不符合(3), 因為 D 這模型是用 scale = -1 去複製的,導致它們的 face winding order 相反. 這種 case 常常發生 (在做對稱模型時健模師通常都會先做一邊然後用 scale = -1 來複製另一邊). 這樣的話如果你直接用 Copy Mesh Attribtues 也是會失敗(注意左邊模型D 手臂的貼圖很明顯是錯的). 好消息是這種 case 還有得救. 你需要執行以下四個步驟:

  • 先把 D 的 normal 翻轉 (Normal->Reverse). 執行這步驟之後,條件 (3) 就符合了.
  • 執行 Copy Mesh Attributes
  • Delete History.
  • 再把 D 的 normal 翻轉一次.

用完之後你會發現雖然出來的 UV 方向是反的 (D的 UV是紅色, A的是藍色), 但出來的貼圖變正確了.


網路上有一個拆 UV 軟體叫 Zebruv, 其中一個功能就是讓你可以輕鬆診對 case 1 和 case來Copy UV. 它可以自動判斷兩個模型是否相反的,然後再做適當的處理. 除此之外,它也可以做多個模型 UV 複製 (maya的 copy mesh attribute 只讓你一對一複製).

2009年4月22日 星期三

Transfer maps: 轉移貼圖(texture)功能




Maya 的 transfer maps 可以把一個模型的貼圖 (或細節,或occlusion)轉到另外一個模型上. 模型彼此貼的越緊,轉出來的貼圖就會越準確.

範例:

左邊是Maya的標準 poly sphere, 右邊是 smooth 過後的 poly cube. 你可以注意到這兩個模型不管是面數,線型,和 UV 都不一樣 (但是大小跟位子是差不多的),所 pSphere1 的貼圖如果直接貼到 pCube1 上,效果就會很不一樣. 現在我們來把 pSphere1 的貼圖轉到 pCube1 上吧.





->執行 Rendering->Lighting/Shading->Transfer Maps[]





設定簡易說明:

*Target Mesh : 要接收新貼圖的模型(pCube1). 點選你要用的模型,然後按 add selected.
*Source Mesh : 原本已經有貼圖的模型 (pSphere1) . 點選你要用的模型,然後按 add selected.
*Output Map : 想要轉過去的貼圖類別.
  • 轉模型細節 : normal 或 displace
  • 轉貼圖顏色: diffuse 或 shaded
  • 轉透明度 : alpha
  • 轉occlusion : Ambient
我們現在只想用單存顏色,所以按下diffuse.
*Diffuse Color map & File format : 貼圖路徑 和格式
*Map width & height : 貼圖大小
*Transfer in : World space (兩個模型都在同一個位子上)
*Sampling quality :數值越大效果就越好,但會算越久
*Filter size : 轉出來的貼圖要比較 模糊(blur) 或 銳利 (sharp). 數值越大就會越 blur
*Filter Type : Gaussian (相對下最好的演算法)
*Fill texture seams : 轉出來的貼圖在 UV 邊緣上要多算幾個 pixel (避免render出來有接縫). 通常 4 到 8 個 pixel 就夠了.

->按下 bake 或 bake and close.




算出來的結果. pCube1 這個模型有了很類似 pSphere 的貼圖 !