[Atelier Blue アトリエブルー]HomeプログラミングManaged DirectX3D>メッシュの基本図形

メッシュの基本図形

メッシュには標準で使える基本図形がいくつかあります。これを利用するとサンプルを作るのが楽になります。それと、私的見解なのですが、結構遊べます。

ここの説明は、分かりやすくしようとした結果として、正確でない場合があります。言いたい事はあっているんですが、表現の仕方が・・・です。分かり易い表現があれば、どなたか教えて頂けるとありがたいです。

Box(箱)

箱ですね。左手座標系、軸平行の箱が入ったメッシュを作成します。

public static Mesh Box(
    Device device,   //デバイス
    float width,     //x軸方向の幅
    float height,    //y軸方向の高さ
    float depth      //z軸方向の深さ
);

原点はオブジェクトの中心になります。面の数は12個になるらしいです。法線ベクトルはまともな方向を向いています。ちゃんと面の明るさが正しく表示されます。

Cylinder(円柱)

パルテノン神殿に使えそうです。

作成される円柱は、左手座標系です。

public static Mesh Cylinder(
    Device device, //デバイス
    float radius1, //z軸の負の側の面の半径。
                   //0.0以上の値。(0にすると円錘を作れる)
    float radius2, //z軸の正の側の面の半径。
                   //0.0以上の値。(両方0でも図形は作れる)
    float length,  //円柱の長さ。z軸方向。
    int slices,    //2以上の値。ここの数で『slices柱』が出来る。
    int stacks     //円柱の長さ方向の分割数。
                   //変えてもあまり意味がない。1以上。
);

中心は原点で軸はz軸方向です。

円柱を作れる関数なのですが、「slices」を変えることによって三角柱や、四角柱も作れます。2角柱という変わったものも作れるのですが、微妙に厚さがあるように見えました。

Polygon(面)

面ですね。左手座標系で、n面ポリゴンを作ります。簡単に言うと、『三角面』や『四角面』が作れます。

public static Mesh Polygon(
    Device device,   //デバイス
    float length,    //各辺の長さ
    int sides        //ポリゴンの辺の数。3以上です。
);

オブジェクトの中心は原点です。ポリゴンには表裏があります。表はz軸の正の方向に向いています。それと、周りの長さは「length*sides」で求められそうです。

Sphere(球)

玉です。左手座標系で球を作成します。軸はz軸です。

public static Mesh Sphere(
    Device device,   //デバイス
    float radius,    //球の半径。0.0以上。
    int slices,      //地球で言うと経線で分割された
                     //領域の数。2以上。
    int stacks       //地球で言うと緯線で分割された
                     //領域の数の数。2以上。
);

中心が原点です。球を作る関数ですが、「slices」や「stacks」の数が小さいとおもしろい図形が作れます。

「slices」や「stacks」は経線や緯線の数ではないので注意が必要です。(線の数でないため、1は無効になるのです)

Teapot (ティーポット・急須?)

はっきり言って、DirectXのデモ以外にどう利用して良いのか迷ってしまうものです。そもそも基本図形になりませんね。左手座標系です。

public static Mesh Teapot(
    Device device
);

メッシュの中心は原点です。Zバッファを有効にしないと変になります。

Torus (ドーナッツ)

むしろブレスレットと言った方が良いかも。左手座標系です。先に1つ注意です。中心はいつもの通り原点(0,0,0)です。z軸を軸ととするドーナツになります。つまり、z軸を中心に回転させたと同じ事。内径というのはドーナッツの中身の部分の半径です。外形というのは原点から、内径の中心までの半径です。

簡単に言うと、外形を大きくすれば、中央の穴が大きくなって、内径を大きくすれば、太くなるのです。

public static Mesh Torus(
    Device device,      //デバイス
    float innerRadius,  //内径。0.0以上。
    float outerRadius,  //外形。0.0以上。
    int sides,          //内径部分の分割数。3以上
    int rings           //外形部分の分割数。3以上。
                        //ここを変えると、三角トーラスや
                        //四角形トーラスが作れます。
);

これもzバッファを使わないと変になります。内径が外形より大きいと、ミカンやリンゴのようになります。


円関係はそれなりの分割数がないと意味不明な事になります。しかしながら、利用価値がないわけではないです。そして、そのために、このページでは積極的に下限値を示しています。


ページの一番上へ
前のページへ 一覧に戻る 次のページへ
初版2006-3-24
[Atelier Blue アトリエブルー]HomeプログラミングManaged DirectX3D>メッシュの基本図形