又到了Processing练习。

这次是自画像练习,应老师要求利用processing或者P5.js绘制一幅自画像。

在课上老师给我们技术的同学们看了艺术专业同学们的自画像,有搞怪的,有精心设计的,还有令我最印象深刻的哪吒码绘(罗小黑大电影里边的那位):

作者来自江南大学,具体信息不明,侵删。

不过,我的习惯是尽量不选择本能性想出的点子,所以描绘个人漫画式肖像的想法被我摒弃。

元素一——太极

最近半年时间内我都与中国传统道家文化打交道,无论是大创的游戏想要展现的中国哲学思想,还是Graphic Design课程作业中“太极无处不在”的思想,还是喜欢的小说中涉及的中国哲学思想,都让我感受到“道”文化的魅力。

虽然俺对于道家文化的了解不是很多,但是俺感觉已经被道家文化种草了。

道家文化中“太极”的概念尤为重要,所谓“是故,易有太极,是生两仪,两仪生四象,四象生八卦,八卦定吉凶,吉凶生大业。”

太极图案,在和谐统一中蕴含对称、正负型的美感

于是我想要把太极图案(PS:上学期的计算机图形课我也用OPENGL画了太极)融入到本次自画像中。

绘制太极的代码,在这里给出,其基本思路是画几个大小不同的圆或半圆,通过相互覆盖,最终形成太极图案:

注意,为了让太极有动态效果,我加入的变量有angle(旋转角度)、R(整个太极圆的直径),这样,在外部更改这些变量,最终呈现的太极就会发生变化。

  //taichi!注意,为了让太极有动态效果,我加入的变量有angle(旋转角度)、//R(整个太极圆的直径)float angleRad = radians(angle);//background(255, 10);fill(0, 255);noStroke();ellipse(width/2, height/2, R, R);fill(255, 255);arc(width/2, height/2, R, R, PI+angleRad, PI+PI+angleRad);float posX = cos(angleRad) * R/4 + width/2;float posY = sin(angleRad) * R/4 + height/2;float posX2 = cos(angleRad + PI) * R/4 + width/2;float posY2= sin(angleRad + PI) * R/4 + height/2;noStroke();ellipseMode(CENTER);ellipse(posX, posY, R/2, R/2);fill(0, 255);ellipse(posX, posY, R/6, R/6);ellipse(posX2, posY2, R/2, R/2);fill(255, 255);ellipse(posX2, posY2, R/6, R/6);

元素二——主角(没错就是我!)

其次,我想要把看小说时心目中侠客的形象描绘出来,那是一袭白衣或一身黑衫,头戴斗笠,深藏功与名。然后,由于processing适合绘制抽象图形,我便没有逆行其道去花时间描绘线条丰富、配色讲究的画像,而是偏向抽象、意向化的表达:

用简陋来描述再适合不过,但简单的线条和图形,却有点恰到好处的感觉

绘制过程挺枯燥的,不断调整绘制的参数、坐标等,使用到的函数包括:

Line / Curve / Arc / BeginShape / EndShape / Vertex / Ellipse,由于具体代码较为冗余,这部分代码在最后给出。整体人物的绘制,有一个参考点Y,有点类似锚点的概念,整体人物的绘制都是相对于这个参考点的。

还有小小的一点,就是为了模拟人物上下呼吸的运动,我使用了Sin函数,这样,整个人物就是上下缓慢运动的。这个时候刚才设置的参考点的作用就体现出来了。

有了太极和人物之后,还需要加入一些效果让整体内容富有层次感、画面感等,简单来说就是加点特效撑撑场面。

放飞自己的特效时间

一、飘雪

首先想到的就是在背景中加入飘动的雪花,提升整体的观感。

为秉持整体绘制风格的简单图形风格(才不是懒嘞!),雪花俺就用白色圆形来描绘,然后,加入拖尾的效果,整体感觉就出来了。

具体实现过程是写了一个Particle的类,生成200个雪花对象,分别管自己的移动、位置刷新和绘制。雪花粒子类的代码如下,这个类hin简单:

class CustomParticle{float posX;float posY;float velX;float velY;float r = 5.0f;public CustomParticle(float velX, float velY){this.posX = random(0,width);this.posY = random(0,height);this.velX = velX;this.velY = velY;}public void Move(){this.posX += velX;this.posY += velY;}public void CheckEdge(){if(posX > width) {posX =0;posY = random(0,height);}if(posY > height) {posY = 0;posX = random(0,width);}}public void Render(){ellipseMode(CENTER);ellipse(posX,posY,r,r);}public void Update(){Move();CheckEdge();Render();}}

大雪花,慢速
小雪花,快速

二、远山

画完雪花,我想画一些能带给人实际前后景感觉的背景,可以是城池,可以是河岸,也可以是远山。

而且是会动的远山。

山形的绘制,关键函数在于Noise噪声函数,它适合用来描绘自然的曲线(数值)变化,用到山脉的形状描绘恰到好处。

void DrawMountain(float magnitute, float grayscale, float Y, float seed) {float x = 0;float y = seed;float thisMountY = Y;noStroke();fill(grayscale, 100);//draw the mountain using noise function.beginShape();vertex(0, height);while (x < width) {vertex(x, thisMountY + magnitute * noise(x/100.0f, y));x = x + 1;}    vertex(width, height);endShape();
}

注意我加入的变量,magnitute控制山脉的起伏程度,grayscale顾名思义是绘制时的灰度,Y为山脉的基准线的y坐标,seed为noise函数的一个参数,它的变化会影响Noise函数的输出。Noise函数俺就不多讲了,大家可以去百度(GOOGLE)看看。

山体的移动就靠Y的变化来实现,同样,还是用sin函数来实现上下移动有快有慢的效果。(有没有朋友知道怎么描述这个运动特点,感觉我用的词好拙劣噢)

Processing:柏林噪声随机序列(Perlin Noise) 也可以看看这个。

远山在底部,多层
山的位置上升,层数变少

整体的变化过程让人有一种镜头在上下移动的感觉,最终我对这个效果还是挺满意滴。

Processing - Mountain and Snowhttps://www.zhihu.com/video/1173396802178465792

三、交互变化——阴阳两相宜

然后是加入简单交互来允许体验这个应用的人不仅仅能看自画像,还要能与自画像交互。

有关交互的点子层出不穷,这也是我喜欢用编程去实现交互的原因之一:代码所提供的灵活性能够支撑许多点子的实现。

最终交互的过程为:体验者通过简单的点击屏幕和移动鼠标,可以感受到整体黑白颜色的转换、太极图案的放大缩小和旋转速度的变化。

其根本就是更改变量,十分简单。当然实现交互效果也可以不这么简单,可以变得更有难度,相对地更有效果一些。比如检测鼠标拖动、随即调用函数等等。

本项目技术方面实现所涉及到的关键词为:

  • Processing
  • Noise Function
  • Sin Function
  • Processing Class
  • Particle System
  • Processing Drawing Functions

最终视频:

Processing - Self Sketchhttps://www.zhihu.com/video/1173397574668587008

processing创意图形代码_Processing练习-Self Sketch - TAI CHI相关推荐

  1. processing创意图形代码_代码之上,诗意之中 | Processing编程造个梦

    今天介绍算法艺术实验室二位优秀学员的一个合作作品. 以<梦游天姥吟留别>这首诗为概念设计,用Processing编程在一个沉浸空间里制造光影,码出诗中那仙府名山. 传统美学结合了编程,被打 ...

  2. processing创意图形代码_2020年外贸B2C店铺的黑色星期五创意营销想法(下)

    10.外贸B2C店铺黑色星期五创意营销理念--创建促销内容日历 随着黑色星期五的临近,您将希望巩固自己的整体策略.伟大的第一步是创建一个内容日历,其中要共享什么资产和内容以及何时共享.计划提前一个月计 ...

  3. 互动媒体技术——Processing创意绘画系统

           互动媒体技术--Processing创意绘画系统 总体设计思路 工具:Processing Processing是一个为开发面向图形的应用(visually oriented appli ...

  4. python 矩阵获取行数_4个最佳项目创意的代码片段和示例,旨在为Python和机器学习构建出色的简历!...

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 一篇文章带你了解4个最佳项目创意的代码片段和示例 Python是一 ...

  5. 4个最佳项目创意的代码片段和示例,旨在为Python和机器学习构建出色的简历!...

    点击关注我哦 一篇文章带你了解4个最佳项目创意的代码片段和示例 Python是一种特殊的编程语言,适用于从初学者到中级用户.由于它的灵活性,它正逐渐成为一种非常流行的语言,也是当今人们谈论最多的编码语 ...

  6. 基于P5JS创意图形绘制

    基于P5JS创意图形绘制 使用p5,webgl等工具,尽量重现所给gif图库中的图像. 所选临摹图形为 主要过程 选用了P5JS在线编辑器进行实现,可以浏览P5JS网站并复制附件txt的代码查看效果. ...

  7. FCPX插件-16个手绘卡通素描涂鸦图形文字标题动画 Scribble Sketch Lower Thirds

    Scribble Sketch Lower Thirds包含16个手绘卡通素描涂鸦图形文字标题动画模板,一个简约的卡通标题动画,由手绘的文本动画组成,可帮助您轻松改善您影片创意. 这个插件包提供了各种 ...

  8. java绘图机器猫_canvas哆啦A梦图形代码

    HTML5 canvas哆啦A梦机器猫图形代码是利用HTML5 canvas技术绘制的机器猫. canvas画图的基本知识 context:一直觉得这个翻译成"上下文"真够蛋疼的, ...

  9. java输出文字_Java图形代码:输出文字,输出字符文字

    Java图形代码:输出文字,输出字符文字,本例由烈火网小编转载,由于水平有限,因此不能给出详细注释,请看下面完成的图形演示: 代码片段: Copy to Clipboard 引用的内容:[www.ve ...

最新文章

  1. VC下通过进程ID获取进程镜像文件路径的方法及其存在的缺陷
  2. Manacher算法 , 实例 详解 . NYOJ 最长回文
  3. OpenDesktop 1.0开放桌面操作系统光盘启动安装过程详细图解
  4. webpack的入口起点(EntryPoints)
  5. 使用javassist动态注入代码
  6. net自带二进制序列化,XML序列化和ProtoBuf序列化的压缩对比
  7. 分页插件PageHelper配置步骤(mybatis)
  8. 正则表达式JavaScript版本回顾笔记背诵版本
  9. php 三个等号与两个等号,浅析JavaScript和PHP中三个等号(===)和两个等号(==)的区别...
  10. boot客户管理系统环境的搭建_LANIF Admin开源免费后台管理系统(React)
  11. linux /home recovering journal,Ubuntu启动之后显示Recovering journal ,clean block。。。。问题`...
  12. 漫谈ASP.NET设计中的性能优化问题
  13. Dijkstra最短路径
  14. 2019b-MATLAB-中文界面设置
  15. 【如何选择到合适的天线-天线参数讲解 】
  16. RS232与RS485协议原理及应用
  17. 金山pdf阅读器 独立版V10.1.0.6683
  18. 面试题:如何让线程顺序执行?
  19. 剑指Offer——银行考试
  20. IMDB Top 250电影推荐

热门文章

  1. No qualifying bean of type [com.*.*.dao.InfoDao] found for :错误!
  2. android 相机拍照声音文件格式,android4.1 添加相机快门声音开关
  3. cesium加载geoJson格式的图斑方法
  4. 从树根互联、睿视智觉、Strikingly这3家企业浅窥AWS中国
  5. 【JHOK-ZBZ201型智能型剩余电流继电器】
  6. 浅拷贝copy(“=”)和深拷贝(“copy.deepcopy()”)
  7. 热泵系统matlab仿真,热泵系统
  8. OSChina 周二乱弹 ——程序员吹完牛逼 都自己加班去了
  9. 数据结构与算法之Python实现——单链表
  10. 电子专业如何写毕业论文