> Date: Mon, 6 Dec 1999 15:29:18 -0500
> From: Bob Gray <[EMAIL PROTECTED]>
>
> I just downloaded and installed Java 2, version 1.3. Then I installed
> Java 3D version 1.2 alpha. (Windows 95 platform. No "special" graphics
> card.) I used appletviewer to run my code.
>
> I had hoped that with this new version all my transparency problems
> would be solved. But I don't see any improvement. And in fact,
> there is a new problem.
You probably won't see any improvement unless you use the new J3D 1.2
order-independent blending modes or explicitly sort your transparent
polygons along the view vector. If your code is the same as you were
running in your previous messages to the list you'll probably just get a
permutation of the rendering order of your objects, which will just result
in a different incorrect image.
-- Mark Hood
--------------------- archived messages follow ------------------------
> Date: Tue, 24 Aug 1999 14:20:56 -0400
> From: Bob Gray <[EMAIL PROTECTED]>
>
> I have tried transparency modes of NICEST, BLENDED and FASTEST. None of
> these work for me. They do not allow the 2nd polyhedron to show through and
> leave big blck areas where the 2nd polyhedron surface should be.
>
> Can anyone tell me why?
I haven't taken a close look at your code, but I believe you're running
into a limitation of Java 3D here.
In the general case, traditional Z-buffering techniques don't work for
transparent objects. In order for the colors to be blended properly their
facets must be rendered in a view-dependent order, from back to front. This
isn't a trivial task for most applications, and Java 3D doesn't provide any
help here. You'll only get reasonable results if most of your objects are
opaque and you have only a few, non-overlapping transparent surfaces.
There are techniques that work for many cases. All opaque objects can first
be rendered using the normal Z-buffer technique. Transparent facets can
then be sorted from back to front in the view projection space using some
metric; for most objects using the centroid (averaged vertices) works OK. A
reasonable effect can then be achieved if the Z buffer values from the
opaque objects are frozen and the transparent facets rendered in their
sorted order on top of them.
This is not directly supported by Java 3D; perhaps some other users have
tackled this problem and could help you out. Your only other alternative is
to use SCREEN_DOOR, which doesn't have any view dependencies, but has other
lousy rendering characteristics, as you point out.
-- Mark Hood
-------------------------------------------------
Date: Thu, 2 Sep 1999 16:11:21 -0700
From: Kevin Rushforth <[EMAIL PROTECTED]>
Subject: Re: [JAVA3D] Transparency problems
We had a discussion on this a couple of weeks ago; maybe this should be
captured in the FAQ. The basic problem is that transparency is
inherently an order-dependent operation. For the rendering to be
correct in all cases, all triangles must be rendered from back to
front. In cases without a lot of overlapping transparent objects, you
can usually get good results by rendering all of the opaque objects,
freezing the Z-buffer, and then rendering all of the transparent
objects. However, this sometimes has the side-effect of causing
transparent objects that are further away to look like they are in
front of transparent objects that are closer. Turning on the Z-buffer
(by disabling DepthBufferFreezeTransparent) fixes this, but creates
other problems.
Without sorting your geometry--and breaking it up in the case of
intersecting objects--there is no solution. In Java 3D 1.2 we have
proposed new blending modes that will allow you to blend transparent
objects in a truly order-independent manner, but with the side effect
that you get an additive effect where two objects intersect.
--
Kevin Rushforth
Java 3D Team
Sun Microsystems
[EMAIL PROTECTED]
--------------------------------------------------
Date: Mon, 20 Sep 1999 08:46:53 -0700
From: Kevin Rushforth <[EMAIL PROTECTED]>
Subject: Re: [JAVA3D] Different transparency problem?
>From you description I can't tell if the problems you are seeing are
due to the inherent order dependency of transparency or if you have
run into a bug. If you have a simple test case, we could take
a look at it. If this is a result of the inherent order dependency of
transparent objects, then the only solutions are:
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.
2) Use the new blend modes in Java 3D 1.2 (they will be available
in the beta release, not in the impending alpha release) to select
a blend equation that isn't order dependent
3) Use screen door transparency
--
Kevin Rushforth
Java 3D Team
Sun Microsystems
[EMAIL PROTECTED]
>Date: Mon, 20 Sep 1999 08:39:27 -0400
>From: Bob Gray <[EMAIL PROTECTED]>
>Subject: [JAVA3D] Different transparency problem?
>To: [EMAIL PROTECTED]
>
>I create a scene which has 3 Spheres centered at the origin, one inside
>the other, radii 1, 2, and 3 (used to show concentric "shell" structure...).
>I set each Sphere object to have a transparency of 0.7 so you can see each
>of
>the 3 Spheres, one inside the other.
>
>But I only see 2 of the spheres! I see Spheres 2 and 3.
>
>Now, as I move the view point, always looking at (0,0,0), Sphere 2 *blinks*
>off and on! At some viewing positions, I see Spheres 1 and 3. Move the
>viewing location *ever so slightly* I see Spheres 2 and 3. Never do I see
>all
>3 spheres.
>
>Are Sphere objects made with QuadArrays? Is this a QuadArray problem,
>transparency
>problem, graphics card problem or "just" a Java 3D problem?
>
>Does anyone *know* if these transparency problems are going to be fixed in
>the
>next release?
>
>Bob Gray
===========================================================================
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".