Easy Studierstube Applications with a little help from OpenInventor Gerhard Reitmayr Gerhard Reitmayr Vienna University of Technology Vienna University.

Slides:



Advertisements
Similar presentations
LabVIEW is a graphical programming development environment for data acquisition and control, data analysis, and data presentation. With LabVIEW you can.
Advertisements

Analysis of programs with pointers. Simple example What are the dependences in this program? Problem: just looking at variable names will not give you.
Implementing Autodesk Inventor in Your Company MA405-1
Getting Started: Ansoft HFSS 8.0
Chapter 18 - Data sources and datasets 1 Outline How to create a data source How to use a data source How to use Query Builder to build a simple query.
CS320n –Visual Programming LabVIEW Foundations. Visual ProgrammingLabVIEW Foundations2 What We Will Do Today Hand back and review the midterm Look at.
Module: Definition ● A logical collection of related program entities ● Not necessarily a physical concept, e.g., file, function, class, package ● Often.
Design Patterns CS is not simply about programming
Subdue Graph Visualizer by Gayathri Sampath, M.S. (CSE) University of Texas at Arlington.
WSN Simulation Template for OMNeT++
The Composite Pattern.. Composite Pattern Intent –Compose objects into tree structures to represent part-whole hierarchies. –Composite lets clients treat.
GoF Sections 2.7 – 2.9 More Fun with Lexi. Lexi Document Editor Lexi tasks discussed:  Document structure  Formatting  Embellishing the user interface.
Design Patterns academy.zariba.com 1. Lecture Content 1.What are Design Patterns? 2.Creational 3.Structural 4.Behavioral 5.Architectural 6.Design Patterns.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
ICS 665 Jesse Abdul. jQuery UI Overview  jQuery UI javascript library Includes all UI component functionality  jQuery UI CSS framework Includes standard.
CSC 8310 Programming Languages Meeting 2 September 2/3, 2014.
TIBCO Designer TIBCO BusinessWorks is a scalable, extensible, and easy to use integration platform that allows you to develop, deploy, and run integration.
UNIT-V The MVC architecture and Struts Framework.
Microsoft Visual Basic 2012 CHAPTER TWO Program and Graphical User Interface Design.
Games Development 2 Entity / Architecture Review CO3301 Week
LabVIEW an Introduction
Introduction to LabVIEW
Chapter 9: Coupling & Cohesion Omar Meqdadi SE 273 Lecture 9 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Zhonghua Qu and Ovidiu Daescu December 24, 2009 University of Texas at Dallas.
Automatic Generation Tools UNICOS Application Builder Overview 11/02/2014 Ivan Prieto Barreiro - EN-ICE1.
Design patterns. What is a design pattern? Christopher Alexander: «The pattern describes a problem which again and again occurs in the work, as well as.
London April 2005 London April 2005 Creating Eyeblaster Ads The Rich Media Platform The Rich Media Platform Eyeblaster.
London April 2005 London April 2005 Creating Eyeblaster Ads The Rich Media Platform The Rich Media Platform Eyeblaster.
Deutsches Elektronen-Synchrotron DESY Helmholtz Association of German Research Centres Hamburg, Germany The European X-Ray Laser Project.
IPC144 Introduction to Programming Using C Week 1 – Lesson 2
CMPD 434 MULTIMEDIA AUTHORING Chapter 06 Multimedia Authoring Process IV.
Mobile Navigation With SVG Christian Schmitt SVG Open 2005.
CHAPTER TEN AUTHORING.
Chapter 10: File-System Interface 10.1 Silberschatz, Galvin and Gagne ©2011 Operating System Concepts – 8 th Edition 2014.
PUC and StudierStube Thomas Psik. Thomas PsikPUC and Studierstube Personal Universal Controller (PUC) Developed by Pittsburgh Digital Greenhouse Peter.
Python Programming Using Variables and input. Objectives We’re learning to build functions and to use inputs and outputs. Outcomes Build a function Use.
Lexi case study (Part 2) Presentation by Matt Deckard.
3461 Model-View Controller Advanced GUI concepts.
1 Chapter 12: Form Builder Objects and Flexible Code.
Interactive Textures as Spatial User Interfaces in X3D Web3D 2010 Symposium Sabine Webel Y. Jung, M. Olbrich, T. Drevensek, T. Franke, M.Roth, D.Fellner,
OCLC SiteSearch User Group Meeting Implementing Interface Gadgets SiteSearch User Group Workshop 3/23/1999.
1 Chapter 20 – Data sources and datasets Outline How to create a data source How to use a data source How to use Query Builder to build a simple query.
© TMC Computer School HC20203 VRML HIGHER DIPLOMA IN COMPUTING Chapter 2 – Basic VRML.
Introduction to Interactive Media Interactive Media Tools: Authoring Applications.
GUIs Basic Concepts. GUI GUI : Graphical User Interface Window/Frame : a window on the screen Controls/Widgets : GUI components.
Plug-in Architectures Presented by Truc Nguyen. What’s a plug-in? “a type of program that tightly integrates with a larger application to add a special.
SignPost Indoor Navigation System Michael Knapp Gerhard Reitmayr.
Pearson Webcast Series
04 |Sharing Code Between Windows 8 and Windows Phone 8 in Visual Studio Ben Riga
Change Display of a Key Figure While in the Change Query (Local Definition) Hiding 1.Right click.
Overview of Previous Lesson(s) Over View 3 Program.
S.Linev: Go4 - J.Adamczewski, H.G.Essel, S.Linev ROOT 2005 New development in Go4.
9. ITERATIONS AND LOOP STRUCTURES Rocky K. C. Chang October 18, 2015 (Adapted from John Zelle’s slides)
Basic Organization of UI Software. 2 The User Interface n Typically want to think of “UI” as only one component of an overall system – The part that “deals.
Chapter 9: Coupling & Cohesion Omar Meqdadi SE 273 Lecture 9 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Getting Started With Python Brendan Routledge
CSC 243 – Java Programming, Fall, 2008 Tuesday, September 30, end of week 5, Interfaces, Derived Classes, and Abstract Classes.
Institute for Computer Graphics and Vision Computer Graphics and Interactive Systems 1 Grabner HS i4, 2006/03/08 Web3D, VRVU, SGP Web3D ( ) VRVU.
Java FX: Scene Builder.
INF230 Basics in C# Programming
CARA 3.10 Major New Features
Chapter 11 Object-Oriented Design
Immediate Mode GUI – Theory and Example
Core LIMS Training: Advanced Administration
Functions CIS 40 – Introduction to Programming in Python
.NET and .NET Core 7. XAML Pan Wuming 2017.
Multimedia e-learning design
Graph Coverage for Design Elements CS 4501 / 6501 Software Testing
CSC 581: Mobile App Development
Games Development 2 Entity / Architecture Review
Presentation transcript:

Easy Studierstube Applications with a little help from OpenInventor Gerhard Reitmayr Gerhard Reitmayr Vienna University of Technology Vienna University of Technology

Gerhard Reitmayr StbDay 2 – Stb application requirements User interface design needs iterative development. User interface design needs iterative development. Need to be adapted to different user interface modalities. Need to be adapted to different user interface modalities. Demos need to be kept alive ! Demos need to be kept alive ! Reuse of application features is very desirable. Reuse of application features is very desirable.

Gerhard Reitmayr StbDay 2 – User interface components 3D window PIP pen icon widgets content

Gerhard Reitmayr StbDay 2 – Structure of an application SoMyContextKit Widgets Scene graph Application Different modalities Different presentation styles Reuse this ?

Gerhard Reitmayr StbDay 2 – Skeleton of an application SoApplicationKit { contextKit SomeApplication { templatePipSheet Separator { # your PIP sheet widgets } windowGroup Group { # content and windows ! } # all kinds of application # specific fields }

Gerhard Reitmayr StbDay 2 – Use the file format ! Let your application become an understandable part of an OIV file. Let your application become an understandable part of an OIV file. Use fields as inputs and outputs of applications. Use fields as inputs and outputs of applications. Build scene graphs in the OIV file instead of in code. Build scene graphs in the OIV file instead of in code. Try to write all applications as pure OIV nodekits ! Try to write all applications as pure OIV nodekits !

Gerhard Reitmayr StbDay 2 – Fields as inputs/outputs Connecting to widgets Connecting to widgets Callbacks tie you to the type of widget Callbacks tie you to the type of widget Lower abstraction used then necessary e.g. observe 3 buttons instead of a 3 valued state variable. Lower abstraction used then necessary e.g. observe 3 buttons instead of a 3 valued state variable. Use fields that represent exactly the state the application needs. Use fields that represent exactly the state the application needs. Output states as fields allows simple change of presentation. Output states as fields allows simple change of presentation.

Gerhard Reitmayr StbDay 2 – OIV: Observing changes Sensors are the callbacks of OIV ! Sensors are the callbacks of OIV ! SoFieldSensor SoFieldSensor Only one field per sensor Only one field per sensor Not ref counted > take care yourself Not ref counted > take care yourself SoNodeSensor SoNodeSensor Reports changes on node / sub scene graph Reports changes on node / sub scene graph Beware of node fields Beware of node fields

Gerhard Reitmayr StbDay 2 – Scene graphs as parameters Use node fields Use node fields As templates for complex scene graphs As templates for complex scene graphs Use parts Use parts For scene graphs that need traversal For scene graphs that need traversal Use conventions Use conventions Node type, e.g. set a texture to be picked up by geometry in the graph Node type, e.g. set a texture to be picked up by geometry in the graph Search for a given name, type and change its fields Search for a given name, type and change its fields

Gerhard Reitmayr StbDay 2 – Parameterized scene graphs Using context sensitive traversal Using context sensitive traversal New element SoContextElement New element SoContextElement Maps int -> int Maps int -> int Context[3] = 2 Context[3] = 2 Context[-5] = NIL Context[-5] = NIL SoContext to modify context during traversal SoContext to modify context during traversal SoContextSwitch (…) SoContextSwitch (…) Modify traversal depending on context Modify traversal depending on context

Gerhard Reitmayr StbDay 2 – Context 2->0 Context Example Context 2->1 ContextSwitc h index[2] Geometr y Group Color green Color red

Gerhard Reitmayr StbDay 2 – OIV : NodeKits - concept A nodekit represents a tightly integrated template scene graph with meaning to the developer. A nodekit represents a tightly integrated template scene graph with meaning to the developer. We get We get Fixed scene graph Fixed scene graph Represented by a node Represented by a node Internal connections Internal connections OIV interface of fields and children OIV interface of fields and children

Gerhard Reitmayr StbDay 2 – Nodekit structure Root node Private parts Public parts SoTrackedArtifaktKit

Gerhard Reitmayr StbDay 2 – OIV : setUpConnections Central method to establish connections within a nodekit. Central method to establish connections within a nodekit. Signals nodekit when the structure changes. Signals nodekit when the structure changes. Important for Important for Correct loading of applications Correct loading of applications Distributed OpenInventor Distributed OpenInventor

Gerhard Reitmayr StbDay 2 – OIV : setupConnections

Gerhard Reitmayr StbDay 2 – Navigation app – 1

Gerhard Reitmayr StbDay 2 – Navigation app - 2 DEF NavKit NavigationContext { DEF NavKit NavigationContext { waypoint ["Karlskirche",… ] waypoint ["Karlskirche",… ] waypointPosition [0 1 0,… ] waypointPosition [0 1 0,… ] edge [1,… ] edge [1,… ] numEdge [3,… ] numEdge [3,… ] userPosition = SoTrakEngine{}.translation userPosition = SoTrakEngine{}.translation destination = USE waypointList.selected destination = USE waypointList.selected path [“Karlskirche”,… ] path [“Karlskirche”,… ] edgeIndex [1,2,3] nodeIndex [2,3,5,10] edgeIndex [1,2,3] nodeIndex [2,3,5,10] templatePipSheet SoPipSheetKit {…} templatePipSheet SoPipSheetKit {…} windowGroup So3DSeparator {…} windowGroup So3DSeparator {…} }

Gerhard Reitmayr StbDay 2 – Thank you ?

Gerhard Reitmayr StbDay 2 – SoClassLoader classLoader SoClassLoader { className "MyOIVNode" fileName "../somewhere/mynodes" } MyOIVNode { … } Load OIV classes from within a file ! Load OIV classes from within a file !

Gerhard Reitmayr StbDay 2 – Timing issues Delayed execution Delayed execution SoOneShotSensor SoOneShotSensor SoAlarmSensor SoAlarmSensor Repeated actions Repeated actions SoTimeSensor SoTimeSensor SoIdleSensor SoIdleSensor

Gerhard Reitmayr StbDay 2 – Stb Applications Applications are OpenInventor nodekits Applications are OpenInventor nodekits Subclasses of SoContextKit Subclasses of SoContextKit Implementation as shared library (dll,so) Implementation as shared library (dll,so) Additional callback API for Additional callback API for User specific data User specific data Distribution Distribution

Gerhard Reitmayr StbDay 2 – Writing STB applications SoApplicationKit SoApplicationKit SoClassLoader SoClassLoader SoContextKit SoContextKit templatePipSheet templatePipSheet windowGroup windowGroup

Gerhard Reitmayr StbDay 2 – Interfacing SoContextKit Use fields as interface Use fields as interface Avoid connections based on names, pointers, etc Avoid connections based on names, pointers, etc Special patterns for multi user applications Special patterns for multi user applications Use localized search Use localized search

Gerhard Reitmayr StbDay 2 – PIP - personal interaction panel PIP App 1 App 2 PipSheet PipSheet 1 PipSheet 2 System Sheet User

Gerhard Reitmayr StbDay 2 – PIP Komponenten system tab window tab sheet tab

Gerhard Reitmayr StbDay 2 – Remedy – OpenInventor A set of guidelines to A set of guidelines to Structure application API Structure application API Structure data flow in application Structure data flow in application Modularize applications Modularize applications OpenInventor can support us here ! OpenInventor can support us here !

Gerhard Reitmayr StbDay 2 – Beispiel : hello world SoApplicationKit { contextKit SoContextKit { windowGroup DEF Hello Group { Material {diffuseColor } Scale {scaleFactor } Font { size 1 } Text3 { string ["Hello", "World !"] justification CENTER parts ALL } templatePipSheet USE Hello }

Gerhard Reitmayr StbDay 2 – Guidelines Data driven implementation Data driven implementation Store all data in fields or children Store all data in fields or children React to changes and update internal and dependent state React to changes and update internal and dependent state  > Very flexible  > Highly reusable components

Gerhard Reitmayr StbDay 2 – Lifetime of an application Loading Initialisation SoMyAppKit per user Interaction checkPipGeometry() checkWindowGeometry() checkPipConnections() checkPipMasterMode() focusChange() windowEventCB()