Proscene v2.0.0-alpha3 is out. Download it here and extract it to your sketchbook libraries folder (automatic importing proscene from your PDE is only available for stable releases, currently v-1.2.0).

This release completes the main functionality expected in proscene2 and also focuses on API stabilization. Thanks to collaborations with experimental computational designer Amnon Owed, to whom we’re greatful, we’ve polished the KeyFrameInterpolator sub-system. We’ve also implemented view frustum 2D culling routines (please refer to the new example: TwoD.WindowCulling), thus completing the 2D functionality.

We now enter the beta (sub)cycle which will focus on documentation completeness and bug fixing, to make the upcoming proscene2 as polished as possible.

Proscene v2.0.0-alpha2 is out. Download it here and extract it to your sketchbook libraries folder (automatic importing proscene from your PDE is only available for stable releases, currently v-1.2.0).

Respect to the first alpha, this release implements full matrix handling in core, making possible to perform all geometry transformations directly by proscene2. Actually, this is part of a more general idea: to make it possible to run proscene2 within other contexts different than Processing. Please refer to the new example Basics.MatrixShader. I hope to give more details here soon.

Currently, we are performing more experiments to decide what experimental stuff will make it into the upcoming cycle. We plan to release a pair or so of more alphas with our results before entering beta stage.

Today I’m releasing the first alpha of what will hopefully become proscene2. For the impatient, download it and extract it to your sketchbook libraries folder (automatic importing proscene from your PDE is only available for stable releases, currently v-1.2.0). Even though the library has almost been completely rewritten from the ground up, you will find most of the current examples with some minor changes, plus a whole bunch of new ones. There’s also a new project home and its code is now kindly hosted at github. Read on for some more details.

Motivation

Some years ago Proscene was firstly designed to ease interactivity of 3D Processing scenes through standard input devices: mouse and keyboard. Then at some point when we noticed that some of you guys were interacting within your sketches using “non-standard” Human Interface Devices (HIDs), we decided to add some basic support to them, but the code never really makes it to Proscene’s core: the iFrame class hierarchy. The reason for that being that iFrames and (standard) input events were tightly coupled. Our first Proscene design also lacked providing means to interact using a touch device, mainly because back in 2010 when it was first released, there wasn’t a Processing “android mode”. On the other hand, as with any other Processing library, publishing a sketch online was a matter of exporting it as a java applet. However, this is no longer the case and, as most of you probably know, Java-Script (JS) has almost ended up replacing java applets in Processing2.

Challenges for the Proscene2 cycle

  1. Add 2D Scene mode (e.g., size(640, 360, P2D); scene = new Scene(this);). Yes, it’s not part of the above motivation, but that would be cool ;)
  2. Allow adding a new HID to interact with a 2D or 3D scene as simple as possible, without hindering the customization flexibility as it is found with standard devices.
  3. Support other Processing modes such as JS and/or Android.

and while it has been progress for the third challenge, this release only covers the first two of them.

Approach

  1. 2D interactivity required scaling to be added to iFrames which are now defined by their position, orientation and (now) scaling. As a result, moving the viewpoint around, picking and manipulating objects, adding keyframes to a camera path, etc., are all now possible in 2D too.
  2. We completely decoupled the handling of HIDs from the set of actions (all sorts of iFrame manipulations) supported by Proscene, by defining a set of virtual events (called TerseEvents) which represents an interface between them. An important TerseEvent specialization is a MotionEvent which is defined according to its degrees-of-freedom (DOFs), making it particularly suitable to applications requiring all sorts of kinematics computations, such as those involved in iFrame manipulations. Adding an HID thus “only” requires reducing hardware input events to MotionEvents, from which all Proscene actions are now implemented.

Expect more technical details regarding Proscene2 and its new package structure with the next pre-releases.

Current status: why we call it alpha.1?

  1. JS mode: work-in-progress.
  2. Examples documentation: mostly missing. However all the examples seem to run fine here (archlinux and Processing-2.1b1).
  3. API docs: broken and incomplete.
  4. Advanced examples need more polishing.

This release is mainly aimed at testers and enthusiasts that wanna try the new features from perfectly well undocumented examples ;)

Acknowledgements

Thanks to Eduardo Moriana and Miguel Parra for their contributions with the TUIO-based touch and kinect interfaces, respectively.