Jump to content
  • Advertisement
Sign in to follow this  
lollan

Simple scene managment question

This topic is 3713 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi, I'm working on a small (really small) demo. Nothing big and fancy like some of the guys here. I arrived at the time when I shall worry about putting meshes into the scene, to make the scene coherent. Usually I don't have a lot of object so I just use a world matrix (transformation) for each of them. However this time I have to go further. I hesitate between using octree and scene graph. I understood octree, from what I learned, it is a way of dividing space into logical entities. I read the different topics and article on the site about scene graph, I have the basics but that's it. From what I understood with a scene graph, some node are transformations, others are objects to be rendered. The aim is to organised the scene into a logical and spatial representation. I have three questions: -How can I select what to render with a scene graph. -Why is it efficient exactly ? -Regardless of the difficulty, what should I use if my only concern is effency and all shader base operation are handle by the mesh, itself? Thanks PS: I post this because I don't understand related topics about this problem, please be patient.

Share this post


Link to post
Share on other sites
Advertisement
Hi
Quote:
Original post by lollan
-How can I select what to render with a scene graph.

There is many ways to do it.
The node of your graph can be a struct with a type and an union.
A node can be an abstract class of object to render and a transformation node and you do the difference with a dynamic cast.

Quote:
Original post by lollan-Why is it efficient exactly ?

Octree is efficient because with one test you can avoid to render 1/8 th of the space.

Quote:
Original post by lollan-Regardless of the difficulty, what should I use if my only concern is effency and all shader base operation are handle by the mesh, itself?

If it's a really very small demo perhaps you can just use a linked list ?
But any way I think that octree works fine.

Share this post


Link to post
Share on other sites
Simple?

Make your scene a list of drawable entities.



class Renderable
{
// Other stuff
...

float4x4 worldTransform;
};

class Renderer
{
public:
...

void AddRenderable( Renderable* );

std::vector< Renderable* > mRenderables;
};





Don't bother with the octree, just do a straight up compare of the bounding volume of each entity with the camera frustrum.

Simple, easy, and a lot of AAA games have shipped with nothing more than this.

Share this post


Link to post
Share on other sites
SwitchIn : I agree. I used a simple std::vector< IRenderable * > g_Objects; in a quite big professional project and it worked fine.

But the advantage of a scenegraph (as I see it, and i'm using it for the next generation of our product) is that you organize your entities not spacially (this is the role of an octree / quadtree) but logically. If you transform 1 node, all its children will be transformed too.

When you compute bounding boxes, a node's BB should also contains all its children ones. This way, when you do frustum culling, when a node fails the test, you know that all its children won't be visible too.

So it's really up to you to choose : you can go the simple way with a simple list if you know your project won't grow too much. Or you can choose to implement a slightly more complex structure such as a scenegraph if you want to have a few more functionalities (the 2nd and 3rd paragraph were 2 examples of such things)

Share this post


Link to post
Share on other sites
Hi,

Thanks all! Each of your reply open some perspective I didn't see before.
I was so focus to produce a good demo that by default I limited my options lol.

In fact you all are right, doing a list is much easier and in a way for a small project more efficient. However I think I will go in a first time for the list and then when the time to go further with the demo come, I'll go for the octree.

Thanks to all I now understood why a scene graph is efficient but I don't think that scene graph should be use for small project.

Thank you all

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!