All Projects → sourya-sen → Aalto_Day_One

sourya-sen / Aalto_Day_One

Licence: other
Code repo for Aalto Day One branding elements

Projects that are alternatives of or similar to Aalto Day One

Generativenature
A VJ set which was played in Interim-Report 2nd edition
Stars: ✭ 21 (+40%)
Mutual labels:  openframeworks
Norman Ar
Decorate your world with AR animations.
Stars: ✭ 122 (+713.33%)
Mutual labels:  openframeworks
Ofxlibwebsockets
[Deprecated] openFrameworks wrapper of libwebsockets for WebSocket client and server functionality
Stars: ✭ 171 (+1040%)
Mutual labels:  openframeworks
Corruptvideo
Corrupt Video™ is an OpenFrameworks based Glitch Art Software allowing its users to glitch and record movies or to corrupt real time videos.
Stars: ✭ 49 (+226.67%)
Mutual labels:  openframeworks
Ofxio
A collection of I/O core utils including a directory watcher, file filters and ordering, compression and more.
Stars: ✭ 78 (+420%)
Mutual labels:  openframeworks
Ofxremoteui
OpenFrameworks addon serves any number of variables (bool, float, int, enum, string, ofColor) on the network, so that you can modify from outside the OF app. Includes a native OSX Client. OSC based.
Stars: ✭ 132 (+780%)
Mutual labels:  openframeworks
Ofxgrafica
A simple and configurable plotting library for openFrameworks
Stars: ✭ 24 (+60%)
Mutual labels:  openframeworks
Example Mediapipe Udp
Connecting openFrameworks to Google MediaPipe Machine Learning Framework over UDP
Stars: ✭ 217 (+1346.67%)
Mutual labels:  openframeworks
Ofxfontstash
Easy (and fast) unicode string rendering addon for OpenFrameworks. FontStash is made by Andreas Krinke and Mikko Mononen
Stars: ✭ 84 (+460%)
Mutual labels:  openframeworks
Ofxgpio
Library C++ for raspberrypi and orangepi, GPIO interfaces compatible with openframeworks.
Stars: ✭ 155 (+933.33%)
Mutual labels:  openframeworks
Ofxtweenzor
Tweening Engine for OpenFrameworks
Stars: ✭ 52 (+246.67%)
Mutual labels:  openframeworks
Ofxwatchdog
[openFrameworks] A process watchdog timer for openFrameworks applications.
Stars: ✭ 75 (+400%)
Mutual labels:  openframeworks
Ofxhapplayer
A Hap player for OpenFrameworks
Stars: ✭ 135 (+800%)
Mutual labels:  openframeworks
Awesome Generative Art
Awesome generative art
Stars: ✭ 980 (+6433.33%)
Mutual labels:  openframeworks
Realtimepathplanning
Sampling based rewiring approaches to solve motion planning problems for a robot with dynamic obstacles
Stars: ✭ 171 (+1040%)
Mutual labels:  openframeworks
Ofxstatusbar
Addon for openFrameworks to add icons and text to the statusbar of Mac OS X (needs support - see readme)
Stars: ✭ 11 (-26.67%)
Mutual labels:  openframeworks
Vscode of
openFrameworks empty example for visual studio code
Stars: ✭ 129 (+760%)
Mutual labels:  openframeworks
Mosaic
Mosaic, an openFrameworks based Visual Patching Creative-Coding Platform
Stars: ✭ 250 (+1566.67%)
Mutual labels:  openframeworks
Ofxarcore
Experimental addon for openFrameworks to use ARCore on Android devices
Stars: ✭ 173 (+1053.33%)
Mutual labels:  openframeworks
Ofxbullet
Bullet Physics Wrapper for Openframeworks
Stars: ✭ 138 (+820%)
Mutual labels:  openframeworks

Aalto Day One 2018 Branding Elements

This is the repository for all the openFrameworks files that were used to create the branding elements of Aalto Day One 2018. Below, there is brief documentation of the process and information about how the code works.

Dependencies: openFrameworks v0.10.0, ofxCurve (which was developed for this project)

DayOne00 DayOne01 DayOne02

Description of the files and the process

Framework contains the boilerplate code that was written first as a platform to develop off. As the graphics being generated through generative code were to be used for large scale prints, it was important to be able to write the code in a way that the output could be scaled, yet be manageable and viewable on the computer screen. The scale variable controls this. While the window size is kept a constant at 1000 x 1000px, the FBO is always allocated a multiplier of the scale variable. The FBO is scaled to the window size to be visible on screen, but the PNG file it exports is exported at scale * 1000 x scale * 1000 pixels. This kept the process simple as everything could be developed at a scale value of 1.0 but could be exported at any scale depending on the requirement.

After the framework was working properly, it was time to develop different ideas for the graphics.

The projects with the dates are the the results of these different ideas. The idea was simple (and heavily inspired by Zach Liberman's work) - generate a set of control points, draw a curve through the control points, draw circles of different sizes with different shapes based on mathematical functions through these set of points.

The following code block does this, and all the different versions are variations on the same idea.

//Generate a set of control points and a curve through them.
controlPoints.resize(3 * it + 1);

for(int i = 0; i<controlPoints.size(); ++i){
    controlPoints[i] = glm::vec3(ofRandom(200 * scale, width - 200 * scale), ofRandom(200 * scale, height - 200 * scale), 0.0);
}

points = evalCR(controlPoints, 200);
fbo.begin();
ofClear(0, 0);

for(int i = 0; i<points.size(); i++){

    float r = 127 + 127 * sin(ofDegToRad(i/2.0 + ofGetFrameNum()));
    float g = 127 + 127 * sin(ofDegToRad(i/2.0 + 10 * sin(ofDegToRad(ofGetFrameNum()))));
    float b = 192 + 64 * sin(ofDegToRad(i/3.0 + 45 * sin(ofDegToRad(ofGetFrameNum()))));

    ofSetColor(r, g, b);

    ofDrawCircle(points[i], (120  + (60 * sin(ofDegToRad(i + ofGetFrameNum())))) * ofNoise(ofGetFrameNum()/1000.0) * scale);
}

fbo.end();

fbo.draw(0, 0, ofGetWidth(), ofGetHeight());

Here are some results from this process: process00 process01 process02 process03

Once there were a certain amount of these shapes exported, some of the shapes and some of the colour combinations were chosen as the building blocks for the visual material.

Certain frames were selected, as were some shapes, and these are the different _shape files. The selected frame was used in the drawing function to respect the selections.

int selectedFrame = 315;

for(int i = 0; i<points.size(); i++){

    float r = 127 + 127 * sin(ofDegToRad(i + selectedFrame));
    float g = 127 + 127 * sin(ofDegToRad(i + 100 * sin(ofDegToRad(selectedFrame))));
    float b = 127 + 127 * sin(ofDegToRad(i + 45 * sin(ofDegToRad(selectedFrame))));

    ofSetColor(r, g, b);

    float x = centre.x + (i/1.0) * cos(ofDegToRad(i)) * ofNoise((selectedFrame +ofGetFrameNum())/100.0) * scale;
    float y = centre.y + (i/1.0) * sin(ofDegToRad(i)) * ofNoise((selectedFrame +ofGetFrameNum())/1000.0) * scale;

    ofDrawCircle(points[i], 80 * scale + 50 * cos(ofDegToRad((i + selectedFrame +ofGetFrameNum())/1.0)) * scale);

}

These also needed to be animated elements as well, so image sequences were saved and later used in After Effects to create the final video files with some other, mainly text, animations. There are two sets of animations for each selection, one a basic image sequence and second, an appearance of the same. Some of the appearances do have static and animated versions, again, though. In the static versions, the shape appears without using the ofGetFrameNum() function and the end of the sequence lines up with the start of the main image sequence. In the animated versions, the last frame of the appearance lines up with the number of frames elapsed with the main sequence. The process of the appearance animation was simple, instead of using all the points through the curve, iterate through each point incrementally, as seen in the code example below.

int selectedFrame = 79;

for(int i = 0; i<counter; i++){

    float r = 127 + 127 * sin(ofDegToRad(i/2.0 + selectedFrame));
    float g = 127 + 127 * sin(ofDegToRad(i/2.0 + 10 * sin(ofDegToRad(selectedFrame))));
    float b = 192 + 64 * sin(ofDegToRad(i/3.0 + 45 * sin(ofDegToRad(selectedFrame))));

    ofSetColor(r, g, b);

    ofDrawCircle(points[i], (120  + (60 * sin(ofDegToRad(i + selectedFrame + 0.0)))) * ofNoise(selectedFrame + 0.0/1000.0) * scale);
}

fbo.end();

fbo.draw(0, 0, ofGetWidth(), ofGetHeight());

if(counter >= points.size()) ofExit();

if (counter < points.size()) counter ++;

Credits

Anna Muchenikova / Art Direction

Sourya Sen, Babi Brasileiro, Robynn McPherson / Visuals and Graphics Design

Sourya Sen / Motion Graphics

Esa Kapila / Photography

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].