2014年1月31日 星期五

Pyro Particle Editor SetLocalMatrix 矩陣用法

最近在工作上使用了 Pyro Particle Editor     官網在這:http://pyro.fenomen-games.com/

可能有點冷門吧,它的SDK使用在網路上查不到什麼教學,只能看裡面的範例寫程式,但範例只有寫到CPyroEmitter控制XY來改變位置,那旋轉或縮放呢?

在IPyroParticleEmitter類別內確實是有一些控制的函數,不過只用上SetLocalMatrix就很好用了,可是參數const float m[3][4]要怎麼填?

我以D3DX的D3DXMATRIX為例子:

//宣告D3D的矩陣
D3DXMATRIX Mat;

//之後Mat填入或計算自己想要的移動旋轉或縮放


//Mat算好後,依下面順序填入
float m[3][4]={{Mat._11,Mat._21,Mat._31,Mat._41},
{Mat._12,Mat._22,Mat._32,Mat._42},
{Mat._13,Mat._23,Mat._33,Mat._43},};

//在類別render之前呼叫SetLocalMatrix 即可
m_pEmitter->SetLocalMatrix(m);
m_pEmitter->Render();

依每個人不同的用法,要改一下程式,我是直接在CPyroEmitter類別加上void Render(float m[3][4])
{
if( m_pEmitter ){
m_pEmitter->SetLocalMatrix(m);
m_pEmitter->Render();
}
}

但重點就是矩陣填入的方式,我一開始填成Mat._11,Mat._12的順序,浪費不少時間,這邊做個記錄,說不定也可以幫到別人。


沒有留言:

張貼留言