トップページ > 記事閲覧
メッシュの描画を判別する方法
名前:名無三 日時: 2025/09/27 11:26

お疲れ様です。 シェーダーを用いて3DモデルをMV1DrawModelなどで描画するさい、 ・ 剛体メッシュ と ・1頂点へ影響を与えるフレームの数が1〜4個のスキニングメッシュ とで頂点シェーダーを切り替える必要がある認識ですが、こちらをモデル描画前に判別する方法はありますでしょうか? もしくは切り替えずとも描画可能にする方法はありますでしょうか?
メンテ

Page: 1 |

Re: メッシュの描画を判別する方法 ( No.1 )
名前:管理人 日時:2025/09/28 03:19

剛体メッシュなのか1頂点へ影響を与えるフレームの数が1〜4個のスキニングメッシュなのかの情報は モデル単位ではなくトライアングルリスト単位で決められているのでモデル単位で判別することはできませんが こちらの関数でトライアングルリスト単位で判別することはできます // 指定のトライアングルリストの頂点データタイプを取得する( DX_MV1_VERTEX_TYPE_1FRAME 等 ) int MV1GetTriangleListVertexType( int MHandle, int TListIndex ) ; 戻り値の頂点タイプは以下の通りです // MV1モデルの頂点タイプ #define DX_MV1_VERTEX_TYPE_1FRAME (0) // 1フレームの影響を受ける頂点 #define DX_MV1_VERTEX_TYPE_4FRAME (1) // 1〜4フレームの影響を受ける頂点 #define DX_MV1_VERTEX_TYPE_8FRAME (2) // 5〜8フレームの影響を受ける頂点 #define DX_MV1_VERTEX_TYPE_FREE_FRAME (3) // 9フレーム以上の影響を受ける頂点 #define DX_MV1_VERTEX_TYPE_NMAP_1FRAME (4) // 法線マップ用の情報が含まれる1フレームの影響を受ける頂点 #define DX_MV1_VERTEX_TYPE_NMAP_4FRAME (5) // 法線マップ用の情報が含まれる1〜4フレームの影響を受ける頂点 #define DX_MV1_VERTEX_TYPE_NMAP_8FRAME (6) // 法線マップ用の情報が含まれる5〜8フレームの影響を受ける頂点 #define DX_MV1_VERTEX_TYPE_NMAP_FREE_FRAME (7) // 法線マップ用の情報が含まれる9フレーム以上の影響を受ける頂点 #define DX_MV1_VERTEX_TYPE_NUM (8) // 頂点タイプの数 1つのメッシュに複数の頂点タイプのトライアングルリストが含まれている場合は判別は トライアングルリスト毎に行う必要がありますが、もしモデル全体で一つのタイプで統一 されている場合は switch( MV1GetTriangleListVertexType( ModelHandle, 0 ) ) { case DX_MV1_VERTEX_TYPE_1FRAME: // 剛体メッシュの場合の処理 break; case DX_MV1_VERTEX_TYPE_4FRAME: // スキニングメッシュの場合の処理 break; } ↑ このように 0番目のトライアングルリストのタイプだけで分岐させれば良いかと思います > もしくは切り替えずとも描画可能にする方法はありますでしょうか? すみません、現状ではその方法はありません
メンテ
Re: メッシュの描画を判別する方法 ( No.2 )
名前:名無三(解決) 日時:2025/09/28 09:10

なるほど…すいません、ありがとうございます。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存