用java3d画桌子
来源:互联网 发布:js ajax get 编辑:程序博客网 时间:2024/04/28 12:23
最近学习了java3d,并写了作业画一个桌子:
下面为源代码:
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import java.io.*;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
import com.sun.j3d.utils.behaviors.mouse.MouseTranslate;
import com.sun.j3d.utils.behaviors.mouse.MouseZoom;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.image.*;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
public class Desk extends Applet
{
public BranchGroup createDesk()
{
BranchGroup rootGroup=new BranchGroup();
BoundingSphere bounds=new BoundingSphere(new Point3d(0.0,0.0,0.0),100.0);
Color3f bgColor=new Color3f(1.0f,1.0f,1.0f);
Background bg=new Background(bgColor);
bg.setApplicationBounds(bounds);
rootGroup.addChild(bg);
Color3f lightColor=new Color3f(1.0f,1.0f,1.0f);
Vector3f vec=new Vector3f(0.0f,0.0f,-1.0f);
DirectionalLight light=new DirectionalLight(lightColor,vec);
light.setInfluencingBounds(bounds);
rootGroup.addChild(light);
PointLight pointLight=new PointLight();
pointLight.setColor(lightColor);
pointLight.setInfluencingBounds(bounds);
pointLight.setPosition(new Point3f(0.5f,0.1f,-0.6f));
Transform3D tran=new Transform3D();
tran.setRotation(new Quat4f(0.4f,1.0f,0.0f,1.57f));
tran.setScale(0.7f);
tran.setTranslation(new Vector3d(0.0f,0.6f,0.0f));
TransformGroup transRoot=new TransformGroup(tran);
transRoot.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
transRoot.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
tran=new Transform3D();
tran.setTranslation(new Vector3d(0.0f,-0.3f,0.0f));
TransformGroup trans1=new TransformGroup(tran);
Appearance app=new Appearance();
Material mat=new Material();
mat.setDiffuseColor(1.0f,1.0f,0.0f);
String fileName="1.jpg";
String strPath=System.getProperty("user.dir") + java.io.File.separator+ fileName; ;
TextureLoader texLoader1 = new TextureLoader( strPath, this);
app.setTexture(texLoader1.getTexture());
app.setMaterial(mat);
Box box=new Box(0.8f,0.05f,0.7f,Box.GENERATE_NORMALS|Box.GENERATE_TEXTURE_COORDS,app);
trans1.addChild(box);
transRoot.addChild(trans1);
transRoot.addChild(pointLight);
tran=new Transform3D();
tran.setTranslation(new Vector3d(0.3f,-1.0f,-0.3f));
TransformGroup trans2=new TransformGroup(tran);
box=new Box(0.1f,0.7f,0.1f,Box.GENERATE_NORMALS|Box.GENERATE_TEXTURE_COORDS,app);
trans2.addChild(box);
transRoot.addChild(trans2);
tran=new Transform3D();
tran.setTranslation(new Vector3d(-0.3f,-1.0f,0.3f));
TransformGroup trans3=new TransformGroup(tran);
box=new Box(0.1f,0.7f,0.1f,Box.GENERATE_NORMALS|Box.GENERATE_TEXTURE_COORDS,app);
trans3.addChild(box);
transRoot.addChild(trans3);
tran=new Transform3D();
tran.setTranslation(new Vector3d(0.3f,-1.0f,0.3f));
TransformGroup trans4=new TransformGroup(tran);
box=new Box(0.1f,0.7f,0.1f,Box.GENERATE_NORMALS|Box.GENERATE_TEXTURE_COORDS,app);
trans4.addChild(box);
transRoot.addChild(trans4);
tran=new Transform3D();
tran.setTranslation(new Vector3d(-0.3f,-1.0f,-0.3f));
TransformGroup trans5=new TransformGroup(tran);
box=new Box(0.1f,0.7f,0.1f,Box.GENERATE_NORMALS|Box.GENERATE_TEXTURE_COORDS,app);
trans5.addChild(box);
transRoot.addChild(trans5);
rootGroup.addChild(transRoot);
MouseRotate behavior = new MouseRotate();
behavior.setTransformGroup(transRoot);
behavior.setSchedulingBounds(bounds);
rootGroup.addChild(behavior);
MouseZoom behavior2 = new MouseZoom();
behavior2.setTransformGroup(transRoot);
behavior2.setSchedulingBounds(bounds);
rootGroup.addChild(behavior2);
MouseTranslate behavior3 = new MouseTranslate();
behavior3.setTransformGroup(transRoot);
behavior3.setSchedulingBounds(bounds);
rootGroup.addChild(behavior3);
rootGroup.compile();
return rootGroup;
}
public Desk()
{
setLayout(new BorderLayout());
GraphicsConfiguration gc =
SimpleUniverse.getPreferredConfiguration();
Canvas3D c = new Canvas3D(gc);
add("Center", c);
BranchGroup scene = createDesk();
SimpleUniverse u = new SimpleUniverse(c);
u.getViewingPlatform().setNominalViewingTransform();
u.addBranchGraph(scene);
}
public static void main(String[] strs)
{
new MainFrame(new Desk(),600,600);
}
}
- 用java3d画桌子
- 用 Java3D 写游戏
- Java3D
- JAVA3D
- Java3D
- Java3D
- JAVA3D
- java3d异常
- java3D场景
- java3D 简介
- 关于Java3D
- Java3D简介
- JAVA3D学习
- java3d程序
- 学习JAVA3D
- java3d简介
- java3D图形
- Java3D Lecture
- WBS浅析
- asp.net中的下拉框
- u-boot.lds分析(u-boot-1.3.4 nandflash启动 引导linux内核)
- ExInitializeFastMutex
- 结合JQuery Flot组件的工业动态数据Web监控
- 用java3d画桌子
- 人类无法抗拒的10种心理
- Activity与Thread之间的通讯
- 事件的同步调用
- 16周
- 改变自己的坏习惯
- Websphere Commerce Suite 架构开发一个模块的流程
- 揭开Outlook Express编辑器的奥秘
- 采用以下方法可以让console显示英文,同时保持xwindow为中文(也可以设置xwindow用英文)