Hello, Universe

java3d

考试间歇期ing~这诡异的考试安排真让人无语,考4天,然后4天无事,最后再考1天,逼着别人不得不晚回家 orz

于是趁着这诡异的间歇时间开始Java3D的研究的第一步,以上就是今天成果了,嘛,还十分破烂,慢慢继续了

争取年内出同人空战游戏吧!!!

(那么模型是以前做的歼十……)


源代码如下,还很混乱,没有好好整理过:

import java.io.FileNotFoundException;
 
import javax.media.j3d.Background;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.DirectionalLight;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3f;
 
import com.sun.j3d.loaders.IncorrectFormatException;
import com.sun.j3d.loaders.ParsingErrorException;
import com.sun.j3d.loaders.Scene;
import com.sun.j3d.loaders.objectfile.ObjectFile;
import com.sun.j3d.utils.universe.SimpleUniverse;
 
public class HelloUniverse extends SimpleUniverse
{
 
	public HelloUniverse()
	{
		super();
		init();
	}
 
	private void init()
	{
		BranchGroup group = new BranchGroup();
		// 创建一个用来包含对象的数据结构
 
		BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0),
				100.0);
		// 设置光线的作用范围
 
		Background back = new Background();
		back.setApplicationBounds(bounds);
		back.setColor(0.17f, 0.50f, 0.92f);
		group.addChild(back);
		// 天空颜色
 
		Color3f lightColor = new Color3f(1f, 1f, 1f);
		// 设置光线的颜色
 
		Vector3f lightDirection = new Vector3f(4.0f, -7.0f, -12.0f);
		// 设置光线的方向
		DirectionalLight light = new DirectionalLight(lightColor,
				lightDirection);
		// 指定颜色和方向,产生单向光源
		light.setInfluencingBounds(bounds);
		// 把光线的作用范围加入光源中
		group.addChild(light);
		// 将光源加入group组
 
		ObjectFile plane = new ObjectFile(ObjectFile.RESIZE);
		Scene j10 = null;
		try
		{
			j10 = plane.load("E:\\Works\\3D Works\\Projects\\export\\J-10.obj");
		}
		catch (FileNotFoundException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (IncorrectFormatException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (ParsingErrorException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		TransformGroup tg = new TransformGroup();
		Transform3D t3d = new Transform3D();
		t3d.set(new Vector3f(0.3f, -0.3f, -0.5f));
		tg.setTransform(t3d);
		tg.addChild(j10.getSceneGroup());
		// 位移机体
 
		group.addChild(tg);
		// 将机体塞入场景
 
		this.getViewingPlatform().setNominalViewingTransform();
		// 设置观察点
 
		this.addBranchGraph(group);
		// 把group加入到虚拟空间中
	}
 
	public static void main(String[] args)
	{
		new HelloUniverse();
	}
 
}

帮助理解Java3D对象关系的图:
java3d-programing-space

Java3D API官方网站:http://java.sun.com/javase/technologies/desktop/java3d/

4 Responses

Leave a Comment

(Necessary)

(Necessary, will not be published)

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.