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

12 replies [Last post]
yannischris's picture
Offline
Joined: 01/02/2012


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 Env3D and it sounds really promising! But I am wondering whether Env3D 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!

--

yannis

Offline
Joined: 12/13/2010
Hi Yannis, thanks for the

Hi Yannis, thanks for the interest.  Env3D is pretty high-level (it has to be in order to be accessible to first year students).  All of the 3D details are pretty much all abstracted away from the user, so it sounds like on that front, Env3D would be a good fit.

 

The models and animation, however, would still need to be created in a 3D modeling program like Blender, and then imported into Env3D.  You can look at the lesson on "Models and Animation" for details, but it is pretty straight forward.

 

I don't see any reason why you cannot use Env3D to create real-time animated "films".  You can certainly move the objects in the 3d environment on a pre-calculated path.

 

With the new version, you can even use the scene creator to create your initial scene using drag-and-drop. 

 

Your project sounds very interesting, if you need any more help, please feel free to ask.

 

Jason

yannischris's picture
Offline
Joined: 01/02/2012
 Hi Jason and thanks for the

 Hi Jason and thanks for the quick and thorough reply!

The fact that Env3D is purposed for first-year students surely makes it approriate for a non-experienced developer! So I understand that Env3D should be higher level compared to Java3D, JME or Xith3D? Is this true? Are the aformentioned engines more difficult to understand/work with, or do you think that they are about the same level of abstraction/difficulty?

Regarding 3D models, what formats are supported by Env3D for model import? For example there is the collada format for which there is a huge volume of free 3d models on the net. Is that format supported by Env3D? Is there any other format for which free content may be available on the web and is supported by Env3D?

One last thing that concerns me is the help I can get. I checked out the "Lessons" section on the Env3D site. Do you think that these lessons should be ok to get me started and doing my work? Are there any other tutorials apart from those that I must have in mind? And what about example code? Is there a set of examples that includes the basics and I can use as guide for doing similar things? Lastly, is there an active forum community?

 

Thanks, and sorry for the question bombing :-)

--

yannis

Offline
Joined: 12/13/2010
Env3D is built on top of jME,

Env3D is built on top of jME, so it is definitely at a higher level of abstraction.  Env3D also allows access to the underlying jME engine, so if you want to do something fancy, you can always use jME directly from Env3D.

 

I recommend using the OBJ format for 3D models, but since Env3D is based on jME, you can use any jME formats -- which means you can use the Ogre format or even Blender directly.

 

The lessons are pretty easy to pick up and should give you a good base to implement your ideas.  I check the forums regularly (as well as many of my students) so you should get a pretty quick response if you run into trouble.

yannischris's picture
Offline
Joined: 01/02/2012
  Hello Jason, Is it possible

  Hello Jason,

Is it possible to convert collada (or 3ds) files to obj in order to import them in Env3D? For example with Blender or some other stand-alone convert utility? Would you suggest a reatively "safe" way to do that?

Thanks for the useful advice! I will surely give it a try and send you feedback.

 

--

yannis

Offline
Joined: 12/13/2010
Blender can import COLLADA

Blender can import COLLADA format and export OBJ.  I use blender all the time to transform models into env3d.  There is a bit of a learning curve but it is the best open-source 3d modeliing software out there :)

yannischris's picture
Offline
Joined: 01/02/2012
 Ok, the Blender convertion

 Ok, the Blender convertion utility seems nice! About the learning curve you mention, what exactly do you mean? Isn't there something like a Convert-To-Obj option in Blender that takes care of everything and performs the conversion automatically?

And one more, last, question: Deoes Env3D enable me to define a motion path (e.g. a curved path) and then translate a 3D model along this path?

--

yannis

Offline
Joined: 12/13/2010
Many times when you import

Many times when you import and export models, you'll also need to move and/or scale the models also to make sure that it fits inside your 3d environment.  You will also need to export the models with the correct parameters.  That's why it is important to have at least a basic understanding of Blender.

 

Env3D does not have any motion paths built-in.  However, jME has a cinematics subsystem which you may want to look at.  I suspect that it should be pretty easy to invoke the cinematics subsystem from env3d, if you so desire.

 

 

yannischris's picture
Offline
Joined: 01/02/2012
 The JME cinematic subsystem

 The JME cinematic subsystem is just what I 've been looking for!! Thanks very much for that! So if I can invoke from inside Env3D any JME functionality I want (as you mentioned), I suppose I can use this as well!

Additionally, if JME supports the functionality of translating a 3d model along a pre-calculated motion path, can I use this functionality in my code (as if I was programming in JME, and as a result mixing JME and Env3D calls), even if Env3D does not support it directly? (Sorry for asking again, I know that you have answered that more or less, but I just want to be sure that I don’t misinterpret)

I should also note that everything has to be done through code (it’s my project’s restriction) so I assume that everything that can be done with drag’n’drop (you have mentioned something about a scene creator earlier), can interchangeably be done through code, correct?

And a couple of critical questions, that I forgot to ask (they will be the last I promise!! J):

- Does Env3D allow one to define the position/orientation of a 3d object “frame by frame”, by providing pre-determined values for translation/rotation for each frame?

- Does Env3D allow loading of animations together with the loading of a mesh (in one object or separately), e.g. in OBJ or some other format?

- Does Env3D allow one to activate more than one animations simultaneously, assuming that those animations are loaded together with the mesh (e.g. walking cycle and moving hand at the same time)?

Thanks again for helping! --and sorry for the second wave of question bombing :-)

--

yannis

Offline
Joined: 12/13/2010
I have not looked at the

I have not looked at the cinematics function myself, but I have been able to expose the jME particle system as well as Nifty GUI to env3d, so I think it should be straight forward to access the cinematics function as well.  Basically, all of jME classes are available to env3d.  You can access the jME scenegraph in env3d by calling the "getJme_node()" method from any EnvNode object.

 

Everything in env3d is done from code.  The scene creator GUI simply generate a code template that you can fill in.  The initial position information is stored in a text file, but you can see the loading code in the generated Game class.  It is very simple.

 

Not sure what you mean by "frame-by-frame", but each object in the env3d has positional as well as rotational components.  You can definitely write some code to read in a frame by frame state information and render the result one frame at a time.

 

As far as animation is concerned, 3d formats are generally very difficult to get right.  jME has the ability to load various  formats with or without animation.  OBJ is what I used in env3d for pedagogical reasons.  You'll need to check with the jME guys to see what animation format is best.  I do know for a fact that jME can activate multiple animations at the same time, so you are safe there.

 

yannischris's picture
Offline
Joined: 01/02/2012
 Yes that's what I meant by

 Yes that's what I meant by frame-by-frame. For example, instead defining an initial & final position for a translation, to specify the poisiton for each frame from initial to final position and then render the result to a single video.

So now I suppose its time to stop asking and start getting dirty ;-)

Thanks for the very useful advice! I will let you know about any progress..

--

yannis