Hi Doug

Thanks  very  much  for  your  very  informative  comparison  of  the
various  ways of  producing text  labels in  Java3D. Thanks  also for
your  Label3D code.  I had  also adapted  the Text2D  code to  create
RasterText, specifically to determine  the size of the BufferedImage.
My implementation  was a little different  in that: 1. I  was setting
the size of the BufferedImage in  powers of 2 (quite unnecessarily as
it appears from your coding) 2. I am sending in a Font and Appearance
object as input so I could reuse them for all the labels.

At the present time, I am  using RasterText for annotating the values
of a Color Bar  and the vertices of a wireframe  geometry in a SciVis
application.  The vertices  could  be  of the  order  of hundreds  of
thousands. I do  sensibly limit the user from trying  to annotate all
the vertices  of the wireframe,  but the number could  potentially be
still quite large and dynamic.

I have found it convenient to use Raster for the following reasons
in some contexts of my application ( there are other contexts where
I do use Text2D and Text3D extensively ):

1. RasterText  looks crisper.  Text2D is  susceptible to  zooming and
scaling and can potentially end up looking jagged.

2. RasterText  can be  positioned exactly  where you  want it  in the
Global Coordinate  System during its  creation, and needs  no further
effort to maintain that position in  relation to other objects in the
scene. Text2D,  on the other hand,  needs a Transform3D to  first get
translated to the point of  interest and an associated TransformGroup
to  maintain that  position.  Transformgroups, I  believe, are  quite
expensive (??).  Text3D, which  in contrast is  a *Geometry*,  can be
arranged without the above overhead.

3. The size of the Text2D label cannot be held fixed easily, and this
could be a limiting factor in some contexts, especially if the Text2D
labels are buried deep down in  the SceneGraph hierarchy. To hold the
size of  the Text2D, one would  need to calculate an  inverse scaling
transform (which may  need traversing up the  SceneGraph hierarchy to
accumulate  all  the scaling  effects)  at  the  local level  of  the
SceneGraph.  I'm  not sure  if  there  is an  efficient  alternative.

4. In my  Raster implementation, I can reuse the  Font and Appearance
objects  repeatedly. This,  of course,  can be  readily rectified  by
overloading the Text2D constructors.

What would  be nirvana is a  Text Label that: can  maintain its size,
can be  antialiased, can be  manipulated like an  OrientedShape3D, is
not polygonized like  the Text3D and thus cheaper,  can be positioned
explicitly  at  a  fixed  point  and can  be  made  to  maintain  its
orientation along a *fixed direction*. Some of the above, are perhaps
readily possible with the current API.

Many SciVis  applications lack  good Text support  and, consequently,
one is  forced to grab an  image of the  screen and take it  to other
software where the image can be annotated. I have noticed that Java2D
text looks  very good (  though, here, I  may be comparing  apples to
oranges). The support  for getting publication quality  output from a
Java3D application would be very very welcome.

Thanks

Raj Vaidya


_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.

===========================================================================
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