Yow! Talk about convoluted interactions. I figured out what the
problem is (kind of)...
Lets start from the present and work back in time.
1) Transparency is a bit schizophrenic. When a shape is made
transparent and that shape involves a texture with transparency the
spec is somewhat unclear as to what can and should be made
transparent. From empirical evidence, in all transparency modes
except SCREEN_DOOR if I use a texture (a GIF to be specific) with its
transparency set then the shape that the texture is on will always
appear transparent. The transparency factor has no affect, even if I
set the factor (not the mode) to zero. Screen door transparency
affects the texture regardless of the texture's transparency.
As I recall, VRML was a bit less ambiguous and perhaps a bit more
intuitive about this, with texture and shape transparencies being
independant and additive (i.e. if the shape was less that clear it
could be seen through the transparent portion of the texture -- at
least for Cosmo).
As it turns out the billboard shape and the "normal" shapes I used
were both textured with the texture transparency set and hence the
shape transparency had to be enabled.
2) As we all know transparent shapes do not render correctly. Its
worse than not correct it's down right weird the way they overlap and
interact (at least on my FireGL 1000 Pro). From what I recall of
OpenGL (its been a while and it could have been because of the
hardware) either multiple transparency worked or some particular shape
stopped being transparrent. At least it didn't get all weird with the
transparency effect changing dynamically as other objects were
interposed.
3) Because billboard is always running open loop it tends to clog up
the behavior queue. Combined with GC (my guess) makes for some rather
unpredictable delays in when things get rendered.
4) Given all the above, this is my best guess at what was happening.
Apparently while Billboard is really active (i.e. actually changing
its position not just running open loop) it would draw its transparent
shape first and wouldn't let the non-billboard shape render at all.
Who knows why. When the billboard stopped moving then the behavior
queue would clear after a while and the non-billboard shape would
finally come up for air and pop to the front.
5) For grins I added the billboard and the non-billboard shapes to an
OrderedNode. The shape that was truly in front always appeared in
front. The order that the shapes were added to the ordered group did
NOT make a difference.
The fact that the shapes do not have to be ordered in order for the
transparently textured transparent shapes to render correctly struck
me as odd. I confirmed it with other non-billboard shapes (i.e.
billboard has nothing to do with it). This is not what Kevin had
indicated in his recent email concerning transparency...
1) Break up your geometry into non-intersecting objects and
order them (using an OrderedGroup node) such that they are
rendered from back to front.
Perhaps the order is only unimportant if transparently textured
transparent shapes are involved.
BTW: I hope the Sun team has a better set of test cases for 1.2 than
that used for 1.1. Multiply nested and inter-dependant bugs such as
these (and those in the view model and those in the behavior/collision
model) are not conducive to productivity or confidence building.
--jon
> Date: Mon, 20 Sep 1999 08:51:15 -0700
> From: Kevin Rushforth <[EMAIL PROTECTED]>
> Subject: Re: what is inside Billboard?
>
> I can't think of any reason why this should be the case. It might be
> a bug.
>
> --
> Kevin Rushforth
> Java 3D Team
> Sun Microsystems
>
> [EMAIL PROTECTED]
--
____________________ Peculiar Technologies ____________________
Jon Barrilleaux 3800 Lake Shore Ave. Purveyors of
[EMAIL PROTECTED] Oakland, CA 94610 Alternate Reality
510.444.4370 voc Augmented Simulation
510.444.0231 fax www.augsim.com and 3D Solutions
===========================================================================
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".