/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.lwsViewer.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); } }