トップページ > Java3D入門 > Java3Dでプリミティブを描画する(4)

円柱を描画する

Cylinderクラス

今度は円柱を描画してみます。円柱はCylinder(シリンダー)クラスです。

Cylinder(float radius , float height , Appearance ap)

上がCylinderクラスのコンストラクタです。第一引数の“radius”(レイディアス)は半径です。 第二引数の“height”(ハイト)は高さです。第三引数はお馴染みのAppearanceです。

あまり大きいサイズで生成すると、画面からはみ出てしまいます。テストプログラムでは 、ひかえめに円柱を作っておきます。色のパラメーターは毎回適当です。

ソースコード : Cylinder_test.java

//******************************************************************************
//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を生成している以外、前と全く変わりません。




前へ   次へ