Skip to content

remixlab/proscene

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Note: this project is deprecated!

Please visit nub to find the latest code. My latest code has been merged with that project and I am committing all my new updates to it.

ProScene Version Dependencies License Paper

Table of Contents

Description

ProScene (pronounced similar as the Czech word "prosím" which means "please") is a free-software java library which provides classes to ease the creation of interactive 2D/3D scenes in Processing.

ProScene extensively uses interactive frames, i.e., coordinate systems that can be controlled with any HID, allowing to easily setup an interactive 2D or 3D scene.

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. It suppports all major Processing flavours: Desktop, JS, and Android.

ProScene support is led by the active and great Processing community at its forum where you can reach us. News and technical details are found at our blog.

Philosophy

One of the main Proscene goals is to provide HCI researchers with a common and simple, yet fully customizable, framework to test different experimental ideas involving the three universal interaction tasks: Object selection & manipulation, including the scene point-of-view; and, application control. For further details please refer to this paper.

Key features

  • Tested under Linux, Mac OSX and Windows, and properly works with the JAVA2D, FX2D, P2D and P3D Processing renderers. No special dependencies or requirements needed (apart of course from Processing >= 3.2.4).
  • It supports all major Processing flavours: Desktop, Android (since Proscene v-3.0.0-beta.6) and (soon) JS.
  • API design that provides seemless integration with Processing (e.g., providing flexible animation and drawing mechanisms), and allows extensibility of its key features.
  • Generic support to Human Interface Devices (HIDs), including not only the mouse and the keyboard, but advanced HID's such as a touchscreen, a space navigator or a kinect.
  • Keyboard shortcuts and HID bindings customization.
  • Hierarchical coordinate systems (frames), with functions to convert between them.
  • Interactive frames (including the camera) which may be manipulated by any HID.
  • Arcball, walkthrough and third person camera modes.
  • Default interactivity to your Processing scenes through the mouse (or touchscreen) and keyboard that simply does what you expect.
  • Visibility culling: Back-face and view-frustum culling.
  • Keyframes.
  • Animation framework.
  • Object picking.
  • Screen drawing, i.e., drawing of 2d primitives on top of another (2d or 3d) scene.
  • Off-screen rendering mode support.
  • Save and load configurations.
  • 2D and 3D Interactive mini-maps.
  • Handy set of complete documented examples that illustrates the use of the package.
  • A complete API reference documentation.
  • Active support and continuous discussions led by the Processing community.
  • Last but not least, released as free software under the terms of the GPL-v3.

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. The name "ProScene" thus suggests the main goal of the package, which is to help you shorten the creation of interactive 2D/3D scenes in Processing.

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 two 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.

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

Installation

Import/update it directly from your PDE. Otherwise download your release from here and extract it to your sketchbook libraries folder.

Acknowledgements

Thanks to Eduardo Moriana and Miguel Parra for their contributions with the TUIO-based touch and kinect interfaces, respectively. Thanks to experimental computational designer Amnon Owed for his collaboration with polishing the KeyFrameInterpolator sub-system. Thanks to Jacques Maire for providing most of the examples found at the Geom section. Thanks to Andres Colubri for his continuous support and thorough insights. Thanks to Victor Forero for coding the initial Android agents. Thanks also to all ProScene users whose sketchs and library hacks always amaze us and inspire us.

Author, core developer and maintainer

Jean Pierre Charalambos, National University of Colombia

Analytics