hypersleep said:
I'm thinking about managing a list of all objects and sort them by their distance to (0,0,0). Then I would take the camera position and check all objects in the list between the camera position and the four corners of the far plane of the frustum. That way I can drastically reduce the number of objects to check and I would do frustum culling for each object that has a distance between those.
For scenes of reasonable size, I imagine that this could work.
(I suspect that it would hit problems with very large scenes, however, as all nodes would have to be checked.)
hypersleep said:
I can't really see how a tree is better here because if the camera moves/turns, the order of the tree is wrong.
The order of the tree doesn't really depend on the position or orientation of the camera: it specifies the overall bounding-boxes of the nodes in the scene, which remain the same regardless of the camera.
Its advantage is that--depending on the structure of the scene--it allows one to potentially discard large numbers of nodes without investigating them at all.
Another advantage that occurred to me is that it enables one to have hierarchical transformations in the scene: nodes can be moved, rotated, etc. by nodes above them, allowing one to create complex relationships that can--so I've found at least--prove useful at times.
Naturally, this doesn't relate to culling, but it does introduce a “two birds with one stone” advantage: from one element the engine gains access to two features.