Use jMonkey for a non-interactive, machinima-like 3d application?

Hi all,

I am currently a CS PhD student and my research is on knowledge engineering and particularly on modelling film direction knowledge.

For the purpose of conducting some experiments, I have been searching the web to find a high-level, open-source 3D engine/API, preferably for Java but any other suggestion would be useful, with fair documentation/tutorials and an active community, that will enable me to easily generate some basic “film scene” examples programmatically, without having to go in the deeps of 3D programming. And this has to be done through code, rather than in some 3D platform like 3DMax or Blender.

For example I may need to generate a room, then place some objects (e.g. furniture, everyday-objects) and some human characters in it, and then create basic animations for the characters (e.g walk, sit on a chair or lie on a bed, bend, make simple gestures such as wave, point, hug or grab an object, etc). I will also need to move the characters around, so I need to be able to create motion paths (straight or curved) for translating the characters and the camera in space.

I have spent a lot of time checking out a large number of 3d/game engines and the truth is I have got quite confused… I don’t have any experience in 3D programming and for that reason I need the API to be as high-level and easy-to-understand as possible. Note that I don’t care about audio, networking or high rendering quality. Also I don’t want this to be interactive at all (as opposed to games). I just need to generate a rendered clip through code, according to a number of specific directives.

I came across jMonkey and it sounds really promising! But I am wondering whether jMonkey would be the optimal solution for what I need to do. Is it high-level enough to easily tackle this task? Or maybe it would be overkill? And, in that case, should I be looking for a simpler, higher-level 3D/Game Engine, or maybe some other type of Virtual Reality API? Any specific suggestions?

I will very much appreciate any help/tip/hint!

Have a happy new Year!!

Yeah, easily, just read the tutorials. However you won’t get around understanding what happens in the scene graph somewhat to make sensible use of the api.

Hello normen and thnx for the reply,

So you think that someone who knows Java but does not have any previous experience in 3D/game programming, won’t have any problem to cope with (i.e. studying the tutorials/examples), is that right?

And something I didn’t understand in your reply… What do you mean “you won’t get around understanding what happens in the scene graph”? That it will be difficult, or that it won’t be necessary?

@yannischris said:And something I didn't understand in your reply... What do you mean "you won't get around understanding what happens in the scene graph"? That it will be difficult, or that it won't be necessary?

He means that you will need to understand it :)

Happy Birthday

Oh I see…Can you suggest any documentation that I can start from, towards understanding the scene graph concept?


I think what our friend Normen means is read this. (Also posted as the happy birthday link)

That’s great, thank you!

One other thing, regarding 3d models/anim import, does JME support the collada format? Is there any other format (supported by JME) for which I can find a wide range of common creatives offered by Collada?

The OGRE format is supported very well by the engine… There is a user- contributed Collada importer but it hasn’t been maintained for some time.

So maybe I can find some “safe” way to convert the collada format to OGRE format. Maybe in Blnder? Do you have something in mind?

And a last question: Does JME provide a way of creating a motion path (e.g. a curved path) in order to translate a 3d object along the path?

Please as a student you should be used to working yourself with a few given keywords.

Both questions above could be very easily be answerd by using the forum / wiki search and looking at the examples.

Thanks for the useful info!

One last thing, regarding the rendering: Does the API enable one to define the position/orientation of a 3d model, for each frame, through pre-calculated values, (i.e. instead of defining a motion path)?

Do you mean like key framing?

@EmpirePhoenix said:
Please as a student you should be used to working yourself with a few given keywords.

Both questions above could be very easily be answerd by using the forum / wiki search and looking at the examples.

To this point, please read the following link. It'll help you in finding answers and help us in our attempts to help you :)

Yes I am talking about keyframing animation, but through code.

And one vital question that I forgot to ask about: Does the engine enable me to code in advance transformations of a 3D object for specific time intervals, or start/stop animations for specific time intervals, in order to generate a rendered clip through code?

For example, let’s say I want to generate (through code) a rendered clip of 20 secs, in which a character model is static for the first 10 seconds, then translates from a point to another for five seconds (which means that the walking cycle should also be enabled for that five seconds) and then stops and turns his head to the left while waving for another 5 seconds). What I need to do do is to be able to code these actions in advance, so as to generate the rendered video programmatically. Is that possible?

You can make your own timer and then just save each frame as you want, so you can easily do this yeah. Actually the VideoRecorderAppState already does exactly this: keep the framerate at 30fps and if necessary play the game slower.

Great! And can I also activate multiple animations for a model simultaneously, assuming that those animations have been imported together with the mesh by the loader (e.g. walking cycle and waving hand simultaneously)?

sure, please read the tutorials.

Ok, thanks for the very useful info and sorry for the question bombing :wink: