Set your presentation theme:
Black (default) -
White -
League -
Sky -
Beige -
Simple
Serif -
Night -
Moon -
Solarized
H:
Jean Pierre Charalambos
Universidad Nacional de Colombia
Presentation best seen online
See also the source code
H:
- Goal
- Nub design
- Applications
- Future work
H:
Provide interactivity to application objects from any input source
in the 'simplest' possible way
V:
Three main interaction tasks (see 'A Survey of Interaction Techniques for Interactive 3D Environments', Jankowski et al):
V:
Basic camera types:
V:
V:
Post-WIMP interaction styles
N:
WIMP: "window, icon, menu, pointing device" classical 2D widgets: menus and icons
H:
Nub Design
- API considerations
- The eye
- Picking & Interaction
- Application Control
V:
Nub Design
The scene is a high-level Processing scene-graph handler
A node encapsulates a 2D/3D coordinate system
Simplicity: A scene and some nodes attached to it implement the 3MITs
V:
Nub Design
High-level scene-graph object which provides eye, input and timing handling to Processing
The scene also implements some drawing routines not present in Processing
V:
Nub Design
World
^
\
eyeScene scene;
// to be run only at start up:
void setup() {
Scene scene = new Scene();
}The scene eye is just a Node instance
V:
Nub Design
World
^
|\
1 eye
^
|\
2 3Scene scene;
Node n1, n2, n3;
// to be run only at start up:
void setup() {
Scene scene = new Scene();
// creates a hierarchy of 'attached-nodes'
n1 = new Node(scene);
n2 = new Node(n1);
n3 = new Node(n1) {
// note that within graphics the geometry is defined
// at the node local coordinate system
@Override
public boolean graphics(PGraphics pg) {
pg.sphere(50);
}
};
}Override the Node graphics(PGraphics) method to customize the node appearance.
V:
Nub Design
World
^
|\
1 eye
^
|\
2 3// to be run continously
void draw() {
scene.render();
}V:
Nub Design
- Picking -> Tag a node using an arbitrary name
- Interaction -> Converts user gesture data into a node interaction
V:
Nub Design
V:
Nub Design
Node interaction pattern:
interactNode(node, gesture...)
Tagged node interaction pattern:
interactTag(tag, gesture...) : interactNode(node(tag), gesture...)
V:
Nub Design
Override the node interact(gesture...) method and then invoke it with the node interaction or tagged node interaction patterns above.
H:
- Navigation
- Picking and interaction
- Application control
V:
All examples using a mouse
V:
V:
V:
V:
All examples using a mouse and/or a keyboard
V:
V:
H: