ジオメトリ

立方体

軸に位置合わせされたボリューム 1 の単位立方体を、原点を中心として生成します。

mib_geo_cube
    geometry "mib_geo_cube" ()

パラメータはありません。

球体

指定した数の U サブディビジョンおよび V サブディビジョンを持ったポリゴン球体を、原点を中心として生成します。この球体は、Z 軸(経線)方向をv_subdiv サブディビジョン数、XY 平面(緯線)方向を u_subdiv サブディビジョン数で細分割します。

mib_geo_sphere
    geometry "mib_geo_sphere" (
        integer         "u_subdiv",
        integer         "v_subdiv")
*_subdiv
各パラメータ範囲内のサブディビジョンの数を指定します。u_subdiv が 3 よりも小さいか v_subdiv が 1 よりも小さい場合は、シェーダはサブディビジョンのデフォルト値を使用します。

コーン

Z 軸を中心とし、頂点が Z=0、ベースが Z=-1 であるポリゴン コーンを生成します。コーンの底面の半径は 1、高さも 1 になります。コーンの底面の円板は u_subdiv サブディビジョンに分割され、コーンの側面は Z 軸方向に v_subdiv サブディビジョンに分割されます。コーンのベースにキャップをするかどうかはパラメータでコントロールします。

mib_geo_cone
    geometry "mib_geo_cone" (
        integer         "u_subdiv",
        integer         "v_subdiv",
        boolean         "capped")
*_subdiv
各パラメータ範囲内のサブディビジョンの数を指定します。
capped
true の場合は、コーンのベースをキャップで塞ぎます。

u_subdiv が 3 よりも小さいか v_subdiv が 0 よりも小さい場合は、シェーダはサブディビジョンのデフォルト値を使用します。

シリンダ

Z 軸を中心とし、底面が Z=-1、上面が Z=0 であるポリゴンシリンダを生成します。シリンダの半径は 1、高さも 1 になります。シリンダの 2 つの円板は u_subdiv サブディビジョンに分割され、側面は Z 軸方向に v_subdiv サブディビジョンに分割されます。底面または上面にキャップをするかどうかはパラメータでコントロールします。

mib_geo_cylinder
    geometry "mib_geo_cylinder" (
        integer         "u_subdiv",
        integer         "v_subdiv",
        boolean         "bottom_capped",
        boolean         "top_capped")
*_subdiv
各パラメータ範囲内のサブディビジョンの数を指定します。
bottom_capped
true の場合は、シリンダのベースをキャップで塞ぎます。
top_capped
true の場合は、シリンダの上面をキャップで塞ぎます。

u_subdiv が 3 よりも小さいか v_subdiv が 0 よりも小さい場合は、シェーダはサブディビジョンのデフォルト値を使用します。

トーラス

原点を中心として XY 平面上にポリゴントーラスを生成します。トーラスは 2 つの円によって定義され、小さい方の円は、大きい方の円の中心を中心として回転されます。

mib_geo_torus
    geometry "mib_geo_torus" (
        scalar          "radius",
        scalar          "thickness",
        integer         "uSpans",
        integer         "vSpans")
radius
大きい円の半径です。
thickness
小さい円の半径です。
uSpans
vSpans
各パラメータ範囲内のサブディビジョンの数を指定します。

省略した場合は(0 に設定されます)、デフォルトで radius は 2.0、thickness は 1.0、uSpans は 32、vSpans は 32 にそれぞれ設定されます。

スクエア

中心が原点に位置合わせされ、法線の方向が正の Z 軸を指す、面積 1 のスクエアが生成されます。

mib_geo_square
    geometry "mib_geo_square" ()

パラメータはありません。

インスタンス

上記のジオメトリシェーダのうちいずれか 1 つを指定し、ジオメトリを変換、スケーリング、および回転するインスタンスを構築し、唯一のメンバであるソースジオメトリのインスタンスを使用してグループを戻します。ベースシェーダがリストに含まれているために結果がゼロでない場合は、新しいグループは作成せずに、結果として作成されるグループにこのインスタンスを追加します(ジオメトリシェーダの通常の動作です)。

mib_geo_instance
    geometry "mib_geo_instance" (
        geometry        "object",
        miMatrix        "matrix",
        material        "material")
object
インスタンス化するオブジェクトです。
matrix
新しいインスタンスの変換行列です。この行列が空の行列である場合は単位行列を使用します。
material
インスタンスに格納するための継承マテリアルです。ヌル(マテリアルが存在しない)の場合もあります。

マテリアルリスト対応インスタンス

このインスタンスシェーダは 1 つ前に紹介したものと同じですが、マテリアル配列に対応しています。配列に複数のメンバが存在する場合は、マテリアル配列は新しいインスタンスのマテリアルリストに変換されます。マテリアルリストは、インスタンス化されたオブジェクトがタグ付けされている場合に便利です。すなわち、オブジェクトのポリゴンまたはサーフェスがマテリアル配列のインデックス指す整数を含んでいる場合です。

mib_geo_instance_mlist
    geometry "mib_geo_instance_mlist" (
        geometry        "object",
        miMatrix        "matrix",
        array material  "material")
object
インスタンス化するオブジェクトです。
matrix
新しいインスタンスの変換行列です。この行列が空の行列である場合は単位行列を使用します。
material
インスタンスに格納するための継承マテリアルです。ヌル(マテリアルが存在しない)の場合もあります。

テクスチャ サーフェスの追加

このシェーダは入力オブジェクト(フリーフォーム サーフェス タイプでなくてはなりません)のコピーを戻します。すべての面を対象にループし、次数が 1 であるベジェ テクスチャ サーフェスを最新のテクスチャ サーフェスとして各面に追加します。テクスチャ サーフェスのパラメータおよび制御点は、テクスチャ頂点座標に対するジオメトリックな近似のパラメトリック UV 座標のマッピングが正確に行われるように選択されます。たとえば、三角形の頂点のテクスチャ座標は、三角形の頂点位置の UV 座標です。ベジェの基底は必ずオブジェクトのコピーに追加されます。

mib_geo_add_uv_texsurf
    geometry "mib_geo_add_uv_texsurf" (
        geometry        "object")
end declare
object
コピーされるフリーフォーム サーフェス オブジェクトです。

Copyright © 1986-2009 by mental images GmbH