码绘与手绘——表达动态
一、手绘表现动态:
这个题目一开始看来 ,手绘是处于非常劣势的地位的,因为电脑上可以实现动态的过程,就是用动画的原理,每秒绘制60帧,不断进行重绘图形,来达到运动的效果的。
而本身来讲,手绘的图片本质上是不能动的,只能通过笔触来表达,来营造一种动态的效果。这个就比较考验功底了,表达动态的话,我总结了一下,是通过这些方式的。
(手绘作品如下:)
- 实际存在的物体本身动作来表达动态。
2. 比如飘逸的发丝,动态的裙摆,都是借助于别的真实的物体来表现运动的。
- 借助辅助线,或者是虚影,通过不存在的物体来表现。
比如这幅画,借助气体环绕身体,来表达主角的运动感。
- 通过几张连续的图片来表现运动,这些图片通常差异不大,相对位置也是固定的。也就是逐帧动画的方法。
这几张图是根据自己的码绘作品来完成的。
二、动态码绘的绘制:
这副作品是通过processing完成的。(不动的话点开大图)
这个作业的要求是围绕“运动”这个主题进行码绘与手绘,并对比。都是画画,那么面临的第一个问题就是画什么。于是我先画了一个小图形。这个图案是通过两个圆形加两个正方形经过一些旋转平移完成的。
代码如下。
pushMatrix();rotate(-QUARTER_PI);translate(-s/2.0, 0);ellipse(0, 0, s, s);rect(-s/2.0, 0, s, s);popMatrix();rotate(QUARTER_PI);translate(s/2.0, 0);ellipse(0, 0, s, s);popMatrix();
}
接着给它添加自旋转以及两层循环让他有规律的铺满屏幕。
这个时候发现如果给每次旋转都加上一个相位的话,整体呈现了一种波浪的效果,动感非常强烈。在写循环的时候试了几个不同的值,最后达到了这个效果。代码如下:
void arrange(){for (int i=1;i<=5;i++){for (int j=1;j<=5;j++){cube(i*120-30,j*120-30,1.5*(i+j));}
}
}
void cube(float x1,float y1,float k){pushMatrix();translate(x1,y1);rotate(millis()/500.0f+(k/3));scale(1.5);love1();popMatrix();
}
然后又添加了一系列同心圆来增加动感,对于一次性在循环中生成不同半径的圆,还是很好实现的。
这个时候尝试让每一个圆都可以每次画的时候自动生成相近的颜色来填充,于是将255分成20等分,最后通过调用fill函数将这个循环的值赋给圆形。
void aaa(){for(int j=0;j<6;j++){float grayvalues = 255/30;fill(255,(j+15)*grayvalues,255-(j+15)*grayvalues);ellipse(320,320,i*8-(j*100),i*8-(j*100));}i++; if (i > 65) { i=1; }
}
紧接着觉得背景有些单调,于是绘制了雪花图案。
void frozen(int x11,int y11,int s) {translate(x11, y11);stroke(85, 115, 200);strokeWeight(12);for (int i=0; i<8; i++) {line(0, 0, 0.4*640, 0);for (int k=0; k<5; k++) {float step = 0.07*k*640;line(step, 0, step+2*s, 2*s);line(step, 0, step+2*s, -2*s);}rotate(TWO_PI / 8);}
最后将这些想法合并在一张图上,经过一些入栈出栈的操作进行旋转平移,最后设置一下绘制顺序,整张图便整合在一张图上了。
同时在配色方面下了点功夫,就是借助一些配色方案图,参考了一下美国动画片的风格,最后完成了这副作品,参考图如下。
完整代码如下:
float angle;
float y=0;void setup() {size(640, 640);
}int i=1;void draw() {background(PAPER);pushMatrix();scale(1.3);frozen(400,220,15);popMatrix();pushMatrix();//translate(360,360);stroke(255,255,15);strokeWeight(8);//scale(0.8);aaa();popMatrix();pushMatrix();translate(50,50);scale(0.8);arrange();popMatrix();}void aaa(){for(int j=0;j<6;j++){float grayvalues = 255/30;fill(255,(j+15)*grayvalues,255-(j+15)*grayvalues);ellipse(320,320,i*8-(j*100),i*8-(j*100));}i++; if (i > 65) { i=1; }
}void arrange(){for (int i=1;i<=5;i++){for (int j=1;j<=5;j++){cube(i*120-30,j*120-30,1.5*(i+j));}
}
}
void cube(float x1,float y1,float k){pushMatrix();translate(x1,y1);rotate(millis()/500.0f+(k/3));scale(1.5);love1();popMatrix();
}void love1(){float s = 30;
pushMatrix();fill(INK);noStroke();ellipseMode(CENTER);pushMatrix();rotate(-QUARTER_PI);translate(-s/2.0, 0);ellipse(0, 0, s, s);rect(-s/2.0, 0, s, s);popMatrix();rotate(QUARTER_PI);translate(s/2.0, 0);ellipse(0, 0, s, s);popMatrix();
}void frozen(int x11,int y11,int s) {translate(x11, y11);stroke(85, 115, 200);strokeWeight(12);for (int i=0; i<8; i++) {line(0, 0, 0.4*640, 0);for (int k=0; k<5; k++) {float step = 0.07*k*640;line(step, 0, step+2*s, 2*s);line(step, 0, step+2*s, -2*s);}rotate(TWO_PI / 8);}}
三、码绘与手绘的对比以及思考:
一、创作体验:
码绘在绘制重复的东西的时候有很强的优势,因为可以编写一个函数,进行传参来不断调用完成重复的画面,然后还可以借助循环等等来完成想要的画面,同时可以加入不同的数学函数,比如随机数,或者sincos函数等等,最后完成想要的画面。但如果是画复杂的线条,码绘相对来说算坐标的过程就要痛苦些。可能也表达不出应有的力度和轻重。
手绘相对来说主观性和随机性更强,每一笔画的时候选择的位置,每一笔画的时候进行的轻重,都会对画作产生不同的影响,同时趣味性也很强。
二、思路方面:
进行码绘的时候思路可能会在出现一些偶然效果的时候立马发生改变,一开始完成 这幅码绘的时候还完成了一些辉光效果,后来因为掉帧严重于是删除了,所以思路在码绘过程中可能是会奠定一个基调,然后在一些偶然的碰撞会发生改变。但是总体想要的效果还算是一个大概效果在脑海中。
手绘方面一般来说,思路确定好,就跟着思路来画就好了,为了达到想要的画面,用不同的颜色不同的笔触来完成就好了。
这次的手绘对比图因为是在完成了码绘之后照着画的,所以没有用什么特殊的方法来绘制,就是通过不同颜色的笔来完成了。
三、技术以及局限性:
码绘更加依赖思路或者是创意,通过不同的数学函数循环随机数等等将简单的图形复杂的动态化。
对于码绘来说,稍微复杂一点的线条都可能无法完成,或者需要经过大量的时间来计算其坐标等等。而且可能无法通过笔触来表达作画的情绪。
手绘可以依赖画画的技术以及天赋。主观情绪很重。
但同时是难以具有交互性以及真正的动态性的。
四、载体:
码绘可能更加适合在电子设备上呈现,如果是一幅动态的交互的码绘,那只有电子设备才能展示出动态。
手绘可能更适合的载体是画布上。
但在当下电子产品应用广泛,码绘和手绘都可以呈现在电子屏幕上。
但同时可能有些差别,比如有些好的美术手绘作品,是只有肉眼看才能更加体会它的艺术感的,举个例子比如说是水彩画,如果没有近距离看它的厚度与质感,可能艺术感与美感会差很多。如下图。
五、自我感受:
手绘因为它更加容易表达自己的情感,倾注了自己的灵感以及心情,所以过程相对来说非常愉悦。
而码绘,因为不太容易的表现自己的想法,以及老出bug,就没有那么愉悦。嗯。
六、应用以及结合性:
近年来板绘的发展,已经是将电子与手绘结合起来的一大步了,通过数位板,我们既可以让手绘线条的粗细,轻重,手法复刻在电脑上,也可以通过电脑上的工具来将手绘的内容进行复制,旋转,以及图像处理,这便是一个很好的结合。
所以同时我认为码绘也可以与手绘相结合,可以是同一幅画面里既有手绘的内容也有码绘的内容,也可以是通过数位板传入笔画之后通过码绘的数字性以及逻辑性来对每一个像素点进行循环的改动等等,都是很好的结合。
参考文献:
1.《用代码画画》:
0.1 用代码画画——搞艺术的学编程有啥用?
https://blog.csdn.net/magicbrushlv/article/details/77922119
1.1 开始第一幅“码绘”——以编程作画的基本方法
https://blog.csdn.net/magicbrushlv/article/details/77840565
2 以编程的思想来理解绘画—— (一)用”一笔画“表现“过程美”
https://blog.csdn.net/magicbrushlv/article/details/82634189
3.https://processing.org/tutorials/gettingstarted/
4.https://blog.csdn.net/y511374875/article/details/79362957
码绘与手绘——表达动态相关推荐
- 码绘VS手绘(二)动态绘图
码绘VS手绘(二)动态绘图 一.前言 二.实验内容 (一)主题 (二)实验结果 1.码绘 最终效果 程序结构 具体函数解析 2.手绘 三.总结--编程与手绘的比较 1.工具和载体 2.技法 3.理念 ...
- 码绘与手绘的对比——动态
码绘与手绘的对比--动态 版权声明:本文为博主原创文章,未经博主允许不得转载. 图形学最动人的地方就是可以用代码实现图形的动态效果,之前比较了静态效果下的码绘与手绘,传送门:https://blog. ...
- 【动态】码绘VS手绘的对比——有点萌的开关
[动态]码绘VS手绘的对比--有点萌的开关 背景简介 主题 成果展示 前期分析 制作过程 体会与思考 参考资料 背景简介 上一次简单的通过静态的手绘与码绘对两者进行了一些简单的对比,这一次更加好玩了, ...
- 用p5.js实现的码绘与手绘的比较(动态)
用p5.js实现的码绘与手绘的比较(动态) 上篇:用p5.js实现的码绘与手绘的比较(静态)https://blog.csdn.net/wangyouxu24/article/details/8433 ...
- 码绘与手绘的比较【动态篇】
圆的面积公式 我们都知道圆的面积公式是π*r^2,但这个公式怎么得来的呢?我们用一种直观的方式来看看这个公式的来历: 接下来我们尝试用码绘和手绘来实现一下第二张图片的动态了. 手绘 额..可以看出手绘 ...
- 对比码绘与手绘——Motion graph
上一篇博客做的是静态画,那这篇当然要讲讲动态画.同样地,这次我们也是从思路.技术.创作体验.创作偏好等方面来比较码绘与手绘,讨论异同. 首先,展示一下作品: 码绘 利用P5.JS绘制作品 手绘 利用数 ...
- 码绘VS手绘|processing“运动”主题创作——如何让一只沙雕鸟起飞
目录 一.代码逻辑 二.理论对比 三.参考资料 最终作品效果可以看上传在B站的视频:https://www.bilibili.com/video/av36523799 第一次码绘VS手绘指路:http ...
- 码绘VS手绘(二) 如何让让静态图“动”起来
前言 在上一篇码绘VS手绘(一) 编程与手绘的对比中,我们了解了有关码绘与手绘在静态图方面的比较,本文主要讲解如何分别通过手绘和码绘两种方式来使得静态图"动"起来,码绘使用的是pr ...
- 码绘”与手绘比较——静态篇(码绘使用p5.js)
码绘图 手绘图 先大体说一下码绘图的实现吧 其实实现起来没什么技术难度,就是过程比较繁琐. 背景就是几个不同颜色,不同透明度的四边形和三角形,用quad()和triangle()两个函数搞定,就不贴代 ...
最新文章
- react 当前时间_如何使用 useRef 优化 React 性能问题
- CSP认证 201503-3	节日[C++题解]:模拟、枚举、日期题、日期模板题
- 深度优先搜索(DFS)----------------Tju_Oj_3517The longest athletic track
- P3723 [AH2017/HNOI2017]礼物 FFT + 式子化简
- pline加点lisp_用Autolisp 在AutoCAD中实现多种曲线的绘制
- Leetcode 206.反转链表(双指针迭代法和递归操作)
- nginx学习文档之一 安装nginx-Linux下安装nginx
- 外媒确认iPhone 13 Pro系列采用120Hz OLED面板:支持智能调节屏幕刷新率
- java.sql.SQLException: Can not issue empty query.
- Yaniv Erlich:DNA 很可能是人类终极的储存设备
- 什么是真正的大数据营销
- 深度学习 --- 卷积神经网络CNN(LeNet-5网络详解)
- 干货 | 高效阅读英文文献你必须知道的技巧
- 20170403_Windows网络编程视频学习1
- secure CRT 信号灯超时时间已到
- Oracle密码过期
- bash 脚本编程 教程
- [BZOJ1984]月下“毛景树”(树链剖分)
- SEON - 1 怒怼Dp(1)
- python定积分1002无标题_python 求定积分和不定积分
热门文章
- 阿里云的短信服务acsClient+java
- Python | Python保存高维数组array,Python用pandas将numpy保存csv文件,Python保存3维数组
- 每周跑一下Python脚本,轻松生成工作日志模板
- Firefox修改快捷键插件SakaKey使用教程
- Python Basic Grammar
- 【webview】微信和PC监听浏览器关闭和刷新(亲测可用)
- 2020.4.08 C组模拟赛题解
- 水果店做生意不好怎么办,水果店生意不好如何做好
- 从理论到实战-如何理解那个把嫦娥送上天的卡尔曼滤波算法Kalman filter?
- 配置 hosts 浏览器访问仍然不生效