Make TransparentRenderingInfo public

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Make TransparentRenderingInfo public

Tom Robert
One of the changes to 1.6 is that com.sun.j3d.utils.scenegraph.transparency.TransparencySortGeom has been renamed and moved to media.j3d.TransparentRenderingInfo. This is at least what is returned by the TransparencySortController Comparator after moving to 1.6. The problem is that TransparentRenderingInfo has package space making it impossible to cast it and get access to the Shape3D and squared distance and other data provided. Is it possible to make this class public?

We use this functionality in the render hud elements last so they are always on top of the 3D geometry. It is also used by the hud elements to achieve painters algorithm. So we are very interested in keeping this functionality in Java3D 1.6.

I would also like to thank the people involved for keeping Java3D alive :-) Keep up the good work!

 
Reply | Threaded
Open this post in threaded view
|

Re: Make TransparentRenderingInfo public

gouessej
Administrator
Hi

If TransparencySortGeom was public, TransparentRenderingInfo should be public too. Otherwise, if there is no particular concern, why not driving it public anyway?

@Harvey What is your opinion about that?

Edit.: Harvey makes a great job, big kudos to him and to all other occasional contributors, August and the others.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Make TransparentRenderingInfo public

hharrison
In reply to this post by Tom Robert
Sorry for the API break.

I should have killed the old j3dutils classes and interfaces when I replaced them in the core.

Currently in 1.6:

com.sun.j3d.utils.scenegraph.transparency.TransparencySortController is now unused and has _no_ effect

see:

javax.media.j3d.TransparencySortMap
which provide equivalent funcitonality using the javax.media.j3d.TransparencySortGeom
interface.  The TransparentRenderInfo has never been public in java3d and I'm not sure you should even need it as the same API is still being provided by the new interface....please correct me if I have missed something.

So, I think the best bet is to kill the old classes and then we can discuss anything missing in the new interface at that point...seem fair?

Harvey
Reply | Threaded
Open this post in threaded view
|

Re: Make TransparentRenderingInfo public

Tom Robert
My mistake. I did not know about TransparencySortMap. I used trancparencySortController which gave callbacks with TransparentRenderInfo instances. So it seems that it still have some effect. I did not notice that TransparentRenderInfo inherited from TransparencySortGeom that have all the functionality I needed. Anyway, after using TransparencySortMap things seems to be working as expected again :-)

The API break is perfectly fine. It was a bad design from the beginning to have the core depend on com.sun.j3d.util.

Thank you for the help!
Reply | Threaded
Open this post in threaded view
|

Re: Make TransparentRenderingInfo public

gouessej
Administrator
In reply to this post by hharrison
hharrison wrote
I should have killed the old j3dutils classes and interfaces when I replaced them in the core.
Please mention which classes replace those old classes when you release another version of Java3D.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Make TransparentRenderingInfo public

hharrison
Agreed, it was bad form on my part to not mention this, I really thought I could make it compatible without people noticing...and then forgot to actually wire it up.  Looking closer, I think it would be possible to make the old API work on top of the new core classes.....but I'm not sure I care to do so.  I'll just kil the old util classes, and put a note of the new class locations....first API addition I've made to Java3d in all this time.

Harvey