Yep, I think I finally got it. I just had some problems computing the
total xform above the shape. Now I think my problem is lighting... none
of the objects are lit. How do I do the lighting?? I want these
objects to be lit just as if they were still in the scene.
-Lee
> -----Original Message-----
> From: Doug Twilleager [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, April 24, 2001 2:32 PM
> To: [EMAIL PROTECTED]
> Subject: Re: [JAVA3D] Range ordering of transparent objects
>
>
> What you are doing sounds like it should work. I have attached
> a modified AppearanceMixed that uses setModelTransform(). It isn't
> doing what you need it to do, but it gives you an example of
> using it.
>
> Doug Twilleager
> Sun Microsystems
>
> >MIME-Version: 1.0
> >Subject: Re: [JAVA3D] Range ordering of transparent objects
> >Comments: To: Doug Twilleager <[EMAIL PROTECTED]>
> >To: [EMAIL PROTECTED]
> >
> >Doug,
> >
> >I appreciate your help. I've spent the morning doing some
> rearranging
> >and setting up for this. It's not quite working for me yet, but I'm
> >pretty sure I know why.
> >
> >I have the transform from each Shape to virtual world
> coordinates. But
> >I think I may be missing the part of the transform to go from virtual
> >world to eye coordinates. Can you give me what you consider
> to be the
> >set of steps to do this?
> >
> >For example:
> >
> > VW
> > |
> > Locale
> > |
> > ------------
> > BG1 BG2
> > | |
> > G1 TG3
> > | |
> > TG1 ViewPlatform
> > |
> > TG2
> > |
> > S3D
> >
> >Let's say I want to draw the shape S3D in immediate mode
> after hacking
> >it off under G1. I compute the transform3D (xform1) for the
> shape that
> >includes TG1 and TG2, and I also get the transform from G1 to virtual
> >world coordinates.
> >
> >Right now, my code looks something like:
> >
> > G1.getLocalToVworld(parentXform); // G1 to virtual world
> > tempxform.mul(parentXform, xform1); // make S3D to
> virtual world
> > gc.setAppearance( S3D.getAppearance() );
> > gc.setModelTransform( tempxform );
> > gc.draw( shape );
> >
> >I use TG3 to move the view around in the scene. Am I
> missing TG3 in my
> >code? Actually, I guess I'm asking exactly how the argument to
> >"setModelTransform" should be created.
> >
> >I swear if I get this going I'll put it in the FAQ... ;)
> >
> >-Lee
> >
> >> -----Original Message-----
> >> From: Doug Twilleager [mailto:[EMAIL PROTECTED]]
> >> Sent: Monday, April 23, 2001 11:18 PM
> >> To: [EMAIL PROTECTED]
> >> Subject: Re: [JAVA3D] Range ordering of transparent objects
> >>
> >>
> >> Well, it looks like you have found a performance trap in
> detach/attach
> >> of OrderedGroup. Let's try this a different way. If we
> examine the
> >> order of operations in the Renderer thread, it looks like this:
> >>
> >> Canvas3D.preRender();
> >> Render opaque objects
> >> Render OrderedGroup objects
> >> Canvas3D.renderField();
> >> Rendertransparent objects
> >> Canvas3D.postRender();
> >> Swap buffers
> >> Canvas3D.postSwap();
> >>
> >> Since you are trying to render a collection of objects in
> a specific
> >> order, and they fall into the OrderedGroup catagory, an alternative
> >> approach is to render your ordered objects using the
> GraphicsContext3D
> >> in the Canvas3D.renderField() callback. This is pretty
> much the same
> >> place that OrderedGroup would have rendered them. And
> since you have
> >> references to all the objects, and are sorting them, it
> would be easy
> >> to render them there. As long as the geometry was pretty
> >> much a one to
> >> one relationship with OrderedGroup children, you won't loose any
> >> performance from state sorting. This technique should work well.
> >>
> >> Doug Twilleager
> >> Sun Microsystems
> >>
> >> >To: "'Doug Twilleager'" <[EMAIL PROTECTED]>
> >> >Cc: "JAVA3D-INTEREST (E-mail)" <[EMAIL PROTECTED]>
> >> >Subject: RE: [JAVA3D] Range ordering of transparent objects
> >> >MIME-Version: 1.0
> >> >
> >> >Doug,
> >> >I turned off compiling of my scene and placed a
> BranchGroup above my
> >> >OrderedGroup. Next, I changed all my child nodes to plain
> >> Group nodes.
> >> >Still was very slow. Then I turned off all reordering and
> >> left *just*
> >> >the detach/attach of my OrderedGroup. Still slow. Finally,
> >> I did some
> >> >profiling....
> >> >
> >> >long time1 = System.currentTimeMillis();
> >> >for(i = 0; i < 5; i++)
> >> >{
> >> > myBranch.detach();
> >> > myParent.addChild( myBranch );
> >> >}
> >> >long time2 = System.currentTimeMillis();
> >> >System.out.println(" AVG TIME = " + ((float)(time2-time1)
> * 0.2f) );
> >> >
> >> >AVG TIME = 46.0
> >> >AVG TIME = 70.200005
> >> >AVG TIME = 50.0
> >> >AVG TIME = 74.200005
> >> >AVG TIME = 146.2
> >> >AVG TIME = 84.200005
> >> >AVG TIME = 66.200005
> >> >AVG TIME = 90.0
> >> >AVG TIME = 66.200005
> >> >AVG TIME = 264.4
> >> >AVG TIME = 76.200005
> >> >AVG TIME = 108.200005
> >> >AVG TIME = 86.0
> >> >
> >> >These times are in milliseconds. Actually, I even changed
> it to do a
> >> >single attach/detach timing:
> >> >
> >> >AVG TIME = 70.0
> >> >AVG TIME = 90.0
> >> >AVG TIME = 60.0
> >> >AVG TIME = 90.0
> >> >AVG TIME = 841.0
> >> >AVG TIME = 90.0
> >> >AVG TIME = 151.0
> >> >AVG TIME = 90.0
> >> >AVG TIME = 140.0
> >> >AVG TIME = 90.0
> >> >AVG TIME = 80.0
> >> >AVG TIME = 120.0
> >> >
> >> >I know that Win2k timing is only good for 10ms, but
> there's a couple
> >> >pretty big ones in there. What can I do about this? If
> >> there is no way
> >> >around this, then how can I *ever* do range-ordering?? If the new
> >> >capability in 1.3 won't be available until later this year,
> >> how about an
> >> >interim release that just allows for *quick* reordering of
> >> OrderedGroup
> >> >nodes as a workaround? At least the problem would then
> be workable.
> >> >
> >> >Thx
> >> >-Lee
> >> >
> >> >> -----Original Message-----
> >> >> From: Doug Twilleager [mailto:[EMAIL PROTECTED]]
> >> >> Sent: Monday, April 23, 2001 3:17 PM
> >> >> To: [EMAIL PROTECTED]
> >> >> Subject: Re: [JAVA3D] Range ordering of transparent objects
> >> >>
> >> >>
> >> >> The only way to get the compile out of the way is to compile the
> >> >> scene without your OrderedGroup's, and then add them in after
> >> >> the compile. Other than that, I don't see any other ways
> >> >> to do this in 1.2.*.
> >> >>
> >> >> Doug Twilleager
> >> >> Sun Microsystems
> >> >>
> >> >>
> >> >> >To: "'Doug Twilleager'" <[EMAIL PROTECTED]>,
> >> >> [EMAIL PROTECTED]
> >> >> >Subject: RE: [JAVA3D] Range ordering of transparent objects
> >> >> >MIME-Version: 1.0
> >> >> >
> >> >> >Doug,
> >> >> >The only way to rearrange the children of the
> >> OrderedGroup is to do
> >> >> >attaches and reattaches of BranchGroups since I get an
> >> >> exception if I do
> >> >> >a "setChild(Node, index)" without the child being a
> >> >> BranchGroup. This
> >> >> >is from the Group.setChild() Javadoc:
> >> >> >
> >> >> >"RestrictedAccessException - if this group node is
> part of live or
> >> >> >compiled scene graph and the child node being set is not a
> >> >> BranchGroup
> >> >> >node"
> >> >> >
> >> >> >Since they are BranchGroups, I still get the overhead of doing
> >> >> >attach/detach with each child. My code for swapping
> >> >> children looks like
> >> >> >this:
> >> >> >
> >> >> > in constructor...
> >> >> > {
> >> >> > ...
> >> >> > empty = new BranchGroup();
> >> >> > empty.setCapability(BranchGroup.ALLOW_DETACH);
> >> >> > ...
> >> >> > }
> >> >> >
> >> >> > private void doReordering()
> >> >> > {
> >> >> > myBranch.detach(); // detach OrderedGroup from scene
> >> >> >
> >> >> > // Call "swapBranches" as necessary
> >> >> >
> >> >> > myParent.addChild( myBranch );
> >> >> > }
> >> >> >
> >> >> > private void swapBranches(int a, int b)
> >> >> > {
> >> >> >
> >> >> > BranchGroup b1 = (BranchGroup)myOrderedGroup.getChild( a );
> >> >> > BranchGroup b2 = (BranchGroup)myOrderedGroup.getChild( b );
> >> >> > myOrderedGroup.setChild( empty, a ); // I think this calls
> >> >> >b1.detach()
> >> >> > myOrderedGroup.setChild( b1, b );
> >> >> > myOrderedGroup.setChild( b2, a );
> >> >> > }
> >> >> >
> >> >> >What do you think I can do? Is there a way to prevent my
> >> >> OrderedGroup
> >> >> >from being compiled so I don't have to use BranchGroups for the
> >> >> >children??
> >> >> >
> >> >> >Thx
> >> >> >-Lee
> >> >> >
> >> >> >> -----Original Message-----
> >> >> >> From: Doug Twilleager [mailto:[EMAIL PROTECTED]]
> >> >> >> Sent: Monday, April 23, 2001 1:23 PM
> >> >> >> To: [EMAIL PROTECTED]
> >> >> >> Subject: Re: [JAVA3D] Range ordering of transparent objects
> >> >> >
> >> >> ><snip...>
> >> >> >
> >> >> >> If you detach the branch graph which contains the
> >> >> >> OrderedGroup, rearrange
> >> >> >> the OrderedGroup, then reattach again, you will get better
> >> >> performance
> >> >> >> that attaching and reattaching the children of the
> >> >> >> OrderedGroup individually.
> >> >> >>
> >> >> >> Doug Twilleager
> >> >> >> Sun Microsystems
> >> >> >>
> >> >>
> >> >> ==============================================================
> >> >> =============
> >> >> 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".
> >>
> >
> >=============================================================
> ==============
> >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".