码绘展示

先来看一下码绘的最终效果
PS:图中运动毫无规则的星星是由鼠标控制的,录制gif文件时没有把鼠标运动录制下来。

手绘展示

由于是动态结果,一帧帧手绘很麻烦,所以手绘作品只画了一帧。

从这张非常敷衍的手绘作品不难看出,在动态艺术作品上,码绘似乎更占据优势。它更精准快捷,便于实现。通常对于手绘来说,要想展示出动态的效果会采用多种其它方式,比如头发衣物等的形态改变,或者是添加线条显示运动状态。


对于码绘而言,可以实现的动态效果多种多样,可以是函数运动、粒子系统等等。
在p5.js官网有很多资料,可以去逐一学习。
https://p5js.org/zh-Hans/examples/

实验原理与代码

这次的码绘主要用的是随机函数和正余弦函数。
首先第一部分是不断转动的圆环,来看一下代码:

function drawshine()
{noStroke();for (var i = 1; i < 300; i++) {var angle = random(0, 2 * PI);var xpos = 300 * cos(angle);var ypos = 300 * sin(angle);var rand1=random(10,20);var rand2=random(15,25);fill(255,127,36,200);ellipse( xpos, ypos,5,5 );fill(205,55,0,150);ellipse( xpos+rand1, ypos+rand2,8,8 );}
}

这个很简单,就是300个小圆在一个大圆的圆周上运动,让所有圆的位置对应同一个angle的sin、cos值就可以了。
为了视觉效果优化,可以再定义两个随机数,分别加给posX和posY,这样一来这些小圆就不是在一个完全规整的圆上运动了。
那么怎么实现旋转效果呢?也很简单,用一个简单的rotate函数就可以实现。这里可以去看一下官网的实例,在draw函数里加入如下代码即可。

    push();//使图案位置在中间translate(width*0.5, height*0.4);rotate(frameCount / 10.0);drawshine();pop();

看一下效果:

接下来是星星部分的绘制,星星由24条线组成,每条线长度为随机函数,为了使线条均匀分布并且外围是圆,这里用到了正余弦函数。
这个也没什么技术含量,直接上代码吧

function drawpic(centerX, centerY, minRad, maxRad) {var points = 24;var rad, theta;var x0, y0;stroke(255,255,195);strokeWeight(0.9);theta = 0;x0 = centerX + rad * cos(theta);y0 = centerY + rad * sin(theta);for (var i = 0; i < points; i++){theta +=  2 * PI/ points;rad = minRad + random() * (maxRad - minRad);x0 = centerX + rad * cos(theta);y0 = centerY + rad * sin(theta);line(centerX, centerY,x0, y0);}
}

看一下最终效果(录屏软件降低了帧率):

实际效果其实是闪得很快的,如果想调整帧率,可以使用frameRate()来调节。

最后是鼠标交互部分。这一部分参考了官网案例,原理也很简单,就是将星星的坐标参数设置为由鼠标控制(mouseX,mouseY),为了视觉效果更佳,给坐标加了一个缓冲,让星星“慢慢地”来到鼠标所在位置,这个就不贴代码了,可以直接去看官网案例。

总结归纳

对于动态作品,总体而言还是码绘更方便快捷,手绘受局限性较大。

资料参考

鼠标交互
https://p5js.org/zh-Hans/examples/input-easing.html
旋转
https://p5js.org/zh-Hans/examples/form-star.html
载入背景图片
https://p5js.org/zh-Hans/examples/image-background-image.html

Processing——码绘与手绘对比动态篇相关推荐

  1. 码绘与手绘的对比——动态

    码绘与手绘的对比--动态 版权声明:本文为博主原创文章,未经博主允许不得转载. 图形学最动人的地方就是可以用代码实现图形的动态效果,之前比较了静态效果下的码绘与手绘,传送门:https://blog. ...

  2. 【动态】码绘VS手绘的对比——有点萌的开关

    [动态]码绘VS手绘的对比--有点萌的开关 背景简介 主题 成果展示 前期分析 制作过程 体会与思考 参考资料 背景简介 上一次简单的通过静态的手绘与码绘对两者进行了一些简单的对比,这一次更加好玩了, ...

  3. 码绘与手绘——表达动态

    一.手绘表现动态: 这个题目一开始看来 ,手绘是处于非常劣势的地位的,因为电脑上可以实现动态的过程,就是用动画的原理,每秒绘制60帧,不断进行重绘图形,来达到运动的效果的. 而本身来讲,手绘的图片本质 ...

  4. 码绘VS手绘|processing“运动”主题创作——如何让一只沙雕鸟起飞

    目录 一.代码逻辑 二.理论对比 三.参考资料 最终作品效果可以看上传在B站的视频:https://www.bilibili.com/video/av36523799 第一次码绘VS手绘指路:http ...

  5. 码绘VS手绘(二)动态绘图

    码绘VS手绘(二)动态绘图 一.前言 二.实验内容 (一)主题 (二)实验结果 1.码绘 最终效果 程序结构 具体函数解析 2.手绘 三.总结--编程与手绘的比较 1.工具和载体 2.技法 3.理念 ...

  6. 对比码绘与手绘——Motion graph

    上一篇博客做的是静态画,那这篇当然要讲讲动态画.同样地,这次我们也是从思路.技术.创作体验.创作偏好等方面来比较码绘与手绘,讨论异同. 首先,展示一下作品: 码绘 利用P5.JS绘制作品 手绘 利用数 ...

  7. 用p5.js实现的码绘与手绘的比较(动态)

    用p5.js实现的码绘与手绘的比较(动态) 上篇:用p5.js实现的码绘与手绘的比较(静态)https://blog.csdn.net/wangyouxu24/article/details/8433 ...

  8. 码绘与手绘的比较【动态篇】

    圆的面积公式 我们都知道圆的面积公式是π*r^2,但这个公式怎么得来的呢?我们用一种直观的方式来看看这个公式的来历: 接下来我们尝试用码绘和手绘来实现一下第二张图片的动态了. 手绘 额..可以看出手绘 ...

  9. 码绘VS手绘(一) 编程与手绘的对比

    前言 本文主要讲解在静态图方面如何分别通过手绘和码绘两种方式来表现,以及它们之间的差异与联系,谨以此博客记录学习过程.博主新手一枚,这是博主第一次写博文,若有不足之处,还请温柔拍打~~(笔芯~~) 手 ...

  10. 码绘VS手绘(二) 如何让让静态图“动”起来

    前言 在上一篇码绘VS手绘(一) 编程与手绘的对比中,我们了解了有关码绘与手绘在静态图方面的比较,本文主要讲解如何分别通过手绘和码绘两种方式来使得静态图"动"起来,码绘使用的是pr ...

最新文章

  1. 根据给定数据创建JSON并验证
  2. c语言函数参数类型检查,内联函数在编译时是否做参数类型检查?
  3. like语句百分号前置会使用到索引吗?
  4. linux deepin20.5配置WebStorm桌面快捷方式:webstorm.desktop
  5. write up:web 实战2-注入--sql注入(手工注入详细版)
  6. 神经网络(补充)(第五章)
  7. JavaScript --- this
  8. GIS开源程序收集(转载)
  9. 计算机网络 谢希仁 课后习题部分答案
  10. Zookeeper深入系列-从Zookeeper中深入JMX原理
  11. 压缩软件自动化测试,FOR…IN…ZIP循环——自动化测试精解(14)
  12. [译]Ocelot - Headers Transformation
  13. 格式化输出%与format
  14. 如何为VMware创建的虚拟PC机安装Linux操作系统
  15. MySql常用函数大全
  16. 用显卡加速c语言程序,教程 | 如何在Julia编程中实现GPU加速
  17. 创建批处理文件.bat文件(删除指定文件夹下的文件及文件夹并循环)
  18. JS:中文输入法,日文输入法做最大位数Check的坑maxlength
  19. 小卡要民主(卡雷尔机器人)
  20. Could not find conduit initiator for address

热门文章

  1. 爱上一个自己讨厌的人
  2. 使用pytorch搭建AlexNet网络模型
  3. Java中找朋友的代码_找朋友游戏介绍
  4. 创建一个xposed模块Demo
  5. 微信新BUG曝光:好友偷偷删了你,用这样一串代码就能查出来!
  6. 1+x证书Web前端开发HTML+CSS专项练习测试题(八)
  7. 自建Ceph存储与 AWS、阿里云、腾讯云的成本对比
  8. Java实现 蓝桥杯 算法训练 相邻数对(暴力)
  9. 使用 github, gitbook, markdown 写博客/写书
  10. identifier of an instance of