工具:
SketchBook
介绍:
这个图片参考了律老师画的confuseface,其圆润可爱的轮廓和逼真传神的表情给我留下了深刻印象,所以当我打开画图准备写这次作业时,随手画了个草图就是一张还原度很高的confuseface。
在它简洁的基础形态上,层叠的黑眼圈不健康的灰白肤色以及比原版更加纤细的3根毛发都显示出了这位惊恐同学的与众不同,同时也侧面反映出它缺乏睡眠的现状。
工具:
Processing
(展示图片画质不佳,如引起不适请试用源代码)
开始码绘啦,先试着画点简单的吧。
微笑眨动小眼睛 ;-)
关键代码/函数:
完整代码展示:
PImage img;
void setup(){
size(400, 400);
}
void draw(){
//background(#FFEE31);
background(mouseX,mouseY, 100);
pushMatrix();
translate(200, 200 - 60);
//eyes
PVector mouse = new PVector(mouseX, mouseY);
mouse.sub(200, 200 - 60, 0);
mouse.limit(7);
fill(0);
noStroke();
rectMode(CENTER);
rect(-1*40+mouse.x, -15+mouse.y, 15, 25, 8);
if(mousePressed)
rect(40+mouse.x, -15+mouse.y, 28, 10, 5);
else
rect(40+mouse.x, -15+mouse.y, 15, 25, 8);
//mouth
noFill();
strokeWeight(12);
stroke(0);
arc(0, 0, 150, 120, PI/4, PI-PI/4);
popMatrix();
//text
textSize(25);
textAlign(CENTER);
text("Wellcome to my ConfuseFace!", width/2,height/2+100);
}
回归正题,在灯光下泛着冷酷金属光泽的confuseface……
它的眼睛去哪里了呢?
关键代码/函数:
完整代码展示:
PImage img;
void setup() {
size(747, 747);
frameRate(30);
img = loadImage("myface.png");
img.loadPixels();
// Only need to load the pixels[] array once, because we're only
// manipulating pixels[] inside draw(), not drawing shapes.
loadPixels();
}
void draw() {
for (int x = 0; x < img.width; x++) {
for (int y = 0; y < img.height; y++ ) {
// Calculate the 1D location from a 2D grid
int loc = x + y*img.width;
// Get the R,G,B values from image
float r,g,b;
r = red (img.pixels[loc]);
//g = green (img.pixels[loc]);
//b = blue (img.pixels[loc]);
// Calculate an amount to change brightness based on proximity to the mouse
float maxdist = 200;//dist(0,0,width,height);
float d = dist(x, y, mouseX, mouseY);
float adjustbrightness = 70*(maxdist-d)/maxdist;
r += adjustbrightness;
//g += adjustbrightness;
//b += adjustbrightness;
// Constrain RGB to make sure they are within 0-255 color range
r = constrain(r, 0, 255);
//g = constrain(g, 0, 255);
//b = constrain(b, 0, 255);
// Make a new color and set pixel in the window
//color c = color(r, g, b);
color c = color(r);
pixels[y*width + x] = c;
}
}
updatePixels();
}
结合作品1和2,给手绘的confuseface加上会动的眼睛@_@ *_*
关键代码/函数:
完整代码展示:
PImage img;
int t=1;
void setup() {
size(747, 747);
img = loadImage("myface.png");
}
void draw() {
image(img, 0, 0);
//draweyes(375,350);
setmyface();
}
void setmyface()
{
//int t=3;
for(int m=0;m
emmm……为什么上面那些看起来都很傻呢?太过简单了吧,不符合“码绘”complex又intelligent的人设啊。
作品3里面的参数t和setmyface()函数可以改变脸的数量,改变t的值之后……
是不是逐渐有眼花缭乱的感觉。
但是魔性程度还远远不及律老师画的高级confuseface哦。
这篇博客主要展示了我的手绘和码绘作品,通过几个简单的分支语句和循环实现有趣的动态效果。
下一篇再写更多文字,从多个角度来研究对比手绘与码绘的不同。
^▼^