advertisement
javaboutique
Search Tips
Articles  |   Tutorials  |   Reviews  |   Tools  |   by Category  |   by Date  |   by Name  |   Submit  |   Source  |   Forums  |  
javaboutique
Browse DevX


Partners & Affiliates











advertisement

Reviews : Java Books : 3D User Interfaces with Java 3D :


Title: 3D User Interfaces with Java 3D
ISBN: 1884777902
US Price: $49.95
© Manning Publications Co.

19.3.2 Example: DrmMapping

This example demonstrates DRM of control inputs.

See
The virtual world contains four target objects as it initially displays: three in a central column (red, green, blue) and one to the right (magenta). A screen shot is provided in figure 19.5.

Do

  • Drag the mouse (first button with SHIFT) in the display or use the ARROW keys (with SHIFT) to orbit the view in heading and elevation about the world origin.
  • Drag the mouse (first button) on the top (red) target or use the ARROW keys to translate it along the display X-Y axes.
  • Drag the mouse (first button) on the middle (green) target or use the ARROW keys to rotate it about the display Y axis.
  • Drag the mouse (first button) on the bottom (blue) target or use the ARROW keys to scale it along the display X-Y axes.
  • Drag the mouse (first button) on the right (magenta) target or use the ARROW keys to roll the target like a trackball relative to the display.
  • Repeat the drag operations from different view directions.

Observe

  • All target operations use mouseover to enable the operation.
  • All coordinate mapping uses DRM, meaning that manipulation of targets occurs relative to the display and will always seem intuitive regardless of view direction.

The first code sample below is from the DrmMapping example class. It shows only those portions pertaining to the translation target and DRM mapping. DRM mapping is provided by the utility building block buildDrmTranslationMapper from the IntuitiveBlocks class, which is shown in the second code sample. This block and others like it combine the framework's intuitive mapping blocks into individual modules specialized for a given type of geometric manipulation.

Notice in the example code how two different forms are used to specify the DRM mapper's source space reference node. The first case, for DRM translation, uses dynamic source node specification. It specifies the source node as null, indicating that the source node is to be defined by the view associated with the input drag event's source display. For this form, the local-to-Vworld read capability must be set on all the view platforms in the application from which the mapper might receive events. The second one, for DRM rotation, uses static source node specification. It sets the source node explicitly as the view object, in which case the transform read capability is automatically set on the view object by the DRM plug-in. This approach is simpler, but can only be used if the application has a single view.

DRM mapping, with dynamic and static source view
Filename: J3duiBook/ examples/ OverEnabling/ DrmMapping. java
... 
// setup manipulation targets 
/// translation target 
AffineGroup affineXlt = new AffineGroup(new TestThing( 
 TestThing.BOX_TRANSLATION, TestThing.BALL_DEFAULT)); 

affineXlt.getTranslation().initActuation( 
 new Vector4d( 0, 3, 0, 0)); 
getWorld().addSceneNode( affineXlt); 
... 
// setup manipulation controls 
/// manipulation draggers, first button 
InputDragSplitter relDrag = new InputDragSplitter(); 

ActuationBlocks.buildRelativeDragger(relDrag, 
 getView(), Input.BUTTON_FIRST, 
 Input.MODIFIER_NONE, Input.MODIFIER_NONE); 

/// manipulation mappers 
InputDragTarget mapper; 

//// Ex: let event source display define source node 
getView().getView().getViewPlatform().setCapability( 
	 Node.ALLOW_LOCAL_TO_VWORLD_READ); 

mapper = IntuitiveBlocks.buildDrmTranslationMapper( 
	 affineXlt, null, true); 
relDrag.addEventTarget( mapper); 

//// Ex: use view object as source node 
mapper = IntuitiveBlocks.buildDrmRotationYMapper( 
 affineRot, getView(), true); 
relDrag.addEventTarget( mapper); 
...
Utility block with mapping for DRM translation
Filename: J3duiBook/ lib/ j3dui/ utils/ blocks/ IntuitiveBlocks. java
... 
/** 
Creates an intuitive drag mapper and corresponding source 
drag mapper, configures them for DRM translation in view X-Y, 
and connects them to the target object. 
@param target Target object. 
@param view Source display. If null drag source is used. 
@param cumulative True if drag actions are cumulative. 
@return New building block. 
*/ 
public static final InputDragTarget 
 buildDrmTranslationMapper(AffineGroup target, 
 AppView view, boolean cumulative) { 

 // use target translation node as source space 
 DirectSourceDragPlugin plugin = 
  new DirectSourceDragPlugin( 
 target.getTranslation().getTargetNode()); 

 // build source mapper for target X-Y translation 
 SourceDragMapper mapper = new SourceDragMapper( 
  target.getTranslation(), plugin); 
 mapper.setCumulative(cumulative); 

 // build DRM mapper 
 DrmDragPlugin drmPlugin = new DrmDragPlugin(); 
 if(view!= null) drmPlugin = new DrmDragPlugin(view); 

 IntuitiveDragMapper drmMapper = new IntuitiveDragMapper( 
  mapper, drmPlugin); 

 // scale input drag 
 return new InputDragFilter( drmMapper, 
  new ScaleInputDragPlugin(new Vector2d(.025, .025))); 
 } 
...

How to Add Java Applets to Your Site

New on the Java Boutique:

New Review:

Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling API boasts simplicity, ease-of-integration, a well-rounded feature set, and it's free!

New Applet:

Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA sequences into three useful formats.

Elsewhere on internet.com:

WebDeveloper Java
Lots of Java information on webdeveloper.com

WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.

ScriptSearch Java
Hundreds of free Java code files to download.

jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.

 Microsoft Visual Studio 2010 Showcase
 Avaya Developer Showcase
 MSDN Spotlight
 PHP for Windows Showcase
XML error: undefined entity at line 39
advertisement
Receive Articles via our XML/RSS feed
Receive Articles via our XML/RSS feed

JavaBytes
Internet Cyclone
This powerful, easy-to-use, internet optimizer is for Windows 95, 98, ME, NT, 2000 and XP. It's designed to automatically optimize your Windows settings, boosting your Internet connection up to 200%.

Windows 7: From Beta to Final Code in One Year
Google Shows Off Chrome OS, Releases Source
Microsoft Shows Off Silverlight 4, IE9 Plans
Metasploit Expands Vulnerability Test Framework
HyperCard Reborn?
Fedora 12 Takes Aim at Linux Networking
Top Supercomputer Nearly Doubles in Speed
Fedora 12 Linux Tackles Virtualization
Apple Gives iPhone Developers App Status Tracker
Novell Sets OpenSUSE 11.2 Free

Creating Custom Export Filters for StarOffice with XSLT
WPF Wonders: Using DataTemplates
Crystal Reports Family Offers Options for Developers
Avaya Aura Session Manager video
Avaya Aura Overview video
Exploring HTML 5's Audio/Video Multimedia Support
Overriding Virtual Functions? Use C++0x Attributes to Avoid Bugs.
Understanding the Cloud Computing Security Vulnerabilities
Cisco and IBM Target a Greener World
Upgrade to Visual Studio 2010 with the Ultimate Offer

Advertising Info  |   Member Services  |   Contact Us  |   Help  |   Feedback  |   Site Map  |   Network Map  |   About

internet.commediabistro.comJusttechjobs.comGraphics.com

Search:

WebMediaBrands Corporate Info

Legal Notices, Licensing, Permissions, Privacy Policy.
Advertise | Newsletters | Shopping | E-mail Offers | Freelance Jobs