下载simbad,然后需要安装jdk和java3d环境。
安装java3d时,需要安装以下exe并且把bin和lib拷到jdk的jre路径里。具体过程网上有,很简单。
然后跑一遍
importjava.applet.Applet;
importjava.awt.BorderLayout;
importcom.sun.j3d.utils.applet.MainFrame;
importcom.sun.j3d.utils.geometry.*;
importcom.sun.j3d.utils.universe.*;
importjavax.media.j3d.*;
importjavax.vecmath.*;
importcom.sun.j3d.utils.behaviors.mouse.MouseRotate;
importcom.sun.j3d.utils.behaviors.mouse.MouseZoom;
importcom.sun.j3d.utils.behaviors.mouse.MouseTranslate;
public classUglyCube extends Applet
{
privateSimpleUniverse universe ;
public UglyCube()
{}
public void init()
{
//canvas to draw on, ask SimpleUniversewhat config to use
Canvas3D canvas = newCanvas3D(SimpleUniverse.getPreferredConfiguration());
setLayout(new BorderLayout());
add("Center", canvas);
//create top of our scene graph
BranchGroup scene = newBranchGroup();
//create universe, and attach our geometryto it.
SimpleUniverse u = newSimpleUniverse(canvas);
u.getViewingPlatform().setNominalViewingTransform();
// Create the bounding leaf node
BoundingSphere bounds = newBoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
// Create the transform node
TransformGroup transformGroup = newTransformGroup();
transformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
transformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
// Create the drag behavior node
MouseRotate behavior = new MouseRotate();
behavior.setTransformGroup(transformGroup);
transformGroup.addChild(behavior);
behavior.setSchedulingBounds(bounds);
// Create the zoom behavior node
MouseZoom behavior2 = new MouseZoom();
behavior2.setTransformGroup(transformGroup);
transformGroup.addChild(behavior2);
behavior2.setSchedulingBounds(bounds);
// Create the zoom behavior node
MouseTranslate behavior3 = newMouseTranslate();
behavior3.setTransformGroup(transformGroup);
transformGroup.addChild(behavior3);
behavior3.setSchedulingBounds(bounds);
transformGroup.addChild(newColorCube(0.4));
scene.addChild(transformGroup);
u.addBranchGraph(scene);
}
// The followingallows UglyCube to be run as an application
// as well as anapplet
public static voidmain(String[] args)
{
new MainFrame(new UglyCube(), 256,256);
}
}
发现报错,没有javax.media.j3d包。需要在oracle官网上下载下载java媒体框架并安装
再跑,又报错。Can't load IA 32-bit .dll on a AMD 64-bit platform。一开始百度查的都说是tomcat的问题,我也没用到tomcat,仔细看了半天发现是一个dll的问题。需要用64位而不是32位的j3dcore-ogl.dll
下载好之后,把这个dll放到之前jdk的jre路径的bin里替换。然后终于能跑通上面的uglycube了
注意,编译是javacuglycube.java,运行是java uglycube,不要加.class
跑通证明java3d已经安装好,这时候用命令行打开simbad:java-jar simbad-1.4.jar就可以打开了,里面有很多自带样例
官方说明见http://simbad.sourceforge.net/guide.php#controller
关于创建机器人,官方给了代码,要创建三个.java文件,在编译的时候用javac -classpath simbad-1.4.jar *.java
在运行的时候用java-classpath simbad-1.4.jar;. MyProg