I have been looking a bit into Java3D and the mobile equivalent (M3G) and find them both quite interesting. I never was a big fan of Java and I doubt I will become one, as a, I think, not too bad C++ programmer Java often is missing features I use in C++ all the time.
The other reason I never really got into Java is the strange "Java is way better than C++" stuff you read in any book about Java. I really don't get why, the two have different scopes and different applications. In some things C++ is much better due to the high control over low level things, but I am quite sure in Java it is easier to get things right, because you don't have to think about low level stuff when you really don't need to.
But I recently bought a new mobile phone (which happens very rarely, it is my second one) and it has a Java interpreter on it. And as always the geek in me wants to program that thing. So I have been looking into Java again. And as it also has an implementation of Java Mobile 3D (JSR 184), I actually would like to play with that and also with either Java 3D or the jMonkeyEngine.
Mobile 3D Graphics
Mobile 3D Graphics is described in JSR 184. A short introduction is also on Suns site. But as I have a Sony Ericsson phone I also looked on their site and found their article series about M3G quite good. Those articles are not sufficient to write cool games, you will need to have quite some additional knowledge and experience for that, but it is a start. And I think it might be fun to play with that.
Java 3D
Java3D is a part of the Java SE platform, so for most operating systems there should be a version which not only works, but also uses available hardware acceleration. Java3D is a Java Community Project, it can be found here. The documentation is, in my opinion, terrible. There is still an older community site (outside of suns site), but that one is outdated. But I hope still useful.
Some days ago a review of a book about the subject of Java3D appeared on Slashdot. Its name is Computer Graphics Using Java 2D and 3D, I haven't read it, so I can't say if it is any good. But the review seems to imply it is ok. I actually am reading another book called Killer Game Programming in Java by Andrew Davison from O'Reilly. I haven't read a lot yet, so I can't say if it is any good either. As an ACM member I have access to an online version, so it is easy for me to just check into it a bit.
I just took a deeper look into the book and it seems to be ok. I specifically looked into the chapter for terrain generation and the one on trees. Both are quite good to begin with. The more advanced stuff, like LoD are left out, but I think if you are thinking about that, you probably don't need a book any longer.
jMonkeyEngine
The jMonkeyEngine is a game engine built on top of Java and JOGL (Java OpenGL). I haven't worked with it and also only looked briefly into the documentation, but it looks quite good. One problem is, that development seems to have slowed down quite a bit lately. The screen shots look quite nice, but as screen shots are always hard to judge I have played a bit with Bang! Howdy and it is quite a bit of fun. The load times are a bit high, but that seems to be true of most Java programs (and I think it is not really a big problem). The company behind Bang! Howdy is Three Rings Design Inc. and they also offer some enhancements to the jMonkeyEngine.
Things To Do
So for me that means I first have to get some experience using Java. I will probably start with a simple calculator for my phone, the built in versions are terrible. I don't really need a calculator for simple calculations (I am still quite good at doing the usual stuff in my head), if I really need one, I need square roots, trigonometrics and logarithms. Also conversion between number systems (decimal to hex and back) are useful to me.
After that I think I might write a second "calculator", a simulation for a slide rule. Not very useful but fun to do and I guess a bit experience with 2D graphics can't hurt.
The other thing I have to do is to write an exporter for my models. If I do 3D for another system I absolutely want to use my own modeling program. So as nothing can read my files, I need to convert them. I will probably start with Wavefront OBJ-format. Perhaps not the best format (as it is showing its age), but rather standard and there are a lot of converters to convert from there to nearly anything. And its biggest advantage is, that it is normal ASCII text, which makes debugging much easier.
The other likely candidate is Collada. Collada is under the control of Khronos Group which also took over OpenGL lately. I haven't looked into it very closely, but I saw something which is great from a users perspective and a problem from an implementers point of view. If an application loads a Collada file and can't handle parts of it (which is very likely with my app), it has to export that stuff unchanged. This is great for users, as you won't loose stuff by going from application to application, but to implement that poses some additional work. So for a start I want something simple like Wavefront OBJ.
A very busy month ended. I am very satisfied with my progress in July, even though very few of the items on the list were removed, but I worked on many of them and hope to close them soon. Review of JulyRunning though most of July was work on the shi
Tracked: Aug 01, 21:30