[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Java3Djp:00088] ポリゴンオフセットについて



はやみと申します。

TriangleArrayを用いて面に色を塗り、
その物体の表面に線を書いたり、違う形状で色を塗った
TriangleArrayの面を描画したいのですが、
LineArrayやTriangleArrayは重なって描画されてしまい、
描画にちらつきが出て醜い表示になります。

「ポリゴンオフセット」を行えば同じ座標に描画したオブジェクトが
かさならずに描画できる、ようなので試したのですが、
ちらつきが抑えられていません。


以下のソースように、TriangleArrayから作ったShapeオブジェクトに
対してオフセット値(0.1)を設定しています。
同じような処理でもうひとつ同じTriangleArrayから作ったポリゴンに
対してもオフセット値を設定したり、しなかったり、オフセット値を
変えて設定したりと試したのですが結果は変わりませんでした。
-------------------------------------------------------------
	Point3d[] vertices = new Point3d[3];
	vertices[0] = new Point3d( 0.0, 0.0, 0.0 );
	vertices[1] = new Point3d( 0.8, 0.0, 0.0 );
	vertices[2] = new Point3d( 0.8, 0.5, 0.0 );

	TriangleArray geometry = new TriangleArray(
		vertices.length, TriangleArray.COORDINATES | TriangleArray.COLOR_3 );
	geometry.setCoordinates(0, vertices);

	geometry.setCapability( TriangleArray.ALLOW_COLOR_WRITE );		 

	/* 色変更 */
	Color3f green = new Color3f(0.0f,1.0f,0.0f);
	for(int i=0;i<vertices.length;i++){
		geometry.setColor(i, green);
	}

	Shape3D shape = new Shape3D(); 
	shape.setGeometry( getGeometry() );  //TriangleArray取得

	Appearance ap = new Appearance();
	PolygonAttributes pa = new PolygonAttributes(
		PolygonAttributes.POLYGON_FILL,
		PolygonAttributes.CULL_NONE, 
		0.1f
	);
	ap.setPolygonAttributes(pa);

	shape.setAppearance(ap);
	trans.addChild( shape );

-------------------------------------------------------------

設定方法がわるいのでしょうか?
当メーリングリストの履歴から PolygonOffsetについて調べて
「TwistStripApp.java」なども参考にさせて頂いたのですが、
解決しません。他に参考になるサイトやソースがありましたら
教えて頂けるとありがたです。

環境は、jdk1.4.2 と Java3D(OpenGL版)です。

宜しくお願い致します。