アプリケーションは、IDirect3DRMMeshインターフェイスのメソッドを使用して、メッシュのグループと会話する。メッシュは、ポリゴン面のセットから構成されるビジュアルオブジェクトである。メッシュは、頂点のセットと面のセット (面はメッシュの頂点と法線によって定義される) を定義する。いくつかの面が使用している頂点または法線を変更すると、それを共有するすべての面の外観が変わる。
メッシュの頂点はメッシュ中の面の位置を定義し、これらを使用してテクスチャマップ内の2D座標を定義することもできる。
IDirect3DRMMeshとIDirect3DRMMeshBuilder3を使用して、保持モードでメッシュを操作することができる。
アプリケーションで、同じ特性 (マテリアル、テクスチャなど) をいくつかの頂点または面に割り当てる必要がある場合、IDirect3DRMMeshインターフェイスを使用して、これらを1つのグループにまとめることができる。アプリケーションが2つの異なるグループ間で頂点を共有する必要がある場合 (たとえば、メッシュ中の隣接する面の色が異なる場合)、頂点は両方のグループに重複していなければならない。IDirect3DRMMesh::AddGroupメソッドは、グループ識別子を面の集合に割り当てる。この識別子を使用して、後続の呼び出しでグループを参照する。
IDirect3DRMMeshBuilder3とIDirect3DRMMeshインターフェイスによって、アプリケーションは3つ以上の側面を持つ面を作成することができる。たとえば、アプリケーションがレンダリングしているハードウェアに64Kの制限があり、メッシュがそのサイズを超えている場合、これらはメッシュを自動的に複数のバッファに分割する。これらの機能は、Direct3DRMMeshとDirect3DRMMeshBuilder3 APIをDirect3D APIから切り離してセットする。
IDirect3DRMMesh::SetGroupColor、SetGroupColorRGB、SetGroupTextureおよびSetGroupMaterialメソッドを使用して、メッシュの各面またはメッシュのすべての面に対して同時に、個別の色、テクスチャ、マテリアルプロパティを定義することができる。
レンダリングするメッシュについては、IDirect3DRMFrame3::AddVisualメソッドを使用して、最初にフレームに追加しなければならない。単一のメッシュを複数のフレームに追加して、そのメッシュの複数のインスタンスを作成することができる。
IDirect3DRMMesh::SetGroupQualityメソッドに対する呼び出しで指定されたように、アプリケーションは、フラット、グーロー、フォンシェードモードを使用することができる (しかし、フォンシェーディングはまだ利用可能ではない)。このメソッドは、D3DRMRENDERQUALITY列挙型の値を使用する。シェーディングモードの詳細については、「ポリゴン」を参照すること。
IDirect3DRMMeshインターフェイスのメソッドは、以下のグループにまとめることができる。
色 | GetGroupColor |
SetGroupColor | |
SetGroupColorRGB | |
作成と | AddGroup |
情報 | GetBox |
GetGroup | |
GetGroupCount | |
マテリアル | GetGroupMaterial |
SetGroupMaterial | |
その他 | Scale |
Translate | |
レンダリングクオリティ | GetGroupQuality |
SetGroupQuality | |
テクスチャマッピング | GetGroupMapping |
SetGroupMapping | |
テクスチャ | GetGroupTexture |
SetGroupTexture | |
頂点の位置 | GetVertices |
SetVertices |
すべてのCOMインターフェイスと同様、IDirect3DRMMeshインターフェイスはIUnknownインターフェイスメソッドを継承する。IUnknownインターフェイスは、以下の3つのメソッドをサポートする。
AddRef |
QueryInterface |
Release |
さらに、IDirect3DRMMeshインターフェイスはIDirect3DRMObjectインターフェイスから次のメソッドを継承する。
AddDestroyCallback |
Clone |
DeleteDestroyCallback |
GetAppData |
GetClassName |
GetName |
SetAppData |
SetName |
Direct3DRMMeshオブジェクトは、IDirect3DRM3::CreateMeshメソッドの使用によって取得される。
面の集まりをグループ化し、そのグループの識別子を取得する。メッシュに最初に追加されるグループのインデックスは、常に0である。以降のグループのインデックスは、それぞれ1ずつ増加する。
構文
HRESULT AddGroup(
unsigned vCount,
unsigned fCount,
unsigned vPerFace,
unsigned *fData,
D3DRMGROUPINDEX *returnId
);
パラメータ
- vCount, fCount
- グループに含まれる頂点と面の数。
- vPerFace
- すべての面が同じ数の頂点を持つ場合、面当たりの頂点の数。グループ中の面が持つ頂点の数が一定でないときは、このパラメータに0を指定しなくてはならない。
- fData
- 面データのアドレス。vPerFaceパラメータに値が設定されている場合、このデータは単に、グループの頂点配列へのインデックスリストである。vPerFaceが0のときは、頂点インデックスよりも、その面の頂点の数を示す整数値を優先しなくてはならない。たとえば、vPerFaceが0で、グループを構成する面が三角形と四角形である場合、データは次のようになる。[ 3, インデックス, インデックス, インデックス, 4, インデックス, インデックス, インデックス, インデックス, 3, インデックス, インデックス, インデックス, ...]
- returnId
- メソッドが制御を返すとき、グループの識別子を受け取る変数へのポインタ。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
新しく追加されたグループには、以下のデフォルトのプロパティが与えられる。
- 白。
- テクスチャなし。
- 反射なし。
- 頂点配列の各頂点の位置、法線、色は0。
頂点の位置を設定するには、IDirect3DRMMesh::SetVerticesメソッドを使用する。
Direct3DRMMeshオブジェクトを含む方形範囲を取得する。方形範囲は、それぞれの次元のモデル座標の最小値と最大値を示す。
構文
HRESULT GetBox(
D3DRMBOX *lpD3DRMBox
);
パラメータ
- lpD3DRMBox
- 境界ボックス座標を受け取るD3DRMBOX構造体。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
指定されたグループに関連付けられているデータを取得する。
構文
HRESULT GetGroup(
D3DRMGROUPINDEX id,
unsigned *vCount,
unsigned *fCount,
unsigned *vPerFace,
DWORD *fDataSize,
unsigned *fData
);
パラメータ
- id
- グループの識別子。この識別子はIDirect3DRMMesh::AddGroupメソッドを使用して生成されたものでなくてはならない。
- vCount, fCount
- メソッドが制御を返すとき、グループの頂点の数と面の数を受け取る変数のアドレス。これらのパラメータにはNULLを指定することができる。
- vPerFace
- メソッドが制御を返すとき、面当たりの頂点の数を受け取る変数のアドレス。これらのパラメータにはNULLを指定することができる。
- fDataSize
- fDataパラメータが指すバッファの中の、符号なし要素の数を示す変数のアドレス。このパラメータにNULLを指定することはできない。
- fData
- メソッドが制御を返すとき、グループの面データを格納するバッファのアドレス。このデータの形式は、IDirect3DRMMesh::AddGroupメソッドの呼び出しで指定したものと同じである。このパラメータがNULLのとき、必要なバッファのサイズがfDataSizeパラメータに返される。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
グループの色を取得する。
構文
D3DCOLOR GetGroupColor(
D3DRMGROUPINDEX id
);
パラメータ
- id
- グループの識別子。この識別子はIDirect3DRMMesh::AddGroupメソッドを使って生成されたものでなくてはならない。
戻り値
成功すれば、色を示すD3DCOLOR値を返す。失敗すれば0を返す。
参照
IDirect3DRMMesh::SetGroupColor, IDirect3DRMMesh::SetGroupColorRGB
指定されたDirect3DRMMeshオブジェクト中のグループの数を取得する。
構文
unsigned GetGroupCount( );
戻り値
成功すればグループの数を返す。失敗すれば0を返す。
Direct3DRMMeshオブジェクト中のグループに対して、どのようにテクスチャがマップされるかを取得する。
構文
D3DRMMAPPING GetGroupMapping(
D3DRMGROUPINDEX id
);
パラメータ
- id
- グループの識別子。この識別子はIDirect3DRMMesh::AddGroupメソッドを使って生成されたものでなくてはならない。
戻り値
成功すれば、グループへのテクスチャのマップ方法を示すD3DRMMAPPING値の1つを返す。失敗すれば0を返す。
参照
Direct3DRMMeshオブジェクト中のグループに関連付けられたマテリアルへのポインタを取得する。
構文
HRESULT GetGroupMaterial(
D3DRMGROUPINDEX id,
LPDIRECT3DRMMATERIAL *returnPtr
);
パラメータ
- id
- グループの識別子。この識別子はIDirect3DRMMesh::AddGroupメソッドを使って生成されたものでなくてはならない。
- returnPtr
- メソッドが制御を戻すとき、グループのIDirect3DRMMaterialインターフェイスを受け取る変数へのポインタのアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
Direct3DRMMeshオブジェクト中の指定されたグループのレンダリングクオリティを取得する。
構文
D3DRMRENDERQUALITY GetGroupQuality(
D3DRMGROUPINDEX id
);
パラメータ
- id
- グループの識別子。この識別子はIDirect3DRMMesh::AddGroupメソッドを使って生成されたものでなくてはならない。
戻り値
成功すれば、D3DRMRENDERQUALITYで示される列挙型の値を返す。失敗すれば0を返す。これらの値には、オブジェクトのシェーディングモードや照明モード、塗りつぶしモードが含まれている。
参照
Direct3DRMMeshオブジェクト中のグループに関連付けられたテクスチャへのポインタを取得する。
構文
HRESULT GetGroupTexture(
D3DRMGROUPINDEX id,
LPDIRECT3DRMTEXTURE *returnPtr
);
パラメータ
- id
- グループの識別子。この識別子はIDirect3DRMMesh::AddGroupメソッドを使って生成されたものでなくてはならない。
- returnPtr
- メソッドが制御を返すとき、グループのIDirect3DRMTextureインターフェイスを受け取る変数へのポインタのアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
Direct3DRMMeshオブジェクト中の指定のグループに対する頂点情報を取得する。
構文
HRESULT GetVertices(
D3DRMGROUPINDEX id,
DWORD index,
DWORD count,
D3DRMVERTEX *returnPtr
);
パラメータ
- id
- グループの識別子。この識別子はIDirect3DRMMesh::AddGroupメソッドを使って生成されたものでなくてはならない。
- index
- 頂点位置を取得する始点を示すD3DRMVERTEX構造体の配列のインデックス。
- count
- パラメータで与えられているインデックス以降の、取得するD3DRMVERTEX構造体(頂点)の数。このパラメータはNULLにできない。グループ中の頂点の数を取得するには、IDirect3DRMMesh::GetGroupメソッドを呼び出す。
- returnPtr
- メソッドが戻ったとき、頂点情報(頂点位置、色、テクスチャ座標など)を格納するD3DRMVERTEX構造体からなる配列。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
モデル座標のx軸、y軸、z軸に対し、与えられたスケール係数によってDirect3DRMMeshオブジェクトをスケーリングする。
構文
HRESULT Scale(
D3DVALUE sx,
D3DVALUE sy,
D3DVALUE sz
);
パラメータ
- sx, sy, sz
- x軸、y軸、z軸に沿って適用されるスケール係数。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
Direct3DRMMeshオブジェクト中のグループの色を設定する。
構文
HRESULT SetGroupColor(
D3DRMGROUPINDEX id,
D3DCOLOR value
);
パラメータ
- id
- グループの識別子。この識別子はIDirect3DRMMesh::AddGroupを使って生成されたものでなくてはならない。
- value
- グループの色。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドは、Direct3DRMMeshInterpolatorオブジェクトにグループRGBキーを追加するためにも使用する。
参照
IDirect3DRMMesh::GetGroupColor, IDirect3DRMMesh::SetGroupColorRGB
RGB値を使用して、Direct3DRMMeshオブジェクト中のグループの色を設定する。
構文
HRESULT SetGroupColorRGB(
D3DRMGROUPINDEX id,
D3DVALUE red,
D3DVALUE green,
D3DVALUE blue
);
パラメータ
- id
- グループの識別子。この識別子はIDirect3DRMMesh::AddGroupメソッドを使って生成されたものでなくてはならない。
- red, green, blue
- グループの色の赤、緑、青の各要素。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドは、Direct3DRMMeshInterpolatorオブジェクトにグループRGBキーを追加するためにも使用する。
参照
IDirect3DRMMesh::GetGroupColor, IDirect3DRMMesh::SetGroupColor
Direct3DRMMeshオブジェクト中のグループにマッピングを設定する。マッピングは、どのようにテクスチャが面にマップされるかを決定する。
構文
HRESULT SetGroupMapping(
D3DRMGROUPINDEX id,
D3DRMMAPPING value
);
パラメータ
- id
- グループの識別子。この識別子はIDirect3DRMMesh::AddGroupメソッドを使って生成されたものでなくてはならない。
- value
- グループのマッピングを指定するD3DRMMAPPING型の値。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
Direct3DRMMeshオブジェクト中のグループにマテリアルを関連付ける。
構文
HRESULT SetGroupMaterial(
D3DRMGROUPINDEX id,
LPDIRECT3DRMMATERIAL value
);
パラメータ
- id
- グループの識別子。この識別子はIDirect3DRMMesh::AddGroupメソッドを使って生成されたものでなくてはならない。
- value
- Direct3DRMMeshオブジェクトに関連付けるIDirect3DRMMaterialインターフェイスのアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
Direct3DRMMeshオブジェクト中の指定されたグループのレンダリングクオリティを設定する。
構文
HRESULT SetGroupQuality(
D3DRMGROUPINDEX id,
D3DRMRENDERQUALITY value
);
パラメータ
- id
- グループの識別子。この識別子はIDirect3DRMMesh::AddGroupメソッドを使って生成されたものでなくてはならない。
- value
- D3DRMRENDERQUALITY型で表される列挙型の値。これらの値には、オブジェクトのシェーディングモードや照明モード、塗りつぶしモードが含まれている。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
Direct3DRMMeshオブジェクト中のグループにテクスチャを関連付ける。
構文
HRESULT SetGroupTexture(
D3DRMGROUPINDEX id,
LPDIRECT3DRMTEXTURE value
);
パラメータ
- id
- グループの識別子。この識別子はIDirect3DRMMesh::AddGroupメソッドを使って生成されたものでなくてはならない。
- value
- Direct3DRMMeshオブジェクトに関連付けるIDirect3DRMTextureインターフェイスのアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
Direct3DRMMeshオブジェクト中の指定されたグループの頂点の位置を設定する。
構文
HRESULT SetVertices(
D3DRMGROUPINDEX id,
unsigned index,
unsigned count,
D3DRMVERTEX *values
);
パラメータ
- id
- グループの識別子。この識別子はIDirect3DRMMesh::AddGroupメソッドを使って生成されたものでなくてはならない。
- index
- 修正するメッシュグループの最初の頂点のインデックス。
- count
- セットする連続頂点の数。values配列は、少なくともcount数の要素を格納しなければならない。
- values
- 設定する頂点位置を示すD3DRMVERTEX構造体の配列。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
頂点情報はグループごとに持つ。2つの異なったグループ間で頂点を共有する必要がある場合(たとえば、メッシュ上の隣接した面の色が異なるとき)、両方のグループで頂点をコピーしなくてはならない。
このメソッドは、Direct3DRMMeshInterpolatorオブジェクトに頂点位置キーを追加するためにも使用する。
参照
Direct3DRMMeshオブジェクト中の頂点の位置に、指定されたオフセットを追加する。
構文
HRESULT Translate(
D3DVALUE tx,
D3DVALUE ty,
D3DVALUE tz
);
パラメータ
- tx, ty, tz
- 各頂点位置のx座標、y座標、z座標に追加されるオフセット。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
トップに戻る
© 1999 Microsoft and/or its suppliers. All rights reserved. Terms of Use.