参照用メッシュのセットアップ
MV1SetupReferenceMesh MHandle, FrameIndex, IsTransform
int MHandle : モデルのハンドル int FrameIndex : 参照用メッシュを構築するフレームの番号 int IsTransform : 参照用メッシュは頂点座標変換を施したものにするかどうか ( TRUE:変換を施したもの FALSE:変換を施さないローカル座標のもの )
(プラグイン / モジュール : DxLibW)
MHandle のモデルハンドルが示すモデルの指定のフレーム( 若しくはモデル全体 )に含まれるポリゴンの座標や法線、UV値などの情報にアクセスするための準備を行います。
3Dを扱うゲームを作成していると、
しばしば3Dモデルを描画する以外の用途で3Dモデルのポリゴンの頂点座標や法線座標を扱いたくなるときがあります、
最も一般的な例はモデルとの当たり判定ですが、
それ以外の用途でも・・・あんまり一般的な例は思いつきませんがあったりします。
参照用メッシュはそんなときに有効なモデルの頂点座標やポリゴン情報にアクセスするための機能です。
その使い方ですが、参照用メッシュの機能を使用するにはまずこの関数で参照したいポリゴンを参照するための準備を行う必要があります。
参照対象としたいフレームを引数 FrameIndex で指定して( FrameIndex を -1 にすることでモデル全体のポリゴンを参照するための準備をすることができます )、
加えて参照用メッシュの頂点座標を、
頂点座標変換を施した頂点にするかどうかを引数 IsTransform で指定します。
( TRUE にすると MV1SetPosition や MV1AttachAnim 等で設定された頂点座標変換が行われたものが、
FALSE にすると MV1SetPosition や MV1AttachAnim 等の設定を無視して何も頂点座標変換が行われていないものがそれぞれ取得できます )
因みに参照用メッシュの構築処理はそれなりに負荷の高い処理ですので、
できる限り参照したいポリゴンを持つフレームのみを指定した方が良いです。
セットアップが完了した後は参照用メッシュの情報が入った構造体 MV1_REF_POLYGONLIST
を戻り値として返してくる関数 MV1GetReferenceMesh を使用して、実際にポリゴンの情報を取得します。
// 参照用ポリゴンデータ構造体
struct MV1_REF_POLYGONLIST
{
// ポリゴンの数
int PolygonNum ;
// 頂点の数
int VertexNum ;
// 頂点座標の最小値
VECTOR MinPosition ;
// 頂点座標の最大値
VECTOR MaxPosition ;
// ポリゴン構造体の配列へのポインタ
MV1_REF_POLYGON *Polygons ;
// 頂点構造体の配列へのポインタ
MV1_REF_VERTEX *Vertexs ;
} ;
int PolygonNum
参照用メッシュに含まれるポリゴンの数です。
参照の対象をフレームにした場合はフレームに含まれるメッシュが持つポリゴンの総数が、
参照の対象をモデルにした場合はモデルに含まれる全メッシュが持つポリゴンの総数が代入されます。
int VertexNum
参照用メッシュに含まれる頂点の数です。
参照の対象をフレームにした場合はフレームに含まれるメッシュが持つ頂点の総数が、
参照の対象をモデルにした場合はモデルに含まれる全メッシュが持つ頂点の総数が代入されます。
VECTOR MinPosition
参照用メッシュに含まれる頂点座標の最小値です。
座標値は頂点座標変換をする指定をしていた場合は座標変換されたものの最小値となります。
VECTOR MaxPosition
参照用メッシュに含まれる頂点座標の最大値です。
座標値は頂点座標変換をする指定をしていた場合は座標変換されたものの最大値となります。
MV1_REF_POLYGON *Polygons
参照用メッシュに含まれるポリゴン情報の配列へのポインタです。
配列の要素数は PolygonNum 個で、
中身はポリゴンが含まれているフレームの番号、
ポリゴンに使用されているマテリアルの番号、
ポリゴンの形成に使用されている頂点の番号3つなどです。
MV1_REF_VERTEX *Vertexs
参照用メッシュに含まれる頂点情報の配列へのポインタです。
配列の要素数は VertexNum 個で、
中身は頂点の位置・法線・テクスチャ座標・頂点カラーなどです。
ポリゴンの情報と頂点の情報が分かれているのは多くの場合一つの頂点は複数のポリゴンで使用されているので、
ポリゴンの情報の中に頂点の情報を含めてしまうと同じ頂点情報が幾つものポリゴン情報の中に含まれてデータサイズが無駄に大きくなってしまうからです。
次に頂点の情報が格納される構造体 MV1_REF_VERTEX は次のような内容になっています。
struct MV1_REF_VERTEX
{
// 位置
VECTOR Position ;
// 法線
VECTOR Normal ;
// テクスチャ座標
UV TexCoord[ 2 ] ;
// ディフューズカラー
COLOR_U8 DiffuseColor ;
// スペキュラカラー
COLOR_U8 SpecularColor ;
} ;
VECTOR Position
頂点の座標です。
頂点座標変換をする指定をした場合は MV1SetPosition や MV1AttachAnim などの設定が反映された座標が、
座標変換をしないようにした場合は読み込み時のメッシュのローカル座標そのままが代入されます。
座標変換をする指定をした場合は MV1RefreshReferenceMesh 関数を呼ぶことで座標値が更新されます。
VECTOR Normal
頂点の法線です。
頂点座標変換をする指定をした場合は MV1SetRotation や MV1AttachAnim などの設定が反映された法線ベクトルが、
座標変換をしないようにした場合は読み込み時のメッシュのローカル法線がそのまま代入されます。
座標変換をする指定をした場合は MV1RefreshReferenceMesh 関数を呼ぶことで法線値が更新されます。
UV TexCoord[ 2 ]
頂点のテクスチャ座標です。
UV は構造体で、中身は float u, v となっています。
一応マルチテクスチャを考慮して2つのテクスチャ座標を代入できるようになっていますが、
現在のバージョンでは TexCoord[ 0 ] しか使いません。
...
戻り値:
0:成功
| プラグイン / モジュール | DxLibW |
| バージョン | 3.24f |
| 作成日 | 2026/04/12 |
| 著作者 | DxLib: Takumi Yamada / HSP binding: IronHSP Project |
| URL | https://dxlib.xsrv.jp/ |
| 備考 | hspdxlib.as をインクルードして使用 |
| タイプ | DxLib ゲームライブラリ |
| グループ | DxLib 3Dモデル |
| 対応環境 |
|
| hs ファイル | hsphelp\hspdxlib.hs |