アットウィキロゴ

ex84

import javax.media.j3d.*;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.Box;
import javax.vecmath.*;
import java.awt.*;
import javax.swing.*;
public class ex84
{

public static void main(String[] args)
{
  ex84 test = new ex84();
}

public ex84()
{

  JFrame frame = new JFrame();
  frame.setSize(500,500);
  frame.setTitle("ex84");
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  JPanel cp = new JPanel();
  cp.setLayout(null);
  frame.add(cp);
  GraphicsConfiguration g_config = SimpleUniverse.getPreferredConfiguration();
  Canvas3D canvas = new Canvas3D(g_config);
  canvas.setBounds(0,0,250,250);
  cp.add(canvas);
  SimpleUniverse universe = new SimpleUniverse(canvas);
  frame.setVisible(true);  
  ViewingPlatform camera = universe.getViewingPlatform();
  camera.setNominalViewingTransform();

  Color3f light_color = new Color3f(1.3f,1.3f,1.3f);
  Vector3f light_direction = new Vector3f(0.2f,-0.3f,-1.0f);
  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);


  //============================================================================
  //Boxを作る
  //============================================================================

  Appearance appearance = new Appearance();
  Material material = new Material();
  material.setDiffuseColor(0.9f,0.75f,0.75f);
  appearance.setMaterial(material);
  Box box = new Box(0.3f,0.3f,0.3f,appearance);


  //============================================================================
  //BoxをTransfomrGroupに追加。さらにTransformGroupをBranchGroupへ登録。
  //============================================================================

  BranchGroup group1 = new BranchGroup();
  TransformGroup transform_group = new TransformGroup();
  transform_group.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
  transform_group.addChild(box);
  group1.addChild(transform_group);
  universe.addBranchGraph(group1);

  //============================================================================
  //回転の座標変換を2つ、合成します。
  //============================================================================

  //Transform3Dを生成
  Transform3D transform1 = new Transform3D();
  Transform3D transform2 = new Transform3D();

  //Transform3Dに座標変換の内容を登録。
  //X軸周りに30度回転。
  //Y軸周りに45度回転。
  transform1.rotX(Math.PI/6);
  transform2.rotY(Math.PI/4);

  //2つの座標変換を合成します。
  //transform1 = transform1 * transform2
  //先に作用するのはtransform2の方です。
  transform1.mul(transform2);

  //TransformGroupにTransform3Dを登録。
  transform_group.setTransform(transform1);

}
}
最終更新:2010年01月07日 09:33