[Back]


Diploma and Master Theses (authored and supervised):

T. Fahmy:
"Pivy - Embedding a Dynamic Scripting Language into a Scene Graph Library";
Supervisor: D. Schmalstieg, H. Kaufmann; Institut für Softwaretechnik und Interaktive Systeme, E188/2, 2006.



English abstract:
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.

German abstract:
Die vorliegende Arbeit stellt das Design und die Implementierung von Pivy vor, einer Python-
Anbindung f¨ur die Szenengraph-Bibliothek Coin.
Coin ist eine plattformunabh¨angige 3D-Graphik-Bibliothek, deren hoher Abstraktionsgrad
die Entwicklung von Echtzeit-Visualisierungssoftware, z.B. im Bereich von Augmented Reality
(AR), erleichtert. Pivy erlaubt die Entwicklung von Coin-Applikationen in Python
und macht es m¨oglich, Coin-Programme aus dem Python-Interpreter zur Laufzeit interaktiv
zu modifizieren sowie Skript-Knoten, die Python-Code und Callback-Funktionen ausf¨uhren
k¨onnen, in den Szenengraph einzuf¨ugen.
Grunds¨atzlich sind zwei verschiedene Arten der Anbindung zu unterscheiden: die Erweiterung
("extension") des Python-Interpreters und seine direkte Einbindung ("embedding"). Eine
Python-Erweiterung ben¨otigt einen C-Wrapper in Form einer gemeinsam genutzten Bibliothek,
die von Python zur Laufzeit geladen und verwendet wird. Verschiedene Techniken
und Ans¨atze - von der manuellen Generierung bis zur automatischen Erstellung durch Generatoren
wie SWIG - werden vorgestellt und verglichen. Das Hauptaugenmerk liegt dabei
auf der Erweiterung von Python durch grosse C++-Bibliotheken. Umgekehrt ist es auch
m¨oglich, bestehenden Coin-Applikationen oder -Bibliotheken, die in C++ geschrieben sind,
durch Einbindung des Python-Interpreters direkt Zugang zu diesem zu geben.
Beide Anwendungsf¨alle werden beschrieben und die Unterschiede zwischen ihnen erl¨autert.
Dies geschieht anhand von Python-Applikationen, die Pivy verwenden, sowie insbesondere am
Beispiel des SoPyScript-Knoten, der es erlaubt, Python-Code in einen regul¨aren Szenengraph
einzubetten und bei der Traversierung auszuf¨uhren. Der SoPyScript-Knoten verwendet beide
Techniken (Erweiterung und Einbindung); er basiert auf der Idee und dem Design des VRML
JavaScript-Knoten und kann wie dieser sowohl von Python- wie auch C++-Applikationen
verwendet werden.
Des weiteren enth¨alt die Arbeit auch eine Betrachtung der grundlegenden Einsatzm¨oglichkeit
von dynamisch typisierten Skriptsprachen zur schnellen Entwicklung von Applikationen und/oder
Prototypen - Rapid Application Development (RAD), Rapid Application Prototyping (RAP)
- und den Vorteilen von Skriptsprachen gegenueber statisch typisierten "Systemprogrammierungssprachen"
wie C++.


Electronic version of the publication:
http://publik.tuwien.ac.at/files/pub-inf_3567.pdf


Created from the Publication Database of the Vienna University of Technology.