Hi Artur,

I've implemented a Java3D world that used a very large dataset which was
dynamically paged from disk as the user moved around the world. The
dataset was detailed geometry of the entire city of Bath in England.

I divided the city into 'tiles' in the x-z plane and pre-processed the
data into a j3f file containing 2 levels of detail for each city tile,
as the user moved around the world tiles were paged in from disk in a
predictive way so they were available to add to the scenegraph when the
view intercepted the tile bounds. The main issue here is ensuring you can
page the data in quickly enough when the user is moving fast.

The data in the city tiles was static, however I'm currently implementing the
ROAM algorithm in Java for dynamically tessellating terrains.  My current
implementation is split only Roam and updates all the visible geometry every
frame using geometryByRef (and yes you do save a lot doing the bounds
computation yourself).  One of my test files includes over 2 million triangles
and renders at ~26 frames per second on one of our test PC's (1GHz + GeForce),
and this code is by no means optimal and shows 2 concurrent views of the data.

By the way both these examples use Java3D Retained Mode.

By combining both these or similar techniques you should be able to
produce extremely large worlds (many GB).

Rgds

Paul

----------------------------------------------------------
Paul Byrne                      Email : [EMAIL PROTECTED]
Sun Microsystems                Phone : (650) 786 9926
Visualization Software Group    Fax   : (650) 786 5852
----------------------------------------------------------


>X-Accept-Language: pl,en
>MIME-Version: 1.0
>Content-Transfer-Encoding: 7bit
>Date: Sat, 5 May 2001 00:04:21 +0200
>From: Artur Biesiadowski <[EMAIL PROTECTED]>
>Subject: [JAVA3D] Large worlds in java3d
>To: [EMAIL PROTECTED]
>
>It seems to me that java3d is very good api for small scenes - with lot
>of static data. It does a lot of optimalization behind the back and is
>significatly easier to use efficently than opengl/directx. This makes it
>perfect tool for things like molecule viewers, some medical imaging,
>maybe also space simulation game.
>
>But what with displaying really large worlds ? I'm talking about
>something really big - a lot of terrain with trees, buildings etc. It is
>not enough to use more or less smart visibility algoritm to reduce
>number of triangles pushed to graphic card - there is not chance that
>all data for this world could possibly fit in memory at once. It
>requires very dynamic meshes, recomputed possibly for every frame, plus
>at least partially immediate mode rendering - switch/lod nodes do not
>help for memory usage. From my experience, immediate mode is extremly
>slow - even for simple scene, I've noticed about 4 fold decrease in
>frame rate (which is unacceptable).
>
>Is java3d capable of rendering such large worlds ? What techniques
>should be used here ? Is immediate mode really so slow, or was it
>mistake on my part somewhere in code ?
>
>Related question - how big price do I pay for constructing new geometry
>array ? By-ref geometry is probably a best way to reuse same geometry
>for different purposes, but calling it in immediate mode is quite
>counterintuitive. One thing to probably speed it up is disabling
>autocompute of bounds - no need in immediate mode if I'm sure I want to
>draw it. Any other tricks ?
>
>Artur
>
>===========================================================================
>To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
>of the message "signoff JAVA3D-INTEREST".  For general help, send email to
>[EMAIL PROTECTED] and include in the body of the message "help".

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to