Great. I think it'll be useful for user Cheer!
On Thu, Apr 10, 2008 at 6:11 AM, Souvarine <[EMAIL PROTECTED]> wrote: > Greetings everyone :) > > First my deepest apologies to you soya users, that mail is not directly > related to soya. It is about an experimental project I want to start (no > not a game) and, since I know there is some 3D pros here, I would like > to ask you guys opinion about it. That project would be a C++ library > that does scene management. > > As you know (or not) I wrote the BSPWorld scene manager for soya (and > I'm still working on it). I have been working a lot on scene management > problems. Almost all 3D engine out there comes with some scene managers > into theme. By scene manager I mean some piece of code that can handle > everything that is on a 3D scene (static geometry, movable objects...) > using some specific algorithm to speed up the rendering (most used are > BSP, Octree and QuadTree). But the more I study scene management problem > the more I think that handling scene management into 3D engine is plain > wrong, for severals reasons. So I'm planing to start writing an > independent scene management library that would not be tied to any 3D > engine, and would be potentially be used by any existing 3D engine, > including soya of course. > > Allow me to explain my point. > > First, a scene manager can be useful even without a 3D engine. Take the > example of a networked game with a server and several clients. The > server does not need a 3D engine since it does not display anything > (clients do) but it could use a scene manager to speed up collision > detection, IA, network, etc (I'm not saying that the scene manager > actually does collision detection, IA and network stuff itself, but that > it can be used used by those to optimize by cutting unnecessary > operations). > > Second, scene managers that comes with 3D engines (including my BSPWorld > in soya) are under exploited. Most of the time they are only used to > speed up rendering of scene static geometry, sometimes of movables > objects too and they can handle some basic collision detection functions > like raypicking. But a scene manager based on space partitioning > algorithm can do much much more than that ! It could be used with > physics engine (such as ODE), for sound, IA and more. You can expand > your 3D engine scene manager by subclassing it but that is a lot of work > since you have to understand its internals first. If your 3D engine > comes with several scene managers (for different type of scene) you need > to subclass them all, and once you have you can no longer switch to > another 3D engine if you need to. Modular design is beautiful ! > > Third, scene managers that comes with 3D engines don't provide easy and > complete solutions to the level editing problems. BSP scene managers can > usually load quake maps (those are widely documented on the net so it's > easy) but the possibilities of those are very limited. Nowdays, level > designers prefer to use their faithful generic 3D modeler (3DS, Maya, > Blender, add your favorite here...) than some level editing programs > like GtkRadiant. Although there is some partials solutions, I still > haven't see any system that allow a user to fully design a level in his > favorite 3D modeler (including mesh, physics...) and can then import it, > split it using some space partitioning system and use it with > optimizations. > > For all those reasons I want to make an independent library that does > only scene management and that the user could use for anything he or she > wants. I made some research and I didn't find any similar project. > That's a bit strange I think, maybe I didn't look at the right place. > > That library should have the following features : > > -> can import a 3D level modeled in Blender and extract all necessary > informations from it : mesh geometry, collision detection geometry, game > objects locations (player start points for example) etc. Then it should > be able to split the level using an hybrid space partitioning algorithm > (suitable for both outdoor and indoor scene), and then provide > informations about mesh, collision detection and stuff in a convenient > way for the 3D engine and physic engine the user will choose to use. > > -> keep track of movables objects (player, NPC...) into the level > structure using their position and bounding volume given by the user. > > -> perform various type of query. Your 3D engine could tell the scene > manager where your camera is and how the frustum is and the scene > manager will tell the 3D engine which parts of the level and which > movables are visible and should be rendered. Your physics engine could > tell the scene manager that it is going to perform collision detection > on the some movable object against it's surrounding environment and the > scene manager will tell the physic engine which other objects and which > part of the level geometry might collide with it. > Many other things are possible. For example the 3D engine can ask for a > list of all light sources that can affect the rendering of a movable > object. The IA can ask for a list of all movable objects in the > surrounding environment of a IA driven NPC so it can perform path > planing. The network engine can ask for a list of all movable objects in > the surrounding environment of a player so it can only send that player > informations about movables that are in it's range of view, reducing the > amount of data to be sent over the network. > > -> be thread safe, several thread should be able to perform query at the > same time on the same data. That would be useful especially for server > side usage in networked games. Server developers like to use > multithreading to take advantage of multicore processors. > > So, to those who have experience in 3D development, what do you think ? > Do you know some projects that already does that ? Do you think, like me > that that this approach have potential ? I'm interested in any opinion, > critics or advise you can give me. > > Again, my apologies for that (too) long mail :) > > Souvarine. > > > _______________________________________________ > Soya-user mailing list > Soya-user@gna.org > https://mail.gna.org/listinfo/soya-user > -- Thitipat Donpraiwan (Bent) http://thitipat.wordpress.com
_______________________________________________ Soya-user mailing list Soya-user@gna.org https://mail.gna.org/listinfo/soya-user