Trz, Bill, You bring up some good points. Thanks for clearing it up.
Gili On Sat, 9 Aug 2003 16:04:08 +0200, trz wrote: >Gili wrote: > > Hi, > > > > I've spent the past three weeks reading the Java3D tutorial >and coming from a > > world of J2SE and some J2EE background I find the entire Java3D API >very ugly. I can > > fully appreciate the fact that a lot of this uglyness came from >OpenGL (which in itself is a > > very poorly designed API) but I mean, why does Java3D have to match >it this much? > >Hi, >you are the first one I hear saying this thing. >I'm not an OpenGL expert, but I do not agree. It's a low level api, but >I've not seen this "very poor design". > > > An example of what I mean: > > > > - Why are there like 3-5 different places to specify color attributes >and then during > > runtime only 1 out of all these colors actually gets used depending >on your settings? > > There should be a single location to set colors and that's it. > >I think there are two places for color: vertex color or material. >You use just one of these, depending on what you need (just as in j2ee >you have servlet vs jsp or stateless/statefull/entity beans to choose >from or different List/Set kinds from java.util). > >If you want to display something like a blue sphere lighted by a red >light with a yellow "background" light you have to set material and >light parameter correctly. This is simply because real objects does not >have a "unique simple color" and to simulate some lighting effects that >you see in the real world a single color is not enough. > >If you just want a red sphere you can set ambient and diffuse color to >red and do not worry about other params. > >Even in java.sql.Connection you have something as >setTransactionIsolation, setSavepoint and three different types of >Statement. And you need to use _five_ different objects just to do >"select * from table". But for typical use that is not so complicated. >And a > >ResultSet rs = new ResultSet("select ..."); > >could have been much more simple, but probably after the first >experiments that would not be much used, for the complexity to handle >slighty more complex cases. > > > > - Why does Rendering attributes have a depthOffset attribute that >basically is used to > > "tweak" rendering because some implementations won't draw wireframe >spheres and > > filled spheres to the same radius and you end up with "stiching"? I >mean, this is > > ridiculous.. Java3D should guarantee that regardless of the >underlying implementation > > when I say radius 5 for a wireframe or filled version of some polygon >it means the same > > thing. This is common sense people.. > >I think this is a quite rare problem. AFAIK this param is relevant just >when you first draw a filled polygon and then the wireframe version in >the same place (to have both surface and wireframe visible togheter). >Polygons and lines are handled differently (maybe also at hardware >level, but I do not know) and so you may have strange effects (something >at pixel level, it's not the readius to be different, just how it's >mapped to the screen). >The value for depthOffset to use in this case depends on the shape you >are drawing and on its orientation and other params, so there is not a >simple default value for Java3D to use. > > > I do fully appreciate that Java3D is a great API in itself in >that it is cross platform > > and hides a lot of other OpenGL uglyness .. so it's "less ugly" but >still.. why do some of > > the above features exist at all? > >Because to achieve some things you need those. >A higer level api should not simplify things limiting what you can do to >just the simplest ones. >How do you decide what to leave out? Scientific visualization, CADs and >games needs different features. > > > Why can't we have a "pure API" like J2SE? I mean, it > > has some issues but when you look at it overall you can't help but be >impressed with > > how well designed it was and how generally clean it is. > > > >I do not think Java3D is much worse than j2se. Some parts of j2se can be >very "abstract" (like java.util, java.io) and looks very clean. But when >you look at more specific packages (rmi, security, swing, xml) they all >at first looks more confusing. >3D graphics is also quite complex in itself. > >I think that, IMHO like with most java api, you need to write your own >app specific higer level interface to hide all the lower level details >that are not relevant for your app. > > >Bye > >Lorenzo > >======================================================================= ==== >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". =========================================================================== 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".