Benjamin Francis Laposky was a mathematician, artist and draftsman who is one amongst the early computer graphic visualizer. His work titled Oscillon, a collection of images generated using oscilloscope to manipulate electronic waves. Laposky utilized long exposure photography to capture the movement of these waves that appeared on the screen. These waves were manipulated using cathode ray oscilloscope with sine wave generators and various other electronic circuits that the abstract art. The most interesting thing about Laposky’s work is the abstract quality achieved by geometric precision related to mathematical curves and Lissajous Figures.
Month: October 2022
Looking Outwards – 05
I admire the Weeping Woman by Carlos Ortega made in 2012. I admire the 3D quality of the character and cloth. The light and shadow are a big part of making this happen. I also admire how the colors blend together to set the mood for the work. The work is based on a version of the Mexican legend of “the weeping woman” and the song called “the weeping woman” by a Mexican band Califanes. I believe the colors, and how the character is posed, and how the ghosts are made reflect the creator’s sensibilities. It was made using Autodesk Mudbox, Autodesk Maya, mental ray, and Adobe Photoshop.
Carlos Ortega Elizalde | CG artist – The Weeping Woman (carlosortega3d.com)
Looking Outwards 05: 3D Computer Graphics
https://www.behance.net/gallery/151840435/Into-the-forest?tracking_source=curated_galleries_3d-arteativeapplications.net/maxmsp/forms-string-quartet/
David Padilla
Into the Forest
2022
This project is an excellent example of graphics combining 3D computing and nature.
Through algorithms and renderings, it simulates the natural ecosystem and explores the local trees, vegetation, fungus, and many other species and forms, as well as their relationships with each other.
The renderings of plants including moss and wood in this series of works are very realistic. The use of light is also very elegant and appropriate. The ratio of sunlight to shadow is just right, which makes the overall look very attractive — where the sun shines is where our vision focuses on, leading people to the incredible shapes of the fungus. The colors of the presented works are mainly shades of yellow and green to present the plants. The colors of the plants are different but also echo each other with wood in brown. The color collocation is very harmonious.
Project 5 – Wallpaper
I was inspired by fruit slices and the cute illustrator aesthetic of fun summery-y wallpapers. There are 4 main types of types, when combined with various colors create a visually appealing pattern.
// Tsz Wing Clover Chau
// Section E
function setup() {
createCanvas(600, 600);
background(255);
//text("p5.js vers 0.9.0 test.", 10, 15);
}
var nX;
var nY;
var n = 5;
var size;
var count1;
var count2 = 0;
var count3;
var swap = true;
let colors1 = [[230, 57, 70], [252, 213, 206], [255, 183, 3], [249, 220, 196], [231, 111, 81]];
let colors2 = [[254, 250, 224], [233, 237, 201],
[236, 248, 248], [250, 237, 205], [255, 255, 255]];
function draw() {
size = width/n;
strokeWeight(3);
ellipseMode(CENTER);
for (var j = 0; j < n; j++){
if (j %2 == 0){
swap = false;
count1 = 1;
countUp = true;
for (var i = 0; i < n; i++){
fill(colors2[count1]);
noStroke();
rect(i*size, j*size, (i+1)*size, (j+1)*size);
firstRow(i*size, j*size, size, i);
if (countUp){
count1 += 1;
} else {
count1 -= 1;
}
count1 = count1%5;
swap = !swap;
}
} else {
swap = true;
count1 = 4;
countUp = false;
for (var i = 0; i < n; i++){
fill(colors2[count1]);
noStroke();
rect(i*size, j*size, (i+1)*size, (j+1)*size);
count2 += 1;
count2 = count2%5;
count3 = count2;
secondRow(i*size, j*size, size, i, j);
if (countUp){
count1 += 1;
} else {
count1 -= 1;
}
count1 = count1%5;
swap = !swap;
}
}
noLoop();
}
}
function firstRow(x, y, r, i){
if (swap){
fill(colors1[count2]);
if (i == 3){
arc(x+r, y, r*(4/5), r*(4/5), HALF_PI, PI, PIE)
push();
noFill();
stroke(50);
arc(x+r, y, r, r, HALF_PI, PI, OPEN);
pop();
count2 += 1;
count2 = count2 % 5;
fill(colors1[count2]);
arc(x+(r*0.05), y+(r*0.95), r, r, -HALF_PI, 0, PIE);
} else {
arc(x+(r*0.95), y+(r*0.95), r*0.75, r*0.75, PI, -HALF_PI, PIE);
push();
noFill();
stroke(50)
arc(x, y, r, r, 0, HALF_PI, OPEN);
pop();
count2 += 1;
count2 = count2 % 5;
fill(colors1[count2]);
arc(x, y, r*(4/5), r*(4/5), 0, HALF_PI, PIE);
}
} else {
fill(colors1[count2]);
arc(x, y+r/2, r, r, -HALF_PI, HALF_PI, PIE);
count2 += 1;
count2 = count2 % 5;
fill(colors1[count2]);
arc(x+r, y+r/2, r*(4/5), r*(4/5), HALF_PI, -HALF_PI, PIE);
push();
noFill();
strokeWeight(3);
stroke(50);
arc(x+r, y+r/2, r, r, HALF_PI, -HALF_PI, OPEN);
pop();
}
}
function secondRow(x, y, r){
if (swap){
noFill();
stroke(50);
ellipse(x+r/2, y+r/2, r/3, r/3);
noStroke();
fill(colors2[count2]);
ellipse(x+r/2, y+r/2, r/5, r/5);
} else {
fill(colors1[count3]);
arc(x+r/2, y, r, r, 0, PI, PIE);
count3 += 1;
count3 = count3%5;
fill(colors1[count3]);
arc(x+r/2, y+r, r, r, PI, 0, PIE);
}
}
Looking Outwards 05: 3D Computer Graphics
Artist: Don Mupasi
Work: “Adventures in Space” (2021)
The work I’ve chosen to look at is “Adventures in Space”, a collection of NFTs by Don Mupasi, a UK bAsed 3D visual artist and photographer.
One thing I admire is how effectively Mupasi is able to establish tone and atmosphere in his works. Each piece tells a story and the various small details catch the viewer’s attention, inviting to examine the work closer and learn more.
One of Mupasi’s major inspirations for his works include music he’s listened to or works he’s read, and these manifest in the scenes he creates. Speaking of his work, Mupasi says: “Visually, I try to convey this through scenes and compositions with a lot of color and exaggerated elements – like large suns, moons, hills, mountains, lush forests, etc. I place and move my characters in those scenes to convey certain feelings and meaning from those moments.”
The primary program he uses is Cinema 4D and After Effects. Given that his animations involve movement through space, he probably first renders the digital models in Cinema 4D and then combines them in After Effects, using layers and keyframe easing to fine tune the overall composition.
Links:
https://visualdon.uk/
https://www.skillshare.com/user/visualdon
https://foundation.app/@visualdon
https://medium.com/cryptocomnft/visualdon-discusses-his-roots-and-quitting-his-9-to-5-for-digital-art-2dc2e7282a4d
Project 05 / Wallpaper
// Kyli Hilaire - Project 05
// khilaire@andrew.cmu.edu
// Section B
var x = 0;
var y = 0;
var beeWidth = 30;
var beeLength = 38;
var stripeY = 0;
function setup() {
createCanvas(400, 300);
background(247, 183, 191);
}
function draw() {
bgStripes();
// draw background stripes
push();
translate(-45, -18);
// move bees in the canvas
for(x = 0; x <= 500; x += 75) {
for(y = 0; y <= 400; y += 75) {
bee();
}
} pop();
// draw bees
for(x = 0; x <= 500; x += 75){
for(y = 0; y <= 400; y += 75){
greenCircles();
}
}
// draw green circles
}
function bee() {
beeWings();
beeBody();
}
function beeBody() {
stroke(245, 242, 158);
strokeWeight(1);
fill(255, 255, 188);
ellipse(x + 50, y + 50, beeWidth, beeLength);
// yellow oval
stroke(80);
strokeWeight(4);
line(x + 39, y + 42, x + 61, y + 42);
line(x + 38, y + 52, x + 62, y + 52);
line(x + 41, y + 62, x + 59, y + 62);
// draw bee stripes
noStroke();
fill(95)
triangle(x + 44, y + 68, x + 56, y + 68, x + 50, y + 74);
// stinger
}
function beeWings() {
noStroke();
fill(255, 255, 240);
arc(x + 50, y + 50, 65, 50, 11*PI/6, PI/6);
arc(x + 50, y + 50, 65, 50, 5*PI/6, 7*PI/6);
// bee wing arcs
stroke(0);
strokeWeight(1);
line(x + 50, y + 50, x + 75, y + 50);
line(x + 25, y + 50, x + 50, y + 50);
}
function bgStripes() {
for(let i = 0; i <= 300; i += 10) {
stroke(255, 251, 236);
strokeWeight(0.75);
line(0, stripeY + 2, 400, stripeY + 2);
stripeY += 16
// space lines 16px apart
}
}
function greenCircles() {
noStroke();
fill(216, 238, 219);
circle(x + 14, y + 61, 5);
circle(x + 20, y + 54, 8);
circle(x + 22, y + 63, 3);
// bottom right of bee
circle(x + 60, y + 10, 5);
circle(x + 65, y + 7, 3);
// upper left of bee
stroke(216, 238, 219);
strokeWeight(2);
point(x + 61, y + 3);
// small point upper left
}
3D Art / Filip Hondas
I find Filip Hodas’ ability to take characters and images we’re so familiar with out of the worlds to which they belong super fascinating. The Super Mario mushroom and the Gameboy building are some of my favorite of his works.
As someone who struggles with realism using paint/graphite, I’m particularly impressed by his ability to create things that are very much in the world but still have this surreal glow about them. I can’t imagine trying to make work like this at all, let alone on a computer.
I struggled to find a comprehensive online catalog of his work, but this article provides a decent overview of his style.
Project-05-Wallpaper
I tried to draw flowers that’s connected
/* Jiayi Chen
jiayiche Section A */
function setup() {
createCanvas(600, 600);
rectMode(CENTER);
}
function draw() {
background('gold');
for (var i=1;i<=6;i++){
for (var j=1;j<=6;j++){
repeatingPattern(i*200-150,j*200-50,100);
repeatingPattern(i*200-50,j*200-150,100);
repeatingPatternX(i*200-150,j*200-150,100);
repeatingPatternX(i*200-50,j*200-50,100);
}
}
repeatingPatternY(2*100-50,2*100-50,100);
repeatingPatternY(2*100-50,6*100-50,100);
repeatingPatternZ(5*100-50,4*100-50,100);
repeatingPatternZ(4*100-50,1*100-50,100);
noLoop();
}
function repeatingPattern(x,y,r){
// rect(x,y,r,r);
fourLines(x,y,r);
push();
fill('tomato')
circle(x,y,r*0.7);
pop();
push();
fill('khaki')
circle(x,y,r*0.65);
pop();
push();
fill('gold')
circle(x,y,r*0.6);
pop();
flower(x,y,r);
littleCircles(x,y,r)
}
function repeatingPatternX(x,y,r){
// rect(x,y,r,r);
fourLines(x,y,r);
push();
fill('tomato')
circle(x,y,r*0.7);
pop();
push();
fill('khaki')
circle(x,y,r*0.65);
pop();
push();
fill('gold')
circle(x,y,r*0.6);
pop();
flowerX(x,y,r);
littleCircles(x,y,r)
}
function repeatingPatternY(x,y,r){
// rect(x,y,r,r);
fourLines(x,y,r);
push();
fill('green')
circle(x,y,r*0.7);
pop();
push();
fill('cyan')
circle(x,y,r*0.65);
pop();
push();
fill('gold')
circle(x,y,r*0.6);
pop();
flowerX(x,y,r);
littleCirclesY(x,y,r)
}
function repeatingPatternZ(x,y,r){
// rect(x,y,r,r);
fourLines(x,y,r);
push();
fill('green');
circle(x,y,r*0.7);
pop();
push();
fill('cyan')
circle(x,y,r*0.65);
pop();
push();
fill('gold')
circle(x,y,r*0.6);
pop();
flower(x,y,r);
littleCirclesY(x,y,r)
}
function flower(x,y,r){
//leaves
push();
fill("lime");
triangle(x-r*0.03,y+r*0.14,x-r*0.1,y+r*0.18,x-r*0.15,y+r*0.13);
triangle(x+r*0.03,y+r*0.24,x+r*0.11,y+r*0.26,x+r*0.15,y+r*0.20);
pop();
//stems
push();
fill('gold');
bezier(x,y,x-r*0.1,y+r*0.2,x+r*0.1,y+r*0.2,x,y+r*0.3)
pop();
//petals
push();
fill('crimson');
ellipse(x-r*0.1,y-r*0.1,r*0.17,r*0.15);
ellipse(x+r*0.1,y-r*0.1,r*0.14,r*0.15);
ellipse(x,y-r*0.2,r*0.15,r*0.15);
ellipse(x-r*0.05,y,r*0.15,r*0.15);
ellipse(x+r*0.05,y,r*0.15,r*0.15);
pop();
//middle
push();
fill('orange');
circle(x,y-r*0.1,r*0.15);
pop();
}
function flowerX(x,y,r){
//leaves
push();
fill("lime");
triangle(x-r*0.03,y+r*0.14,x-r*0.1,y+r*0.18,x-r*0.15,y+r*0.13);
triangle(x+r*0.03,y+r*0.24,x+r*0.11,y+r*0.26,x+r*0.15,y+r*0.20);
pop();
//stems
push();
fill('gold');
bezier(x,y,x-r*0.1,y+r*0.2,x+r*0.1,y+r*0.2,x,y+r*0.3)
pop();
//petals
push();
fill('white');
ellipse(x-r*0.1,y-r*0.1,r*0.17,r*0.15);
ellipse(x+r*0.1,y-r*0.1,r*0.14,r*0.15);
ellipse(x,y-r*0.2,r*0.15,r*0.15);
ellipse(x-r*0.05,y,r*0.15,r*0.15);
ellipse(x+r*0.05,y,r*0.15,r*0.15);
pop();
//middle
push();
fill('orange');
circle(x,y-r*0.1,r*0.15);
pop();
}
function littleCircles(x,y,r){
doubleCircle(x-42,y-30,r*0.1);
doubleCircle(x-30,y-42,r*0.1);
doubleCircle(x+42,y+30,r*0.1);
doubleCircle(x+30,y+42,r*0.1);
doubleCircle(x+42,y-30,r*0.1);
doubleCircle(x+30,y-42,r*0.1);
doubleCircle(x-42,y+30,r*0.1);
doubleCircle(x-30,y+42,r*0.1);
}
function doubleCircle(x,y,r){
push();
fill('bisque');
circle(x,y,r);
circle(x,y,r/2);
pop();
}
function littleCirclesY(x,y,r){
doubleCircleY(x-42,y-30,r*0.1);
doubleCircleY(x-30,y-42,r*0.1);
doubleCircleY(x+42,y+30,r*0.1);
doubleCircleY(x+30,y+42,r*0.1);
doubleCircleY(x+42,y-30,r*0.1);
doubleCircleY(x+30,y-42,r*0.1);
doubleCircleY(x-42,y+30,r*0.1);
doubleCircleY(x-30,y+42,r*0.1);
}
function doubleCircleY(x,y,r){
push();
fill('purple');
circle(x,y,r);
circle(x,y,r/2);
pop();
}
function fourLines(x,y,r){
line(x-r/2,y-r/2,x-r*0.25,y-r*0.25);
line(x+r/2,y+r/2,x+r*0.25,y+r*0.25);
line(x+r/2,y-r/2,x+r*0.25,y-r*0.25);
line(x-r/2,y+r/2,x-r*0.25,y+r*0.25);
}
Looking Outwards 05: 3D Computer Graphics
An artist named Gleb Kuznetsov created a piece called Crystal Clear. It depicts hard materials interacting with light. The crystal is a translucent sphere with cracks that create individual pieces. The size of the piece changes and as it does so, the reflection of light in the background also changes. I found this artwork very interesting because of how it depicted the way light interacts with an object to create reflections and refractions. A Lot of other works created by this artist are centered around how different objects interact with light. Many of their works feature translucent objects to really emphasize refractions. This kind of 3d art can be useful for designers when they are testing to see how buildings/ objects interact with the environment, which is something that is important to consider during the design stage. In order to do this and make the light refractions accurate, the artist must have had to use Snell’s law formula and various other formulas that are derived from the study of nature.
Project-05-Wallpaper
Wallpaper
//Brody Ploeger
//jploeger
//Section C
function setup() {
createCanvas(600, 600);
background(220);
//text("p5.js vers 0.9.0 test.", 10, 15);
}
var x=0;
var y=0;
function draw() {
background(200);
//loop
for(var i = 0; i<=width; i+=100){
for(var j = 0; j<=height; j+=200){
Pattern(x+i,y+j,100);
}
}
//offset loop
for(var i = -50; i<=width; i+=100){
for(var j = 100; j<=height; j+=200){
Pattern(x+i,y+j,100);
}
}
}
function Pattern(x,y,w){
//base square
strokeWeight(2);
fill('tan');
square(x,y,w);
//pruple lines
strokeWeight(3);
stroke('purple');
line(w/8+x,0+y,w/8+x,w+y);
strokeWeight(3);
stroke('purple');
line(w/8+w/2+x,0+y,w/8+w/2+x,w+y);
//black line
stroke(0);
strokeWeight(2);
line(0+x,w/2+w/4+y,w+x,w/2+w/4+y);
noStroke()
//shape 1
fill(200,10,0);
beginShape();
vertex(w/4+w/2+x,0+y);
vertex(w/4+w/2+x, w/8+y);
vertex(w/8+w/4+x, w/8+y);
vertex(0+x,w/2+y);
vertex(0+x,w/4+w/2+y);
vertex(w/8+w/4+x, w/8+w/4+y);
vertex(w+x,w/4+w/8+y);
vertex(w+x,0+y);
vertex(w/4+w/2+x,0+y);
endShape();
//shape 2 shadow
fill(0,99);
rect(w/4+w/16+x,0+y,w/4,w);
//shape 2
fill(200,10,0);
rect(w/4+x,0+y,w/4,w);
//shape 3 shadow
fill(0,99);
rect(x,w/2+y,w/16,w/2);
//shape 1 shadow
fill(0,99);
rect(x,y,w/16,w/4+w/8);
//shape 3
fill(200,10,0);
rect(w/4+w/2+x,w/2+y,w/4,w/2);
}