量化绘画-写给程序员的趣味绘画指南(1)
上一篇文章,其实已经提及了许多核心的绘画训练思路。但在应用出来之前。我准备先写一套完整的绘画教程,让真正对绘画感兴趣的读者,可以自行实践。
许多绘画爱好者会有这样的苦恼,我想画一个“XX 的 XX”,但怎么就是画不出来呢?
这个指南希望可以解决这类问题。这里不讨论那些高深玄乎的艺术,通篇只围绕一个问题推进:如何画出心中所想。
当然,阅读这个系列,有程序的辅助会事半功倍。没有也没关系,只要你对自己的思维变化足够敏感,也同样可以跟随指南,从零开始,习得绘画技能。
开篇
虽然系列名称取的叫《写给程序员的趣味绘画指南》。但阅读它无需任何编程基础。它与传统教程的区别,仅仅是训练理念更 Geek 一点,程序员读起来会更有亲切感。但如果你对这个叙述角度不感冒,也可以跳过理论部分,直接按训练方法去实践。
程序员为什么学绘画?
既然起了这么一个名字,还是需要得呼应一下主题。程序员为什么学绘画?
如果说程序员都是理性派,习惯用逻辑去把控一切。那学习绘画,可以让你从感性层面,重新看待这个世界。
学画的过程,与你是否有一颗“聪明”的脑袋没多大关系。以前你在逻辑思考上获得的自信,在这里可能会受到挑战。毕竟它不像学数学,学程序,存在一个按部就班的方法。所以学习它,必然会突破你过往的思维框架。
学习绘画,还可以提高你对图形图象的感受能力,只要你是做图像设计相关的工作,有绘画基础都会让你如虎添翼。到后期,你甚至会获得一双像素眼。画面上一个像素,一个色块的细微变化,你都可以轻松感受到。
如果你是一个追求极致的程序员,学绘画还可以满足你的创作欲,掌控欲。不仅代码要自己写,界面也想自己做。当然,做独立游戏的开发者早是如此实践的,正所谓“不会画画的设计师不是好的程序员”,不单单要创造世界运转的逻辑,还要创造世间万物的形态。
如果你已经是“全栈工程师”了,不妨从现在开始学点绘画。往“全栈创作者”的道路迈进~~
绘画需要天赋?
除非你是想成为“绘画大师”,与历史上的众多大咖比肩。那估计不拼天赋是不行的。但作为普通人,要达到专业级的水准,做到自如表达,是完全可能的。绘画是可习得的。
当然,有的画者就是喜欢以“有天赋”自居,以此和他人划清界限,让人觉得高不可攀。如果你被打击到了,由此相信这种解释,那就等于放弃了尝试的可能。很多时候不去真正实践,是无法了解自己大脑的潜力。
学习应该是与自我较劲的过程。唯一要做的,只是找准自己的节奏,在学习区大量练习。只要持续攀登,等你回过头来,就发现自己已经到了原来不可企及的高度。
万物之源- 从11行代码开始
下面开始正式进入主题。这要从知乎上看到的一个问题说起
有没有一段代码,让你觉得人类的智慧也可以璀璨无比?
我思考了一下,写下了下面的答案。不敢说璀璨无比,但十分有趣,值得玩味。它是一段可以囊括世间万物的代码。
void setup(){
size(500,500);
}
void draw(){
for(int i=0;i<width;i++){
for(int j=0;j<height;j++){
stroke(frameCount/pow(255,i+j*width)%255,frameCount/pow(255,i+j*width+1)%255,frameCount/pow(255,i+j*width+2)%255);
point(i,j);
}
}
}
语言用的是 Processing 。期间程序只做一件事,那就是穷举。
忽略机器本身的性能限制,假设 frameCount 可以无限大(frameCount代表当前帧数)。
你只需安安静静地盯着屏幕,就可以看到所有像素的所有组合可能。
这意味着你可以在上面看到所有艺术大师的作品,以及人类历史上所有光辉的瞬间。只要你有足够的时间。
你没听错,是所有。
但这个时间得多长?我们可以简单地计算一下。
计算机里的每个像素都是由 256 级的 RGB 组成的。因此可以表示 256 ³ (1600万)种颜色。假如图形的分辨率为 1000 × 1000,所有的像素可能的色值相互组合,将会产生 256 的 3000000 次方张不同图片。
如果我们将图片排在一个长廊上,人以一秒一张的速度去浏览。一年有 31536000 秒,因此要走完这条长廊,就需要 10⁷²²⁴⁷¹² 年。
这个数字已经大得难以用人类的常用单位去表示了。硬是要用,那就是 10亿亿亿亿亿亿……年(90万个亿)。宇宙的年龄也仅仅是 140 亿年(1.4 × 10¹⁰年)。也就是说,即使你从宇宙大爆炸开始看到现在,也无法将这个程序看完。
如果想最直观地体验,可以看以下的 5 × 5 的精简加速版感受图形变化的过程。
int num,w,frame,level;
void setup(){
size(400, 400);
num = 5;
w = width/num;
level = 2; //色值精度
}
void draw(){
for(int i = 0; i < num; i++){
for(int j = 0; j < num; j++){
fill((int(frame/pow(level,i + j * num)) % level)* (255 / (level - 1)));
rect(w * i, w * j, w, w);
}
}
// frame++; 匀速播放
frame = int(pow(frameCount,2)); //加速播放
}
(运行效果)
创作的本质
代码本身很有趣,用如此机械,如此不智能的方式居然也能生成作品。可这能说明什么问题?
人的创作模式与其并无二致。创作,本质上就是不断调试的过程。
上面的程序,是以像素为单位,一个一个地变换组合。
而人创作的过程,是以图形语言为单位,从一个形状,一个色块开始。(• 思维过程以图形语言为单位,执行过程以笔触为单位)
那何时才调试完?画到何种程度才算恰到好处?这最终还是得交给人的感觉来判断。
具个简单的例子(例1)。假如你有一个前景图片,需要平涂一个背景色。
如果我们将调试的过程交给程序,自己不动手。用绝对机械的方法,一秒看一张图。你只要不眠不休地看上194天(256×256×256÷(3600×24)),也是可以看遍所有色彩的组合情况。这时,无论哪种色彩搭配,你都不会遗漏。
(例1)
在这个过程里,人就相当于一个评审。程序自动地给你送去一批一批的作品,你只需要动用你的审美感觉,从中选出符合自己心意的图片即可。
图形创作的过程何曾不是如此?只是调试是手动的,有方向性的,存在多个变量。
我们再看一个有关形的调试例子(例2)。
(例2)
假如现在有一系列角度不同的正方体,某些线条被抹去了,需要你去补全它。
这里先别用逻辑去解决这类问题(不用透视学原理,不作辅助线),而是依靠你的感受。
要确定的两条边线,其实是由一个顶点决定的。所以这里调试的变量其实有两个,顶点的横纵坐标。
下面模拟的即是整个调试的过程。我们在思考时,其实就是在不断地变换顶点位置(无论你是在纸上,还是在脑中)。变换期间,需要调用你的感觉作判断,哪里长了,哪里短了?接着在原基础上调整,修正。最后通过反复的试探,就能挑出一个最符合视觉经验的正方体。
你可以在找人在实地做实验,从这个角度可以观察新手和专家的能力差异。有一定绘画基础的人,它即使不在纸上起稿,也能在脑中完成所有调试。看似随笔一画就达成目标,其实是因为在脑中已经预演了各种可能。
以上列举的两个例子,一个有关色的调试,一个有关形的调试。对图形创作而言,需要调试的信息只有这两类。我们从白纸上画的一根线条,涂的一个调子开始,便会不断延伸它,调整它。从抽象的图像开始联想,去尽可能地搜索出脑中想要的图像。这就是整个创作过程,原理一点也不神秘。
启示
既然现在明白了,创作的本质是调试。这能带来什么启示?对绘画的学习有什么指导意义?
整个过程有两个环节,一是调试,二是感觉判断。
感觉判断需要看大量的好作品,让自己有敏锐的觉察力。有点接近“审美能力”。
而“调试部分”,则是后面学习的重点,因为它存在可提高的方法。我们在绘画训练上做的一切努力,都是为了加速调试的过程。
如何做
掌握调试工具
懒是第一推动力,为了更高效,人总会想法设法地发明各种层出不穷的工具。最早是各种画具画材的改良。到了现在,开始有了手绘板,数位屏,也有了配套的应用软件(PS,AI)。对绘画而言,不同工具本身并没有优劣之分。但如果从调试的效率来看,是有高低的之别的。
现在的数字绘画很强大,只要你有一个手绘板。任何风格的作品,都能在电脑上模拟。过往在架上需要精雕细琢一个月的作品,在电脑上创作能缩短到十几个小时。
既然如此,对学习而言,当然是选择最快,最灵活的工具。所以尽量掌握这些为懒人而发明的工具吧。熟悉手绘板,熟悉 PS,熟悉图层,熟悉Ctrl+Z ~ 这样往往能事半功倍。
学习调试步骤
画画本来是条条大道通罗马的,有人就是喜欢从一个局部画起。但一般的做法是这样的 : 先起型,后着色,先整体,后局部。
这当然是有原因的。因为更高效,更符合调试规律。这种方法比较稳妥,不会因为某个造型,某个色调画偏了,就要因此推翻前面的工作。所以,开始前先放胆地调试,后面再慢慢收紧,一层一层地叠加,一笔一笔地细化,作品自然而言就浮现出来了。
建立调试算法
调试算法是一个比喻。它其实是隐藏在你脑中的。而不是一个可背诵的公式。它是通过大量的练习,潜移默化建立起来的。不同人的“算法”都是有差异的,也因此形成了个人风格。
有经验的画者无需盲目试错,因为脑中已经有了一套高效的调试算法,可以大大地缩短调试时间。他只要看到画面,就能直接联想到,搭配哪一个色调,才是最和谐的。
训练基础能力
这是上篇提到的绘画基础能力构成。
基础能力的高低,会决定调试的快慢。所以我们才需要训练对形状,对色块的感受力,由此习得图形语言。这门语言,同时也是绘画过程中的调试素材。没有它们,想象都是虚空的。
多临摹,可以很好地提高图形感知能力。临摹不仅仅是解决准不准,像不像的问题,它还关乎感受的颗粒度,从而提高想象的分辨率。
当你的想象力足够强,调试是可以全在脑中完成的。不需要画到纸上了,才发现“画歪”了。
想象的极致
在最后,我给大家介绍一位韩国漫画家,金政基。
这里不评判作品的“艺术性”。毕竟萝卜青菜,各有所爱。但他的速绘能力,是世界级的,这点毋庸置疑。
如果你画过漫画,看过他的现场绘画,必然会被震撼到。他的绝活就是从不打稿。你所看到的所有大型创作,他都是默写出来。
https://v.qq.com/txp/iframe/player.html?vid=v0016zc070n&width=500&height=375&auto=0
这首先需要对物体的形态有透彻的理解(在脑中建立模型)。其次需要极强的想象力(图形运算能力)。如此这般,就能做到游刃有余,顺手拈来。
如果你从调试的角度去分析能力本身,似乎就没那么不可思议了。我们也可以找到可操作的路径去追赶他。
END
无拘束的表达,是所有人都向往的。谁都希望提起笔,就能肆意表达。
这篇继续铺垫了许多基础知识。下节开始,你就可以跟随指南,拿起画笔,开始实战。
在此之前,准备白纸一堆,铅笔一支,手绘板一块。因为后面会选择数字绘画作为切入点。当然,坚持用手绘的方式去训练也是完全没问题的,只是会无形中增加许多试错成本。
数字绘画还有一个好处,你可以从最底层的“笔刷”开始,看到各种各样的材质,是如何通过数字的方式模拟出来的。你甚至可以自己定义笔刷,用它做出风格独特的作品。
装备准备就绪后,我们下节再见:)