立体の塗りつぶし設定

ここでは、標準モデルやポリゴンの塗りつぶし設定を扱います。 この設定により、ポリゴンを面領域を塗りつぶさずに、 境界線のみを描画する事が可能になります。 これを利用して、モデルのワイヤーフレーム描画などを行う事も可能です。

- 目次 -

塗りつぶし設定

塗りつぶし設定とは、立体を構成するポリゴンを描画する際に、 ポリゴン境界線の内側、つまり面の領域を塗りつぶすかどうかの設定です。

塗りつぶし設定は、標準状態では有効になっており、 立体は面の集合で構成されているように描画されます。 これを無効にする事で、 立体が線の集合で構成されているように描画されるようになります(SF作品などで見かける、いわゆるワイヤーフレーム描画です)。

モデルの塗りつぶし設定

モデルの塗りつぶし設定を行うには、 setModelFill 関数を使用します。

- 関数の形式 -

void setModelFill ( int modelID, bool fill )

引数は以下の通りです:

ポリゴンの塗りつぶし設定

モデルの塗りつぶし設定を行うには、 setModelFill 関数を使用します。

- 関数の形式 -

void setPolygonFill ( int polygonID, bool fill )

引数は以下の通りです:

プログラム例

実際に球モデルを配置し、フィル設定を無効にして、 ワイヤーフレーム描画を行ってみましょう。 以下のように記述し、実行してみてください。


import graphics3d.Graphics3DFramework;
import Graphics3D;

// プログラムの最初に呼び出される関数
void onStart ( int rendererID ) {

	// 画面サイズや背景色の設定(省略可能)
	setWindowSize( 800, 600 );
	setBackgroundColor( 0, 0, 0, 255 );


	// 座標軸モデルを生成して配置
	int axis = newAxisModel( 3.0, 3.0, 3.0 );
	mountModel( axis, rendererID );

	// 球モデルを生成して配置
	int sphere = newSphereModel( 2.0, 2.0, 2.0, 10, 8 );
	mountModel( sphere, rendererID );

	// 球モデルのフィル設定を無効に
	setModelFill( sphere, false );
}
Sample.vcssl

このプログラムを実行すると、黒い背景に白い球がワイヤーフレームで描画されます。

実行結果、球のワイヤーフレーム描画の図
実行結果
球モデルの塗りつぶし設定が「無効」に変更された様子が見て取れる。

なお、モデルの内側の面は、普通は見えない部分であるため、標準では描画されないようになっています。 しかし上の例のように、ワイヤーフレーム描画を行う場合は、内側が描画されない事で不自然に見えるかもしれません。 内側も描画させたい場合は、上のプログラムの例では球モデル生成後に

setModelCull(sphere, false, false);

と追記し、ポリゴン裏面の描画省略機能を無効化してください。