PSMゲーム
Bloodred Wyvern (ブラッドレッドワイバーン)
Bloodred Wyvern 2
Gravity Anomaly Zone 不可思議重力帯
その他
PlayStation®Mobile関連リンク集
PlayStation®Mobile学習日記
PlayStation®Mobile SDK備忘録
日々コレどうしよう
XBLIG
BLASTER AND AMETHYST
BLASTER AND MORION
LEUCISTIC WYVERN
Bioerosion
URGENT EVASION 360
The Undead Syndrome / TUS 2
Dark Storm Blast 360
その他
Making Of The Undead Syndrome[3DCG]
Making Of The Undead Syndrome2
XNA関連リンク集
ブラウザゲーム
発火少年の地面焦がし
MAGICAL METEOR SHOWER
メタセコイア備忘録
東日本大震災(Aftermath of the 2011 Tohoku earthquake and tsunami)
ムカゴソフトウェア開発
e-mail:cqp00202@nifty.ne.jp
本サイトはリンクフリーです。
バナーはこちらをご使用下さい。
PSM SDKドキュメントによると・・・
Public 変数
これだけでは、はっきりしない事が多いなぁ。
static BasicModel model ; model = new BasicModel( "/Application/mons_a.mdx", 0 ) ; //モデルの名前を描画 SampleDraw.DrawText( model.Name, 0xffffffff, 100, 100 ) ;
実行結果→「mons_a」
モデルのファイル名から拡張子.mdxを取り除いた文字列「mons_a」が、モデルの名前になるのかな。
いちおう・・・
if(model.Name == "mons_a") { SampleDraw.DrawText( "True!", 0xffffffff, 100, 100 ) ; }
・・・を追加したところ「True!」が表示されたので、値の比較にももちろん使える。
for(int i = 0;i < model.Bones.Length;i++) { SampleDraw.DrawText( model.Bones[i].Name , 0xffffffff, 20, 20 + (i * 20)) ; }
【参照】PSM SDK(2.0):
BasicBoneクラス
【参照】2014年9月15日 : テスト用3DモデルのボーンID
model・・・BasicModel
attached_model・・・BasicModel
//特定ボーンのワールド行列格納用 static Matrix4 bornmat; //特定ボーンのワールド行列をbornmatへ bornmat = model.Bones[ボーンの番号].WorldMatrix; //Draw world = bornmat; attached_model.SetWorldMatrix( ref world ) ; attached_model.Update() ; attached_model.Draw( graphics, program ) ;
【参照】PSM SDK(2.0):
BasicBoneクラス
Z軸vec.X = (Y軸vec.Y * X軸vec.Z) - (Y軸vec.Z * X軸vec.Y); Z軸vec.Y = (Y軸vec.Z * X軸vec.X) - (Y軸vec.X * X軸vec.Z); Z軸vec.Z = (Y軸vec.X * X軸vec.Y) - (Y軸vec.Y * X軸vec.X);
十分に理解しているつもりでも、意外な落とし穴があるかもしれないので、実際に数値を確かめてみる。
Matrix4 構造体のPublic 変数M11〜M44を確認してみる。
手始めに、単位行列から。
Matrix4 mat = Matrix4.Identity; SampleDraw.DrawText( mat.M11.ToString(), 0xffffffff, 20, 20 ) ; SampleDraw.DrawText( mat.M12.ToString(), 0xffffffff, 160, 20 ) ; SampleDraw.DrawText( mat.M13.ToString(), 0xffffffff, 300, 20 ) ; SampleDraw.DrawText( mat.M14.ToString(), 0xffffffff, 440, 20 ) ; SampleDraw.DrawText( mat.M21.ToString(), 0xffffffff, 20, 40 ) ; SampleDraw.DrawText( mat.M22.ToString(), 0xffffffff, 160, 40 ) ; SampleDraw.DrawText( mat.M23.ToString(), 0xffffffff, 300, 40 ) ; SampleDraw.DrawText( mat.M24.ToString(), 0xffffffff, 440, 40 ) ; SampleDraw.DrawText( mat.M31.ToString(), 0xffffffff, 20, 60 ) ; SampleDraw.DrawText( mat.M32.ToString(), 0xffffffff, 160, 60 ) ; SampleDraw.DrawText( mat.M33.ToString(), 0xffffffff, 300, 60 ) ; SampleDraw.DrawText( mat.M34.ToString(), 0xffffffff, 440, 60 ) ; SampleDraw.DrawText( mat.M41.ToString(), 0xffffffff, 20, 80 ) ; SampleDraw.DrawText( mat.M42.ToString(), 0xffffffff, 160, 80 ) ; SampleDraw.DrawText( mat.M43.ToString(), 0xffffffff, 300, 80 ) ; SampleDraw.DrawText( mat.M44.ToString(), 0xffffffff, 440, 80 ) ;
実行結果・・・
続いて、平行移動行列・・・
static Matrix4 Translation (Vector3 translation)メソッド
Matrix4 mat = Matrix4.Translation(new Vector3(100f , 200f , 300f)); //(以下省略)
実行結果・・・
回転行列も確認してみる。
static Matrix4 RotationX (float angle)メソッド
Matrix4 mat = Matrix4.RotationX(FMath.Radians(60f)); //(以下省略)
実行結果・・・
static Matrix4 RotationY (float angle)メソッド
Matrix4 mat = Matrix4.RotationY(FMath.Radians(60f)); //(以下省略)
実行結果・・・
static Matrix4 RotationZ (float angle)メソッド
Matrix4 mat = Matrix4.RotationZ(FMath.Radians(60f)); //(以下省略)
実行結果・・・
【参照】PSM SDK(2.0):
Matrix4構造体
十分に理解しているつもりでも、意外な落とし穴があるかもしれないので、実際に数値を確かめてみる。
移動と回転の変換順序をわざと間違えて、M41〜M43(位置)が変わるのを実際に確認する。
まずは、正しい順序で変換してみることに・・・
Matrix4 mat = Matrix4.Translation(new Vector3(100f , 200f , 300f)) * Matrix4.RotationY(FMath.Radians(60f)); //(以下省略)
実行結果・・・
M41〜M43の値から、座標がズレていない(100 , 200 , 300)ことが確認できた。
今度は、誤った変換順序を試してみることに・・・
//掛け合わせる順序をわざと変えてみる Matrix4 mat = Matrix4.RotationY(FMath.Radians(60f)) * Matrix4.Translation(new Vector3(100f , 200f , 300f)); //(以下省略)
実行結果・・・
M41〜M43の値から、座標が変わっていることが確認できた。
【参照】PSM SDK(2.0):
Matrix4構造体