creative coding across screens

Post on 27-Jan-2015

116 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Creative Coding Across Screens In today’s world of mobile development, there is no shortage of products, tools, and frameworks to create your applications. A question is often what’s best for building creative, interactive, and more visual experiences. In this session, we’ll take a look at three popular creative frameworks for creating visual experiences across screens, including mobile ones. We’ll look at Cinder: a library for professional quality coding in C++. OpenFrameworks: a cross platform open source toolkit and Processing: an open source programming language and integrated development environment. We'll also look at some newbie platforms like Polycode. We’ll discuss the power of each of these creative tools, and attendees walk away understanding the strengths and weaknesses of each technology, and how to leverage each in projects that may come their way.

TRANSCRIPT

@scottjanousek#SCREENS, #FITC

Wednesday, November 16, 11

Creating Coding across Screens

at FITC Screens taking placeNov 14-15 2011 in lovely Toronto

Wednesday, November 16, 11

Agenda

Intro

Screens

Creative Coding

Creative Tooling

Processing, OF, Cinder, more?

Outro

Wednesday, November 16, 11

INTRO

Wednesday, November 16, 11

Hello@scottjanousek

Former Mobile & Device “Veteran”

“Analog and Digital Artisan”

Innovation Architect @ Isobar

Wednesday, November 16, 11

Web

Interactive

Mobile & Devices

Physical Computing

Wednesday, November 16, 11

Wednesday, November 16, 11

FITC MOBILE 2009

Wednesday, November 16, 11

Recent FITCEvents ...

Wednesday, November 16, 11

FITC Toronto 2011

“Sifteo Cubes” @ Influxis Voodoo Lounge

Wednesday, November 16, 11

Riaunleashed 2011Physical Computing + Android

Wednesday, November 16, 11

Google Android ADK & OA

Wednesday, November 16, 11

Cool stuff you should check

out ...

Wednesday, November 16, 11

Wednesday, November 16, 11

Conferences!

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

@seb_lyCreative JS world tour!

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

@blprntJer Thorp

Processing Workshop

Wednesday, November 16, 11

Work

Wednesday, November 16, 11

Kinds of work we do

Custom Touch Table (for Reebok)

Wednesday, November 16, 11

Kinds of work we do

Custom Touch Table (for Reebok)

Wednesday, November 16, 11

Let’s play ...“Weird stuff in Scott’s office!”

Wednesday, November 16, 11

Research &Development

Wednesday, November 16, 11

Parametric Speaker Array. :)

Wednesday, November 16, 11

Robotic Claw!

Wednesday, November 16, 11

“Lit Plexi”

Wednesday, November 16, 11

Light Globe “Thingy Ma-Bob”

Wednesday, November 16, 11

RF-ID, & arduino

Wednesday, November 16, 11

“Umbilical” Cord for a “project”

Wednesday, November 16, 11

Other StuffI’m engaged in ...

Wednesday, November 16, 11

Makerbot & “Fab”

Wednesday, November 16, 11

MakerBot!

Wednesday, November 16, 11

“Spatial & Gestural UI” space

Wednesday, November 16, 11

CREATIVECODING

Wednesday, November 16, 11

Tools & Frameworks

Wednesday, November 16, 11

SCREENS

Wednesday, November 16, 11

Visual Spectrum

Wednesday, November 16, 11

Target Screens

Desktops, Laptops & Netbooks

SmartPhones & Pocket Devices

Tablets

TVs

Tables, Kiosks, Billboards

Projected Displays

Wednesday, November 16, 11

Mobile Impact

In my mind, there is no question these are the clear winners ... but what is the “next race”?

Wednesday, November 16, 11

Some Devices ...

Wednesday, November 16, 11

What’s nextwith Screens?

Wednesday, November 16, 11

Projected Light UI

Wednesday, November 16, 11

Projected Light UI

Wednesday, November 16, 11

CREATIVE TOOLING

Wednesday, November 16, 11

What are we talking about?

“... Computer Programs in art such as real life art installations, interactive video, large-scale public projections, computer vision projects,interactive sound recordings, & more ...”

OR ... into the realm of ...PHYSICAL COMPUTING.

Wednesday, November 16, 11

What do we wantin our tools?

“Performability”

Portability

Extensibility

& more ...

Wednesday, November 16, 11

Timeline (Rough)

1990’s

2000’s

2010

Processing

OpenFrameworks

Cinder

PolyCode

Flash

Shockwave

HyperCard

Wednesday, November 16, 11

Languages Discussed Today

C++ (most of our focus)

Java

ActionScript

Lua

JS

Wednesday, November 16, 11

Going Native“A native development kit (NDK) is a software development kit (SDK) based on a native application programming interface (API) which allows computer software to be developed directly on a computing platform, rather than via a virtual machine.

Creating software on a virtual machine is often easier than on a native development kit. However, the advantages of using an NDK is that it allows developers more options, and can yield higher performance.”

Wednesday, November 16, 11

C++

Fast

Powerful

Strict (& unforgiving)

Extendable

Reliable

Wednesday, November 16, 11

Wednesday, November 16, 11

Processing

Wednesday, November 16, 11

Genesis

aka (LEFT) Casey Reas and (RIGHT) Ben Fry -The Co-creators of Processing

Wednesday, November 16, 11

“Processing is an open source programming language and environment for people who want to create images, animations, and interactions.”

Mission Statement

Wednesday, November 16, 11

Ben updated it ...

Wednesday, November 16, 11

“Today, there are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning, prototyping, and production.”

Why Processing?“Initially developed to serve as a software sketchbook and to teach fundamentals of computer programming within a visual context, Processing also has evolved into a tool for generating finished professional work.”

Wednesday, November 16, 11

Processing Wiki

Wednesday, November 16, 11

vimeo.com/28117873

Processing 2.0

Wednesday, November 16, 11

People to Follow ...

@ben_fry@reas

@blprnt@shiffmanand more ...

Wednesday, November 16, 11

processing.org

Wednesday, November 16, 11

Wednesday, November 16, 11

Java - the language

Wednesday, November 16, 11

FYI

Processing 2.0 alpha 3 is recently out! *

* As of November 2011

Wednesday, November 16, 11

Environment

Wednesday, November 16, 11

“Sketch” (i.e. app)

void setup() { // define the window size & enable anti-aliasing size(200, 200); smooth(); // Set "ink" color, font, and alignment for rendering text. fill(0); // Black // setup the font (system default sans serif) textFont(createFont("SansSerif",18)); textAlign(CENTER); noLoop(); // draw() executes only once} void draw() { // Draw text to screen using the previously set font. text("Hello World!", width/2, height/2);}

Wednesday, November 16, 11

Examples

Wednesday, November 16, 11

Libraries

Wednesday, November 16, 11

Generative Art Experiments

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Data Visualization

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

Wednesday, November 16, 11

`

Toxilibs

“toxiclibs is an independent, open source library collection for computational design tasks with Java & Processing developed by Karsten “toxi” Schmidt (thus far).”

Wednesday, November 16, 11

Toxilibs

“The classes are purposefully kept fairly generic in order to maximize re-use in different contexts ranging from generative design, animation, interaction/interface design, data visualization to architecture and digital fabrication, use as teaching tool and more.”

Wednesday, November 16, 11

Targets

Wednesday, November 16, 11

Desktops

Wednesday, November 16, 11

Web - JS Export

Wednesday, November 16, 11

processing.js

Wednesday, November 16, 11

Mobile - iProcessing

Wednesday, November 16, 11

Mobile - Android

Wednesday, November 16, 11

Mobile ProcessingRecent Event

Wednesday, November 16, 11

Cons

Performance is not 100% nativeSome fragmentation on devices

Java is powerful, but legacy

Wednesday, November 16, 11

Pros

Simple to install & runSimple, yet powerful language

Nice learning curveDecent librariesFast prototyping!

Wednesday, November 16, 11

Future?

Processing is a multi-versatile tool Community driven

2.03a brings power & > targetsStellar tool for data viz!

Wednesday, November 16, 11

Wednesday, November 16, 11

openframeworks.cc

Wednesday, November 16, 11

Mission Statement

Wednesday, November 16, 11

Some of the OF Dev “Crew”

Wednesday, November 16, 11

OF “GANG SIGN”

Wednesday, November 16, 11

OF Forums

Wednesday, November 16, 11

“007” release

Wednesday, November 16, 11

Dev Environments

Wednesday, November 16, 11

Code Basics

#include "ofMain.h"#include "testApp.h"#include "ofAppGlutWindow.h"

//========================================================================int main( ){

ofAppGlutWindow window;! ofSetupOpenGL(&window, 1024,768, OF_WINDOW);! ! ! // <-------- setup the GL context

! // this kicks off the running of my app! // can be OF_WINDOW or OF_FULLSCREEN! // pass in width and height too:! ofRunApp( new testApp());

}

Wednesday, November 16, 11

Code Basics#include "testApp.h"

void testApp::setup(){}

void testApp::update(){}

void testApp::draw(){}

void testApp::keyPressed(int key){}

void testApp::keyReleased(int key){}

void testApp::mouseMoved(int x, int y ){}

void testApp::mouseDragged(int x, int y, int button){}

void testApp::mousePressed(int x, int y, int button){}

void testApp::mouseReleased(int x, int y, int button){}

void testApp::gotMessage(ofMessage msg){}

Wednesday, November 16, 11

Code Basics#pragma once

#include "ofMain.h"

class testApp : public ofBaseApp {! public:! ! void setup();! ! void update();! ! void draw();

! ! void keyPressed (int key);! ! void keyReleased(int key);! ! void mouseMoved(int x, int y );! ! void mouseDragged(int x, int y, int button);! ! void mousePressed(int x, int y, int button);! ! void mouseReleased(int x, int y, int button);! ! void windowResized(int w, int h);! ! void dragEvent(ofDragInfo dragInfo);! ! void gotMessage(ofMessage msg);};

Wednesday, November 16, 11

OF API

Wednesday, November 16, 11

OF Core Objects

ApplicationGraphicsVideoUtilsSound Player

Sound StreamMathSerialArduino

Wednesday, November 16, 11

Addons

“openFrameworks addons are additional third party libraries that can be added to your projects to extend their functionality.”

Wednesday, November 16, 11

Provided Addons

ofxDirListofxXmlSettingsofxOscofxOpenCvofxNetwork

ofxThreadofxVectorMathofxVectorGraphicsofx3dModelLoader

Wednesday, November 16, 11

New Addons Site

Wednesday, November 16, 11

Examples

Wednesday, November 16, 11

Targets

Wednesday, November 16, 11

Desktop

Wednesday, November 16, 11

Mobile - iOS

Wednesday, November 16, 11

Mobile - Android

Wednesday, November 16, 11

Face Tracking Example

Wednesday, November 16, 11

Cons

Long version cyclesSmaller, niche community

C++ learning curveLack of libraries*

* check out recent site: ofxaddons.comWednesday, November 16, 11

Pros

Innovative Dev CommunityNative Performance

Audio & Visual CapabilitiesComputer Vision

Physical Computing

Wednesday, November 16, 11

Future?

OF is gaining momentum. OF is prime for Physical Computing.

Wednesday, November 16, 11

Wednesday, November 16, 11

cinderlib.org

Wednesday, November 16, 11

“Cinder is a powerful, intuitive cross-platform toolbox for programming graphics, audio, video, networking, image processing and computational geometry. “

CinderLib

Wednesday, November 16, 11

“Cinder is a community-developed, free and open source library for professional-quality creative coding in C++.”

Mission Statement

Wednesday, November 16, 11

Event Handling, Screensavers, Internet I/O, I/O from flat files, memory, resources, & networks, C++ Core, iOS Support & Multitouch, UI Events, XML Parser and more!

Support

Wednesday, November 16, 11

Contents

Wednesday, November 16, 11

Environments

Wednesday, November 16, 11

Basic Code

Wednesday, November 16, 11

Tinderbox

Wednesday, November 16, 11

Examples

Wednesday, November 16, 11

Kinect Library

Robert Hodgin’s “Body Dysmorphic Disorder”

Wednesday, November 16, 11

Kinect Library

Robert Hodgin’s “Body Dysmorphic Disorder”

Wednesday, November 16, 11

Planetary App

Bloom.io - iOS music visualizer app

Wednesday, November 16, 11

Targets

Wednesday, November 16, 11

Desktop

Wednesday, November 16, 11

Mobile - iOS

Wednesday, November 16, 11

Cons

Slow to release updatesSmaller, niche community

C++ Learning curveLack of libraries

Wednesday, November 16, 11

Pros

Innovative Dev CommunityNative Performance

Audio & Visual CapabilitiesComputer Vision

Physical Computing

Wednesday, November 16, 11

Cinder is still experimental. Last push was Summer 2011.

Lots of promise. Hopeful it sticks around!

Future?

Wednesday, November 16, 11

Wednesday, November 16, 11

adobe.com/flash

Wednesday, November 16, 11

Mission Statement

Does Adobe even have one for Flash?Roadmap URL?

... Video, 3-D, Games I suppose ...

Wednesday, November 16, 11

Recent News

Wednesday, November 16, 11

Thoughts

Wednesday, November 16, 11

Thoughts

Watch @seb_ly’s “What the Flux?” preso

Wednesday, November 16, 11

Recent Project

Custom Touch Table

Wednesday, November 16, 11

Recent Project

Custom Touch Table

Wednesday, November 16, 11

Environment

Wednesday, November 16, 11

HYPE Framework

Wednesday, November 16, 11

Sample Code

Wednesday, November 16, 11

Targets

Wednesday, November 16, 11

Desktop

Wednesday, November 16, 11

Mobile - iOS

Wednesday, November 16, 11

Mobile - Android

Wednesday, November 16, 11

Mobile - Blackberry OS

Wednesday, November 16, 11

Cons

Too Versatile?Flash Player for Devices

Not native performance*.Proprietary Runtimes.

Wednesday, November 16, 11

Pros

Multi-versatile.Cross Platform (on the Desktop).

Easy to pick up ActionScript.Fast Prototyping.

Wednesday, November 16, 11

Future?

Parts of Flash are Deprecated.Flash is targeting video, games, 3-D.Adobe is getting back to its roots?

Wednesday, November 16, 11

Wednesday, November 16, 11

polycode.org

Wednesday, November 16, 11

Creator

Wednesday, November 16, 11

Basic App

Wednesday, November 16, 11

Mission Statement

“Polycode is a free, open-source, cross-platform framework for creative code.

You can use it as a C++ API or as a standalone scripting language to get easy and simple access to accelerated 2D and 3D graphics, hardware shaders, sound and network programming, physics engines and more.”

Wednesday, November 16, 11

PolyCode“On top of the core C++ API, Polycode offers a Lua-based scripting system with its own set of compilation tools. The Lua API mirrors the C++ API and can be used to easily create prototypes and even publish complete applications to multiple platforms without compiling C++.

Polycode is completely open-source and available under the MIT license and was designed and developed by Ivan Safrin”

Wednesday, November 16, 11

Modules

2D/3D Physics and CollisionUI

NetworkingLightMaps

GLSLCgShading

TerrainKinect

Wednesday, November 16, 11

API

Wednesday, November 16, 11

Basic Code

Wednesday, November 16, 11

Environment

Wednesday, November 16, 11

Examples

Wednesday, November 16, 11

Gallery

Wednesday, November 16, 11

Targets

Wednesday, November 16, 11

Desktop Only

Wednesday, November 16, 11

Cons

Fairly New.API limitations.

Smaller, niche community.No mobile targets (yet).

Wednesday, November 16, 11

Pros

Native Performance.Easy to get started.

Lua or C++.Turning out to be good at 2 & 3D.

Wednesday, November 16, 11

Future?

Polycode is still early in development. Lua is gaining popularity within

developer circuit.Alternatives are always good.

Wednesday, November 16, 11

TAKE AWAYS

Wednesday, November 16, 11

“Be passionate about your work,

but do not get emotionally

attached to your tools ...

Tools can, and will be replaced.”

TAKE AWAY #1

Wednesday, November 16, 11

“Whenever possible, use the right

tool for the right job.”

“Using a Hammer to screw

in a nail doesn’t lead to good

results.”

TAKE AWAY #2

Wednesday, November 16, 11

GO FORTH ...

EXPERIMENT AND TINKER!

HAVE FUN!

TAKE AWAY #3

Wednesday, November 16, 11

OUTRO

Wednesday, November 16, 11

Resources

Wednesday, November 16, 11

Book

Wednesday, November 16, 11

Book

Wednesday, November 16, 11

creativecodingpodcast.com

PodCast

Wednesday, November 16, 11

Q & A

Wednesday, November 16, 11

Thank you.

Wednesday, November 16, 11

Links

www.creativeapplications.net

processing.org

cinderlib.org

openframeworks.cc

polycode.org

adobe.com/flash

Wednesday, November 16, 11

top related