If you want to read the PDF, try requesting it from the authors.


This document,presents an introduction for programming,with Pivy[Fah07] and Studierstube version 4.2 [Sch07], an augmented reality programming framework. Pivy[Fah07] is a Python[Fou07] binding for the popular object-oriented 3D C++ toolkit Open Inventor. Section 1 gives a short introduction to Pivy. In section 2 the installation process of Pivy and Studierstube is explained. Section 3, 4 and section 5 include elaborated tutorials. Key Words: Python, Pivy, Coin, Open Inventor, 3D Graphics, Studierstube, Augmented Reality Category: H.1 Table of Contents

No full-text available

Request Full-text Paper PDF

To read the full-text of this research,
you can request a copy directly from the author.

ResearchGate has not been able to resolve any citations for this publication.
Full-text available
This thesis presents the design and implementation of "Pivy": a Python language binding for the Coin scene graph library. Pivy allows for development of Coin applications in Python, interactive modification of Coin programs from within the Python interpreter at runtime and incorporation of Scripting Nodes-capable of executing Python code and callback functions-into the scene graph. Coin is a high-level 3D graphics toolkit for developing cross-platform real-time 3D visualization and visual simulation software; Coin's properties and features are e.g. suitable for application development in the Augmented Reality (AR) domain. We differentiate between extending and embedding the Python interpreter. To create a Python extension, a C wrapper needs to be written and built as a shared library; Python then imports and makes use of this shared library at runtime. Different Python wrapping techniques and approaches-from manual wrapping to automatic wrapper generators such as SWIG-with a special focus upon large C++ libraries/frameworks applicable for Python are compared. The opposite direction is called embedding, where already existing Coin applications or libraries (written in C++) are given direct access to the Python interpreter. Both use cases are showcased and their distinction explained through Python applications using Pivy and the special SoPyScript scene graph node which has been created to allow Python code to be embedded into a regular scene graph and executed during traversal of the same. The SoPyScript scene graph node is making use of both extending and embedding techniques; it is based upon ideas of the VRML JavaScript node and can be used from either Python or C++ applications. Furthermore, the suitability and benefits of dynamically typed "scripting" languages over statically typed "system programming" languages such as C++ for Rapid Application Development (RAD) and Rapid Application Prototyping (RAP) are analyzed and demonstrated.
Full-text available
Our starting point for developing the Studierstube system was the belief that augmented reality, the less obtrusive cousin of virtual reality, has a better chance of becoming a viable user interface for applications requiring manipulation of complex three-dimensiona information as a daily routine. In essence, we are searching for a 3-D user interface metaphor as powerful as the desktop metaphor for 2-D. At the heart of the Studierstube system, collaborative augmented reality is used to embed computer-generated images into the real work environment In the #rst part of this paper, we review the user interface of the initial Studierstube system, in particular the implementation of collaborative augmented reality , and the Personal Interaction Panel, a two-handed interface for interaction with the system. In the second part, an extended Studierstube system based on a heterogeneous distributed architecture is presented. This system allows the user to combine multiple approaches--- augmented reality, projection displays, and ubiquitous computing---to the interface as needed. The environment is controlled by the Personal Interaction Panel, a twohanded, pen-and-pad interface that has versatile uses for interacting with the virtual environment. Studierstube also borrows elements from the desktop, such as multitasking and multi-windowing. The resulting software architecture is a user interface management system for complex augmented reality applications. The presentation is complemented by selected application examples 1
The Inventor Mentor introduces graphics programmers and application developers to Open Inventor, an object-oriented 3D toolkit. Open Inventor is a library of objects and methods used for interactive 3D graphics. Although it is written in C++, Open Inventor also includes C bindings. For the sake of brevity, the examples included in this book are in C++. All C++ examples, as well as equivalent examples written in C, are available on-line. If you are new to the C++ language, see Appendix A, "An Introduction to Object-Oriented Programming for C Programmers," to help you understand the references to classes, subclasses, and other object-oriented concepts used throughout this book. If you are using the C application programming interface, also see Appendix B, "An Introduction to the C API." This book describes how to write applications using the Open Inventor toolkit. The Inventor Toolmaker, a companion book for the advanced programmer, describes how to create new Inventor classes and how to customize existing classes. The Inventor Mentor contains the following chapters: * Chapter 1, "Overview," provides a general description of Open Inventor concepts and classes and how Inventor relates to OpenGL and the X Window System. * Chapter 2, "An Inventor Sampler," presents a short program that creates a simple object. This program is then modified to show the use of important Inventor objects: engines, manipulators, and components. * Chapter 3, "Nodes and Groups," introduces the concept of a scene graph and shows how to create nodes and combine them into different kinds of groups. * Chapter 4, "Cameras and Lights," describes the camera nodes used to view a scene and the light nodes that provide illumination. * Chapter 5, "Shapes, Properties, and Binding," describes how to create both simple and complex shapes and how to use property nodes, including material, draw style, and lighting model nodes. Binding materials and surface normals to shape nodes is also explained. * Chapter 6, "Text," shows the use of 2D and 3D text nodes. * Chapter 7, "Textures," describes how to apply textures to the surfaces of objects in a scene. * Chapter 8, "Curves and Surfaces," explains how to use NURBS curves and surfaces. * Chapter 9, "Applying Actions," describes how operations are applied to an Inventor scene graph. Actions include OpenGL rendering, picking, calculating a bounding box, calculating a transformation matrix, writing to a file, and searching the scene graph for certain types of nodes. * Chapter 10, "Handling Events and Selection," explains how Inventor receives events from the window system. It also describes how the selection node manages a selection list and performs highlighting. * Chapter 11, "File Format," describes Inventor's interchange file format, used for reading files into Inventor, writing files out from Inventor, and data exchanges such as copy and paste. * Chapter 12, "Sensors," describes how Inventor sensors watch for certain types of events and invoke user-supplied callback functions when these events occur. * Chapter 13, "Engines," describes how you can use Inventor engines to animate parts of a scene graph, or to create interdependencies among the nodes in the graph. * Chapter 14, "Node Kits," introduces node kits, a convenient mechanism for creating groups of related Inventor nodes. Each node kit contains a catalog of nodes from which you select the desired nodes. * Chapter 15, "Draggers and Manipulators," describes how to use draggers and manipulators, which are special objects in the scene graph that respond to user events. Manipulators are nodes with field values that can be edited directly by the user. * Chapter 16, "Inventor Component Library," shows how to use Inventor's Xt components, which are program modules with a built-in user interface for changing the scene graph interactively. It also Chapter 17, "Using Inventor with OpenGL," discusses how to use Inventor with the OpenGL Library.
The event system of studierstube 4
  • Lukas Gruber
Lukas Gruber. The event system of studierstube 4. Technical report, http://studierstube.icg.tu-graz.ac.at/, Mar 2006.