processing制作简单的绘画系统

本次作业使用Processing创建了一个允许用户自由发挥的绘画系统。该系统包含多种笔刷效果,如形状添加和泼墨效果,并结合音乐元素增加趣味性。还提供了橡皮擦功能,分为大小两种,方便用户修改作品。在体验上,尽管与传统绘画不同,但Processing的优势在于易于操作和即时修改。未来计划将音乐可视化与绘画结合,以实现更丰富的动态效果。
摘要由CSDN通过智能技术生成

这学期的课程最后,老师布置了这样一个大作业:

 看到这个题目最开始是没有一个可以很好实施的方案的,在之前的课上,也曾经讨论过这个话题,关于什么是画画。画画在技术层面上,是一个以表面(比如纸张、布、墙壁等等)作为支撑面,再在其之上加上颜色的做法,那加颜色的工具可以通过画笔、也可以通过刷子、海绵或是布条甚至直接用手。但是这只是狭义上我们平时熟知的绘画,在观看了课上所展示的一些图片之后,对绘画的认识有了新的认识:在艺术用语的层面上,绘画的意义亦包含利用此艺术行为再加上图形、构图及其他美学方法去达到画家希望表达的概念及意思。这样看来雕塑、建筑设计甚至是一些没有办法用科学解释的比如麦田怪圈都可以称之为绘画。

 这次的作业,最后采用了自己代码绘制一幅半成品的绘画作品,留了很多空间给使用者自己发挥,在发挥空间上,针对不同绘画技术的人制作了一些不同的笔刷,有一些是可以简单的将我设置好的形状直接添加在想要的位置,一些是自行发挥创作的有一些泼墨效果的笔刷,此外使用了一些音乐与绘画结合,使整个程序具有更高的趣味性,最后为了便于给自己创作不满意的部分进行修改,增加了橡皮擦的功能&

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
制作粒子效果,使用Processing可以使用两种方式:使用现有的粒子库或自己编写代码。 1. 使用现有的粒子库:Processing有许多粒子库可供使用,如Toxiclibs、Traer等。这些库提供了许多现成的函数和类,可以轻松地创建和控制粒子效果。 例如,使用Toxiclibs库可以轻松地创建一个简单的粒子效果: ``` import toxi.geom.*; import toxi.physics.*; import toxi.physics.behaviors.*; VerletPhysics physics; VerletParticle[] particles; void setup() { size(400, 400); physics = new VerletPhysics(); particles = new VerletParticle[100]; for (int i = 0; i < particles.length; i++) { particles[i] = new VerletParticle(new Vec2D(random(width), random(height))); physics.addParticle(particles[i]); physics.addBehavior(new AttractionBehavior(particles[i], 20, -1)); } } void draw() { background(255); physics.update(); stroke(0); for (int i = 0; i < particles.length; i++) { point(particles[i].x, particles[i].y); } } ``` 2. 自己编写代码:如果你想更深入地了解粒子效果的原理和实现方法,可以自己编写代码。通常需要使用向量、物理引擎等概念和技术。 例如,可以使用向量来表示粒子的位置和速度,使用物理引擎来模拟粒子的运动和碰撞: ``` Particle[] particles; void setup() { size(400, 400); particles = new Particle[100]; for (int i = 0; i < particles.length; i++) { particles[i] = new Particle(new PVector(random(width), random(height)), new PVector(random(-1, 1), random(-1, 1))); } } void draw() { background(255); for (int i = 0; i < particles.length; i++) { particles[i].update(); particles[i].display(); } } class Particle { PVector pos, vel, acc; Particle(PVector pos, PVector vel) { this.pos = pos; this.vel = vel; this.acc = new PVector(0, 0.1); } void update() { vel.add(acc); pos.add(vel); if (pos.x < 0 || pos.x > width) vel.x *= -1; if (pos.y < 0 || pos.y > height) vel.y *= -1; } void display() { stroke(0); ellipse(pos.x, pos.y, 10, 10); } } ``` 以上是两种制作粒子效果的方法,你可以根据自己的需求和技能选择适合自己的方式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值