programming the pip hannes kaufmann institute of software technology and interactive systems vienna...

21
Programming the PIP Hannes Kaufmann Institute of Software Technology and Interactive Systems Vienna University of Technology Studierstube Day 2003

Upload: margaret-knight

Post on 31-Dec-2015

215 views

Category:

Documents


1 download

TRANSCRIPT

Programming the PIP

Hannes Kaufmann

Institute of Software Technology and Interactive Systems

Vienna University of Technology

Studierstube Day 2003

Overview

• Types of widgets

• New widgets

• PIP sheets

• Speech enabled widgets

• Skins

• Limits and design issues

Types of widgets

SoButtonKit:• SoPushButton• SoRadioButton• SoToggleButton

SoDraggerKit:• SoSlider • SoDial

New Old

SoBase3DButton:• So3DButton• So3DRadioButton• So3DCheckBox

SoBase3DSlider:• So3DSlider

SoBase3DDial:• So3DDial

New widgets

2 fields:• SoSFBool highlighted• SoSFBool on

4 states (parts):• onGeometry• offGeometry• highlightedOnGeometry• highlightedOffGeometry

New widgets – simple examplesDEF RESET_BUTTON SoPushButton{

width 5 depth 5 height 2 }

DEF TOGGLE_BUTTON SoToggleButton{

hysteresisBoxScale 2.0 width 5 depth 5 height 2 }

DEF LIGHT_DIAL SoDial{

minValue 0maxValue 1

width 5 depth 5 height 7}

PIP coordinate system

PIP sheets

templatePipSheet SoPipSheetKit {pipParts (PIP_BODY | SHEET | SHEET_TABS |

SYSTEM_TABS)autoScaling FALSEsheetsRoot So3DSeparator {

boundingBoxCheck FALSE eventMask BM_ALL_EVENTS }

Elements of a PIPDefault Skin (…workspace\graphix\skinWs1.iv)

User-defined Skin(…workspace\graphix\skinWin.iv)

Sheet BarWindow BarSystem Bar

In addition: Task Bar

PIP sheets

templatePipSheet SoPipSheetKit {pipParts (PIP_BODY | SHEET | SHEET_TABS | SYSTEM_TABS)autoScaling FALSEsheetsRoot So3DSeparator {

boundingBoxCheck FALSE eventMask BM_ALL_EVENTS }

sheets DEF AllSwitch Switch { DEF MainSeparator Separator {

# new PIPsheet requires new rotation RotationXYZ {axis X angle 1.57 }

Translation { translation 0 0.0101 0 }

PIP sheets

DEF MainSheet Separator { Translation { translation 0.13 0 -0.05 }

DEF Point SoToggleButton{…..

tabTextures [Texture2 { filename "../apps/construct3d/mainmenu.gif"},…. ]

clonePipSheet TRUE}

Speech enabled widgetsDEF Plane SoPushButton{

actionEnterGestures[

SoEnterGesture{ stations [ 6 ] blocked TRUE }]actionExitGestures[

SoExitGesture{ stations [ 6 ] blocked TRUE }]actionStartGestures[

SoSpeechGesture { stations [ 6 ] blocked FALSE SpeechCommands [ "new plane" ] actionBeginSpeech TRUE },

SoButtonPressGesture{ buttonNumber 0 stations [ 6 ] blocked TRUE }

]actionEndGestures[

SoSpeechGesture { stations [ 6 ] blocked FALSE SpeechCommands [ "new plane" ] actionBeginSpeech FALSE },

SoButtonReleaseGesture{ buttonNumber 0 stations [ 6 ] blocked TRUE }

]

Speech enabled widgetsonGeometry Separator

{USE PUSHBUTTON_ON_SETDEF PLANE_ICON Group {

Separator {USE ICON_PROPERTIESCoordinate3 {

point [ -0.02 -0.0052 0.0,0.02 0.0102 0.0,-0.02 0.009 -0.02]

}FaceSet { numVertices 3 }

}}Texture2 { filename "../apps/construct3d/plane.gif" }USE PUSHBUTTON_TEXTURE_GEOMETRY

}

Speech enabled widgetsoffGeometry Separator{

USE PUSHBUTTON_OFF_SETUSE PLANE_ICONTexture2 { filename "../apps/construct3d/plane.gif" }USE PUSHBUTTON_TEXTURE_GEOMETRY

}highlightedOnGeometry Separator{

USE PUSHBUTTON_HIGHLIGHTEDON_SETUSE PLANE_ICONTexture2 { filename "../apps/construct3d/plane.gif" }USE PUSHBUTTON_TEXTURE_GEOMETRY

}highlightedOffGeometry Separator{

USE PUSHBUTTON_HIGHLIGHTEDOFF_SETUSE PLANE_ICONTexture2 { filename "../apps/construct3d/plane.gif" }USE PUSHBUTTON_TEXTURE_GEOMETRY

}}

Speech enabled widgets - SliderDEF SurfaceXSlider SoSpeechSlider{

width 0.03 height 0.02 depth 0.06

minValue 2 maxValue 8minVector 0 0 -0.03maxVector 0 0 0.03alpha 1

actionUpGestures[

SoSpeechGesture{ stations [ 6 ] blocked FALSE

SpeechCommands [ "surface X up"] },]actionDownGestures[

SoSpeechGesture{ stations [ 6 ] blocked FALSE

SpeechCommands [ "surface X down"] },]step 0.166666666666666666

}

PIP config in the UserKitpip PipKit{

station 1

geometry File {name "./graphix/DefaultPip.iv"}pipSize 0.3 0.2 0.01

offset Transform {translation 0 0 0 rotation 1 0 0 -1.57 }

sheetAreaUpperLeft 0.0 0.0sheetAreaLowerRight 1.0 1.0

skinFileName "skinWS1.iv"skinDirectory "./graphix/"

}

SkinsDefault Skin (…workspace\graphix\skinWs1.iv)

User-defined Skin(…workspace\graphix\skinWin.iv)

Sheet BarWindow BarSystem Bar

In addition: Task Bar

SkinsTask Bar

Example: skinWin.iv

Design issues

• Design of widgets

• PIP should fit FOV of the HMD

• Catch events in the „surrounding area“

• Labelling of widgets (esp. buttons, sliders)

Limitations

• „Traditional“ authoring is very time consuming

• Dynamic addition/removal or reconfiguration of widgets/sheets is difficult (hack)

• No standard support of usual 2D widget features such as – Text labels on „mouse-over“– Switching through (sheet)menus with forward

(>), backward (<) buttons

Thank you!