ワールド座標変換→各種変換行列への分離
Posted: 2010年12月19日(日) 07:01
いつもお世話になっております。
現在私は、XファイルをDirectXのヘルパー関数無しで読み込みを行っていて、それをOpenGLで表示することを試みています。
今日やっとのことで、FrameとAnimation部分の読み込みを完成して、表示することが出来るようになりました。
しかし、親のFrameと子のFrameの相対的な関係の情報をもつ変換行列(FrameTransformMatrix)の扱いに困っています。
DirectXではSetTransformでワールド変換行列を直接指定することが出来るので、ファイルに書かれている行列をそのまま入れてしまえばよいのですが、OpenGLではglTranslateとglRotate、glScaleという風に、変換の種類を分離しなくてはなりません。
私は、このワールド変換行列をそれぞれの回転行列、拡大縮小行列、並進移動行列に分離する方法を知りたいです。
ちなみに、並進移動行列は行列の(4,1)、(4,2)、(4,3)成分から取得できることがわかっていますので、回転行列と拡大縮小行列が得られれば良いと思っています。
特に、回転行列に関してはx、y、z軸でどのくらいの角度分回転させたかを取得できればよりよいかなと思っています。
よろしくお願いします。
現在私は、XファイルをDirectXのヘルパー関数無しで読み込みを行っていて、それをOpenGLで表示することを試みています。
今日やっとのことで、FrameとAnimation部分の読み込みを完成して、表示することが出来るようになりました。
しかし、親のFrameと子のFrameの相対的な関係の情報をもつ変換行列(FrameTransformMatrix)の扱いに困っています。
DirectXではSetTransformでワールド変換行列を直接指定することが出来るので、ファイルに書かれている行列をそのまま入れてしまえばよいのですが、OpenGLではglTranslateとglRotate、glScaleという風に、変換の種類を分離しなくてはなりません。
私は、このワールド変換行列をそれぞれの回転行列、拡大縮小行列、並進移動行列に分離する方法を知りたいです。
ちなみに、並進移動行列は行列の(4,1)、(4,2)、(4,3)成分から取得できることがわかっていますので、回転行列と拡大縮小行列が得られれば良いと思っています。
特に、回転行列に関してはx、y、z軸でどのくらいの角度分回転させたかを取得できればよりよいかなと思っています。
よろしくお願いします。