Linux用のJDK 1.2, Java 3Dのインストール方法を説明します。
本書執筆時点では、Java 3DはIntel x86対応のpre-v1がリリースされています。
Linux用のJava 3Dの稼働環境は次の通りです。
Linux用のJava 3Dは、OpenGL互換のフリーの3DCG APIであるMesa上で稼働します。
Linux用のJDK, Java 3Dの最新バージョンについては下記を参照してください。
Linux用のJDK 1.2を入手します。
本書執筆時点では、JDK 1.2のバージョンはpre-release 1です。
著者は下記のミラーサーバーからダウンロードしました。
ftp://ftp.lab.kdd.co.jp/Linux/java-linux/JDK/JDK-1.2/i386/pre-v1/jdk1.2pre-v1.tar.bz2
著者がダウンロードしたのは、下記のファイル名とファイルサイズのものです。
jdk1.2pre-v1.tar.bz2 24,457,274バイト
JDK 1.2はglibc2で動作します。
glibc2に対応したLinuxディストリビューションとしては、Red Hat 5.2, Debian GNU/Linux 2.1などがあります。
著者はRed Hat 5.2をベースにした日本語対応のディストリビューションであるVine Linux 1.0 betaを使用しました。
Vine Linuxに関しては、下記のサイトをご参照ください。
JDK 1.2はbzip2で圧縮されています。復元にはbzip2が必要です。
著者が使用するVine Linux 1.0 betaにはbzip2が含まれていなかったので、bzip2をダウンロードしてインストールしました。
bzip2については下記サイトをご参照ください。
http://www.muraroa.demon.co.uk/
bzip2は下記からダウンロードしました。
ftp://ftp.kddlabs.co.jp/pub/Linux/packages/RedHat/contrib/libc6/SRPMS/bzip2-0.9.0c-1.src.rpm
著者がダウンロードしたものは、下記のファイル名、ファイルサイズのものです。
bzip2-0.9.0c-1.src.rpm 454,425バイト
bzip2のインストール作業はrootで行います。
rootとしてログインするか、suコマンドでrootユーザーに切替えて作業してください。
% su Password: # rpm -i bzip2-0.9.0c-1.src.rpm
JDK 1.2をホームディレクトリーにダウンロードしてあるものとします。
インストール作業はrootで行います。
rootとしてログインするか、suコマンドでrootユーザーに切替えて作業してください。
ここではJDK 1.2を/usr/local配下にインストールしています。
jdk1.2pre-v1.tar.bz2は/home/yasuyukiにダウンロードしています。
% su Password: # cd /usr/local # bzip2 -cd /home/yasuyuki/jdk1.2pre-v1.tar.bz2 | tar xf -
JDK 1.2を動作させるには、環境変数PATHにJDKのbinディレクトリーが含まれている必要があります。
bashでは次のように設定します。
% export PATH=/usr/local/jdk1.2/bin:$PATH
コマンドラインからjavaを実行してみましょう。
% java -version java version "1.2" Classic VM (build Linux_JDK_1.2_pre-release-v1, native threads, sunwjit)
今度は、SwingのサンプルであるSwingSetを実行してみます。
% cd /usr/local/jdk1.2/demo/jfc/SwingSet/ % appletviewer SwingSetApplet.html Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/local/jdk1.2/jre/lib/i386/libfontmanager.so: libstdc++-libc6.0-1.so.2: cannot open shared object file: No such file or directory at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(Compiled Code) at java.lang.ClassLoader.loadLibrary(Compiled Code) at java.lang.Runtime.loadLibrary0(Compiled Code) at java.lang.System.loadLibrary(Compiled Code) at sun.security.action.LoadLibraryAction.run(Compiled Code) at java.security.AccessController.doPrivileged(Native Method) at sun.awt.font.NativeFontWrapper.(NativeFontWrapper.java:41) at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method) at sun.awt.X11GraphicsEnvironment. (X11GraphicsEnvironment.java:61) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Compiled Code) at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(Compiled Code) at sun.awt.motif.MToolkit. (MToolkit.java:59) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Compiled Code) at java.awt.Toolkit$2.run(Compiled Code) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Toolkit.getDefaultToolkit(Compiled Code) at java.awt.Window.getToolkit(Compiled Code) at java.awt.Frame.addNotify(Compiled Code) at java.awt.Window.pack(Compiled Code) at sun.applet.AppletViewer. (Compiled Code) at sun.applet.StdAppletViewerFactory.createAppletViewer(Compiled Code) at sun.applet.AppletViewer.parse(Compiled Code) at sun.applet.AppletViewer.parse(Compiled Code) at sun.applet.AppletViewer.main(Compiled Code)
Linux用のJDKはDebian GNU/Linux 2.1で開発されているようです。
Vine Linux 1.0はRed Hat 5.2ベースであり、glibc2のShared Libraryのファイル名の違いから上記のようなエラーが発生するようです。
このエラーは、以下のようなシンボリック・リンクの作成で回避できるようです。
% su Password: # cd /usr/lib # ln -s libstdc++.so.2.8.0 libstdc++-libc6.0-1.so.2
もう一度実行してみます。
% cd /usr/local/jdk1.2/demo/jfc/SwingSet/ % appletviewer SwingSetApplet.html
メニューのフォントが文字化けしていますが、いちおう実行できています。
LinuxでJava 3Dを動かすためには、OpenGLの互換APIであるMesaが必要です。
著者はMesaを下記からダウンロードしました。
ftp://ftp.lab.kdd.co.jp/Linux/packages/RedHat/dist/redhat/powertools/5.2/i386/Mesa-3.0-2.i386.rpm
ftp://ftp.lab.kdd.co.jp/Linux/packages/RedHat/dist/redhat/powertools/5.2/i386/Mesa-glut-3.0-2.i386.rpm
ftp://ftp.lab.kdd.co.jp/Linux/packages/RedHat/dist/redhat/powertools/5.2/i386/Mesa-devel-3.0-2.i386.rpm
ftp://ftp.lab.kdd.co.jp/Linux/packages/RedHat/dist/redhat/powertools/5.2/i386/Mesa-glut-devel-3.0-2.i386.rpm
ftp://ftp.lab.kdd.co.jp/Linux/packages/RedHat/dist/redhat/powertools/5.2/i386/Mesa-demos-3.0-2.i386.rpm
著者がダウンロードしたのは以下のファイル名とファイルサイズのものです。
Mesa-3.0-2.i386.rpm | 443,581バイト | // Mesa 3.0.2 |
Mesa-glut-3.0-2.i386.rpm | 102,429バイト | // Mesa glut 3.0.2 |
Mesa-devel-3.0-2.i386.rpm | 559,672バイト | // Mesa開発用ヘッダーファイル |
Mesa-glut-devel-3.0-2.i386.rpm | 102,429バイト | // Mesa glut開発用ヘッダーファイル |
Mesa-demos-3.0-2.i386.rpm | 1,903,456バイト | // Mesaデモ |
Mesaをインストールします。
% su Password: # rpm -i Mesa-3.0-2.i386.rpm # rpm -i Mesa-glut-3.0-2.i386.rpm # rpm -i Mesa-devel-3.0-2.i386.rpm # rpm -i Mesa-glut-devel-3.0-2.i386.rpm # rpm -i Mesa-demos-3.0-2.i386.rpm
Mesaの動作テストをしてみましょう。
Mesaのデモを実行してみます。
% cd /usr/lib/Mesa-3.0/demos/ % ls Makefile gears morph3d.c reflect texcyl Makefile.cygnus gears.c multiext reflect.c texcyl.c bounce girl.rgb multiext.c reflect.rgb texobj bounce.c glinfo multitex renormal texobj.c clearspd glinfo.c multitex.c renormal.c trispd clearspd.c glutfx osdemo spectex trispd.c descrip.mms glutfx.c osdemo.c spectex.c winpos drawpix isosurf paltex stex3d winpos.c drawpix.c isosurf.c paltex.c stex3d.c gamma isosurf.dat pointblast tessdemo gamma.c morph3d pointblast.c tessdemo.c % ./morph3d Morph 3D - Shows morphing platonic polyhedra Author: Marcelo Fernandes Vianna (vianna@cat.cbpf.br) [1] - Tetrahedron [2] - Hexahedron (Cube) [3] - Octahedron [4] - Dodecahedron [5] - Icosahedron [SPACE] - Toggle colored faces [RETURN] - Toggle smooth/flat shading [ESC] - Quit
Linux用Java 3Dは、本書執筆時点ではpre-v1 (Intel x86)が公開されています。
著者は下記からダウンロードしました。
http://nitric.com/pub/java-linux/java3d/1.1.1/i386/
著者がダウンロードしたのは次のファイル名とファイルサイズのものです。
java3d1_1_1pre-v1-linux-sdk_tar.bz2 2,180,744バイト
著者は/home/yasuyuki/にダウンロードしました。
このファイルをJDKのインストールディレクトリーに展開します。
% su Password: # cd /usr/local # bzip2 -dc /home/yasuyuki/java3d1_1_1pre-v1-linux-sdk_tar.bz2 | tar xvf - jdk1.2/ jdk1.2/jre/ jdk1.2/jre/lib/ jdk1.2/jre/lib/i386/ jdk1.2/jre/lib/i386/libJ3D.so jdk1.2/jre/lib/i386/libj3daudio.so jdk1.2/jre/lib/ext/ jdk1.2/jre/lib/ext/vecmath.jar jdk1.2/jre/lib/ext/j3dcore.jar jdk1.2/jre/lib/ext/j3daudio.jar jdk1.2/jre/lib/ext/j3dutils.jar jdk1.2/demo/ jdk1.2/demo/java3d/ jdk1.2/demo/java3d/Appearance/ jdk1.2/demo/java3d/Appearance/AppearanceTest.java jdk1.2/demo/java3d/Appearance/AppearanceTest.class jdk1.2/demo/java3d/Appearance/Tetrahedron.java jdk1.2/demo/java3d/Appearance/Tetrahedron.class jdk1.2/demo/java3d/AppearanceMixed/ jdk1.2/demo/java3d/AppearanceMixed/AppearanceMixed.java jdk1.2/demo/java3d/AppearanceMixed/AppearanceMixed.class jdk1.2/demo/java3d/AppearanceMixed/AppearanceMixed$MyCanvas3D.class jdk1.2/demo/java3d/AppearanceMixed/Tetrahedron.java jdk1.2/demo/java3d/AppearanceMixed/Tetrahedron.class jdk1.2/demo/java3d/AWT_Interaction/ jdk1.2/demo/java3d/AWT_Interaction/AWTInteraction.java jdk1.2/demo/java3d/AWT_Interaction/AWTInteraction.class jdk1.2/demo/java3d/Billboard/ jdk1.2/demo/java3d/Billboard/Bboard.java jdk1.2/demo/java3d/Billboard/Bboard.class jdk1.2/demo/java3d/Billboard/MouseRotateY.java jdk1.2/demo/java3d/Billboard/MouseRotateY.class jdk1.2/demo/java3d/ConicWorld/ jdk1.2/demo/java3d/ConicWorld/ConicWorld.java jdk1.2/demo/java3d/ConicWorld/ConicWorld.class jdk1.2/demo/java3d/ConicWorld/FlipCylinder.java jdk1.2/demo/java3d/ConicWorld/FlipCylinder.class jdk1.2/demo/java3d/ConicWorld/README jdk1.2/demo/java3d/ConicWorld/SimpleCylinder.java jdk1.2/demo/java3d/ConicWorld/SimpleCylinder.class jdk1.2/demo/java3d/ConicWorld/TexturedCone.java jdk1.2/demo/java3d/ConicWorld/TexturedCone.class jdk1.2/demo/java3d/ConicWorld/TexturedSphere.java jdk1.2/demo/java3d/ConicWorld/TexturedSphere.class jdk1.2/demo/java3d/FourByFour/ jdk1.2/demo/java3d/FourByFour/BigCube.java jdk1.2/demo/java3d/FourByFour/BigCube.class jdk1.2/demo/java3d/FourByFour/Board.java jdk1.2/demo/java3d/FourByFour/Board.class jdk1.2/demo/java3d/FourByFour/Canvas2D.java jdk1.2/demo/java3d/FourByFour/Canvas2D.class jdk1.2/demo/java3d/FourByFour/Cube.java jdk1.2/demo/java3d/FourByFour/Cube.class jdk1.2/demo/java3d/FourByFour/Cylinder.java jdk1.2/demo/java3d/FourByFour/Cylinder.class jdk1.2/demo/java3d/FourByFour/FourByFour.java jdk1.2/demo/java3d/FourByFour/FourByFour.class jdk1.2/demo/java3d/FourByFour/FourByFour$killAdapter.class jdk1.2/demo/java3d/FourByFour/ID.java jdk1.2/demo/java3d/FourByFour/ID.class jdk1.2/demo/java3d/FourByFour/PickDragBehavior.java jdk1.2/demo/java3d/FourByFour/PickDragBehavior.class jdk1.2/demo/java3d/FourByFour/Poles.java jdk1.2/demo/java3d/FourByFour/Poles.class jdk1.2/demo/java3d/FourByFour/Positions.java jdk1.2/demo/java3d/FourByFour/Positions.class jdk1.2/demo/java3d/FourByFour/README jdk1.2/demo/java3d/FourByFour/fbf.html jdk1.2/demo/java3d/FourByFour/instructions.txt jdk1.2/demo/java3d/FourByFour/scores.txt jdk1.2/demo/java3d/GearTest/ jdk1.2/demo/java3d/GearTest/Gear.java jdk1.2/demo/java3d/GearTest/Gear.class jdk1.2/demo/java3d/GearTest/GearBox.java jdk1.2/demo/java3d/GearTest/GearBox.class jdk1.2/demo/java3d/GearTest/GearTest.java jdk1.2/demo/java3d/GearTest/GearTest.class jdk1.2/demo/java3d/GearTest/Shaft.java jdk1.2/demo/java3d/GearTest/Shaft.class jdk1.2/demo/java3d/GearTest/SpurGear.java jdk1.2/demo/java3d/GearTest/SpurGear.class jdk1.2/demo/java3d/GearTest/SpurGearThinBody.java jdk1.2/demo/java3d/GearTest/SpurGearThinBody.class jdk1.2/demo/java3d/HelloUniverse/ jdk1.2/demo/java3d/HelloUniverse/HelloUniverse.html jdk1.2/demo/java3d/HelloUniverse/HelloUniverse.java jdk1.2/demo/java3d/HelloUniverse/HelloUniverse.class jdk1.2/demo/java3d/Lightwave/ jdk1.2/demo/java3d/Lightwave/README.txt jdk1.2/demo/java3d/Lightwave/Viewer.java jdk1.2/demo/java3d/Lightwave/Viewer.class jdk1.2/demo/java3d/Lightwave/ballcone.lws jdk1.2/demo/java3d/Lightwave/greenball.lwo jdk1.2/demo/java3d/Lightwave/redcone.lwo jdk1.2/demo/java3d/LOD/ jdk1.2/demo/java3d/LOD/LOD.class jdk1.2/demo/java3d/LOD/LOD.java jdk1.2/demo/java3d/Morphing/ jdk1.2/demo/java3d/Morphing/ColorCube.java jdk1.2/demo/java3d/Morphing/ColorCube.class jdk1.2/demo/java3d/Morphing/ColorPyramidDown.java jdk1.2/demo/java3d/Morphing/ColorPyramidDown.class jdk1.2/demo/java3d/Morphing/ColorPyramidUp.java jdk1.2/demo/java3d/Morphing/ColorPyramidUp.class jdk1.2/demo/java3d/Morphing/Morphing.java jdk1.2/demo/java3d/Morphing/Morphing.class jdk1.2/demo/java3d/Morphing/MorphingBehavior.java jdk1.2/demo/java3d/Morphing/MorphingBehavior.class jdk1.2/demo/java3d/Morphing/Pyramid2Cube.java jdk1.2/demo/java3d/Morphing/Pyramid2Cube.class jdk1.2/demo/java3d/Morphing/hand1.obj jdk1.2/demo/java3d/Morphing/hand2.obj jdk1.2/demo/java3d/Morphing/hand3.obj jdk1.2/demo/java3d/ObjLoad/ jdk1.2/demo/java3d/ObjLoad/ObjLoad.java jdk1.2/demo/java3d/ObjLoad/ObjLoad.class jdk1.2/demo/java3d/PackageInfo/ jdk1.2/demo/java3d/PackageInfo/PackageInfo.java jdk1.2/demo/java3d/PackageInfo/PackageInfo.class jdk1.2/demo/java3d/PickTest/ jdk1.2/demo/java3d/PickTest/ColorCube.java jdk1.2/demo/java3d/PickTest/ColorCube.class jdk1.2/demo/java3d/PickTest/ColorPyramidDown.java jdk1.2/demo/java3d/PickTest/ColorPyramidDown.class jdk1.2/demo/java3d/PickTest/ColorPyramidUp.java jdk1.2/demo/java3d/PickTest/ColorPyramidUp.class jdk1.2/demo/java3d/PickTest/CubeIQA.java jdk1.2/demo/java3d/PickTest/CubeIQA.class jdk1.2/demo/java3d/PickTest/GullCG.java jdk1.2/demo/java3d/PickTest/GullCG.class jdk1.2/demo/java3d/PickTest/BoltCG.java jdk1.2/demo/java3d/PickTest/BoltCG.class jdk1.2/demo/java3d/PickTest/CubeQA.java jdk1.2/demo/java3d/PickTest/CubeQA.class jdk1.2/demo/java3d/PickTest/IcosahedronITSA.java jdk1.2/demo/java3d/PickTest/IcosahedronITSA.class jdk1.2/demo/java3d/PickTest/IcosahedronTSA.java jdk1.2/demo/java3d/PickTest/IcosahedronTSA.class jdk1.2/demo/java3d/PickTest/OctahedronITFA.java jdk1.2/demo/java3d/PickTest/OctahedronITFA.class jdk1.2/demo/java3d/PickTest/OctahedronTFA.java jdk1.2/demo/java3d/PickTest/OctahedronTFA.class jdk1.2/demo/java3d/PickTest/TetrahedronITA.java jdk1.2/demo/java3d/PickTest/TetrahedronITA.class jdk1.2/demo/java3d/PickTest/TetrahedronTA.java jdk1.2/demo/java3d/PickTest/TetrahedronTA.class jdk1.2/demo/java3d/PickTest/MorphingBehavior.java jdk1.2/demo/java3d/PickTest/MorphingBehavior.class jdk1.2/demo/java3d/PickTest/PickTestBounds.html jdk1.2/demo/java3d/PickTest/PickTestBounds.java jdk1.2/demo/java3d/PickTest/PickTestBounds.class jdk1.2/demo/java3d/PickTest/PickTestGeometry.html jdk1.2/demo/java3d/PickTest/PickTestGeometry.java jdk1.2/demo/java3d/PickTest/PickTestGeometry.class jdk1.2/demo/java3d/PickText3D/ jdk1.2/demo/java3d/PickText3D/PickText3DBounds.java jdk1.2/demo/java3d/PickText3D/PickText3DBounds.class jdk1.2/demo/java3d/PickText3D/PickText3DGeometry.java jdk1.2/demo/java3d/PickText3D/PickText3DGeometry.class jdk1.2/demo/java3d/PlatformGeometry/ jdk1.2/demo/java3d/PlatformGeometry/SimpleGeometry.java jdk1.2/demo/java3d/PlatformGeometry/SimpleGeometry.class jdk1.2/demo/java3d/PureImmediate/ jdk1.2/demo/java3d/PureImmediate/PureImmediate.html jdk1.2/demo/java3d/PureImmediate/PureImmediate.java jdk1.2/demo/java3d/PureImmediate/PureImmediate.class jdk1.2/demo/java3d/ReadRaster/ jdk1.2/demo/java3d/ReadRaster/ReadRaster.java jdk1.2/demo/java3d/ReadRaster/ReadRaster.class jdk1.2/demo/java3d/ReadRaster/myCanvas3D.class jdk1.2/demo/java3d/ReadRaster/myRotationInterpolator.class jdk1.2/demo/java3d/Sound/ jdk1.2/demo/java3d/Sound/SimplerSound.java jdk1.2/demo/java3d/Sound/SimplerSound.class jdk1.2/demo/java3d/Sound/SimpleSounds.java jdk1.2/demo/java3d/Sound/SimpleSounds.class jdk1.2/demo/java3d/Sound/MoveAppBoundingLeaf.java jdk1.2/demo/java3d/Sound/MoveAppBoundingLeaf.class jdk1.2/demo/java3d/Sound/ReverberateSound.java jdk1.2/demo/java3d/Sound/ReverberateSound.class jdk1.2/demo/java3d/Sound/SimpleSoundsBehavior.java jdk1.2/demo/java3d/Sound/SimpleSoundsBehavior.class jdk1.2/demo/java3d/Sound/AudioBehaviorMoveOne.java jdk1.2/demo/java3d/Sound/AudioBehaviorMoveOne.class jdk1.2/demo/java3d/Sound/AudioReverberate.java jdk1.2/demo/java3d/Sound/AudioReverberate.class jdk1.2/demo/java3d/Sound/hello_universe.au jdk1.2/demo/java3d/Sound/README.release jdk1.2/demo/java3d/Sound/roar.au jdk1.2/demo/java3d/Sound/techno_machine.au jdk1.2/demo/java3d/SphereMotion/ jdk1.2/demo/java3d/SphereMotion/SphereMotion.html jdk1.2/demo/java3d/SphereMotion/SphereMotion.java jdk1.2/demo/java3d/SphereMotion/SphereMotion.class jdk1.2/demo/java3d/SplineAnim/ jdk1.2/demo/java3d/SplineAnim/SplineAnim.java jdk1.2/demo/java3d/SplineAnim/SplineAnim.class jdk1.2/demo/java3d/Text2D/ jdk1.2/demo/java3d/Text2D/MoverBehavior.java jdk1.2/demo/java3d/Text2D/MoverBehavior.class jdk1.2/demo/java3d/Text2D/Text2DTest.java jdk1.2/demo/java3d/Text2D/Text2DTest.class jdk1.2/demo/java3d/Text3D/ jdk1.2/demo/java3d/Text3D/Text3DLoad.java jdk1.2/demo/java3d/Text3D/Text3DLoad.class jdk1.2/demo/java3d/TextureTest/ jdk1.2/demo/java3d/TextureTest/TextureImage.java jdk1.2/demo/java3d/TextureTest/TextureImage.class jdk1.2/demo/java3d/TickTockCollision/ jdk1.2/demo/java3d/TickTockCollision/Box.java jdk1.2/demo/java3d/TickTockCollision/Box.class jdk1.2/demo/java3d/TickTockCollision/CollisionDetector.java jdk1.2/demo/java3d/TickTockCollision/CollisionDetector.class jdk1.2/demo/java3d/TickTockCollision/TickTockCollision.html jdk1.2/demo/java3d/TickTockCollision/TickTockCollision.java jdk1.2/demo/java3d/TickTockCollision/TickTockCollision.class jdk1.2/demo/java3d/TickTockPicking/ jdk1.2/demo/java3d/TickTockPicking/Cube.java jdk1.2/demo/java3d/TickTockPicking/Cube.class jdk1.2/demo/java3d/TickTockPicking/PickHighlightBehavior.java jdk1.2/demo/java3d/TickTockPicking/PickHighlightBehavior.class jdk1.2/demo/java3d/TickTockPicking/Tetrahedron.java jdk1.2/demo/java3d/TickTockPicking/Tetrahedron.class jdk1.2/demo/java3d/TickTockPicking/TickTockPicking.java jdk1.2/demo/java3d/TickTockPicking/TickTockPicking.class jdk1.2/demo/java3d/VirtualInputDevice/ jdk1.2/demo/java3d/VirtualInputDevice/ButtonPositionControls.class jdk1.2/demo/java3d/VirtualInputDevice/ButtonPositionControls.java jdk1.2/demo/java3d/VirtualInputDevice/HelloUniverse.class jdk1.2/demo/java3d/VirtualInputDevice/HelloUniverse.java jdk1.2/demo/java3d/VirtualInputDevice/PositionControls.class jdk1.2/demo/java3d/VirtualInputDevice/PositionControls.java jdk1.2/demo/java3d/VirtualInputDevice/RotationControls.class jdk1.2/demo/java3d/VirtualInputDevice/RotationControls.java jdk1.2/demo/java3d/VirtualInputDevice/SensorBehavior.class jdk1.2/demo/java3d/VirtualInputDevice/SensorBehavior.java jdk1.2/demo/java3d/VirtualInputDevice/VirtualInputDevice.class jdk1.2/demo/java3d/VirtualInputDevice/VirtualInputDevice.java jdk1.2/demo/java3d/VirtualInputDevice/WheelControls.class jdk1.2/demo/java3d/VirtualInputDevice/WheelControls.java jdk1.2/demo/java3d/geometry/ jdk1.2/demo/java3d/geometry/p51_mustang.obj jdk1.2/demo/java3d/geometry/galleon.obj jdk1.2/demo/java3d/images/ jdk1.2/demo/java3d/images/apimage.jpg jdk1.2/demo/java3d/images/bg.jpg jdk1.2/demo/java3d/images/earth.jpg jdk1.2/demo/java3d/images/stone.jpg jdk1.2/demo/java3d/images/ttimage.jpg jdk1.2/java3d-utils-src.jar jdk1.2/README.Java3D-jdk jdk1.2/README.Java3D.linux jdk1.2/LICENSE.Java3D
Java 3Dのデモを実行してみます。
% cd /usr/local/jdk1.2/demo/java3d/HelloUniverse/ % java HelloUniverse
Win32のときよりも回転がスムーズな印象を受けました。
Linux用のJava 3Dの完成度はかなり高いと思います。