⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex4_03.java

📁 这个就是目前我收集,以及自己写的一些java3d的原码,大部分都可以运行,适合和我一样,刚刚开始对java3D心动的菜鸟
💻 JAVA
字号:
package com.java3d.test;

import java.applet.Applet;
import java.awt.BorderLayout;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.Cone;
import com.sun.j3d.utils.geometry.Sphere;
import com.sun.j3d.utils.geometry.Primitive;
import com.sun.j3d.utils.universe.*;

import javax.media.j3d.*;
import javax.vecmath.*;

public class Ex4_03 extends Applet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public BranchGroup createSceneGraph() {

		BranchGroup objRoot = new BranchGroup();
		Transform3D t3d = new Transform3D();
		t3d.setScale(0.3);
		TransformGroup objScale = new TransformGroup();
		objScale.setTransform(t3d);

		Transform3D temp = new Transform3D();
		TransformGroup obj = new TransformGroup();
		obj.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
		obj.setTransform(temp);

		objScale.addChild(obj);

		Alpha rotationAlpha = new Alpha(-1, Alpha.INCREASING_ENABLE, 0, 0, 4000, 0, 0, 0, 0, 0);
		RotationInterpolator rotator = new RotationInterpolator(rotationAlpha, obj, temp, 0.0f, (float) Math.PI * 2.0f);
		BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);
		rotator.setSchedulingBounds(bounds);
		obj.addChild(rotator);

		objRoot.addChild(objScale);

		Color3f light1Color = new Color3f(1.0f, 1.0f, 0.9f);
		Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f);

		DirectionalLight light1 = new DirectionalLight(light1Color,
				light1Direction);
		light1.setInfluencingBounds(bounds);

		objRoot.addChild(light1);

		Appearance app_red = new Appearance();
		Material material1 = new Material();
		material1.setDiffuseColor(new Color3f(1.0f, 0.0f, 0.0f));
		app_red.setMaterial(material1);

		Appearance app_yellow = new Appearance();
		Material material2 = new Material();
		material2.setDiffuseColor(new Color3f(1.0f, 1.0f, 0.0f));
		app_yellow.setMaterial(material2);

		Appearance app_blue = new Appearance();
		Material material3 = new Material();
		material3.setDiffuseColor(new Color3f(0.0f, 0.0f, 1.0f));
		app_blue.setMaterial(material3);

		Appearance app_cyan = new Appearance();
		Material material4 = new Material();
		material4.setDiffuseColor(new Color3f(0.0f, 1.0f, 1.0f));
		app_cyan.setMaterial(material4);

		Appearance app_white = new Appearance();
		Material material5 = new Material();
		material5.setDiffuseColor(new Color3f(1.0f, 1.0f, 1.0f));
		app_white.setMaterial(material5);

		Cone c = new Cone(1.0f, 2.0f, 1, app_red);
		Primitive s_1 = (Primitive) new Sphere(1.0f, app_yellow);
		Primitive s_2 = (Primitive) new Sphere(.2f, app_blue);
		Primitive s_2b = (Primitive) new Sphere(.2f, app_blue);
		Primitive s_3 = (Primitive) new Sphere(1.0f, app_cyan);
		Primitive s_3b = (Primitive) new Sphere(1.0f, app_cyan);
		Primitive s_4 = (Primitive) new Sphere(1.0f, app_red);
		Primitive s_5 = (Primitive) new Sphere(1.0f, app_white);

		Transform3D t1 = new Transform3D();
		t1.setScale(new Vector3d(1, 1.2, 1));
		TransformGroup objTrans1 = new TransformGroup(t1);
		objTrans1.addChild(s_1);

		Transform3D t2 = new Transform3D();
		t2.setScale(new Vector3d(1, 1, 2));
		t2.setTranslation(new Vector3f(0.5f, 0.4f, 0.6f));
		TransformGroup objTrans2 = new TransformGroup(t2);
		objTrans2.addChild(s_2);

		Transform3D t3 = new Transform3D();
		t3.setScale(new Vector3d(1, 1, 2));
		t3.setTranslation(new Vector3f(-0.5f, 0.4f, 0.6f));
		TransformGroup objTrans3 = new TransformGroup(t3);
		objTrans3.addChild(s_2b);

		Transform3D t4 = new Transform3D();
		t4.setScale(new Vector3d(1.1, 0.4, 1.1));
		t4.setTranslation(new Vector3f(0.0f, 1.0f, 0.0f));
		TransformGroup objTrans4 = new TransformGroup(t4);
		objTrans4.addChild(c);

		Transform3D t5 = new Transform3D();
		t5.setScale(new Vector3d(0.2, 0.4, 0.2));
		t5.setTranslation(new Vector3f(1.0f, 0.0f, 0.0f));
		TransformGroup objTrans5 = new TransformGroup(t5);
		objTrans5.addChild(s_3);

		Transform3D t6 = new Transform3D();
		t6.setScale(new Vector3d(0.2, 0.4, 0.2));
		t6.setTranslation(new Vector3f(-1.0f, 0.0f, 0.0f));
		TransformGroup objTrans6 = new TransformGroup(t6);
		objTrans6.addChild(s_3b);

		Transform3D t7 = new Transform3D();
		t7.setScale(new Vector3d(0.2, 0.4, 0.2));
		t7.setTranslation(new Vector3f(0.0f, 0.0f, 1.0f));
		TransformGroup objTrans7 = new TransformGroup(t7);
		objTrans7.addChild(s_4);

		Transform3D t8 = new Transform3D();
		t8.setScale(new Vector3d(0.4, 0.1, 0.3));
		t8.setTranslation(new Vector3f(0.0f, -0.5f, 0.9f));
		TransformGroup objTrans8 = new TransformGroup(t8);
		objTrans8.addChild(s_5);

		Color3f bgColor = new Color3f(1.0f, 1.0f, 1.0f);
		Background bg = new Background(bgColor);
		bg.setApplicationBounds(bounds);

		objRoot.addChild(bg);

		obj.addChild(objTrans1);
		obj.addChild(objTrans2);
		obj.addChild(objTrans3);
		obj.addChild(objTrans4);
		obj.addChild(objTrans5);
		obj.addChild(objTrans6);
		obj.addChild(objTrans7);
		obj.addChild(objTrans8);

		objRoot.compile();
		return objRoot;
	}

	public Ex4_03() {
		setLayout(new BorderLayout());
		Canvas3D c = new Canvas3D(SimpleUniverse
				.getPreferredConfiguration());
		add("Center", c);
		BranchGroup scene = createSceneGraph();
		SimpleUniverse u = new SimpleUniverse(c);
		u.getViewingPlatform().setNominalViewingTransform();
		u.addBranchGraph(scene);
	}

	public static void main(String[] args) {
		new MainFrame(new Ex4_03(), 640, 480);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -