📄 ex4_03.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 + -