3D User Interfaces with Java 3D
Jon Barrilleaux
  • August 2000
  • ISBN 9781884777902
  • 520 pages

3D User Interfaces with Java 3D is a practical guide for providing next-generation applications with 3D user interfaces for manipulation of in-scene objects. Emphasis is on standalone and web-based business applications, such as for online sales and mass customization, but much of what this book offers has broad applicability to 3D user interfaces in other pursuits such as scientific visualization and gaming.

Table of Contents detailed table of contents

introduction

how to read this book

acknowledgements

about the cover illustration

Part 1 3D: the next generation

1. What’s in a name

1.1. The application

1.1.1. The familiar

1.1.2. The dream

1.1.3. The reality

1.1.4. The rebirth

1.2. The user interface

1.2.1. The primal

1.2.2. The virtual

1.2.3. The analytical

1.3. The computer system

1.3.1. The Plain Old Computer System

1.3.2. The mouse

1.3.3. The keyboard

1.4. Summary

2. Patterns and constraints

2.1. Application patterns

2.1.1. Design applications

2.1.2. Simulation applications

2.1.3. Analysis applications

2.1.4. Control applications

2.2. Application constraints

2.2.1. Goldilocks and the three dees

2.2.2. Let gravity pull

2.2.3. Creating your own reality

2.2.4. Flavors of Constraint

2.3. Summary

3. Spaces and relations

3.1. Space, the initial frontier

3.1.1. The world

3.1.2. The view

3.1.3. The display

3.1.4. The screen

3.2. Spatial coordinates

3.2.1. Right-handed system

3.2.2. Position

3.2.3. Rotation

3.2.4. Mouse coordinates

3.3. Spatial relationships

3.3.1. External view geometry

3.3.2. Internal view geometry

3.4. Summary

Part 2 3D user interface techniques

4. Control

4.1. Physical input devices

4.1.1. The keyboard

4.1.2. The mouse

4.2. Input interpretation

4.2.1. Asking the right questions

4.2.2. Other interpretations

4.2.3. Control personae

4.3. Control basics

4.3.1. Control primitives

4.3.2. Mouse gestures

4.3.3. Target actuation

4.4. Coordinate mapping

4.4.1. Movement, objects, and views

4.4.2. Direct mapping

4.5. Intuitive mapping

4.5.1. Source and target space

4.5.2. Display-relative mapping

4.5.3. World-relative mapping

4.5.4. Object picking

4.5.5. Mixed usage

4.6. Summary

5. Feedback

5.1. Feedback roles

5.1.1. Information feedback

5.1.2. Control feedback

5.2. Basic elements

5.2.1. Identifiers

5.2.2. Callouts

5.2.3. Tooltips

5.2.4. Indicators

5.2.5. Handles

5.2.6. Cursor

5.2.7. Audio

5.2.8. Sound effects

5.3. Visual attributes

5.4. Simple dynamics

5.4.1. Action-centric feedback

5.4.2. Object-centric feedback

5.4.3. Task-centric feedback

5.5. Interaction states

5.5.1. State definitions

5.5.2. Multi-Shape

5.6. Summary

6. Visualization

6.1. Data visualization

6.2. Feedback visual attributes

6.2.1. Distinction

6.2.2. Size

6.2.3. Orientation

6.2.4. Visibility

6.2.5. Density

6.3. Display space techniques

6.3.1. Display layout

6.3.2. Overlay, underlay, and overlap

6.3.3. Pseudo-display overlay

6.4. World space techniques

6.4.1. Display facing

6.4.2. Constant size

6.4.3. World overlay

6.4.4. Perfect overlay

6.4.5. Revealment

6.5. Multiple views 121 Overviews

6.6. Summary

7. Navigation

7.1. Forms of navigation

7.1.1. Spatial navigation

7.1.2. Contextual navigation

7.2. Camera techniques

7.2.1. Manual control

7.2.2. Assisted control

7.2.3. Scripted control

7.3. Summary

8. Manipulation

8.1. Control personae

8.1.1. First person

8.1.2. Second person

8.1.3. Third person

8.2. Feedback elements

8.2.1. Feelers

8.2.2. Projections

8.2.3. Skirts

8.2.4. Outlines

8.2.5. Tic marks

8.2.6. Rulers

8.2.7. Snaps

8.3. Pseudo-tactile feedback

8.3.1. Marked drag

8.3.2. Sticky drag

8.3.3. Snap drag

8.3.4. Solid drag

8.3.5. Strong grip

8.3.6. Weak grip

8.4. Snapping

8.4.1. Explicit versus implicit

8.4.2. Snap operations

8.4.3. Snap typing

8.4.4. Snap geometry

8.5. Attachment

8.5.1. Physical versus logical

8.5.2. Attachment versus snapping

8.5.3. Attachment operations

8.5.4. Detachment operations

8.5.5. Sticking

8.5.6. Linking

8.5.7. Anchoring

8.6. Specification

8.6.1. Dumb shapes

8.6.2. Smart shapes

8.7. Configuration

8.8. Summary

9. Access

9.1. In-scene grouping

9.1.1. Physical versus logical

9.1.2. Grouping operations

9.1.3. Ungrouping operations

9.2. Out-of-scene access

9.2.1. Data presentation

9.2.2. Non-Spatial Access

9.2.3. Data palette

9.2.4. Data catalog

9.2.5. Data preview

9.3. Data transfer

9.3.1. Data instantiation

9.3.2. Nonobject access

9.3.3. Data basket

9.3.4. Teleport

9.3.5. 3D drag-and-drop

9.4. Summary

Part 3 Java 3D user interface essentials

10. Java 3D introduction

10.1. What is Java 3D?

10.2. Where is Swing 3D?

10.3. Just an introduction

10.4. 3D UI roadmap

10.5. Java 3D and its friends

10.6. Java 3D resources

10.7. A moving target

10.8. Summary

11. UI spaces and the scene graph

11.1. 3D UI spaces

11.1.1. The universe

11.1.2. The world

11.1.3. The view

11.1.4. The display

11.1.5. The screen

11.2. Scene graph, et al.

11.2.1. Scene graph basics

11.2.2. Sharing subgraphs

11.2.3. Group nodes

11.2.4. Spatial transforms

11.2.5. Leaf nodes

11.2.6. Node bounds

11.3. Logistics and optimization

11.3.1. Dead or alive

11.3.2. Capability bits

11.3.3. BranchGroup and compilation

11.4. Summary

12. Lights, shapes, textures and sounds

12.1. Lights

12.2. Shapes

12.2.1. Geometry

12.2.2. Appearance

12.2.3. Transparency

12.2.4. Loading

12.3. Textures

12.3.1. Filtering

12.3.2. Transparency

12.3.3. Loading

12.4. Sounds

12.4.1. Loading

12.5. Summary

13. Actions and interactions

13.1. Spatial transforms

13.1.1. Local coordinates

13.1.2. Transform3D

13.1.3. getLocalToVworld

13.1.4. Inverse getLocalToVworld

13.1.5. Local-to-local

13.2. Object picking

13.2.1. Picking overview

13.2.2. Picking quality

13.2.3. Picking model

13.3. Behaviors

13.3.1. The behavior model

13.3.2. User inputs

13.3.3. Interpolators

13.3.4. Collision detection

13.3.5. Change detection

13.4. Summary

14. In a Java world

14.1. Swing

14.1.1. Heavyweight versus lightweight

14.1.2. Mixing Java 3D and Swing

14.1.3. Examples

14.2. Drag-and-drop

14.2.1. Drag-and-drop model

14.2.2. 3D drag-and-drop

14.3. Applets

14.3.1. Java 3D in applets

14.3.2. Real world issues

14.4. Summary

Part 4 Java 3D framework and examples

15. Why a framework?

15.1. Approach

15.1.1. Stick to the basics (when possible)

15.1.2. Sun utilities

15.1.3. Application utilities

15.1.4. Progression of examples

15.1.5. Javadoc and UML

15.2. Software organization

15.3. Running the examples

15.4. Design patterns

15.4.1. Event model generalities

15.4.2. Event model specifics

15.4.3. Building blocks

15.4.4. Splitters

15.4.5. Triggers

15.4.6. Filters

15.4.7. Mappers

15.4.8. Plug-ins

15.5. Convenience

15.6. Optimization

15.6.1. Garbage collection

15.6.2. Many small building blocks

15.6.3. Dragging, keying, and picking

15.6.4. Double versus float

15.6.5. Capabilities and compiling

15.7. Summary

16. Framework utilities

16.1. Test objects

16.1.1. Shapes

16.1.2. Lights

16.2. Application spaces

16.2.1. AppWorld class

16.2.2. AppViewclass

16.2.3. AppDisplay class

16.2.4. Example: SimpleApp

16.3. Other utilities

16.3.1. Building blocks

16.3.2. Display printing

16.3.3. Debug class

16.3.4. Assert class

16.3.5. ModelLoader class

16.4. Summary

17. Control basics

17.1. Input sensors

17.1.1. Input class

17.1.2. InputSensor class

17.1.3. MouseDragSensor class

17.1.4. KeyboardArrowSensor class

17.1.5. MouseMoveSensor class

17.1.6. KeyboardModifierSensor class

17.1.7. Example: InputSensors

17.2. Input enabling

17.2.1. InputModifierTrigger class

17.2.2. Enable classes

17.2.3. EnableInputDragFilter class

17.2.4. Example: InputEnabling

17.3. Input filtering

17.3.1. Framework

17.3.2. Example: InputFilters

17.4. Summary

18. Control actuation

18.1. Target actuation

18.1.1. Actuator class

18.1.2. Outer and inner plug-ins

18.1.3. ActuatorPlugin Class

18.1.4. TGGeometryPlugin class

18.1.5. ActuatorPlugin Revisited

18.2. Basic coordinate mapping

18.2.1. Basic requirements

18.2.2. InputDragMapper class

18.2.3. InputDragMapperPlugin class

18.2.4. DirectInputDragPlugin Class

18.2.5. InputDragMapper revisited

18.2.6. Example: Actuators

18.3. Actuator groups

18.3.1. GroupChain Class

18.3.2. ActuatorGroup class

18.3.3. ActuatorTransformGroup class

18.3.4. ActuatorTransformGroup subclasses

18.3.5. Example: ActuatorGroups

18.4. Summary

19. Control intuition

19.1. Object picking

19.1.1. PickEngine class

19.1.2. ObjectPickMapper class

19.1.3. OverEnableMapper class

19.1.4. Example: OverEnabling

19.2. Intuitive mapping

19.2.1. Source and target spaces

19.2.2. Control chain spaces

19.2.3. IntuitiveDragMapper class

19.2.4. SourceDragFilter class

19.2.5. SourceDragMapper class

19.3. Display-relative mapping

19.3.1. DrmDragPlugin class

19.3.2. Example: DrmMapping

19.4. World-relative mapping WRM

19.4.1. WrmDragPlugin class

19.4.2. QuasiWrmDragPlugin class

19.4.3. PseudoWrmDragPlugin class

19.4.4. Example: WrmMapping

19.5. Summary

20. Feedback

20.1. Interaction feedback

20.1.1. FeedbackTarget interface

20.1.2. MultiShape class

20.1.3. MultiShape subclasses

20.1.4. FeedbackTrigger class

20.1.5. FeedbackTrigger subclasses

20.1.6. Example: MultiShaping

20.2. Interaction management

20.2.1. FeedbackManager class

20.2.2. FeedbackMinion class

20.2.3. FeedbackManager subclasses

20.2.4. FeedbackGroupManager class

20.2.5. Example: TargetSelecting

20.3. Feedback elements

20.3.1. TextureShape class

20.3.2. TextureShape subclasses

20.3.3. SoundEffect Class

20.3.4. Example: TargetDecorating

20.4. Summary

21. Visualization

21.1. Change detection

21.1.1. Change poster model

21.1.2. ChangePoster class

21.2. World space techniques

21.2.1. World space classes

21.2.2. Example: DisplayFacing

21.2.3. Example: ConstantSizing

21.2.4. Example: WorldOverlaying

21.2.5. Example: PerfectOverlaying

21.3. Display space techniques

21.3.1. Display space classes

21.3.2. Example: DisplayOverlaying

21.4. Multiple displays

21.4.1. Example: MultiDisplaying

21.5. Summary

22. Manipulation

22.1. Passive feelers

22.1.1. Passive feeler classes

22.1.2. Bounding box utilities

22.1.3. Example: PassiveFeeling

22.2. Manipulation personae

22.2.1. A Better Way

22.2.2. Example: SecondPerson

22.2.3. Example: ThirdPerson

22.3. Summary 475

23. Access

23.1. Java 3D and Swing

23.1.1. FancyApp classes

23.1.2. Example: FancyApp

23.2. Java 3D and DnD

23.2.1. DndApp classes

23.2.2. Example: DndApp

23.3. Summary

24. Wrap-up

24.1. Hindsight is perfect

24.1.1. Event model

24.1.2. Event routing

24.1.3. Feedback model

24.1.4. Input sensors

24.2. The software

glossary

index

About the book

This book provides an extensive conceptual framework for 3D user interface techniques, and an in-depth introduction to user interface support in the Java 3D API, including such topics as picking, collision, and drag-and-drop. Many of the techniques are demonstrated in a Java 3D software framework included with the book, which also provides developers with many general-purpose building blocks for constructing their own user interfaces.

Applications and their use of 3D are approached realistically. The book is geared towards sophisticated user interfaces for the "everyday user" who doesn't have a lot of time to learn another application—much less a complicated one—and an everyday computer system without exotic devices like head mounted displays and data gloves. Perhaps the best description of this book is: "A roadmap from Java 3D to 'Swing 3D'."

Translation rights for 3D User Interfaces with Java 3D have been granted for Korea. If you are interested in learning where to buy this book in a language other than English, please inquire at your local bookseller.

About the author

Jon Barrilleaux is a consultant specializing in the application of 3D graphics, imaging, and virtual reality to solving real world problems. He has over 20 years experience in software development, R&D, and project management, including 14 years in 3D graphics, imaging, and information processing, and 6 years in virtual reality, augmented reality, and computer simulation. He has been involved in numerous projects to develop 2D and 3D user interfaces for research, training, electronic library, product configuration, e-commerce, and end-user applications. Barrilleaux has B.S. and M.S. degrees in Electrical Engineering from Rice University, TX.


Buy
eBook $39.99 PDF only

FREE domestic shipping on three or more pBooks