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!


Top Related