My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members
Featured
Downloads
Links

A. News

20/01/2012 Release of Proscene v1.1.1

Following our six months release cycle, we are pleased to announce the immediate availability of proscene v1.1.1 (download it here). This is mostly a bug-fix release. Changelog:

  1. Fixed excessive instantiation of timers that were performed in various places throughout the library. Now they're only instantiated when they're needed :)
  2. A cache for some camera matrix operations that are commonly employed has been implemented. Applications continuously calling camera().project (e.g., those using multiple ―perhaps thousands of― mouse grabbers) should immediately perceive the benefit. Following the same pattern, camera.unproject has also been optimized, but to enable caching of the involved operations camera().unprojectCacheIsOptimized must explicitly be called. The latter is disabled by default, since applications heavily relying on this operation (such as the PointUnderPixel example) are not the most common.
  3. The new method scene.hideCursorOnFirstPerson(boolean hide) allows the Scene.MouseAction.LOOK_AROUND to be performed by just moving the mouse (instead of dragging it). The ThirdPersonCamera example illustrates this feature. Note that scene.hasMouseTracking() is not affected by this new method. The scene.cursorIsHiddenOnFirstPerson() is false by default.

This version of proscene only works with Processing-1.5.x and (hopefully) will be the last version supporting it. Development from now on is heading towards Processing-2.x. To all proscene users thank you for your continuous feedback and for playing around with it!

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. Main features

D. Projects using proscene known to us

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.
  2. 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.
  3. 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).

I. Author, core developer and maintainer

Jean Pierre Charalambos, National University of Colombia

Powered by Google Project Hosting