Next: 6.8 Background
Up: 6 Java3Dのプログラミング
Previous: 6.6.2 影響範囲(Bounds)
/java/jdk1.4/demo/java3d/LightWave> ls -1
README.txt
Viewer.class
Viewer.java
ballcone.lws
greenball.lwo
redcone.lwo
走らせ方:
% javac Viewer.java
% java Viewer ballcone.lws
Viewer.javaは次のようになっている.
/**
<applet align=middle
code="Viewer.class" width=256 height=256>
</applet>
*/
import java.applet.Applet;
import java.awt.*;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.media.j3d.View;
import javax.vecmath.Matrix4d;
import com.sun.j3d.loaders.lw3d.Lw3dLoader;
import com.sun.j3d.loaders.Loader;
import com.sun.j3d.loaders.Scene;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.SimpleUniverse;
public class Viewer extends Applet {
public Viewer(String filename) {
Loader lw3dLoader =
new Lw3dLoader(Loader.LOAD_ALL);
Scene loaderScene = null;
try {
loaderScene = lw3dLoader.load(filename);
}
catch (Exception e) {
System.err.println(
"Exception loading file: " + e);
System.exit(1);
}
setLayout(new BorderLayout());
GraphicsConfiguration config =
SimpleUniverse.getPreferredConfiguration();
Canvas3D c = new Canvas3D(config);
add("Center", c);
SimpleUniverse u = new SimpleUniverse(c);
BranchGroup sceneRoot = new BranchGroup();
View theView = u.getViewer().getView();
theView.setBackClipDistance(50000f);
if (loaderScene.getSceneGroup() != null) {
TransformGroup viewGroups[] =
loaderScene.getViewGroups();
Transform3D t = new Transform3D();
viewGroups[0].getTransform(t);
Matrix4d m = new Matrix4d();
t.get(m);
m.invert();
t.set(m);
TransformGroup sceneTransform =
new TransformGroup(t);
sceneTransform.addChild(
loaderScene.getSceneGroup());
sceneRoot.addChild(sceneTransform);
}
u.addBranchGraph(sceneRoot);
}
public static void main(String args[]) {
if (args.length < 1) {
System.err.println(
"Usage:\n java Viewer <filename>\n" +
"where <filename> is a Lightwave 3D " +
"scene file");
System.exit(1);
}
new MainFrame(new Viewer(args[0]), 500, 500);
}
}
generated through LaTeX2HTML. M.Inaba 平成18年5月7日