TOP

ただいま開発中です

フォローはどうぞお気楽に!

SoundCloud (ゲームBGM集)

PC Games List

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学習日記Top|1|2|

2014年6月20日 : BasicModel.Name変数

PSM SDKドキュメントによると・・・

Public 変数

string Name

モデルの名前

これだけでは、はっきりしない事が多いなぁ。


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!」が表示されたので、値の比較にももちろん使える。

2014年8月28日 : BasicModelのボーンID一覧表示

model・・・BasicModel


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

2014年8月29日 : 3Dモデルの特定ボーンに、別の3Dモデルを連動させる

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クラス

2014年9月8日 : Z軸ベクトルを得る

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);

2014年9月9日 : Matrix4.M11〜M44

十分に理解しているつもりでも、意外な落とし穴があるかもしれないので、実際に数値を確かめてみる。
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構造体

2014年9月9日 : 変換行列の掛け合わせる順序をわざと変えてみる

十分に理解しているつもりでも、意外な落とし穴があるかもしれないので、実際に数値を確かめてみる。

移動と回転の変換順序をわざと間違えて、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構造体


PSM学習日記Top|1|2|

ムカゴソフトウェア開発
MUKAGOSOFTWARE DEVELOPMENT
e-mail:cqp00202@nifty.ne.jp
PSM(PlayStation®Mobile)プログラミングのメモとか
ムカゴソフトウェア開発
MUKAGOSOFTWARE DEVELOPMENT