Re: [visad] HowTo Questions: gray scale, shader gray scale, viewers position, process monitor and netcdf access to large files

Hi Marius,

We are all glad that you like VisAD. Your questions
are excellent. Here is what I know about answers to
them (but cavat emptor, I haven't written any code
for 6 years):

1. a) Images are rendered via texture maps, and
Java3D texture maps require values for each of
red, green and blue (and alpha) at each pixel.

1. b) Java3D does not support hardware color
tables. (I first wrote Vis5D on the Stellar GS 1000,
which did support hardware color lookup tables,
missed that capability in most later graphics
hardware).

2. You should be able to do this via the setMatrix()
method of the ProjectionControlJ3D you get from
DisplayImplJ3D.getProjectionControl(). Of course,
you've got to figure out how to set a user view point
as a 4x4 matrix.

Can any active VisAD programmers suggest tools
to help define J3D matrices?

3. Applications would need to keep track of
progress through a sequence of fetch, analyze and
display data. It would be nice if the display "please
wait" would give percent done, but sorry to say it
doesn't.

4. a) Perhaps the Unidata folks can help with this
(or perhaps Tom W)?

4. b) Jeff McWhirter recently created the CachedFlatField
and related "Cache" classes, that I think are better than
the olf FileFlatField. Hopefully he or someone can
comment on these.

Best regards,
Bill Hibbard

-----Original Message-----
From: Marius Schmidt <mariuss@xxxxxxxxxxxxxxxxxxxxxxxxxx>
To: visad@xxxxxxxxxxxxxxxx
Sent: Wed, Jul 14, 2010 6:14 am
Subject: [visad] HowTo Questions: gray scale, shader gray scale, viewers position, process monitor and netcdf access to large files

Hi again VisAD community,

as my work progresses I fall more and more in love with the ease of use
of the VisAD library :-). But for today I do not only have laud but also
a bunch of questions I hope you can help me with:

1. Gray Scale:
a) I have learned from the tutorial and documentation, that I have to
create a custom lookup table to provide a gray scale mapping using
Display.RGB(A). If I only map to gray in a 3D display I was wondering,
if internally 24 (32) bit texture are used nevertheless? If yes, is it
possible to enforce the use of an 8-bit luminance texture instead to
reduce memory consumption and allow bigger datasets uploaded to GPU memory?

b) Before I started working with VisAD I experimented with some fragment
shader based application of lookup tables as explained in some
literature. I searched the library for the usage of Shader programms but
did not find any. Am I guessing right that color table is applied to
data before uploading it to the GPU? At which place might it be possible
and a good idea to implement a shader based lookup table for real-time
coloring of depictions (by only exchanging the lookup map stored as
lookup texture in GPU memory and accessed by a fragment shader)?

2. Viewers position:
I have not found a way yet to Setup the initial users view point viewing
direction, I guess I overlooked something, can you help me out ?

3. Process monitor
Some calculations or data fetching processes in VisAD take longer than a
few seconds and I would like to display their progress using a process
monitor showing the user, that there is still something going on. I have seen, that as soon as the display is up and there are calculations going
on a "please wait" message is being displayed. But that does not work
for initial pre-displayed processes like fetching and analyzing data of
a bigger Netcdf dataset. Is there a hook to ask Visad how many percent
of a job is already processed ?

4. Netcdf
a) I have seen that there is Plain as a reader for NetCDF datasets. I
transformed one of the dicom image sets available at the human visible
project into netcdf format, but without attention to any convention like
CF. Following the VerySimple and Simple example of the developers guide
did not really worked for me, so I set the MathType, FunctionType and
Set informations up manually and handed them over to a FlatField. Then I
used Plain only to read the sample values from the netcdf file into the
FlatField in reversed order. It works allright but I am wondering what
to keep in mind, that the plain reader works innately. How do I have to
prepare my NetCDF files, which conventions are known to Plain?

b) I shall try to visualize some of the measuring results of the
Coltrims experiment (for your interest:
http://hsb.uni-frankfurt.de/web/research/atomic/coltrims/).
Unfortunately the data files come in chunks of more than 10 GB each. I
found that there are classes called VirtualData, FileFlatField, etc. and
hope, that my guess is right. Are they are somehow intended to be used
for accessing datasets that do not fit into memory? How do I utilize
them for fast retrieving of slices in dimension of 500MB? I do not have
the heart yet trying to access one of those files, because I did have
not really understood, how to use them, and  I do not want to freeze my
system instantly :-D

Best regards,
Marius

_______________________________________________
visad mailing list
visad@xxxxxxxxxxxxxxxx
For list information, to unsubscribe, visit: http://www.unidata.ucar.edu/mailing_lists/