
proscene
A. News
26/10/2013 Proscene v2.0.0-alpha1, released. New repo and blog sites
Today we are happy to announce the beginning of the Proscene2 cycle, together with a new repo kindly hosted at github and a new blog. Proscene1 maintenance releases will still see the light here. Automatic download Proscene is (and will only be) available for stable releases.
Read more news....
B. Description
Proscene (pronounced similar as the Czech word "prosím" which means "please") is a java library package which provides classes to ease the creation of interactive 3D scenes in Processing.
Proscene has been pretty much inspired in the Qt's OpenGL C++ libqglviewer library from where it borrows the concept of an interactive frame, i.e., a coordinate system that can be controlled with the mouse. Proscene aims at broadening this idea by allowing the user to easily setup an HID controlled scene. Proscene has a very similar functionality and API reference to that found in libqglviewer.
Proscene provides seemless integration with Processing: its API has been designed to fit that of Processing and its implementation has been optimized to work along side with it. One of Proscene main implementation goals was to keep it independent of the underlying Processing 3D renderer. It has been tested with the OPENGL, P3D and GLGRAPHICS renderers and can properly work with any of them.
Proscene v-1.1.1 (current release) works under Linux, Mac OSX and Windows using Processing-1.5.1 with no other special dependencies or requirements.
Proscene support is led by the active and great Processing community at its forum where you can reach us. If you think you have found a bug, you may open a ticket here at the project website.
C. Key features
- Tested under Linux, Mac OSX and Windows, and properly works with the P3D, OPENGL and GLGRAPHICS Processing renderers. No special dependencies or requirements needed (apart of course from Processing-1.5.1).
- API design that provides seemless integration with Processing (e.g., providing flexible animation and drawing mechanisms), and allows extensibility of its key features, such as full camera and keyboard customization.
- Default interactivity to your Processing scenes through the mouse and keyboard that simply does what you expect.
- Generic suppport for Human Interface Devices.
- Arcball, walkthrough and third person camera modes.
- Hierarchical coordinate systems (frames), with functions to convert between them.
- Coordinate systems can easily be moved with the mouse.
- Keyframes.
- Object picking.
- Keyboard shortcuts and camera profiles customization.
- Animation framework.
- Screen drawing (i.e., drawing of 2d primitives on top of a 3d scene).
- Off-screen rendering mode support.
- Handy set of complete documented examples that illustrates the use of the package, including: BasicUse, AlternativeUse, Animation, AnimationHandler (requires the GLGraphics library), BasicUseOffscreen (requires the GLGraphics library), CameraCustomization, CameraInterpolation, CajasOrientadas, CameraCrane (requires the saito objloader library), ConstrainedCamera, ConstrainedFrame, Flock, FrameInterpolation, FrameInteraction, Luxo, Moire, PointUnderPixel (requires OpenGL support on your platform), MouseGrabbers, Scramble, ScreenDrawing, SpaceNavigator (requires a space navigator and the procontroll library), StandardCamera, ThirdPersonCamera, ViewFrustumCulling, and Woobik. Note that running these examples online requires a Java-enabled browser.
- A complete reference documentation.
- Active support and continuous discussions led by the Processing community.
D. Projects using proscene known to us
- Anar library by LaBelle and Nembrini.
- OpenProcessing Proscene Classroom by Jacques Maire.
- PushMePullMe 3D, Interactive real time physics by Gennaro Senatore in collaboration with expeditionworkshed.
- Just Cause 2 - Player Death by impact - Point Cloud Visualisation by Jim Blackhurst.
- Audio-reactive touch application by Constanza Casas, Mark C. Mitchell and Pieter Steyaert.
- Generative Artwork for Montblanc by Onformative Studio.
- Making of Ruins by Luigi De Aloisio.
- Panoramica 2010 by Diego Alberti.
- Fluidos en RA by Diego Alberti.
If your project is using proscene don't be shy and let us know ;) It will be great to add yours here!
E. Origin of the name
Proscene not only means a "pro-scene", but it is a two-phoneme word pronounced similar as the Czech word "prosím" (which means "please"), obtained by removing the middle phoneme ("ce") of the word pro-ce-ssing. Thus, the name "Proscene" suggests the main goal of the package, which is to help you shorten the creation of interactive 3D scenes in Processing.
F. Installation Procedure
The installation procedure follows the standard Processing contributed library installation procedure and it is quite straightforward. Just unzip the proscene-x.y.z.zip file and put the extracted proscene folder into the libraries folder of your processing sketches (or directly into your processing's libraries folder). Reference and examples are included in the proscene folder.
G. Usage
All library features requires a Scene
object (which is the main package class) to be instantiated (usually within your sketch setup method). There are three ways to do that:
1. Direct instantiation. In this case you should instantiate your own Scene object at the PApplet.setup()
function.
1. Inheritance. In this case, once you declare a Scene
derived class, you should implement proscenium()
which defines the objects in your scene. Just make sure to define the PApplet.draw()
method, even if it's empty.
1. External draw handler registration. You can even declare an external drawing method and then register it at the Scene with addDrawHandler(Object, String)
. That method should return void
and have one single Scene
parameter. This strategy may be useful when you have the same drawing code shared among multiple viewers.
See the examples BasicUse, AlternativeUse, and StandardCamera for an illustration of these techniques. To get start using the library and learn its main features, have a look at the complete set of well documented examples that come along with it. Other uses are also covered in the example set and include (but are not limited to): drawing mechanisms, animation framework, and camera and keyboard customization. Advanced users may take full advantage of the fully documented API reference (which is also included in the package file).
H. Acknowledgements
Many thanks to Gilles Debunne for releasing his awesome libqglviewer as free software. Many thanks to Andres Colubri for redistributing previous releases of Proscene (such as v-0.7.0) along side his fantastic GLGraphics (v-0.9.3.3-3) Processing library. Proscene actually started as a GLGraphics component and thanks to Andres contributions it became a stand-alone library (read the whole story here).
[http://disi.unal.edu.co/profesores/pierre/ Jean Pierre Charalambos], [http://www.unal.edu.co National University of Colombia] '>
Project Information
- License: GNU GPL v3
- Content License: Creative Commons 3.0 BY-SA
- 26 stars
- svn-based source control
Labels:
Processing
3D-Scene
Interactivity
Camerahandling
Arcball
Frames