Re: アクセサリの装備 ( No.1 ) |
- 名前:管理人 日時:2010/12/01 08:27
キャラクターのpmdファイルとアクセサリの mqoファイル や xファイルを別々に
MV1LoadModel で読み込み、アクセサリを描画する際にキャラクターの
pmdファイルの装備したいフレームの座標に合わせてから描画することで
装備しているように見せるすることができます
↓こんな感じに・・・というプログラム
int CharModel ; // キャラクターモデル
int AccessModel ; // アクセサリーモデル
// 別々に読み込み
CharModel = MV1LoadModel( "Char.pmd" ) ;
AccessModel = MV1LoadModel( "Access.x" ) ;
SetDrawScreen( DX_SCREEN_BACK ) ;
// メインループ
while( ProcessMessage() == 0 )
{
ClearDrawScreen() ;
// キャラクターモデルを描画
MV1DrawModel( CharModel ) ;
// アクセサリモデルを、キャラクターの右手フレームの座標系にあわせてから描画
// キャラクターモデルの右手フレームの名前からフレーム番号を取得
//
// ※…右手フレームの名前はモデルによって違いますので、DxLibModelViewer.exe で
// キャラクターモデルを開いて、名前を確認してください
int RightHandFrameNo ;
RightHandFrameNo = MV1SearchFrame( CharModel, "RightHand" ) ;
// キャラクターモデルの右手フレームの行列を取得
MATRIX RightHandMatrix ;
RightHandMatrix = MV1GetFrameLocalWorldMatrix( CharModel, RightHandFrameNo ) ;
// キャラクターモデルの右手フレームの行列をアクセサリモデルの行列としてセットしてから描画
MV1SetMatrix( AccessModel, RightHandMatrix ) ;
MV1DrawModel( AccessModel ) ;
ScreenFlip();
}
キャラクターモデルのアクセサリを付けたいフレーム( ボーン )の座標変換情報である行列を
MV1GetFrameLocalWorldMatrix で取得して、それを MV1SetMatrix でアクセサリモデルの
座標変換情報として設定することで、アクセサリモデルの原点がキャラクターモデルのアクセサリを
付けたいフレームの座標になり、その状態で描画するとそのフレームにくっついているように見えるというものです
よろしければお試しください
|
Re: アクセサリの装備 ( No.2 ) |
- 名前:そば 日時:2010/12/01 22:04
管理人様わざわざサンプルも作っていただきありがとうございました。
おかげ様ですんなりうまくいきました。
|
Re: アクセサリの装備 ( No.3 ) |
- 名前:zonbun 日時:2010/12/05 19:40
続いて聞きたいことがあります。
アクセサリだけの拡大表示とかで
AccessModel = MV1LoadModel( "Access.x" ) ;
モデルデータ読み込みの次に
MV1SetScale(AccessModel, VGet(2.0f,2.0f,2.0f) ) ;
アクセサリの拡大がありませんでした。
なんかキャラクターモデルの拡大表示倍率と同じです、もちろんアクセサリモデル弄って合わせるなるようになりますけど、コードでどうやって書けばよろしいでしょうか?;お願いいたします><
|
Re: アクセサリの装備 ( No.4 ) |
- 名前:zonbun 日時:2010/12/06 00:29
解決しました;リファレンス詳しく調べなくてすみません;
MV1SetMatrix( AccessModel, MMult( MGetScale( VGet( 2.0f, 2.0f, 2.0f ) ), RightHandMatrix) ) ;
これでアクセサリだけ2倍の大きさになるです。
|
|