What is the main job of a Scene Manager? For instance would its job be to render terrain..or would its job to build a quad tree from the terrain and render the quad tree? From what i understood its main job is to organize and manage data for faster rendering. Basicly to manage the scene...render transparent polygons in the correct order, cull unneeded objects and nodes, etc. Am i correct? or on the wrong track? :unsure:
Well, I might be wrong, but I believe, it doesn't matter how the scenegraph exactly operates(does it contain a quadtree class, or does it split everything up itself,...)...
But, as far as I know, scenegraphs are just used for state management(different rendering states, textures, transforms,...), while space partitioning is done by a seperate operator(quad/octree,bsp,...)...
edit: If I said anything wrong, sorry, but I believe that's a pretty logical topic... ;7
hmm...why do we have a "game DESIGN" board in the PROGRAMMING forum? :o
I read this.."This is for discussing all about thoery and implementation of game design (e.g. engines)"
I didnt want to post it in a api specific forum...because this is a more general question. So i figured this was the forum. If its in the wrong place the moderator could move it or i could delete it.
he means why is this forum in the programming category. This post is in the right place .
I guess programming doesn't just mean the practical side. Math is in here too.
Well, what I ment is:
"game design" means for me not the technical aspect of game development, but more the artistic side(but well...ok, coding is also art, but I believe you understand what I mean... ); therefor I was a bit suprised to find this board in the programming forums...
Oh, and yeah, of course your right here:
"This is for discussing all about thoery and implementation of game design (e.g. engines)"
Sorry, my fault; was confused by the boards name...
The main job of a scene manager is to arrange your scene in a hierarchical manner. A scene manager might effect performace and might not effect performance depending on the kind of relationships are used between the objects in the scene manager.
A scene manager should just represent relationships (most commonly spatial relationships, but sometimes logical relationships) and a common access ground for all objects in a scene. If you think about it, all objects are in a way 3D entities. They might be totally different (ie a sound and a bullet) but they are all part of a 3D scene and logically relate to each other in some way or the other. Using spatial relationships for a scene manager does however cause a scene manager to effect performance.
A typical approach to using a scene graph would be something like this:
All objects are derived from a base node class and all the nodes are arranged into a tree like structure. The tree structure is then traversed and each node is either rendered and/or updated depending on what kind of node it is. for example a node containing a dynamic light source does not need to be rendered, just updated, a node containing a static table just needs to be renderer, and a node containing a character needs to be updated and renderered. Each 3D entity is rendered differently. A terrain will be rendered with a quadtree for example, but a character can be rendered with a simple bounding volume test to check if it's inside the view area (know as the frustum). If the relationships of your scene manager are based on spatial relationships, then you can skip entire sections of the tree if their bounding volume is outside the frustum. becuase since everything is spatially arranged, if one object is not in view then all objcts in that object are not in view either.
You can also just traverse the scene manager and add all renderable objects to a render group, then arrange the render group according to whatever, ie: according to texture) then render the render group all at once. Nothing is fixed, you can go about doing anything in a number of ways.
In the case of transparent objects, you can use do something like this: traverse teh scene manager and if the node has transparency, then you add it to a render queue that is rendered *after* everything else, instead of rendering it there and then.
Bottom line is that ask people what a scene manager should do and you'll get a whole bunch of different answers depending on how the individual has implemented his own scene manager. After all the different answers a flame war will follow .
However it is generally agreed upon that a scene manager just organizes your scene hierarchically based on entity relationships. How you go about it is a totally different (and delicate) issue.
baldurk : i think we have a necromancer at our hands !!! i hope you will survive it...
well, I lost that argument, so there's not much I can do about it.