view src/alice/test/topology/fishmodel/alpha/MakeFrame.java @ 127:117dad267a9b working

add apiTest put
author sugi
date Mon, 06 Aug 2012 16:19:38 +0900
parents cc4973a869c5
children 1044a79ce4ef
line wrap: on
line source

package alice.test.topology.fishmodel.alpha;

import java.awt.GraphicsConfiguration;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.media.j3d.Background;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.DirectionalLight;
import javax.media.j3d.ImageComponent2D;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3f;

import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.universe.ViewingPlatform;

public class MakeFrame {
	
	int fSizeX = 800;
	int fSizeY = 800;
	private Canvas3D canvas;
	private SimpleUniverse universe;
	private KeyInput key;
	private KeyInputCodeSegment kics;
	
	public MakeFrame(String str){
		JFrame frame = new JFrame(str);
		frame.setSize(fSizeX,fSizeY);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel cp = new JPanel();
		cp.setLayout(null);
		frame.add(cp);
		
		GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
		canvas = new Canvas3D(config);
		canvas.setBounds(0,0,fSizeX,fSizeY);
		cp.add(canvas);
		
		universe = new SimpleUniverse(canvas);
		universe.addBranchGraph(createLight());
		universe.addBranchGraph(setBackground());
		/*
		key = new KeyInput();
		canvas.addKeyListener(key);
		*/
		kics = new KeyInputCodeSegment();
		canvas.addKeyListener(kics);
		frame.setVisible(true);
		
		ViewingPlatform camera = universe.getViewingPlatform();
		camera.setNominalViewingTransform();
	}
	
	private BranchGroup setBackground(){
		BranchGroup scene = new BranchGroup();
		BufferedImage img = null;
		try {
			img = ImageIO.read(new File("../image/image1.jpg"));
		} catch (IOException e) {
		  	e.printStackTrace();
		}
		ImageComponent2D image = 
				new ImageComponent2D(ImageComponent2D.FORMAT_RGBA8,img);
		Background background = new Background(image);
		background.setImageScaleMode(Background.SCALE_FIT_ALL);
		BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), Double.POSITIVE_INFINITY);
		background.setApplicationBounds(bounds);
		scene.addChild(background);
		return scene;
		
	}
	
	private BranchGroup createLight(){
		BranchGroup scene = new BranchGroup();
		Color3f light_color  = new Color3f(1.7f,1.7f,1.7f);
		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);
		scene.addChild(light);
		return scene;
	}
	
	public void register(MakeObject obj){
		BranchGroup group = obj.createBranch();
		this.universe.addBranchGraph(group);
	}
	
	public SimpleUniverse getUniverse(){
		return this.universe;
	}
	
	public Canvas3D getCanvas(){
		return this.canvas;
	}
	
	public KeyInput getKey(){
		return this.key;
	}
	
	public KeyInputCodeSegment getKeySegment(){
		return this.kics;
	}

}