GraphicsContext3D.[add/set/insert/remove]Light().  The model transform
in place at the time [add/set/insert]Light() is called is used to
transform the light parameters.  Region of influence and scoping are
ignored - all lights in the list apply to things that are drawn with draw().

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
>
>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".

Reply via email to