トップページ > Java3D入門 > Java3Dでプリミティブを描画する(4)
今度は円柱を描画してみます。円柱はCylinder(シリンダー)クラスです。
Cylinder(float radius , float height , Appearance ap)上がCylinderクラスのコンストラクタです。第一引数の“radius”(レイディアス)は半径です。 第二引数の“height”(ハイト)は高さです。第三引数はお馴染みのAppearanceです。
あまり大きいサイズで生成すると、画面からはみ出てしまいます。テストプログラムでは 、ひかえめに円柱を作っておきます。色のパラメーターは毎回適当です。
//******************************************************************************
//Java3D Cylinder_test
//Cylinderを表示
//******************************************************************************
//==============================================================================
//インポート・ファイル
import javax.media.j3d.*;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.*;
import javax.vecmath.*;
import java.awt.*;
import javax.swing.*;
//==============================================================================
//メイン・クラス
public class Cylinder_test
{
//=============================================================================
//メイン・メソッド
public static void main(String[] args)
{
Cylinder_test test = new Cylinder_test();
}
//=============================================================================
//コンストラクタ
public Cylinder_test()
{
//============================================================================
//まずは、基礎フレームの設定。
//============================================================================
JFrame frame = new JFrame();
frame.setSize(250,250);
frame.setTitle("Cylinder_test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel cp = new JPanel();
cp.setLayout(null);
frame.add(cp);
//============================================================================
//次にJava3D関係の設定。
//============================================================================
GraphicsConfiguration g_config = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas = new Canvas3D(g_config);
canvas.setBounds(0,0,250,250);
cp.add(canvas);
//============================================================================
//空のSimpleUniverseを生成。
//============================================================================
SimpleUniverse universe = new SimpleUniverse(canvas);
frame.setVisible(true);
//============================================================================
//視点の設定
//============================================================================
ViewingPlatform camera = universe.getViewingPlatform();
camera.setNominalViewingTransform();
//============================================================================
//ライトの設定
//============================================================================
Color3f light_color = new Color3f(1.4f,1.4f,1.4f);
Vector3f light_direction = new Vector3f(0.2f,-0.2f,-0.6f);
DirectionalLight light = new DirectionalLight(light_color,light_direction);
BoundingSphere bounds = new BoundingSphere();
light.setInfluencingBounds(bounds);
BranchGroup group2 = new BranchGroup();
group2.addChild(light);
universe.addBranchGraph(group2);
//============================================================================
//プリミティブの設定をして、SimpleUniverseに追加
//============================================================================
Appearance appearance = new Appearance();
Material material = new Material();
//DiffuseColorを設定します。引数は順に赤、緑、青です。今回はうすい黄色・・・。
material.setDiffuseColor(0.6f,0.6f,0.3f);
appearance.setMaterial(material);
BranchGroup group1 = new BranchGroup();
//縦長の円柱を生成します。
Cylinder cylinder = new Cylinder(0.2f,0.8f,appearance);
group1.addChild(cylinder);
universe.addBranchGraph(group1);
}
}
//ソースコードここまで。
//******************************************************************************
この角度から見るとイマイチですが、一応、円柱ですね。なんかテカってますね。金色・・・。 ソースコードはCilynderを生成している以外、前と全く変わりません。