Running ODE + Xith3d examples on OS X tutorial

Hi all,
my name is Eirikur Hrafnsson and I’ve spent a lot of time now getting odejava to work on MacOS X and would like to share my tutorial with the forum since I did not find any information on how to do that in the last two weeks! And believe you me I have searched every corner for every hint I could find.

This step by step describes how to get ODE and ODEJava and the examples running on OSX. The process has robbed me of many sleepless nights so I think it will be appreciated by at least the mac-java developers out there : )

Hopefully the ode java guys will add this tutorial to the project along with the precompiled binaries I sent them…anyways here goes:

README: INSTALLING ODEJAVA ON MACOS X
Odejava (Open Dynamics Engine for Java)
Project website: http://odejava.dev.java.net
License: BSD, see license.txt file
ODE website: http://q12.org/ode
Author: Jani Laakso, jani.laakso@itmill.com
Date: 21. December 2003
Author of this readme: Eirikur S. Hrafnsson, eiki@idega.is, http://www.idega.com

Hi mac fans!
This is a dummy’s guide (for people like me : ) to getting ODE for Java running on MacOS X and the excellent test applications!
I wrote the guide after about 2 weeks of trying to get ode on OS X to work and because nobody seemed to have it running under osx yet!
In other words this readme covers compiling the necessary libode.dylib dynamic library and libjavaode.jnilib (java to native library)
to get you started with ode for java on the best Unix and Java development operating system on the planet ; )

Just follow the simple steps to goodness…

  1. Install the OS X developer tools
  • Install the developer tools that came with your MacOS X install disks if you have not already done that. If using Panther (OS X 10.3) you have to install XCode to get the java to native header files.
  • Update to java 1.4 if you have not already. (use system update)
  1. Install SWIG
    -download swig compiling tool from http://www.swig.org, they have a readme on how to install it (fairly easy) but you might have to create a symbolic link in Terminal
  • sudo ln -s /usr/local/bin/swig /usr/bin/swig
  1. Get ODE (the native c++ stuff)
  1. Prepare ODE and ODE for java
  • Move the ode folder you get from the ode CVS or from the expanded downloaded ODE release file to “pathtoyourfolder”/odejava/ode (same place as this readme)
  • With TextEdit open the file “pathtoyourfolder”/odejava/ode/config/user-settings.example and set these parameters and save the file (must be plain text)
  • PLATFORM=osx and change from double to single.
  • PRECISION=SINGLE
  • save
  • Rename the file to “user-settings”
  • Move the “pathtoyourfolder”/odejava//net directory (odejava package) under “pathtoyourfolder”/odejava//ode/
  • Move odejava.cpp, odejava.h and odejava.i from “pathtoyourfolder”/odejava/ to “pathtoyourfolder”/odejava//ode/net/java/dev/odejava/ode/

(If you want to use double precision you need to do some changes to source files (see the official readme))

  1. Compile ODE
  • Using Terminal app issue these commands, they should go smoothly, otherwise check the ODE INSTALL readme to see if any changes have been made
  • cd “pathtoyourfolder”/odejava
  • cd ode
  • make configure
  • make ode-lib
    Now plenty of *.o files under /tmp/ode/ode/src and that’s all you need
  1. Swig compile odejava.i
  • Using Terminal app issue these commands
  • cd “pathtoyourfolder”/odejava/ode/net/java/dev/odejava/ode
  • swig -Wall -java -c++ -package net.java.dev.odejava.ode odejava.i
  1. Compile Java ODE stuff
  • Using Terminal app issue these commands
  • cd “pathtoyourfolder”/odejava/ode
  • g++ -c -I /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers -I include net/java/dev/odejava/ode/odejava_wrap.cxx -o net/java/dev/odejava/ode/odejava_wrap.o
  • g++ -c -I /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers -I include net/java/dev/odejava/ode/odejava.cpp -o net/java/dev/odejava/ode/odejava.o
    (If you get a lot of errors compiling odejava_wrap.cxx you probably set PRECISION=DOUBLE but haven’t made all the source changes, see 3. and the official readme)
  1. Compile libode.dylib and libjavaode.jnilib
  • Using Terminal app issue these commands
  • cd “pathtoyourfolder”/odejava/ode
  • g++ -W -Wall -Llib -dynamiclib -o lib/libode.dylib ode/src/*.o
  • g++ -W -Wall -Llib -dynamiclib -o lib/libodejava.jnilib net/java/dev/odejava/ode/odejava_wrap.o net/java/dev/odejava/ode/odejava.o -lode -framework JavaVM
  • sudo cp libode.dylib /usr/lib/ (or make a symbolic link)
  • sudo cp libodejava.jnilib /Library/Java/Extensions/ (or make a symbolic link)

Congratulations! Basically your done! Now you can start developing those cool games you where thinking of : D
Just add the “net.java.dev.odejava” package to classpath or just add the folder “pathtoyourfolder”/odejava/ode to your classpath. Or make your own jar : )

  1. Run the way cool examples and laugh at me for spending so much time to get OdeJava working on osx ; )
  • For the examples using JOGL to run you need to copy or symlink “pathtoyourfolder”/odejava/ode/lib/xith3d/jogl/macos/libjogl.jnilib to /Library/Java/Extensions/

  • Add the “net.java.dev.odejava” package or in other words “pathtoyourfolder”/odejava/ode to your classpath.

  • Put all the needed 3rd party libraries somewhere in classpath or use the java -cp option

  • You need these libs that are under pathtoyourfolder"/odejava/

  • lib/xith3d/xith3d.jar:lib/xith3d/vecmath.jar:lib/xith3d/jogl/macos/jogl.jar:lib/xith3d/xith_utilities.jar:lib/xith3d/log4j.jar

  • Run the demos with there commands from Terminal (clicking mouse buttons and dragging, pressing space and alphanumeric keys really make the demos interesting)

  • java -Djava.library.path="/Library/Java/Extensions" net.java.dev.odejava.xith3d.test.BoxApp

  • java -Djava.library.path="/Library/Java/Extensions" net.java.dev.odejava.test.xith3d.CarApp

  • java -Djava.library.path="/Library/Java/Extensions" net.java.dev.odejava.test.OdeHelloWorld (no graphics test)

my setup example
I just run this command from anywhere in the Terminal app because I moved the libraries to one place.
java -cp “/Users/Shared/idega/3DJava/odejava/ode:/idega/lib/xith3d.jar:/idega/lib/vecmath.jar:/idega/lib/jogl.jar:/idega/lib/xith_utilities.jar:/idega/lib/log4j.jar” -Djava.library.path="/Library/Java/Extensions" net.java.dev.odejava.xith3d.test.BoxApp

Conclusion
I hope this readme helped you and you are finally on your way to creating really cool stuff on the mac with Java!

Thanks, questions and piles of electronic cash can be mailed to me at eiki@idega.is ; )

Best of luck!
Eirikur S. Hrafnsson, eiki@idega.is
Chief Software Engineer
Idega Software, J2EE RAD frameworks and other cool stuff
http://www.idega.com/

Great work, hope you can compile another version soon. Odejava 0.2 supports all ODE functions on low level API, also TriMesh and some contrib sections like Terrain and Cone. High level API is a lot easier and cleaner to use, it depends to low level API.

I’ll add CVS structure soon to dev.java.net, so you can test compiling it from Odejava CVS and hopefully edit your instructions.

PS. There was precompiled MacOSX binaries at http://odejava.dev.java.net