この記事を読んで、
興味が出たので自分も早速試してみました!!
Program
Galaxy S2 買ってみた!!
最近、更新が疎かになってるのはこのせいです。。。
今までも、エミュレータで “Android” と戯れてきたんですが、
やっぱ実機があるといいですね♪
せっかくなので、 “OpenGL” と仲良くしながら
もう少し戯れてみます。
kinect 買ってみた!!
今更ながら、Kinectを買ってみました。
まだ、OpenNIのサンプルを試しただけだけど、そのうち何かしたいな~
“FBX SDK” メモ (三角形化 KFbxGeometryConverter)
FBXファイルは四角ポリゴンも保持できるので、出力時に気をつけないと
三角と四角がごちゃごちゃになっちゃいます。
SDKには便利な事に、四角ポリゴンを三角ポリゴンへの変換が標準で備わってます。
なので、読み込み側でそこは統一をとることに。
[cc lang=”C++”]
if ( !_baseMesh->IsTriangleMesh() ) // KFbxMesh* _baseMesh
{
KFbxGeometryConverter _converter( _manager ); // KFbxSdkManager* _manager
KFbxMesh* _triangleMesh = _converter.TriangulateMesh( _baseMesh );
}
[/cc]
これで三角形化が完了します。
DirectXでFBX 続きの続き
前回は単純にトランスフォーム行列を取得しただけですが、
実際に使うとなると座標系をDirectX基準に合わせなければなりません。
調べてみると “FBX SDK” には標準でこの変換が出きるようなので早速使ってみる
[cc lang=”C++”]
KFbxAxisSystem lSceneAxisSystem = lScene->GetGlobalSettings().GetAxisSystem()
KFbxAxisSystem lTargetAxisSystem(KFbxAxisSystem::DirectX)
if(lSceneAxisSystem != lTargetAxisSystem)
lTargetAxisSystem.ConvertScene(lScene);
[/cc]
これで、FBXのファイルが Y-Up だろうが Z-Up だろうが LeftHand だろうが
RightHand だろうが、シーンがDirectXの座標系(Y-up, RightHand)に変換されます。
LeftHand が欲しいときはどうすれば良いんだ? と見てみると
“KFbxAxisSystem” は個別で軸を指定できるようです。
ただ、自分の環境では上手く変換されませんでした。。。
とりあえず、Z軸に-1をかけて対処してますが、なんかスッキリしない。。。
使い方が悪いのかな?
FileSystemWatcher と NAS
“FileSystemWatcher” でNASのフォルダを監視してると
エラーが出るときがあるので、調べてみると、どうやら
NASで使われているsambaが問題みたい。
ただ、普通にファイルをドラッグ&ドロップでコピーしたり
移動したりするときにはエラーが出ない
NAS上に直接ファイルを作成した場合のみエラーが発生。。。
googleさんで調べてみると、やっぱり “FileSystemWatcher”自体
sambaには対応してないとか書かれてたりするので
諦めるしかないのかな?
DirectXでFBX 続き
前回FBX
(Lcl Scaling * (Lcl Rotation * PreRotation) * Lcl Translation )
な計算をしてトランスフォーム行列を出していたわけですが、
一発で取得出来たみたいですね。。。
[cc lang=”C++”]
KFbxAnimEvaluator* mySceneEvaluator = myScene->getEvaluator();
//Get node’s default TRS properties as a transformation matrix
KFbXMatrix& myNodeDefaultLocalTransform = mySceneEvaluator->GetNodeLocalTransform(myNode);
[/cc]
ちなみにこれは相対なトランスフォーム行列を取得する場合
絶対なトランスフォーム行列を取得する場合は
[cc lang=”C++”]
KFbxAnimEvaluator* mySceneEvaluator = myScene->getEvaluator();
//Get node’s default TRS properties as a transformation matrix
KFbXMatrix& myNodeDefaultGlobalTransform = mySceneEvaluator->GetNodeGlobalTransform(myNode);
[/cc]
どちらも便利便利^^
ドキュメントは隅から隅まで読むべきですね!!
DirectXでFBX
FBXの座標系がやたらめったらにややこしいので忘れないように、メモ
FBX2011.2を使用
出力ソフトは “3ds max”, “Softimage Mod Tool”, “Blender”
【Up軸】
・出力ソフトによって異なる
・KFbxGlobalSettings の GetAxisSystem().GetUpVector
で確認が出来る
【座標系】
・出力ソフトによって異なる
・KFbxGlobalSettings の GetAxisSystem().GetCoorSystem
で確認が出来る
【Y-up → Y-up】
・(Lcl Scaling * (Lcl Rotation * PreRotation) * Lcl Translation )(*1)
【Z-up → Y-up】
・(Lcl Scaling * (Lcl Rotation * PreRotation) * Lcl Translation )
* rotation(-90, 0, 0)(*1)
【左手 → 左手】
・特になにもせず
【右手 → 左手】
・(*1) * scale(1.0, 1.0, -1.0)
・UVとNormalのZの値が反転するのでそれぞれ符号を反転
本当はもっといろんなソフトで書き出したファイルをサンプルに
試さないとダメな気がするけど。。。
特にMayaで書き出したファイルを試してないのが大問題。。。
続、PhotoshopでDDS [apras_DDS-Exporter.8bi]
“NVIDIA Plug-ins for Adobe Photoshop” がインストールされている場合、
DDSファイルが開けない不具合が合ったので修正。
以下より最新版がダウンロード出来ます。
ご意見ご感想がありましたらお気軽にどうぞ。
PhotoshopでDDS
“Photoshop” でDDS(DirectDraw Surface)形式ファイルに保存する場合、
NVIDIAが提供している“NVIDIA Plug-ins for Adobe Photoshop”を
使えば簡単に保存することが出来ます。
が、
このプラグイン、困ったことにアルファチャンネルが存在すると、
使い方が悪いのか、DDSでファイルを保存することが出来なかった
りします。(出来る方法あったら教えてー)
大半の人は別に困らないかもしれませんが、個人的には大困り。。。
そう言うわけで、何となくDDS出力プラグイン作ってみました。