LookingOutwards-05: 3D Computer Graphics

I looked at the project “Celestial Beings” by Jonas Pfeiffer, where he used computer graphics to create angles that are true to the description in the Old Testament. What I really admire about this object is that the artist utilizes elements the audience is familiar with but rearranges the elements to create something completely out of imagination. The freakish appearance with the familiar elements allows the audience to be both terrified and linger on the image. And through the manipulation of color, lighting, and other factors, the author made it resemble the description of an angle. I find it astonishing that computer graphics can realize one’s imagination or recreate mythical creatures that wouldn’t exist in real life.

It is most likely the author has modeled the objects in 3d modeling software and animated the object and put it through a renderer. The model might be generated through an algorithm that would pattern existing elements together, as shown by the clear repetitive elements in the angels.  

It can be comprehended that the artist is interested in Christian mythology, but enjoy modern texturing as shown in the rendering style of the angels. The modern accent is also displayed in the rendering of the “Orphan”, where there are elements that seem to be written by markers on the giant eye.

Link: https://www.behance.net/gallery/152115365/Celestial-Beings

Looking Outwards 05: 3D Computer Graphics

This project explores the infinite out of the finite, and  is composed of differing, abstract shapes that change shape and form and travel from left to right, panel to panel in a 5×5 grid. The shapes never repeat themselves, and whenever they pass a panel grid line, they change their look and behavior in a larger form. The shapes in each vertical panel are different, but they hold some similarity because their parameters that control their growth are the same. I admire how it resembles a grid lithographic printing, with multiple shapes, textures, and compositions. I feel as though it shows how applicable and universal the options are with 3D computer graphics, even without the use of complex systems. The algorithm that generated this work is a closed loop.

©,

Brian Knep: Drift Grid 1 (2005), 80 in x 80 in

Earlier stage of Drift Grid 1 : Drift (2004)

Project 05: 1950’s Atomic-Era Wallpaper!

Re-live the Golden Days of American history with this nostalgic throwback Midcentury Atomic-Era Wallpaper!

sketchDownload
// Ilia Urgen
// Section B

let shape_width = 90;
let shape_height = 160; 

// I created 4 different designs, which I named Quad 1, Quad 2, Quad 3, and Quad 4.
// Each design is stored in a separate function below.

function setup() {
    createCanvas (600, 600);
    background (200);
}   

function draw() {

    // Quad 1 Coordinates
    let x1 = 60;
    let y1 = 60;

    let x2 = 180;
    let y2 = 220;


    // Quad 2 Coordinates
    let x3 = 60;
    let y3 = 220;

    let x4 = 180;
    let y4 = 60;

    // Quad 3 Coordinates
    let x5 = 0;
    let y5 = -20;

    let x6 = 120;
    let y6 = 140;

    // Quad 4 Coordinates
    let x7 = 0;
    let y7 = 140;

    let x8 = 120;
    let y8 = -20;

    let row_increase = 240;
    let col_increase = 320;

    background (210);
    
    // Prints outer Quad 1
    for (var rowA = 1; rowA <= 10; rowA += 1) {
        for (var colA = 1; colA <= 10; colA += 1) {

            quad_2 (x1, y1);  
            y1 += col_increase;
        } 

        x1 += row_increase; 
        y1 = 60;
    }

    // Prints inner Quad 1
    for (var rowB = 1; rowB <= 10; rowB += 1) {
        for (var colB = 1; colB <= 10; colB += 1) {

            quad_2 (x2, y2);  
            y2 += col_increase;
        } 

        x2 += row_increase; 
        y2 = 220;
    }

    // Prints outer Quad 2
    for (var rowC = 1; rowC <= 10; rowC += 1) {
        for (var colC = 1; colC <= 10; colC += 1) {

            quad_1 (x3, y3);  
            y3 += col_increase;
        } 

        x3 += row_increase; 
        y3 = 220;
    }

    // Prints inner Quad 2
    for (var rowD = 1; rowD <= 10; rowD += 1) {  
        for (var colD = 1; colD <= 10; colD += 1) {

            quad_1 (x4, y4);  
            y4 += col_increase;
        } 

        x4 += row_increase; 
        y4 = 60;
    }
    
    // Prints outer Quad 3
    for (var rowE = 1; rowE <= 10; rowE += 1) {  
        for (var colE = 1; colE <= 10; colE += 1) {

            quad_3 (x5, y5); 
            y5 += col_increase;
        } 

        x5 += row_increase; 
        y5 = -20;
    }
    
    // Prints inner Quad 3
    for (var rowE = 1; rowE <= 10; rowE += 1) {  
        for (var colE = 1; colE <= 10; colE += 1) {

            quad_3 (x6, y6);  
            y6 += col_increase;
        } 

        x6 += row_increase; 
        y6 = 140;
    }

    // Prints outer Quad 4
    for (var rowF = 1; rowF <= 10; rowF += 1) {  
        for (var colF = 1; colF <= 10; colF += 1) {

            quad_4 (x7, y7); 
            y7 += col_increase;
        } 

        x7 += row_increase; 
        y7 = 140;
    }
    
    // Prints inner Quad 4
    for (var rowG = 1; rowG <= 10; rowG += 1) {  
        for (var colG = 1; colG <= 10; colG += 1) {

            quad_4 (x8, y8);  
            y8 += col_increase;
        } 

        x8 += row_increase; 
        y8 = -20;
    }

    noLoop();
}

function quad_1 (x1, y1) {
    noStroke();
    
    fill (96,149,130);    
    quad (x1 - shape_width/2, y1,   x1 - shape_width/3, y1,   x1, y1 - shape_height/2,   x1 - shape_width/6, y1 - shape_height/2);
    quad (x1 - shape_width/2, y1,   x1 - shape_width/3, y1,   x1, y1 + shape_height/2,   x1 - shape_width/6, y1 + shape_height/2);
    quad (x1 + shape_width/2, y1,   x1 + shape_width/3, y1,   x1, y1 + shape_height/2,   x1 + shape_width/6, y1 + shape_height/2);
    quad (x1 + shape_width/2, y1,   x1 + shape_width/3, y1,   x1, y1 - shape_height/2,   x1 + shape_width/6, y1 - shape_height/2);

    fill (114,102,78);
    quad (x1 - shape_width/3, y1,   x1 - shape_width/3 - 5, y1,   x1 - 5, y1 - shape_height/2, x1, y1 - shape_height/2);   
    quad (x1 - shape_width/3, y1,   x1 - shape_width/3 - 5, y1,   x1 - 5, y1 + shape_height/2, x1, y1 + shape_height/2);
    quad (x1 + shape_width/3, y1,   x1 + shape_width/3 + 5, y1,   x1 + 5, y1 + shape_height/2, x1, y1 + shape_height/2);   
    quad (x1 + shape_width/3, y1,   x1 + shape_width/3 + 5, y1,   x1 + 5, y1 - shape_height/2, x1, y1 - shape_height/2);

    fill (53,98,115);
    quad (x1 - shape_width/3, y1,   x1, y1 - shape_height/2,   x1 + shape_width/3, y1,   x1, y1 + shape_height/2);
    
    fill (32,64,60);
    quad (x1 - shape_width/4.5, y1,   x1, y1 - shape_height/3,   x1 + shape_width/4.5, y1,   x1, y1 + shape_height/3);

    stroke(255);
    strokeWeight(1);
    line (x1 - shape_width/10, y1, x1 + shape_width/10, y1);
    line (x1, y1 - shape_height/10, x1, y1 + shape_height/10);
    line (x1 - shape_width/20, y1 - shape_height/20, x1 + shape_width/20, y1 + shape_height/20);
    line (x1 + shape_width/20, y1 - shape_height/20, x1 - shape_width/20, y1 + shape_height/20);

    circle (x1 - shape_width/10, y1, 3);
    circle (x1 + shape_width/10, y1, 3);
    circle (x1, y1 - shape_height/10, 3);
    circle (x1, y1 + shape_height/10, 3);

    circle (x1 - shape_width/20, y1 - shape_height/20, 3);
    circle (x1 + shape_width/20, y1 + shape_height/20, 3);
    circle (x1 + shape_width/20, y1 - shape_height/20, 3);
    circle (x1 - shape_width/20, y1 + shape_height/20, 3);
}

function quad_2 (x3, y3) {
    noStroke();
    
    fill (53,98,115);    
    quad (x3 - shape_width/2, y3,   x3 - shape_width/3, y3,   x3, y3 - shape_height/2,   x3 - shape_width/6, y3 - shape_height/2);
    quad (x3 - shape_width/2, y3,   x3 - shape_width/3, y3,   x3, y3 + shape_height/2,   x3 - shape_width/6, y3 + shape_height/2);
    quad (x3 + shape_width/2, y3,   x3 + shape_width/3, y3,   x3, y3 + shape_height/2,   x3 + shape_width/6, y3 + shape_height/2);
    quad (x3 + shape_width/2, y3,   x3 + shape_width/3, y3,   x3, y3 - shape_height/2,   x3 + shape_width/6, y3 - shape_height/2);

    fill (114,102,78);
    quad (x3 - shape_width/3, y3,   x3 - shape_width/3 - 5, y3,   x3 - 5, y3 - shape_height/2, x3, y3 - shape_height/2);   
    quad (x3 - shape_width/3, y3,   x3 - shape_width/3 - 5, y3,   x3 - 5, y3 + shape_height/2, x3, y3 + shape_height/2);
    quad (x3 + shape_width/3, y3,   x3 + shape_width/3 + 5, y3,   x3 + 5, y3 + shape_height/2, x3, y3 + shape_height/2);   
    quad (x3 + shape_width/3, y3,   x3 + shape_width/3 + 5, y3,   x3 + 5, y3 - shape_height/2, x3, y3 - shape_height/2);

    fill (96,149,130);
    quad (x3 - shape_width/3, y3,   x3, y3 - shape_height/2,   x3 + shape_width/3, y3,   x3, y3 + shape_height/2);
    
    fill (255);
    quad (x3 - shape_width/4.5, y3,   x3, y3 - shape_height/3,   x3 + shape_width/4.5, y3,   x3, y3 + shape_height/3);

    stroke(32,64,60);
    strokeWeight(1);
    line (x3 - shape_width/10, y3, x3 + shape_width/10, y3);
    line (x3, y3 - shape_height/10, x3, y3 + shape_height/10);
    line (x3 - shape_width/20, y3 - shape_height/20, x3 + shape_width/20, y3 + shape_height/20);
    line (x3 + shape_width/20, y3 - shape_height/20, x3 - shape_width/20, y3 + shape_height/20);

    circle (x3 - shape_width/10, y3, 4);
    circle (x3 + shape_width/10, y3, 4);
    circle (x3, y3 - shape_height/10, 4);
    circle (x3, y3 + shape_height/10, 4);

    circle (x3 - shape_width/20, y3 - shape_height/20, 4);
    circle (x3 + shape_width/20, y3 + shape_height/20, 4);
    circle (x3 + shape_width/20, y3 - shape_height/20, 4);
    circle (x3 - shape_width/20, y3 + shape_height/20, 4);
}

function quad_3 (x5, y5) {
    noStroke();
    
    fill (96,149,130);    
    quad (x5 - shape_width/2, y5,   x5 - shape_width/3, y5,   x5, y5 - shape_height/2,   x5 - shape_width/6, y5 - shape_height/2);
    quad (x5 + shape_width/2, y5,   x5 + shape_width/3, y5,   x5, y5 + shape_height/2,   x5 + shape_width/6, y5 + shape_height/2);

    fill (53,98,115);
    quad (x5 - shape_width/2, y5,   x5 - shape_width/3, y5,   x5, y5 + shape_height/2,   x5 - shape_width/6, y5 + shape_height/2);
    quad (x5 + shape_width/2, y5,   x5 + shape_width/3, y5,   x5, y5 - shape_height/2,   x5 + shape_width/6, y5 - shape_height/2);

    fill (253,217,181);
    quad (x5 - shape_width/3, y5,   x5 - shape_width/3 - 5, y5,   x5 - 5, y5 - shape_height/2, x5, y5 - shape_height/2);   
    quad (x5 - shape_width/3, y5,   x5 - shape_width/3 - 5, y5,   x5 - 5, y5 + shape_height/2, x5, y5 + shape_height/2);
    quad (x5 + shape_width/3, y5,   x5 + shape_width/3 + 5, y5,   x5 + 5, y5 + shape_height/2, x5, y5 + shape_height/2);   
    quad (x5 + shape_width/3, y5,   x5 + shape_width/3 + 5, y5,   x5 + 5, y5 - shape_height/2, x5, y5 - shape_height/2);

    stroke (32,64,60);
    strokeWeight (3);

    fill (205,91,69);
    quad (x5 - shape_width/3, y5,   x5, y5 - shape_height/2,   x5 + shape_width/3, y5,   x5, y5 + shape_height/2);
    
    strokeWeight (1.5);

    line (x5 - shape_width/10, y5, x5 + shape_width/10, y5);
    line (x5, y5 - shape_height/10, x5, y5 + shape_height/10);
    line (x5 - shape_width/20, y5 - shape_height/20, x5 + shape_width/20, y5 + shape_height/20);
    line (x5 + shape_width/20, y5 - shape_height/20, x5 - shape_width/20, y5 + shape_height/20);

    circle (x5 - shape_width/10, y5, 4);
    circle (x5 + shape_width/10, y5, 4);
    circle (x5, y5 - shape_height/10, 4);
    circle (x5, y5 + shape_height/10, 4);

    circle (x5 - shape_width/20, y5 - shape_height/20, 4);
    circle (x5 + shape_width/20, y5 + shape_height/20, 4);
    circle (x5 + shape_width/20, y5 - shape_height/20, 4);
    circle (x5 - shape_width/20, y5 + shape_height/20, 4);
}

function quad_4 (x7, y7) {
    noStroke();
    
    fill (53,98,115);    
    quad (x7 - shape_width/2, y7,   x7 - shape_width/3, y7,   x7, y7 - shape_height/2,   x7 - shape_width/6, y7 - shape_height/2);
    quad (x7 + shape_width/2, y7,   x7 + shape_width/3, y7,   x7, y7 + shape_height/2,   x7 + shape_width/6, y7 + shape_height/2);
    
    fill (96,149,130);
    quad (x7 - shape_width/2, y7,   x7 - shape_width/3, y7,   x7, y7 + shape_height/2,   x7 - shape_width/6, y7 + shape_height/2);
    quad (x7 + shape_width/2, y7,   x7 + shape_width/3, y7,   x7, y7 - shape_height/2,   x7 + shape_width/6, y7 - shape_height/2);

    fill (205,91,69);
    quad (x7 - shape_width/3, y7,   x7 - shape_width/3 - 5, y7,   x7 - 5, y7 - shape_height/2, x7, y7 - shape_height/2);   
    quad (x7 + shape_width/3, y7,   x7 + shape_width/3 + 5, y7,   x7 + 5, y7 + shape_height/2, x7, y7 + shape_height/2);   
    quad (x7 - shape_width/3, y7,   x7 - shape_width/3 - 5, y7,   x7 - 5, y7 + shape_height/2, x7, y7 + shape_height/2);
    quad (x7 + shape_width/3, y7,   x7 + shape_width/3 + 5, y7,   x7 + 5, y7 - shape_height/2, x7, y7 - shape_height/2);

    stroke (32,64,60);
    strokeWeight (3);

    fill (253,217,181);
    quad (x7 - shape_width/3, y7,   x7, y7 - shape_height/2,   x7 + shape_width/3, y7,   x7, y7 + shape_height/2);

    strokeWeight (1.5);
 
    line (x7 - shape_width/10, y7, x7 + shape_width/10, y7);
    line (x7, y7 - shape_height/10, x7, y7 + shape_height/10);
    line (x7 - shape_width/20, y7 - shape_height/20, x7 + shape_width/20, y7 + shape_height/20);
    line (x7 + shape_width/20, y7 - shape_height/20, x7 - shape_width/20, y7 + shape_height/20);

    circle (x7 - shape_width/10, y7, 4);
    circle (x7 + shape_width/10, y7, 4);
    circle (x7, y7 - shape_height/10, 4);
    circle (x7, y7 + shape_height/10, 4);

    circle (x7 - shape_width/20, y7 - shape_height/20, 4);
    circle (x7 + shape_width/20, y7 + shape_height/20, 4);
    circle (x7 + shape_width/20, y7 - shape_height/20, 4);
    circle (x7 - shape_width/20, y7 + shape_height/20, 4);   
}

LOOPLEX

Section B
Blog Post: 04 | Sound Art

LOOPLEX is a physical user interface prototype for live sound interaction. It uses software like
reacTIVision, MaxMSP, Ableton Live and Arduino.
The user can move the hexagons mounted on the prototype. These hexagons have fiducial markers
underneath them, and their movement is traced by DV-Cam, which generates notes based on the
direction of the hexagons. This data is mapped by supporting software and turns into audio loops.
In addition to the interactive aspect of sound, the prototype also supports color processing, which
enhances the overall experience. I particularly like this prototype because it stimulates experience
engaging the sense of touch, vision and touch simultaneously.
https://vimeo.com/3546180

Looking outwards 05

Designer and art director Santi Zoraidez blends impossibly clean computer-generated animations and images with physical products to create highly original and captivating digital campaigns for brands such as Apple, Ikea, and Nike. Although not much is known about his highly coveted artistic process, it is clear that he depends heavily on 3D modeling software to create the “physical” objects of his art. Then a phenomenal rendering software is used to give the objects materiality, texture, transparency, shine, and luminance.  I really admire that the images Zoraidez creates are clean and modern, and embody a kind of playfulness that is rare in marketing. Similarly, his animations are bright and full of forms so realistic you want to reach into the screen and grab them.

https://santizoraidez.com/

doesn’t this make you want to buy a fridge?!

Project 05 Wallpaper

For making my wallpaper, I first drew the sketch below where I wanted there to be a striped background, flowers, and a curving dotted line behind the flowers that would connect them vertically. Once I achieved this, I adjusted some things like making the flowers have more layers and, instead of one stripe behind each flower column, I decided I liked many stripes better.

project5

// Rachel Legg / rlegg / Section C

function setup() {
    createCanvas(600, 600);
    background(175, 190, 220);      
}

function draw() {
    //blue stripes behind
    for(var x = 10; x <= width; x += 100){
        stripeBlue(x, 0);

    }

    // repeated curving line
    for (var y = 0; y < height + 20; y += 20){
        for(var x = 1; x < width; x += 2){
            noStroke();
            fill(255, 255, 224);
            circle((50 * x) - 40 * cos(radians(y * 1.85)), y + 5, 10);
        }
    }

    //flower
    for (var y = 40; y <= height; y = y + 100){
        for (var x = 50; x <= width; x += 100){
            flowerBlue(x, y);
        }
    }

noLoop();

}

function stripeBlue(x, y){
    noStroke();
    fill(119, 158, 203, 40);                   
    rectMode(CENTER);
    rect(x + 40, y + 300, 10, 600);
    rect(x + 20, y + 300, 5, 600);
    rect(x + 60, y + 300, 5, 600);
    rect(x + 0, y + 300, 5, 600);
    rect(x + 80, y + 300, 5, 600);
    //blue flowers every 100

}

function flowerBlue (x, y){
    //flower
    fill(185, 200, 220); 
    stroke(255, 255, 224);
    strokeWeight(0.75);
    ellipse(x + 8, y + 8, 35);
    ellipse(x - 8, y + 8, 35);
    ellipse(x + 8, y - 8, 35);
    ellipse(x - 8, y - 8, 35);
    //triple layer
    ellipse(x + 8, y + 8, 25);
    ellipse(x - 8, y + 8, 25);
    ellipse(x + 8, y - 8, 25);
    ellipse(x - 8, y - 8, 25);
    //double layer
    ellipse(x + 8, y + 8, 15);
    ellipse(x - 8, y + 8, 15);
    ellipse(x + 8, y - 8, 15);
    ellipse(x - 8, y - 8, 15);
    //center
    fill(255, 255, 224);         //light yellow
    ellipse(x, y, 10);
}



    

Looking Outward – 05

Eugene Golovanchuk (aka Skeeva) is an art director and 3D digital artist. His artwork uses “3D dark art surrealism, captivating in its cyberpunk flare.” Much of his work has a focus on fashion, developing outfits digitally. I chose to look specifically at his project “Oversized” made in March 2020 which was one of his personal projects where he wanted to learn how to use “Marvelous Designer” to simulate clothing and animation. This project shows animations of three different outfits (with a focus on oversized coats), and the video above shows the first outfit of the series. He uses imagery and animation to show off the garments he designed, and they are so cool. His artwork is fascinating as it seems so real, yet so out of this world and like nothing I have ever seen before. The patterns and textures are mesmerizing. I think this is also very interesting because so much of fashion is about texture and materiality, and Skeeva is able to achieve this kind of detail all through a computer.

Title: Oversized
Artist: Eugene Golovanchuk (Skeeva)
Link: https://theskeeva.com/oversized
https://theskeeva.com/work

Project 5: Wallpaper

I decided to go full floral vintage and make a flower wallpaper! Also thought it would be cute to have a little tear in the corner, revealing the wood paneling underneath.

sketch
function setup() {
    createCanvas(600, 400);
    background(224, 224, 197);
}

function draw() {
	background(224, 224, 197);
	for(var y = 0; y < 500; y += 100){
		for(var x = 0; x < 800; x += 200){
			drawFlower(x, y);
		}
	}

	for(var y = -50; y < 500; y += 100){
		for(var x = 100; x < 800; x += 200){
			drawFlower(x, y);
		}
	}

    for(var col = 500; col < 600; col += 40){
        strokeWeight(2)
        stroke(110, 94, 66);
        fill(186, 156, 95);
        rect(col, 350, 40, 50);
    }

    strokeWeight(3);
    stroke(250, 245, 237);
    fill(250, 245, 237);
    triangle(500, 350, 500, 400, 600, 350);
}

function drawFlower(x, y) {
	push();
	translate(x, y); 
	strokeWeight(8);
	stroke(184, 176, 79); //green stem color
	line(-25, 35, -40, 50);
	line(-40, 50, -45, 60);
	line(-45, 60, -55, 20);
	line(-55, 20, -55, 0);
	line(-45, 60, -55, 90);

	strokeWeight(0);
	fill(184, 176, 79); //same green
	ellipse(-55, 0, 20, 30);

	push();
	rotate(radians(30));
	fill(209, 187, 96); //underside of stem color
    rect(-10, 0, 15, 45);
    pop();

    fill(230, 158, 57); //main flower orange color
    rect(-15, -35, 30, 50); //base of the flowers
    rect(-35, -5, 40, 20);
    rect(5, -5, 30, 30); 
    rect(-15, 15, 20, 20);

    push();
    rotate(radians(45));
    rect(-14, 6, 15, 30);
    rect(-32, -4, 30, 15);
    rect(-5, -35, 15, 30);
    pop();

    strokeWeight(1);
    stroke(212, 127, 42); //dark orange thin line flower color
    line(0, 0, -3, -25);
    line(0, 0, 7, -25);
    line(0, 0, -8, -25);
    line(0, 0, 12, -25);
    line(0, 0, -30, 1);
    line(0, 0, -30, -2);
    line(0, 0, -25, 15);
    line(0, 0, -20, 20);
    line(0, 0, 27, 15);
    line(0, 0, 25, 20);
    line(0, 0, 30, 5);
    line(0, 0, 30, 0);

    stroke(250, 231, 180); //flower light cream color
    strokeWeight(2);
    line(0, 0, 3, -25);
    line(0, 0, -30, 5);
    line(0, 0, 30, 10);

    strokeWeight(1);
    stroke(242, 223, 145); //lines connecting seeds color
    line(0, 0, 10, -10);
    line(0, 0, 9, -5);
    line(0, 0, 13, -13);
    line(0, 0, 15, -18);
    line(0, 0, 10, -15);

    strokeWeight(0);
    fill(69, 43, 31); //seed color
    ellipse(10, -10, 3, 3);
    ellipse(9, -5, 3, 3);
    ellipse(13, -13, 3, 3);
    ellipse(15, -18, 3, 3);
    ellipse(10, -15, 3, 3);
    pop();
}

anabelle’s blog 05

One 3D computer artist I find inspiring is @dedouze on Instagram. His works propose an interesting side of 3D art because his works look 2D! Actually, it can be hard to tell which works on his page are 3D models versus sketches sometimes because the visuals stay so consistent in a static image. The only time you can really differentiate the two is when he animates his 3D works. He uses blender for all his works (this is particularly inspiring to me, since I just learned how to use blender a week ago for another class. It’s like, ‘wow, this is what I can work up to?!’). I think his art also departs from the usual aesthetics we associate with 3D art — I’m thinking Pixar’s cartoony style or Hitman’s hyper realistic one. dedouze’s art is the only convincing example I’ve seen that makes me think that 2D animation can be improved with 3D. You know how sometimes a 2D show briefly switches to 3D and it’s really jarring and not visually pleasing? I feel like the studios in charge of those shows could learn from that it is possible to make smooth 2D and 3D transitions without removing the audience from the visual experience.

Blog 05: “PK3D Studio”

By Ilia Urgen
Section B

PK3D Studio is a CGI-based studio in Warsaw, Poland that was founded by Piotr Kosinski. His main speciality of design includes automotive and technology advertisements.

CGI is a field of 3D Computer Graphics that focus on real-life characteristics. I am truly inspired by Kosinski’s work related to automotive advertisements because I am a passionate car enthusiast. He is very good at making cars blend in any background he chooses.

You know when you see in-focused cars speeding down mountains in ads? That’s a huge majority of Kosinski’s portfolio. I really admire how he takes crip, high-quality photos of cars at different angles, and then blends that car with any beautiful landscape using CGI.

His advertising skills definitely work. Kosinski has a good eye for design, as evident through his diverse automotive portfolio. Every time I see his ads, it makes me want to buy that exact car!

Below are 3 of my favorite CGI-designed automotive ads:

BMW-1
BMW-2
BMW-3