Hi,
I am also new to Xith3D. I would like to put my 3D environment into a java applet or java application using Xith3D. The examples convinced me that programing in Xith3D should be interesting and the results would be great.
First, I copied all native libraries and then all java libraries into the folder "Prop.java" indicated me, as described here:
http://www.xith.org/pages/installing_xith3d.html Discovering the correct paths.
From the XIN document, I took the EmptyScene example as it is at page 9 at bottom. Soon, I realized the com/org problem, after I read this useful thread. Consequently, I downloaded the newest xith3D/trunk and xith-tk/trunk from svn and compiled the xith3d/src and the xith-tk/toolkit/src using Eclipse 3.2. on Windows XP SP2.
Within the IDE, I exported the first source as a new xith3d.jar and the second source as a new xith-tk.jar library. I used the "add external jar(s)" function in Eclipse to add these libraries to my build (=class)path.
In each example code, I had to add the relevant import statements. I even had success with HelloXith3D.java, after some work-around:
import javax.vecmath.*;
// Xith3D
import org.xith3d.scenegraph.*;
import org.xith3d.test.*;
// use Jogl
import org.xith3d.geometry.Cube;
import org.xith3d.render.*;
import org.xith3d.render.jsr231.*;
import org.xith3d.render.lwjgl.RenderPeerImpl;
/**
* Simple Hello-World-application, displaying a single cube.
*
* @author Jens Lehmann
*/
public class HelloXith3D
{
/**
* Starts the application.
*
* @param args command line parameters
*/
public static void main(String[] args)
{
new HelloXith3D();
}
/**
* Draws a cube.
*/
public HelloXith3D()
{
// create the virtual univers
VirtualUniverse universe = new VirtualUniverse();
// add a view to the universe
View view = new View();
universe.addView(view);
// add a locale
Locale locale = new Locale(5.0f, 0.0f, 10.0f);
universe.addLocale(locale);
// create a BranchGroup
BranchGroup scene = new BranchGroup();
locale.addBranchGraph(scene);
// let objects along this path rotate
Transform3D rotate = new Transform3D();
rotate.rotXYZ((float)Math.PI/4,
(float)Math.PI/5,
(float)Math.PI/2);
TransformGroup objRotate = new TransformGroup(rotate);
scene.addChild(objRotate);
// create Cube
Geometry geo = new Cube(0, 0, 0, 1, true).getGeometry();
Shape3D sh = new Shape3D(geo, new Appearance());
objRotate.addChild(sh);
// turn the scene into a render friendly format
// scene.compile();
// create a canvas for our graphics
RenderPeer rp = new RenderPeerImpl();
CanvasPeer cp = rp.makeCanvas(null, 640, 480, 32, false);
Canvas3D canvas = new Canvas3D();
canvas.set3DPeer(cp);
// modify our view so we can see the cube
view.addCanvas3D(canvas);
view.getTransform().lookAt(
new Vector3f(0, 0, 2f), // location of eye
new Vector3f( 0, 0, 0), // center of view
new Vector3f( 0, 1, 0)); // vector pointing up
// view.startView();
}
}
problem1 here: it shows the black window, but only for half a second (-DXITH3D_USE_VERTEX_BUFFER_CACHING=FALSE doesn't help).
Then, I tried EmptyScene.java:
import org.xith3d.render.base.*;
import org.xith3d.render.canvas.*;
import org.xith3d.render.canvas.Canvas3DWrapper.*;
import org.xith3d.render.loop.*;
public class EmptyScene extends RenderLoop {
public EmptyScene()
{
super ( 128L );
Xith3DEnvironment env = new Xith3DEnvironment( this );
env.addCanvas( Canvas3DWrapper.createStandalone(
Resolution.RES_800X600,
"My empty scene" ));
this.begin();
}
public static void main(String[] args) {
new EmptyScene();
}
}
problem2:
When I use jdk1.5.0_10:
2.1: Nvidia Example (Jogl)
http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/ProceduralTexturePhysics.jnlpdoes not work,
2.2: JavaApplet (Jogl)
https://jogl-demos.dev.java.net/applettest.html does not work,
2.3: Water Simulation
http://users.xith.org/JavaCoolDude/JWS/Xith3D/Water/WaterSimulation.jnlpdoes not work:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javaws.Launcher.executeApplication(Unknown Source)
at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.sun.javaws.Launcher.continueLaunch(Unknown Source)
at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source)
at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoSuchMethodError: com.xith3d.datatypes.MatrixExt4f.setTranslation(Ljavax/vecmath/Vector3f;)V
at com.xith3d.scenegraph.Transform3D.setTranslation(Transform3D.java:386)
at WaterSimulation.scene(WaterSimulation.java:126)
at WaterSimulation.<init>(WaterSimulation.java:76)
at WaterSimulation.main(WaterSimulation.java:46)
... 11 more
2.4: EmptyScene.java (from above) does not work, although Eclipse shows no errors within the file (successfully compiled, but runtime error):
Exception in thread "main" javax.media.opengl.GLException: java.lang.reflect.InvocationTargetException
at javax.media.opengl.GLCanvas.disableBackgroundErase(GLCanvas.java:352)
at javax.media.opengl.GLCanvas.addNotify(GLCanvas.java:154)
at java.awt.Container.addNotify(Unknown Source)
at java.awt.Window.addNotify(Unknown Source)
at java.awt.Frame.addNotify(Unknown Source)
at java.awt.Window.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at org.xith3d.render.jsr231.RenderPeerAWTImpl.makeCanvas(RenderPeerAWTImpl.java:137)
at org.xith3d.render.jsr231.RenderPeerAWTImpl.makeCanvas(RenderPeerAWTImpl.java:107)
at org.xith3d.render.jsr231.RenderPeerAWTImpl.makeCanvas(RenderPeerAWTImpl.java:92)
at org.xith3d.render.canvas.Canvas3DWrapper.<init>(Canvas3DWrapper.java:628)
at org.xith3d.render.canvas.Canvas3DWrapper.<init>(Canvas3DWrapper.java:702)
at org.xith3d.render.canvas.Canvas3DWrapper.<init>(Canvas3DWrapper.java:862)
at org.xith3d.render.canvas.Canvas3DWrapper.createStandalone(Canvas3DWrapper.java:1025)
at EmptyScene.<init>(EmptyScene.java:13)
at EmptyScene.main(EmptyScene.java:20)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.media.opengl.GLCanvas.disableBackgroundErase(GLCanvas.java:350)
... 16 more
Caused by: java.lang.UnsatisfiedLinkError: disableNativeBackgroundErase
at sun.awt.windows.WCanvasPeer.disableNativeBackgroundErase(Native Method)
at sun.awt.windows.WCanvasPeer.disableBackgroundErase(Unknown Source)
at sun.awt.windows.WToolkit.disableBackgroundErase(Unknown Source)
... 21 more
problem3:
When I use j2sdk1.4.2_13 (Java Compiler compliance 1.4 instead of 5.0),
I get a "unsupported class version error":
in HelloXith3D.java:
java.lang.UnsupportedClassVersionError: org/xith3d/scenegraph/Node (Unsupported major.minor version 49.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
Exception in thread "main"
in EmptyScene.java, it's the same error type, nearly the same error.
I found no help for those issues online and I tried a lot myself, the whole day, but I am finally confused.
That's why it would be great if you have got some idea considering this errors I got.
I hope this is not too much at once!
thanks & keep on developing,

Phill