トップページ > 過去ログ > 記事閲覧
アクセサリの装備
名前:そば 日時: 2010/12/01 02:45

(編集しました) pmmファイルなどでアクセサリを持ち込むのは 無理そうでしたので mqoファイルなどを持ち込んで座標変換で 希望のフレームと読み込んだアクセサリのファイル のフレームを一致させ、装備しているようにしようとしたのですが 思うようにいきません。 MV1GetFrameLocalWorldMatrix関数はローカル座標 をワールド座標に変換するという行列で同次変換行列 なのでしょうか。また、それなら MV1SetMatrix(アクセ,MMult(MInverse(MV1GetFrameLocalWorldMatrix(ModelHandle,フレーム番号)),MV1GetFrameLocalWorldMatrix(アクセ,0))); としてアクセを人型のモデルの(手元の)フレームに座標変換できると思い、 試みているのですがまったくうまくいく気配がありません(><) どこがいけないのかどなたかご教示願えないでしょうか?お願いいたします。

Page: 1 |

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倍の大きさになるです。

Page: 1 |