博主的老师这学期布置了一些作业,其中之一就是分别用代码和双手作一幅静态图,从思路、技术、创作体验、创作偏好等方面来比较二者,讨论异同。于是这篇博客就应运而生了。
首先,展示一下作品:
参考图
参考的图片是西班牙艺术家Guim Tio的作品《热烈与孤独》中的一幅
码绘
利用p5.js绘制作品
手绘
利用彩铅和双手绘制作品(好了好了,我知道很丑)
代码实现过程
function setup() {
createCanvas(500, 393);
}
function draw() {
background(20,39,71); //sea
beginShape();
strokeWeight(0);
fill(184, 134, 13);//yellow down
vertex(372,342);
vertex(390,346);
vertex(418,348);
vertex(445,350);
vertex(479,345);
vertex(500,346);
vertex(500,500);
vertex(372,393);
endShape(CLOSE);
//blue above yellow
strokeCap(ROUND);
stroke(138,166,178);
strokeWeight(5);
line(367,338,391,344);
line(391,344,443,348);
line(443,348,498,343);
beginShape();
strokeWeight(0);
fill(93,33,33);//red mountain
vertex(0,191);
vertex(11,186);
vertex(25,186);
vertex(71,174);
vertex(94,173);
vertex(137,173);
vertex(16,170);
vertex(181,174);
vertex(245,210);
vertex(282,220);
vertex(301,236);
vertex(353,321);
vertex(370,341);
vertex(395,365);
vertex(424,383);
vertex(444,393);
vertex(0,393);
endShape(CLOSE);
fill(174,195,190);//sky blue l
rect(0, 0, 500, 159);
beginShape();
strokeWeight(0);
fill(175,168,87);//yellow l
vertex(0,164);
vertex(6,162);
vertex(46,162);
vertex(110,160);
vertex(88,156);
vertex(81,154);
vertex(66,154);
vertex(40,145);
vertex(19,143);
vertex(0,144);
endShape(CLOSE);
beginShape();
strokeWeight(0);
fill(46,67,50);//green
vertex(283,159);
vertex(306,152);
vertex(343,134);
vertex(374,127);
vertex(407,109);
vertex(419,99);
vertex(468,81);
vertex(488,79);
vertex(500,78);
vertex(500,160);
vertex(341,161);
vertex(304,159);
endShape(CLOSE);
beginShape();
strokeWeight(0);
fill(86,40,43);//redd
vertex(500,114);
vertex(484,111);
vertex(459,117);
vertex(413,141);
vertex(402,143);
vertex(390,152);
vertex(381,153);
vertex(366,160);
vertex(500,160);
endShape(CLOSE);
beginShape();
strokeWeight(0);
fill(25,26,31);//black
vertex(380,164);
vertex(403,153);
vertex(431,145);
vertex(449,141);
vertex(475,137);
vertex(490,130);
vertex(500,130);
vertex(500,174);
vertex(485,168);
vertex(473,166);
vertex(463,165);
vertex(450,166);
vertex(420,163);
vertex(414,164);
endShape(CLOSE);
//lighthouse
fill(194,207,189);//gray1
quad(138,169,142,117,146,117,146,172);
fill(120,134,111);//gray2
quad(146,117,146,172,156,172,156,117);
fill(63,74,78);//gray3
quad(156,117,156,172,165,170,160,117);
strokeWeight(3);
stroke(129,146,140);//black
line(138,116,163,116);
strokeWeight(0);
triangle(138,115,163,115,151,104)
fill(62,107,64);
}
看代码大家应该能发现吧,嗯,本次作图毫无技术性,完全靠的是取点位置,通过勾图填色实现。一开始我们先把背景色设成海的深蓝色,重复 “beginShape();fill( , , );vertex( , );…endShape(CLOSE);”。vertex( , )里面是你取的像素点位置,该段代码实现区域填色,用这段代码我们绘制出沙滩以及各种颜色的山。黄色沙滩上方的浅蓝色区域较小且为线形,我们用线段绘制。stroke( , ,);//线段填色strokeWeight(5);//线段粗细 line( , , , );//线段端点坐标。灯塔用三个四边形和一个三角形加一条线段绘制。嗯,就是如此简单没有技术含量,不过够繁琐就是了。
手绘与码绘异同比较
绘画思路
同:将整幅画拆分成一个个分部分,顺序作图完成整幅画作。
异:码绘为挨个覆盖,海洋,山,天空,灯塔,而手绘是勾出线条,区域填色。
技术方面
同:需要对图形有一定认知能力,需要构图技巧,原创画还需设计能力。
异:码绘用代码,手绘用笔;码绘需要对编程语言的熟练使用,其中涉及到一些数值的计算,偏理工科。手绘需要绘画直觉及经验技巧,偏艺术创作。
创作体验
同:熟能生巧,人间真理。
异:针对本次作品而言,没有规律的图像,用码绘非常之繁琐,取像素点取到崩溃,而手绘三下五除二就画好了,但是手绘受工具限制,不同工具临摹相同图像得出效果也会不同。
创作偏好
手绘手绘手绘!本次码绘过于繁琐,急需时间。所以针对本次实验,我选择手绘。
参考文献
开始第一幅“码绘”——以编程作画的基本方法
https://blog.csdn.net/magicbrushlv/article/details/77840565
p5.js简介&基本形状绘制
https://blog.csdn.net/qq_27534999/article/details/75151515