NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
Hi Donna, > >Yes, you can do anything you want with the getMatrix() > >and setMatrix) methods of ProjectionControl. For a > >DisplayImplJ3D, this is just the standard Java3D 4x4 > >matrix. You can create an extension of the MouseBehaviorJ3D > >class to interpret mouse events in new ways. Your extension > >must have the constructor signatures that takes a > >DisplayRendererJ3D argument, then you pass the class of > >your extension to DisplayRendererJ3D constructor that > >takes the 'Class mbj3dClass' argument. I should have said "... pass the class of your extension to DefaultDisplayRendererJ3D constructor ...". > I was wondering if I might have a few signposts here; what methods > in the extension of MouseBehavior3D would need to be implemented? Or > would I need to create a new version of MouseHelper? The main method you need to extend is processStimulus(). Note that is delegates its work to the processEvent() method of its MouseHelper, but that's only so our J2D and J3D code can share their logic in MouseHelper. I think your extension of MouseBehaviorJ3D could dispense with MouseHelper. Or you could process certain events right in processStimulus() and pass other events to MouseHelper.processEvent() (I've never tried this, so cannot be sure it will work). Or you could define an extension of MouseHelper and construct an instance in the constructor of your MouseBehaviorJ3D extenson - that way your code would look a lot like the current VisAD code. To write your event handling logic, I'd suggest cut and paste editing of MouseHelper. > On a different note, is it possible to have "pick-like" things happen on > a hover, rather than on a "click"? (Such as popping up information on the > point you are over) Note that MouseHelper.processEvent() does catch and process MouseEvent.MOUSE_MOVED events. All it does is notify listeners about them, but you could use them to trigger the MouseHelper logic normally triggered by mouse clicks and/or drags. You'd have to work out what kinds of user mouse gestures did what. Good luck, Bill
visad
archives: