朱峰社區(qū)首頁(yè) 朱峰社區(qū)

搜索資源 注冊(cè)|登陸

等待

返回 展開(kāi)菜單

改變Sprites型粒子的方向教程

maya運(yùn)動(dòng)捕捉 觀看預(yù)覽

maya運(yùn)動(dòng)捕捉

包含3節(jié)視頻教程
關(guān)注5.1萬(wàn)

講解maya和運(yùn)動(dòng)捕捉自己的操作。包括maya蒙皮綁定,調(diào)整細(xì)節(jié)以及導(dǎo)入導(dǎo)出運(yùn)動(dòng)捕捉數(shù)據(jù)的具體操作方案

關(guān)閉

朱峰社區(qū)在本節(jié)為大家展現(xiàn)的是maya中改變sprites型粒子的方向教程,希望大家能從本教程中得到受益。

01sprites型粒子可以在每一個(gè)粒子上貼圖或者貼序列圖片,

有大量的例子從一個(gè)點(diǎn)發(fā)射器發(fā)出,注意上圖中,箭頭的方向沒(méi)有指向它們各自的速度方向,下面就講講怎樣改變它們

02首先在hypershader里面建一個(gè) vector product 節(jié)點(diǎn),把他命名為"camera_to_world"

它將要把在攝像機(jī)空間里的up vector轉(zhuǎn)化為世界坐標(biāo)系里面的

03設(shè)置"input1" 為 <<0,1,0>>,選擇 "vector matrix product" 作為運(yùn)算方法

04連接渲染攝像機(jī)得 xform matrix 到vector product節(jié)點(diǎn)得"matrix"

05注意兩點(diǎn)

看清上面的連接編輯器的連接方向。t框標(biāo)注)

選擇outliner里面的persp(透視圖攝像機(jī)),不要選hypershade里面的perspshape,要不你找不到 xform matrix 這一項(xiàng)

outliner persp

06給粒子添加“spritetwistpp“屬性

07添加runtime 表達(dá)式

vector $up=<<0,1,0>>;

vector $cameraup=<<camera_to_world.outputx,camera_to_world.outputy,camera_to_world.outputz>>;

vector $ref = cross($up,$cameraup);

float $ang=acos(dot($up,unit(particleshape1.worldvelocity)))/3.14*180;

if(dot($ref,particleshape1.worldvelocity)>0)

particleshape1.spritetwistpp=$ang;

else

particleshape1.spritetwistpp=-$ang;

就可以了

08下面簡(jiǎn)單解釋一下表達(dá)式得意思

最開(kāi)始的vector product 節(jié)點(diǎn),把在攝像機(jī)空間里的up vector轉(zhuǎn)化為世界坐標(biāo)系里面的maya help里面解釋的攝像機(jī)得xform matrix和 matrix包含同樣的信息( contains the same information as the matrix attribute on dagnode but it is stored in a format that can be interpolated easily.——maya help )vector product 節(jié)點(diǎn)得input 1是<<0,1,0>>,就是y軸得方向,這個(gè)矢量應(yīng)該是攝像機(jī)坐標(biāo)系得通過(guò)vector product 節(jié)點(diǎn)得vector matrix product運(yùn)算把 input 1變?yōu)槭澜缱鴺?biāo)系

下面試著分析一下這個(gè)表達(dá)式(如有不對(duì)得,請(qǐng)指出,呵呵)

vector $up=<<0,1,0>>;

定義一個(gè)矢量

vector $cameraup=<<camera_to_world.outputx,camera_to_world.outputy,camera_to_world.outputz>>;

再定義一個(gè)矢量,分別取剛才vector product 節(jié)點(diǎn)算出的output

vector $ref = cross($up,$cameraup);

定義矢量,矢量 $ref 等于$up,$cameraup這兩個(gè)矢量得差乘

上面定義了三個(gè)矢量,下面

float $ang=acos(dot($up,unit(particleshape1.worldvelocity)))/3.14*180;

$ang得到是一個(gè)角度,他是$up 和粒子速度(worldvelocity)的一個(gè)夾角

dot——點(diǎn)乘,由于$up是一個(gè)單位矢量(0,1,0),速度矢量也單位化了(unit),所以點(diǎn)乘得到兩個(gè)矢量得余弦值——cos x

通過(guò)acos,求反余弦,得到角度,也就是夾角

這時(shí)候求得的夾角是用弧度制的

所以要轉(zhuǎn)化為角度制——后面的:

/3.14*180

畫(huà)個(gè)圖,可能好理解一些!

09紅色的坐標(biāo)系代表的是世界坐標(biāo)系

深藍(lán)色的是攝像機(jī)坐標(biāo)系

這里我們的兩個(gè)坐標(biāo)系的關(guān)系,據(jù)了個(gè)最簡(jiǎn)單的:

世界坐標(biāo)系得xy平面和攝像機(jī)坐標(biāo)系z(mì)y平面是共面的,所以世界坐標(biāo)系z(mì)和攝像機(jī)坐標(biāo)系x軸自然平行

棕色的矢量是攝像機(jī)坐標(biāo)系得一個(gè)矢量

也就是我們?cè)?vector product 里面的input 1

通過(guò) vector product 的運(yùn)算,就把input 1轉(zhuǎn)化為了紫色的矢量

這是在世界坐標(biāo)系得,也就是 vector product 得output

這個(gè)output得值賦給了$cameraup

也就是$cameraup等于output了,

矢量$ref是$up點(diǎn)乘$cameraup的結(jié)果(就試圖中得淺綠色的矢量,哦我這個(gè)可能畫(huà)翻了,應(yīng)該是z軸向相反的,不好意思,影響不大)

深藍(lán)色得是速度矢量,它和$ref求夾角德余弦cos

因?yàn)閺膟軸順時(shí)針,逆時(shí)針旋轉(zhuǎn)相同角度得到的余弦值真好是相反數(shù)

來(lái)判斷spritetwistpp應(yīng)該旋轉(zhuǎn)的角度,

這個(gè)角度就是變量$ang,只不過(guò)是由個(gè)角度問(wèn)題,這個(gè)偏向角要和速度方向吻合,也達(dá)到最開(kāi)始我的說(shuō)的目的了——————箭頭的方向指向它們各自的速度方向。

朱峰社區(qū)三維動(dòng)畫(huà)出爐 朱峰社區(qū)三維動(dòng)畫(huà)出爐

朱峰社區(qū)網(wǎng)頁(yè)版
朱峰社區(qū)網(wǎng)頁(yè)版(手機(jī)掃描-分享-添加到屏幕)


朱峰社區(qū)公眾號(hào)
朱峰社區(qū)微信公眾號(hào)(微信掃一掃-關(guān)注)

資源說(shuō)明圖文教程無(wú)法下載,只能觀看圖片和文字。
版權(quán)規(guī)則本站圖文皆來(lái)自互聯(lián)網(wǎng)共享資源,如涉及到版權(quán)請(qǐng)查看版權(quán)規(guī)則。本平臺(tái)提供圖文僅可用于個(gè)人學(xué)習(xí),如用于商業(yè)請(qǐng)購(gòu)買(mǎi)正版。您必須遵守的版權(quán)規(guī)則

未知用戶(hù)

未知用戶(hù)

2005-2025 朱峰社區(qū) 版權(quán)所有 遼ICP備2021001865號(hào)-1
2005-2025 ZhuFeng Community All Rights Reserved

VIP

朱峰社區(qū)微信公眾號(hào)

回頂部

1.復(fù)制文本發(fā)給您的QQ好友或群、微信等;好友點(diǎn)擊鏈接以后,轉(zhuǎn)發(fā)就成功了。 2.如朋友點(diǎn)擊您的鏈接,您需要需刷新一下才行;同一個(gè)好友僅能點(diǎn)擊一次。
購(gòu)買(mǎi)VIP,觀看所有收費(fèi)教程!