Mesh クラス

Mesh クラス

使用例

  • メッシュ オブジェクトの作成
  • ファイルからのメッシュのロード

メッシュ オブジェクトを操作するには、Mesh クラスのメソッドとプロパティを使う。メッシュは、テクスチャやマテリアルなどのリソース、および位置データや隣接性データなどの属性を保持する、抽象的なデータ コンテナである。

定義

Visual Basic Public Class Mesh
   Inherits BaseMesh 
C# public class Mesh : BaseMesh
Managed C++ public __gc class Mesh  : public BaseMesh
JScript public class Mesh extends BaseMesh

メンバ テーブル

次のテーブルは、Mesh オブジェクトによって公開されているメンバの一覧である。左側のタブをクリックし、表示したいメンバの種類を選ぶこと。

イベント

イベント 説明
Disposing オブジェクトで Disposing イベントを検出するイベント ハンドラを追加する。

フィールド

フィールド 説明
m_pDevice メッシュに関連付けられているデバイスを取得する。 BaseMesh から継承する。

メソッド

メソッド 説明
Box 左手座標系を使い、軸に沿ったボックスを含むメッシュを作成する。
Clean 単純化の準備として、メッシュのクリーニングを行う。
Clone オブジェクトを複製する。BaseMesh から継承する。
ComputeNormals メッシュに含まれる各頂点の法線を計算する。BaseMesh から継承する。
ComputeTangent テクスチャ ステージに与えられたテクスチャ座標の接線ベクトル算出する。
ConvertAdjacencyToPointReps メッシュの隣接性情報をポイント表現の配列に変換する。BaseMesh から継承する。
ConvertMeshSubsetToSingleStrip 指定したメッシュ サブセットを 1 つの三角形ストリップに変換する。
ConvertMeshSubsetToStrips 指定したメッシュ サブセットを 1 連のストリップに変換する。
ConvertPointRepsToAdjacency ポイント表現データをメッシュの隣接性情報に変換する。BaseMesh から継承する。
Cylinder 左手座標系を使い、円柱のメッシュを作成する。
Dispose オブジェクトが使ったアンマネージのリソースを直ちに解放する。
DrawSubset メッシュのサブセットを描画する。BaseMesh から継承する。
Equals このインスタンスが、指定したオブジェクトに等しいかどうかを示す値を返す。
Finalize Garbage Collector がオブジェクトを破棄する前に、オブジェクトが使ったリソースを強制的に解放する。
FromFile .x ファイルからメッシュをロードする。
FromStream メモリからメッシュをロードする。
FromX オブジェクトからメッシュをロードする。
GenerateAdjacency メッシュのインデックスに基づいて隣接性情報を生成する。BaseMesh から継承する。
GetHashCode このインスタンスのハッシュ コードを返す。
Intersect レイがメッシュに当たるかどうかを判別する。
IntersectSubset 指定したレイとメッシュ サブセットを交差させる。
LoadHierarchy x. ファイルの最初のフレーム階層をロードする。
LoadHierarchyFromFile x. ファイルの最初のフレーム階層をロードする。
LockAttributeBuffer 属性バッファをロックし、属性バッファ メモリへの参照を取得する。
LockIndexBuffer インデックス バッファをロックし、インデックス バッファ メモリへの参照を取得する。BaseMesh から継承する。
LockVertexBuffer 頂点バッファをロックし、頂点バッファ メモリへの参照を取得する。BaseMesh から継承する。
Mesh オブジェクトの新しいインスタンスを初期化する。
OnLostDevice このメッシュの作成時に有効になっているメッシュ オプションを取得する。BaseMesh から継承する。
op_Equality
op_Inequality
Optimize メッシュの面および頂点の順番変更を制御し、パフォーマンスを最適化して、出力メッシュを生成する。
OptimizeInPlace メッシュの面および頂点の順番変更を制御し、パフォーマンスを最適化する。
Polygon 左手座標系を使い、n 面のポリゴンを含むメッシュを作成する。
raise_Disposing
Save
SaveHierarchyToFile フレーム階層を .x ファイルに保存する。
SetIndexBufferData インデックス バッファをロックし、インデックス バッファ メモリへの参照を取得する。BaseMesh から継承する。
SetVertexBufferData 頂点バッファをロックし、頂点バッファ メモリへの参照を取得する。BaseMesh から継承する。
Simplify 指定した MinValue にできるだけ近づくように重み付けを行って、単純化されたメッシュを生成する。
Sphere 左手座標系を使い、球を含むメッシュを作成する。
Split 指定したサイズより小さいサイズで 1 つのメッシュを複数のメッシュに分割する。
Teapot 左手座標系を使い、ティーポットのメッシュを作成する。
TessellateNPatches N パッチ テセレーションを使って、指定したメッシュをテセレーションする。
TextFromFont デバイスと .NET フォント オブジェクト用のフォント オブジェクトを作成する。
Torus 左手座標系を使い、トーラスのメッシュを作成する。
UnlockAttributeBuffer 属性バッファのロックを解除する。
UnlockIndexBuffer インデックス バッファのロックを解除する。BaseMesh から継承する。
UnlockVertexBuffer 頂点バッファのロックを解除する。BaseMesh から継承する。
UpdateSemantics このメソッドを利用すると、ユーザーは頂点バッファのデータ レイアウトを変更せずに、メッシュの宣言を変更できる。古い宣言と新しい宣言のフォーマットが同じ頂点サイズである場合にのみ、呼び出しが有効となる。BaseMesh から継承する。
Validate メッシュを検証する。
WeldVertices

プロパティ

プロパティ 説明
AttributeTable メッシュの属性テーブル、またはメッシュの属性テーブルに格納されているエントリの数を取得する。BaseMesh から継承する。
Declaration メッシュに含まれる頂点を記述する宣言を取得する。BaseMesh から継承する。
Device メッシュに関連付けられているデバイスを取得する。 BaseMesh から継承する。
Disposed オブジェクトが解放されている場合は TRUE、それ以外の場合は FALSE に設定される値を取得する。
IndexBuffer インデックス バッファ内のデータを取得する。BaseMesh から継承する。
NumberBytesPerVertex 頂点ごとのバイト数を取得する。BaseMesh から継承する。
NumberFaces メッシュに含まれる面の数を取得する。BaseMesh から継承する。
NumberVertices メッシュに含まれる頂点の数を取得する。BaseMesh から継承する。
Options このメッシュの作成時に有効になっているメッシュ オプションを取得する。BaseMesh から継承する。
VertexBuffer 頂点バッファ内のデータを取得する。BaseMesh から継承する。
VertexFormat 固定機能の頂点の値を取得する。BaseMesh から継承する。

継承の階層構造

Object

MarshalByRefObject

BaseMesh

Mesh

使用例

メッシュ オブジェクトの作成

この例では、Mesh オブジェクトを作成する方法を示す。このオブジェクトは、事前に作成されたメッシュ ファイル、ジオメトリ、頂点バッファの処理を自動化する。

using Microsoft.DirectX.Direct3D;
.
.
.
public class myMeshes : Form
{
    // Global variables for this project
    Device device = null;         // Create rendering device
    PresentParameters presentParams = new PresentParameters();
    Mesh mesh = null;             // Create mesh object
        
    // Custom Direct3D vertex format used by the vertex buffer
    struct myVertex
    {
        public Vector3 p;         // vertex position
        public Vector3 n;         // vertex normal
        public static readonly VertexFormat format = VertexFormat.Xyz | 
                                                     VertexFormat.Normal;
    };
    
    private int numTriangles = 0; // Number of triangles in one wall of mesh
    
    // Compute the total number of triangles, numTriangles
    .
    .
    .
    public bool InitializeGraphics()
    {
        try
        {
            device = new Device(0, DeviceType.Hardware, this, 
                                CreateFlags.SoftwareVertexProcessing,
                                presentParams);
            mesh = new Mesh( numTriangles, numTriangles * 3, 
                0, myVertex.format, device );
            pause = false;
            return true;
        }
        catch { return false; }
    }

    // Call InitializeGraphics from Main...
    
}

ファイルからのメッシュのロード

この例では、マテリアル構造体を作成し、ファイルからメッシュをロードする。

このコードでは、まず Device と、ロードされたメッシュ データを格納する ExtendedMaterial 構造体を作成する。

Mesh.FromFile(String,MeshFlags,Device,ExtendedMaterial[]) メソッドを使って、ローカル ファイルをロードする。MeshFlags 列挙の SystemMemory 定数は、頂点バッファおよびインデックス バッファのためにシステム メモリ (ページング可能な RAM 以外) を使うように指定する。

FromFile(String,MeshFlags,Device,ExtendedMaterial[]) は、ファイルからメッシュ データをロードするために使う、オーバーロードされた 8 つの FromFile メソッドの内の 1 つである。

using Microsoft.DirectX.Direct3D;

public class Meshes : Form
{
    // Global variables for this project
    Device device = null;   // Rendering device
    PresentParameters presentParams = new PresentParameters();
    .
    .
    .
    // Create the Device object
    device = new Device(0,
                        DeviceType.Hardware,
                        this,
                        CreateFlags.SoftwareVertexProcessing,
                        presentParams);
    ExtendedMaterial[] materials = null;

    // Load the mesh from the specified file
    mesh = Mesh.FromFile("tiger.x",
                        MeshFlags.SystemMemory,
                        device,
                        out materials);
    .
    .
    .
}

クラスの情報

名前空間 Microsoft.DirectX.Direct3D
アセンブリ Microsoft.DirectX.Direct3DX (microsoft.directx.direct3dx.dll)
厳密名 Microsoft.DirectX.Direct3DX,  Version=0293,  Culture=neutral,  PublicKeyToken=d3231b57b74a1492

参照

© 2002 Microsoft Corporation. All rights reserved. Terms of use.