Scripting, Prototyping (and more) in Interactive 3D Graphics
This webpage accompanies the paper Gerwin de Haan, Michal Koutek and Frits Post, "Flexible Abstraction Layers for VR Application Development", presented at the IEEE Virtual Reality 2007 (See the "about this work section below"). This will remain a work in progress. If you have additions, comments or anything else interesting for mentioning here, please inform me, Gerwin de Haan <g DOT dehaan AT ewi.tudelft DOT nl>
Current Contents:
- Scripting Integration and Optimization Tools
- Scripting in 3D graphics APIs
- Scripting in VR software systems
- Interesting related Scripting approaches
- About this work
Scripting Integration and Optimization Tools
The following list gives a short overview of software development tools for low-level language integration and performance optimization for scripting.
SWIG, software development tool that connects programs written in C and C++ with a variety of high-level programming languages.
Boost.Python, a C++ library which enables seamless interoperability between C++ and the Python programming language.
Pyste, a Boost.Python code generator
Py++, additions to Boost.Python. Also pygccxml and more
CTypes, ctypes is an advanced Foreign Function Interface package for Python 2.3 and higher
Pyrex, write C++ code inline in python,
ShedSkin, an experimental Python-to-C++ compiler, than can translate pure, but implicitly statically typed Python programs into optimized C++.
ToLua, a tool that greatly simplifies the integration of C/C++ code with Lua.
ToLua++, tolua++ is an extended version of tolua
- Custom wrapping generation through reflection classes
A useful overview and examples of using Python as a glue language is given on the python site, namely this page
Scripting for 3D Graphics APIs
Table 1. Overview of scriptable graphics APIs, popular in VR software systems. For each API, several scripting languages for which available wrappings exist are given.
Base |
Language |
Name |
Location |
Notes |
OpenGL |
Python |
pyOpenGL |
pure Graphics |
|
OpenGL |
Lua |
LuaGL |
|
|
OpenGL |
Tcl/Tk |
ToGL |
C renders in widgets |
|
OpenGL |
Scheme |
Sgl |
|
|
OpenGL Performer |
Python |
PyPer |
Included with OpenGL Performer |
see ~cite{Stolk2002} |
OpenSceneGraph |
Python |
pyOSG |
mosca.caltech.edu/projects/pyosg http://www.hitlabnz.org/people/hse25/osgbindings.html |
Multiple versions exist |
OpenSG |
Python |
pyOpenSG |
|
|
OpenInventor |
Python |
PiVy |
see ref. |
|
OpenInventor |
Tcl/Tk |
invenTCL |
unknown |
see ref. |
Scripting in VR sofware systems
Table 2. Overview VR software systems with scripting facilities. For each VR system, the used scripting language and type of wrapper software are given.
Name |
Ref. |
Language |
Wrapping |
Notes |
Alice |
cite{conway1997} |
Python |
Manual |
early VR prototyping and learning environment |
Avocado |
cite{Tramberend1999} |
Scheme |
Manual? |
distributed framework, Scheme to script applications |
Colloseum3D |
cite{backman2005} |
Lua |
toLua++ |
created OpenSceneGraph Lua bindings |
Delta3D |
cite{Darken2005} |
Python |
Boost.Python |
visual simulation lib, thin unifying layer |
DIVE |
cite{Carlsson1993} |
Tcl |
unknown |
scriptable object behavior |
Lightning |
cite{blach1998} |
Tcl |
unknown |
focus on flexible prototyping |
Panda3D |
cite{Goslin2004} |
Python |
custom |
strong focus on programmability and add-on tools |
Visum |
cite{Finkenzeller2003} |
Python |
Pyrex |
Python core, some performance sections in C++ |
VRJuggler |
cite{Bierbaum2001} |
Python |
Boost.Python |
pyJuggler, uses PyOSG as graphics API, supports clustering |
iVR |
TuDelft VR Toolkit |
Python |
SWIG |
See project page at http://visualisation.tudelft.nl/Projects/iVR |
Recent entries for additions:
Ygdrasil, C++, OpenGL Performer based VR engine with custom scripting language
Avango, successor of Avocado with Scheme based scripting
libTAP is a simulation prototyping system for Virtual Reality and Augmented Reality applications. It is platform independent and scriptable with Lua. Also ScripTAP, a developer tool, is available.
Syzygy, programming toolkit for writing (distributed) virtual reality or other graphical applications with Python wrappings.
Other, interesting libraries and activities
Extensive collection of Python based 3D software: http://www.vrplumber.com/py3d.py
Soya3d game engine, written in Python and core elements in Pyrex, see
Pyglet, is an open-source, cross-platform gaming and multimedia library written in Python.
PyOpenGL 3.0, is a rework of PyOpenGL that uses ctypes instead of SWIG
Crystal Space game engine, where PyCrystal supports Python scripting
About this work
This webpage accompanies the paper Gerwin de Haan, Michal Koutek and Frits Post, "Flexible Abstraction Layers for VR Application Development", presented at the IEEE Virtual Reality 2007, Charlotte NC, USA. If you use this page in your work, please site this paper and inform Gerwin de Haan by mail.
#the bibtex
@INPROCEEDINGS{gdh2007a,
author = {Gerwin de Haan and Michal Koutek and Frits H. Post},
title = {"Flexible Abstraction Layers for VR application development"},
booktitle = {Proceedings of {IEEE} {Virtual Reality} 2007},
year = {2007},
pages = {239--242},
}This remains a work in progress. If you have additions, comments or anything else interesting for mentioning here, please inform me, Gerwin de Haan by mail.
