scene graph

Hi,
I am using flightgear-0.9.4. I am having 3 views, center view(pilot view), rigth view ,left view.At present i am getting frame rate less than 20 fps, due to this there is no smooth movement on flight.To increase the frame rate i thougth of splitting the process
- preparing the scene graph
- culling and rendering .

because preparing the scenegraph is common for all three.so scene graph preparation is done in only one system(a seperate pc) and it can send the scene graph structure(thru ethernet) to remaining 3 systems where rendering will be done in individual systems.

please give ur views ,i want to know whether this one can be implemented.
regards ,
hema

You have to keep in mind that your ethernet connection is painfully slow (both in data throughput and roundtrip time), compared to cpu processing speed. So unless the scene graph preparation results in far less data to be transmitted, or is so computationally intensive that your other hosts just can’t do it, you’re probably better off sending the original data and process it on every host.

I’m not sure what exactly you mean with “preparing the scenegraph” and “send the scenegraph structure”, so this might actually be what you’re thinking about. You should only transfer the most relevant pieces of data (position/rotation, angular/linear velocity, angular/linear acceleration of moving objects), and compute everything else (if possible) on the display hosts. You might even get away with sending the synchronization data only every few frames.

Hi,
Thanks for U reply.
I have come to know that it is not possible to send entire data of the scene graph.
we have thought of one more thing…
Can we send the frustums data (Data for current frame)to other pc’s. But the problem is how to identify that the current data for the particular view (center view ,left,or right).

Plz suggest me some ideas regarding this or how to increase the frame rate.

waiting for reply.
regards,
Hemalatha

Hi,

you’ll still have significant problems with latency, even (!?) if you clip the scenegraph on the server and send a subset. While the server is traversing the scenegraph and packing it into a useful structure to send to its clients, your clients and doing… what? waiting? by the time they start getting the data so they can begin rendering it, what stage is the server up to?

How about this for an idea:

you divide your world into a hierarchy of subdivided blocks (ie. levels of detail) and you prioritise data to send to the client based on the level of detail the client already has, where the client is and where its heading to.

In the first instance, for example, you’d send each client the first level of the block they’re in. That way they can render something, albeit at coarse level of detail.

While the clients are busy rendering the world with the information they have, you could priority queue levels of detail to send to them. You’d have to play around with weights, but things to consider;

  • sending them more levels of detail for the block they’re in if they’re not near neighbouring blocks
  • favouring sending neighbouring blocks if the clien doesn’t have ANY LOD for them
  • and especially favouring neighbours if you’re flying towards them :slight_smile:

that way you don’t send the entire scene graph all at once, the clients and render something while data is coming in, and you can organise data so clients get what they need, when they need it.

that’s what I think

cheers
John