Blender Java About

Print PDF

Blender Java is a Java port of the Blender 3D software. It was started in June 2009 by Jason LaDere ...

So far this a proof of concept work to see how many people might be interested in this project. The Blender Java version available through webstart and depicted in most of the screenshots is based on Blender 2.48a code. I also have another version based on the current 2.5 code which can be seen in the last screenshot. The 2.5 version is not as far along yet. Blender Java uses JOGL for 3D rendering.

Some of the reasons I have started this project:

1. As a learning tool for myself it helps me learn to use blender in conjuction with tuorials and experimentation.

2. I would love to be involved with the Blender coding team in some way in the future and this helps me learn the code and architecture.

3. A Java port may have some advantages such as safety and security (managed code), ability to run with different security levels such as from a browser or network vs installed on a local machine, documentation (javadocs), and object oriented code.

4. It may broaden the range of people who would like to contribute to the code. I have ported other complex c projects to Java before and I usually find that the Java version ends up being easier to understand and also less code. Compare the source code of my Jario64 emulator to the original Project64 c code as an example.

One of the features of this Java port which enabled me to get a lot done in a short amount of time is its auto generating DNA. I have a small program that reads the DNA from a .blend file and generates all of the proper Java classes. This means that I almost instantly had about 350 classes that I did not have to write by hand. Each of these classes contains all the attributes for the structure it represents, methods for reading and writing itself to file, ability to duplicate itself, and print itself for debugging. This worked great when I started the 2.5 version. I just ran the program on a 2.5 .blend file, took most of the kernel code from my 2.48a version (a majority of that code was unchanged in 2.5), and then I could concentrate on writing the interface and event system code (which changed a lot).

Current Status:

The 2.48a webstart version (run in windows OS) is working with some basic functionality. It has a lot of the UI functionality such as zooming, selecting, rotating, changing view, split/merge windows, etc. It can load and save files. It can render (sort of), and it can edit object meshes. When run in Linux OS, most of the functionality is disabled because of a JOGL threading problem in Linux. This threading issue only exist because of how the 2.48a UI code goes into sub loops for non-instantanious actions (menus, dragging, etc). The 2.5 code should not experience any of these issues. I am probably not going to do much more with the 2.48a code since I would rather concentrate on the 2.5 code. However, I am not going to add a whole lot more right now to the 2.5 code since the official code is still changing. I just want to get it to a point so that when the 2.5 official version is released, I can have a 2.5 Java version available in a minimal amount of time.

If you think this project is interesting or useful, please leave some comments.

 

Comments (32)
  • Michael Nischt  - Awesome
    Having Java port of blender would be great. Point 4 is definitely true for me.
  • young_voter
    Thank you for your work.
  • jamil  - jeela
    Really nice work! I have been thinking of getting my hand dirty in the blender code but my C++ was never that good. At least now i can look at the code and understand and contribute a bit. Aren't you looking for contributors ? :)
  • kenden
    Thank you for all your work!

    Point 4 is definitely a good point, having this java version to experiment with could result in new features that would be ported back to the original Blender.

    Are you thinking about releasing the code on blender projects? (****://projects.blender.org/)
  • jamse
    Great work! This is exactly the kind of app that's missing in the Java world.
    Maybe it can show that Java is fit for 3D Graphics.

    Bullet on Java would also be great.
  • Anonymous
    See JBullet ****://jbullet.advel.cz/
  • fxnull
    Awesome. It will broaden the blender possibilities.
  • art4med  - Interesting
    Fascinating; perhaps could offer some incentive to gaming interests to head toward blender.

    Could we thus run a "javaBlender PLAYER" from a web server? Hmmnnn....
  • art4med
    COME ON, 2.5 !!! (esp for Linux) :ooo:
  • sebih  - great idea
    Sounds great, would be interesting to see some performance comparisons once enough functionality is ported into the 2.5-java-port.
    Generally it looks very promising, maybe I'd join your development. Just contact me if you're looking for help.
  • John Talbot  - Finally!
    Finally! This is fantastic! C development takes twice as long as Java development (Microsoft itself admitted this more than a decade ago). The world of computer graphics evolves at such a high rate that a Java version will eventually become mandatory to manage the enormous increase in complexity and code bloat of future releases within a shorter development cycle. Computers are getting faster, however the latest version of Java and its highly optimized JVM is gradually approaching the CPU efficiency of C. According to TIOBE.com there are many more Java programmers than C programmers out there. Can't wait to go through Blender 2.5 code. Java's rich APIs provides tremendous potential for code simplification.
  • Brad Cathey  - awesome!
    :D Glad to see this being done. Point #4 is right on. But, are the available 2D and 3D libraries up to the task of a full-featured 3D app?
  • ezani  - Are you willing to work with Blender Foundation on
    Hi Jason

    Awesome job! Blender for Java is a really, really awesome project and a lot of Java (and Blender) developers would really appreciate if you could open source your work of Blender for Java as a Blender Project or as an OSS project (perhaps under SourceForge). Then a lot more programmers (hundreds!) can work on it and get it matured significantly faster than if you worked on it alone currently. Are you willing to share your source code with the OSS community ? (Please say yes..pleez!)

    Once again, awesome job!
  • MadLion  - Wow!
    Wow! This is a really really intresting project! Great work, keep it up.
  • MadLion  - Wow!
    Wow! This is a really really intresting project! Great work, please keep up working on this.
  • MadLion  - Args....
    Args... sorry, for the multi posts! Please delete them. I'm really sorry! It was not my intention.
  • Mr.  - Great Job
    Hi,

    really great job ;).

    Maybe you are also interessted in JCUDA ;) and try to support CUDA functionality for the internal rendering ;)
  • Arne Brix  - Source code?
    I would really like to have a look at the Java source of this port. Could you provide a link to it or a publig svn/git/.. repository?
  • Anonymous  - unsubscribe
  • Satish Goda  - Kudos!!!
    :ooo: That's awesome news... I wish you all the best in your effort...
  • Anonymous
    :ooo: :love: :angry-red: ;)) :sleep: :ooo: :x :idea: ;)) :angry-red: :evil: ;)) :idea: :idea: :x :ooo: :love: ;) :D :angry-red:
  • Anonymous  - Excellent - Start
    I really like what you have done with blender. I don't think I will replace blender in the near future however. I envision your project could be very useful on the web. It could see usefulness as an online game engine. Also as a mesh viewer and animation tool.
  • haro  - nice, but kind of useless
    Well, nice work, but I don't see any real benefit in porting a piece of software that already works well and has an active development team. People who have enough skills to work on a project like this usually don't have a problem with any langauge. If a project being in C is a big obstacle for some people, then they probably couldn't contribute to a complex software like Blender anyway, so point 4 is not really true. Also, whether some code is easy to understand or not depends mainly on the person who wrote it, language only plays a small part in that...
  • Anonymus
    :D :angry: :angry-red: :evil: :idea: :love: :x :no-comments: :ooo: :pirate: :?: :( :sleep: :) ;) ;)) :0
  • Steren  - Nice
    This is a very interesting project. Coudl you better detail how you are working ? Auto generation of classes from RNA, but then, you have to code everything or you use some kind of method-converter ?

    I think that the decision to use java or not should be taken by all blender dev. To Maintain two versions of Blender may be a loss of efforts.

    In my opinion, your project could be cleverly used to provide a Blender Player in Java (cross-platform and that can be deployed on the web or on phones)
  • ProJavaChoice
    Jason,

    Great project - KEEP GOING!!!

    Here's why:

    1. Those who tell you to stop, either have never contribted code to the existing C version of Blender, probably never bought anything from the Blender Foundation eg bought a DVD, and haven't tried to work on anything simiar to what you are working on now.

    2. You will regret it if you listen to those who tell you to stop. They weren't the reason you started this project and they wouldn't have encouraged you to get this far. DON'T stop now because of them.

    3. Your reasons for starting this project are GOOD and VALID whether or not you do contribute code back to the C version. Your Java version will help many many many others learn the architecture, useability, and 'way of Blender', and for some open up 3D modelling, animation, and even movie making to them as a hobbie or career. And this project will open us an incredible number of doors for you. I don't believe it is your motive, but it may eventually give you some cool opportuni...
  • Erlend Heggen  - Team up with JMonkey?
    Are you by any chance familiar with the Java Monkey Engine? It is a powerful 3D game engine written entirely in Java.

    ****://www.jmonkeyengine.com

    We currently feature a high grade Blender exporter that a lot of developers are currently using, but with your intimate knowledge of Blender we could be able to go further than that. Say, ease of use in art pipeline (though Blender only) on par with the likes of Unity!

    I hope you'll check out the project and consider getting in touch.

    Sincerely,

    ~ Erlend Heggen
  • Pete Carapetyan  - Home Run
    A working webstart download is a perfect proof of why this is so logical. This has the potential of opening blender up to use cases such as modeling and other apps that are beyond quantification.

    Drop in a javaBlender maven jar, start up your enterprise app and render the results in 3d. Hmm.
  • Robert Csakany  - Excelent work
    Hi!

    I've found this site because I search Blender Java loader to make an OpenGL Web player for it! I think your work is needed for community, so keep it up. A question, when will you open the source for the community?

    Regards,

    Robert
  • Nikelaos  - Thank you
    This is is great! Now that Blender goes to the next level(2.5) it is exactly the right time to start such a project.

    I had another idea as a learning project for me.

    I want to port Blender to Android with Scala.

    High end Android phones/tablets like the Galaxy S/Tab should have enough processing power and screen space to support it.

    Android + Blender = Bender

    So maybe I could use your port as a base to start from
  • Sendo  - Chrome OS
    Another good reason to develop a Java version of Blender is Google's Chrome OS. For those who aren't aware, the Chrome OS and the Chrome Browser are the same thing - the OS just loads up the browser and lets you loose. Intense HTML 5 support and the wide range of web apps already out there contribute to this concept making a lot of sense, but there are still several holes in the system, specifically in the lack of native application support (that is, C/C++/C#/etc). A Java version of Blender would be extremely welcome for Chrome users, such as myself.

    I believe this falls under point #3 to some degree, though for different reasons... Definitely looking forward to further development on this project.
  • Sendo  - Chrome OS and Java
    Of course, we still have to manually install Java to make it work, but that is meant to change before the OS actually ships commercially.
Enter comments
Your Contact Details:
Comment:
:D:angry::angry-red::evil::idea::love::x:no-comments::ooo::pirate::?::(
:sleep::););)):0
Security
Enter the code in the image.