[筆記文] 如何讓particle長在每一個vertex上

在Maya裡面有時候我們會想做一件事情就是把一個物體按照normal方向排列

在另一個物體的表面上的節點上(比如龍身上的鱗片)

要做到這件事情其實在houdini真是超簡單, 但是在Maya裡面就需要兩三個步驟來完成

以nurbs來說步驟如下:

1 建立closetPointOnSurface和pointOnSurfaceInfo (在script editor中打入createNode xxxxxxx;)

2 連結nurbsObjectShape.worldSpace 到剛剛建立的兩個節點上的.inputSurface attribute

3 連結 closestPointOnSurfaceInfo output 的U 和 V 到 pointOnSurfaceInfo input 的U 和 V

 

4 在particle上下expression

float $pos[] = position;
setAttr “closestPointOnSurface1.inPosition" -type double3 $pos[0] $pos[1] $pos[2];
vector $normal = `getAttr pointOnSurfaceInfo1.normal`;
velocity = $normal;

如此一來particle就會把自身位置帶入到每一個節點的位置, 接下來只要再把物件instance上去就完成了.

使用polygon的場合:

把closetPointOnSurface改為建立closetPointOnMesh, 並且不需要建立pointOnSurfaceInfo

 

(因為closetPointOnMesh本身已帶有normal information)

expression改為只要前兩行:

float $pos[] = position;
setAttr “closestPointOnSurface1.inPosition" -type double3 $pos[0] $pos[1] $pos[2];

就好

 

以上

 

  1. No trackbacks yet.

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

%d 位部落客按了讚: