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.

Observe

  • All target operations use mouseover to enable the operation.
  • The three orthogonal planes are the source objects for WRM dragging.
  • The left (red) target uses full WRM coordinate mapping, meaning that target manipulation occurs relative to the source planes throughout the operation. The drag will only start and continue as long as the cursor stays over a source plane.
  • The middle (green) target uses quasi-WRM coordinate mapping, meaning that target manipulation occurs relative to the source plane at the start of the operation. The drag must start over a source plane but can continue beyond it because it uses a picking plane.
  • The bottom (blue) target uses pseudo-WRM coordinate mapping, meaning that target manipulation occurs relative to a predefined source object, specifically the bottom plane. The drag does not rely on the source planes to start or continue.
  • For WRM and quasi-WRM translation, at drag start the target origin jumps to the source position under the cursor. The target does not appear stuck to the cursor throughout the drag.
  • For pseudo-WRM translation, the target does not jump, and it appears stuck to the cursor throughout the drag regardless of viewing angle.

The first code sample following is from the WrmMapping example class. It shows only those portions that pertain to WRM manipulation. Notice that absolute input dragging is used, and that the three orthogonal planes in the scene serve as the source objects. The utility building blocks buildWrmTranslationMapper, buildWrmSpher-eMapper, and buildStickWrmTranslationMapper from the IntuitiveBlocks class provide WRM mapping, which are also shown below. The first two blocks take a WrmPlugin as one of its input parameters, and combine it with other intuitive map-ping blocks, including source space relative origin filtering, to form modules specialized for a given type of geometric manipulation. The third block combines a target picker and a PseudoWrmDragPlugin in a convenient package for WRM dragging with a sticky cursor.

Notice that the WRM source picker is configured so that all hits are checked, not just the closest one. For true WRM, this allows picking during the drag to correctly determine the hit position on the underlying source planes even when the target object is dragged behind other target objects.

Setup for various forms of WRM mapping
Filename: J3duiBook/ examples/ OverEnabling/ WrmMapping. java
	
...
// setup WRM 
/// build source plane X 
... 
/// build source plane Y 
... 
/// build source plane Z 
... 
/// build source picker 
ArrayList wrmSourceList = new ArrayList(); 
wrmSourceList.add( planeX); 
wrmSourceList.add( planeY); 
wrmSourceList.add( planeZ); 

PickEngine wrmSourcePicker = new PickEngine( 
 getWorld().getSceneRoot(), wrmSourceList); 
wrmSourcePicker.setHitAll(true); 

// setup manipulation controls 
/// translation draggers, first button 
InputDragSplitter absXlate = new InputDragSplitter(); 

ActuationBlocks.buildAbsoluteDragger(absXlate, 
	 getView(), Input.BUTTON_FIRST, 
 Input.MODIFIER_NONE, Input.MODIFIER_NONE); 
... 


/// manipulation mappers 
InputDragTarget mapper; 

//// WRM: world translation, source rotation 
mapper = IntuitiveBlocks.buildWrmTranslationMapper( 
 affineWrm, new WrmDragPlugin(null, wrmSourcePicker), 
 false, false); 
absXlate.addEventTarget(mapper); 

mapper = IntuitiveBlocks.buildWrmSphereMapper( 
sphereWrm, new WrmDragPlugin(wrmSourcePicker), 
	true, true); 
absRotate.addEventTarget(mapper); 

//// Quasi-WRM: world translation, source rotation 
mapper = IntuitiveBlocks.buildWrmTranslationMapper( 
 affineQWrm, new QuasiWrmDragPlugin(null, 
 wrmSourcePicker), false, false); 
absXlate.addEventTarget(mapper); 

mapper = IntuitiveBlocks.buildWrmSphereMapper( 
 sphereQWrm, new QuasiWrmDragPlugin(wrmSourcePicker), 
 true, true); 
absRotate.addEventTarget(mapper); 

//// Pseudo-WRM: picked translation, fixed rotation 
mapper = IntuitiveBlocks.buildStickyWrmTranslationMapper( 
 planeY, affinePWrm, getWorld().getSceneRoot(), 
 true, true); 
absXlate.addEventTarget(mapper); 

mapper = IntuitiveBlocks.buildWrmSphereMapper( 
 spherePWrm, new PseudoWrmDragPlugin(planeY, 
 affinePWrm), true, true); 
absRotate.addEventTarget(mapper); 
...
	

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