Introducing a (proper) Scene Graph

A forum about everything related to the Cafu World Editor CaWE: mapping, editing, scripting, making GUIs and fonts, using the BSP, PVS and Light compilers.
Post Reply
User avatar
Carsten
Site Admin
Posts:2170
Joined:2004-08-19, 13:46
Location:Germany
Contact:
Introducing a (proper) Scene Graph

Post by Carsten » 2006-09-24, 10:23

Hello all,

I would like to let you know that my current efforts concentrate on a (proper) Scene Graph for Ca3DE.

The currently existing world representation is pretty outdated and inflexible, as a result of its development history (e.g. development was for years centered around BSP-trees, PVS and Radiosity, which in turn were implemented to assume that nothing but simple brush faces and simple entities exist in the world).

Over the years, this implementation was augmented and fixed to become more powerful, but eventually turned out to be the cause of many problems, e.g. it is difficult to have proper clipping against Bezier Patches and all kinds of models (when we would like to have per-triangle collision detection accuracy), CaLight has problems to take anything but faces into account for Radiosity computations, Grass and Forests are difficult to integrate and organize within the realm of BSP trees, it is difficult to make maps for example with 3D Studio Max (or anything but CaWE), the sub-maps of entities were lesser objects that the world itself [1], etc. [many other problems...]

While I was thinking about fixing these issues by introducing a really good scene graph since a long while, I've delayed the descision to start the massive changes so far.
Now when I started to implement the first fully scriptable map elements (like e.g. a "func_mover" entity for quasi anything that moves, like lifts, doors, platforms, fans/rotators etc.), I found that for a good implementation, the Scene Graph really should be done before continueing with the scripting.

So over the last few weeks, I started to dig myself deeper into the software design issues that are related to create a Scene Graph and the related architecture, and over the last days I've started to begin the implementation.
My plan is to make the implementation in a step-by-step manner that has a tendency to keep everything as intact as possible at all times (at least between version control submission intervals) and has little tendency to corrupt existing functionality at a large scale. (The alternative had been to implement the Scene Graph in parallel to Ca3DE, and then replace the old one with the new one in one big, revolutionary step. This however is so risky and unmanageable that I didn't want to take this route.)

In any case, the Scene Graph means a complete rewriting of many important sections of Ca3DE and all tools code. This will take several weeks or maybe even several months, but now (mid of the past week) that I have actually started to change the code, I must say that the work is evolving very well.

A proper Scene Graph is one of the few key features that Ca3DE is still missing compared to other engines, and it will increase its flexibility significantly. All of the above problems will be fixed, and many others too. For example, it will also be possible to inspect entire maps with the model viewer if the user wishes so (the model viewer will mutate to a scene node viewer actually).

The list of new features that the Scene Graph will introduce is very long, as well as the list of problems that it will fix. It will take some time to implement all this, but it will also make the existing Ca3DE code once more a lot cleaner and enhance its readibility and design, complementary to the MatSys and GuiSys.

I will keep you up-to-date on the progress. :up:

[1] The World Is Not Enough.
Best regards,
Carsten
Sindwiller
Posts:108
Joined:2006-04-14, 21:11
Location:Zürich, Switzerland

Post by Sindwiller » 2006-09-24, 13:45

This sounds like a very nice concept! I appreciate your work fully.

Wfr, Sindwiller :wink:
Im Working on:
- Some Linux Bash-Scripts for installing stuff. Dont ask further questions, because i can't explain that more simple ^^
User avatar
Thrawn
Posts:302
Joined:2004-08-30, 10:38
Location:NRW, Germany
Contact:

Post by Thrawn » 2006-09-24, 16:20

Wow this sounds like a very HUGE change in the Ca3DE history with MUCH and BIG impact on the engine itself and working on it.

I wish you the ebst for it, not just luck but also success :D
Image
scott
Posts:173
Joined:2004-08-23, 09:11

Post by scott » 2006-09-25, 14:14

So what does this mean, your trashing bsp geometry? I'm not to clear on what making a scene graph means.
User avatar
Carsten
Site Admin
Posts:2170
Joined:2004-08-19, 13:46
Location:Germany
Contact:

Post by Carsten » 2006-09-25, 14:42

BSP trees will of course be kept, but they will "just" become special group nodes of a scene graph, instead of being the sole major data structure for spatial organization.
For example, I might complementarily use Octrees or kD-trees as additional group nodes for hierarchically organizing big outdoor areas, which in turn would live "inside" the leaves of a BSP tree.

Please see http://en.wikipedia.org/wiki/Scene_graph for some additional details. ;)
Best regards,
Carsten
User avatar
Stephen
Posts:75
Joined:2006-05-01, 06:34
Location:Australia
Contact:

Post by Stephen » 2006-09-29, 08:07

That sounds like a huge update! Good luck.

I just fixed my good computer a few days ago, and I'm downloading the most recent version now. The GUI looks awesome.

-Stephen
Post Reply

Who is online

Users browsing this forum: No registered users and 18 guests