Building a complex scene


#1

What is the best way (in terms of pipeline) to build a complex scene and import it into Panda?

I used Ogre for a while and would be more comfortable if it was possible to build a complex scene in a similar way.

This is how i used to do it with Ogre exporters.

First the Blender scene:

1- Build all the individual objects in a scene used for this purpose.

2- Link them to the another scene for the main scenario. Linking in blender with Alt-D duplicates the object but reuses the mesh data and the materials.

3- Compose the scene objects; create the terrain mesh; add lights and placeholders; add game properties.

Exporting everything:

1- First export all individual meshes to their own files and individual materials to their own files also. We get a list of files with one .mesh file per mesh data block (stripped of any transformation) and one material file with all materials used.

2- Then export the scene into a xml file. This contains only the lights and objects with their transformation and an external link to the mesh material files.

Loading into the game:

1- Loading the xml scene with all external mesh files used by it.

Is there an easy pipeline to do this?

and

I heard that Panda does an heavy optimization when it loads stuff. How do we prevent unnecessary optimization and keep some objects separate in their own nodes?

Thanks in advance.


#2

Well, right now I don’t think there’s anything that does all that automatically for Blender. However, the “unstable”* version of Chicken you can find in the sourceforge site, has a handy invocation interface that allows any other script to call on it to export an object. That could allow you to write a script focusing on doing everything but the actual exporting of .egg files and call on Chicken to do the rest.

*Don’t worry, it’s not unstable in the sense that it’s buggy, just that it’s not a proper release with updated documentation.

It might seem self-serving but, I think if you’re looking for a quick way of achieving that sort of pipeline in Blender this is your best bet.
Besides, if there’s some interest in it, I might polish it up a bit and finally make a proper release out of it. I kind of lost interest in working on Chicken since everyone seems pretty much satisfied with what’s already there.


#3

Thanks. Yes that’s what i need essentially, an interface for batch processing besides what we can do already with chicken.

Having the script separate everything into individual files is an easy way to handle duplicate meshes, materials and other stuff. Besides my experience when working with a team is that it’s much easier when we have resources split on multiple files and linked externally.

By the way, do you think it would be possible to export more exotic things from Blender like particle systems?

I will see if i can edit the latest version of chicken but i’m not very experienced with Blender scripting and animation maths so don’t know if i can do it.


#4

The whole point is that you don’t have to modify Chicken, you just write your own script that calls Chicken to tell it to export a file. So, you will have to know some Blender scripting to decide which objects to pass to Chicken and gather the necessary information to call it, but you won’t have to deal with animation and things like that unless you want to do something Chicken doesn’t. You can see a basic explanation of how to call Chicken from a Blender script in this post; ignore the part on how to install it, as the zip file at sf.net has the appropriate structure. There are more parameters you can supply, and they are explained inside the code itself (chicken_interface.py, that comes with that release).

Regarding particle systems, everything is possible; it’s just a matter of how much you have to mess around with Blender. To export particle systems you’d probably have to modify the C side of things, which means you’d have to work with a modified version of Blender, or submit a patch and wait for it to get included in a release (like I did for Nurbs curves).