I've just uploaded v1.2 of ofxMSAPhysics, a traer-like particle/physics library for openFrameworks. Download can be found here and also needs the ObjC Pointer addon.
This is a demo of projection mapping with VDMX & Quartz Composer inspired by deepvisual's tutorial of doing it in modul8 (uk.youtube.com/watch?v=2bRfdn9lNO8).
VDMX unfortunately doesn't have this feature built-in, but fortunately has beautiful integration with Quartz Composer - allowing me to build a quad warper in QC using a GLSL vertex shader, which should be super fast.
Also, around the 4:30 mark you'll see me masking the video on the box in the back. This is also using a custom Quartz Composition which allows 4 point mask creation. Usage is almost identical to the QuadWarper, but instead of warping the image it just applies a mask, or you can invert the mask and it cuts a chunk out. You could do the same by creating new layers, grouping, using as a layer mask etc. but its a a bit more hassle I think. Using the QuadMask is a lot quicker and you can put multiple QuadMasks on the same layer to draw more complex masks.
This is a demo for a traer like physics library for C++/openFrameworks.
I wrote the lib for a little project with Todd Vanderlin while in Linz, Austria at Ars Electronic 2008 (vimeo.com/1707467). I tried to keep the same API as Traer (so processing code using traer can easily be ported to oF) and it is basically a particle system with springs, attractions, gravity etc (but uses verlet integration instead of RK4).
In this demo I am interacting with the app using the keys:
This is a very early version of a GPU based depth-of-field GLSL shader and sample Processing code. Adjust some parameters and it can also be used to give the scene a nice backlight/glow effect.
Seeing as a lot of what I'm doing is based on open-source software and the good intention of others, I think its fair that I release some source code too... So I've tried to clean and comment a bit of the code I used on the psychedelic interactive fluid and particles demo (also used on the Glastonbury 2008 PI Installation.
This is not the full code for the glastonbury app as that is quite complex, multi-threaded and I couldn't release it all anyway. Instead I've simplified it a bit (removed some messy multithreaded stuff and the osc/midi triggering based on camera - you can find quartz composer and processing.org source code for that on this site anyway).
In this previous post I mention creating data-source plugins or processing existing data-sources for VDMX using Quartz Composer. Well the specific example I've given in that post isn't that useful, simply does 1-x^2.
I've just created something which may be a bit more useful, its a springy smoothing patch. So you can attach springlike behaviour to data-sources and modify spring stiffness and damping. Here's the JavaScript:
This is a little test using GLSL in Quartz Composer 3.0, and controlling via VDMX. All happening in realtime and completely audio-reactive with no post production or timeline animations etc. The potential is humongous and very exciting!!
The current latest version of VDMX5 (0.6.2.7) now has the brilliant (undocumented) capability of using Quartz Composer patches as plugins (in addition to clips, effects and text sources).
What you need to do is:
Create a Quartz Composer patch with a published input, and a published output... with JavaScript or Maths nodes inbetween.
Plop your QTZ in your VDMX/plugins folder
Create an instance of your plugin from the Plugin Manager (at the moment you need to restart VDMX for the plugin to appear I think, I'm sure this will be addressed quite soon).
Assign any VDMX data source to the input of your QTZ plugin.
Assign the ouput of your QTZ plugin as a data source to and slider.
et voila! beautiful. I've attached my sample files...
Here is the source code for the previous example of 3D Sprite (billboard) particle system Starry Trails. The source code is by no means generic enough to be considered an engine or library, but is work in progress. I will extend the Node3D, SpringyNode3D classes to use Papervision3D and the Billboards for the rendering, and will definitely carry on working on the particle systems. I've also been converting a lot of noise functions to AS3 and will post them soon... its all getting quite exciting in the flash world! :P
This app is made of quite a few classes so Ill start from the top (application) downwards.
/***********************************************************************
MAIN DOCUMENT CLASS
make sure you have 2 sprites in your library exported for actionscript with linkage identifiers set to RedStar and BlueStar
***********************************************************************/
package {import flash.display.*;
import msa.sprite3d.*;
publicclass StarryMouse3Dapp extends Sprite {publicfunction StarryMouse3Dapp(){
This article will start with the basic definitions of bits, bytes etc, go through how data is stored in bits and bytes, and eventually discuss how the binary and hexadecimal number systems work, how to convert between the two and decimal and how that can be useful. Lays a foundation for later articles...