processing代码_【Processing教程7】—— NavierStokes Equations

【版权声明】

| 作者:nightawk

| 编辑:月之眼

| 本文首发于大水牛参数化设计平台

| 如需转载请联系作者


 题外话 

上一次看完《知否》之后写了一篇教程,感觉写的挺开心。这次在看完《香蜜》之后,也想着要根据香蜜的内容写一篇教程。

印象最为深刻的是《香蜜》中神兽梦魇,感觉特别的萌。所以就是它了。。。哈哈哈哈哈哈!仔细研究后,决定写他吐出的梦境。如图:

c9d706b19f6a182f3da816573752be98.png

15309aad9b1e38fdc8f68414bf3fd2de.png

先来看看视频效果:


 正文 

1. 这种效果对于我来说也是一种全新的效果。经过初步分析,我们把这种效果分为3步来实现:

  •  A.确定形状,只显示形状内的东西。

  • B.形状外面的效果,这可能是最难实现的效果,特别是对于processing这种渲染比较弱的软件来说。

  • C.图片的显示,如何显示图片的同时显示外观效果。

2. 对于只显示形状内的东西。简单的说有2种方式:第一种是先显示图片,然后去剪切图片。第二种是先显示图片,然后再叠加上一个黑色的蒙版。相比之下,叠加蒙版更为简单。

通过beginShape()+ 外轮廓(需顺时针链接) +  beginContour() 剪切的形体(注意连接点的时候需要逆时针)+ endContour() +  endShape(CLOSE);

850b92539f85487277900c1c093a77d9.png

f9f6fd77a5c5c5596832ca668fdf6dc8.png

3. 思考用particle system来做光的运动模拟。在网上寻找类似效果的时候,发现了一个特别有意思的效果---Navier-Stokes equations. 完美解决了particle system需要大量的particle才能达到顺滑效果的问题。

在网上找到的效果如下图:

cee5d47e833defa2ced5951221448136.png

在得到这个文件后(链接:

https://www.openprocessing.org/sketch/434618),初步在void setup()和void draw()中浏览一下。可以发现这个代码大致分为3个部分。

  • A. 先得到摄像头的数据。将图片和上一张图片对比,得到不同的地方。将不同的部分转化为数据信息。

  • B. 数据转化为颜色信息之后,用class(MSAFluidSolver2D)存储并处理颜色渐变和相互融合。

  • C. 最后通过FlowZone,存储一个一个小格中颜色信息。并将信息转为图片显示出来。

分析完文件的逻辑后,我们需要做的是改变A的部分,把从摄像头获取数据的方式改为其他的数据获取方式。然后将数据和其他两个class完美的运行起来。

a8dd3c13646bdfce13a049a1641093e4.png

60f87ead3d94a200ba0a5537c0e1a259.png

这个代码在后续其实还可以和其他的代码连接到一起达到各种不同的效果,现在只是作为范例。加入四个区域来产生如下效果。(这里想强调的是如何去分析一个程序,并改变其功能。往往一个好的程序,从void draw中就能大致将程序分为几个部分);

d0478af73717c8987cac03da1f7f9576.png

4. 最后是一个相对比较简单的过程,找一个照片并将它融入到圆形中。

d573fec3f9e5a3eb8915f911ae432df5.png

这里看似简单,其实其中存在一个bug。当a=0 的时候会导致所有时候的a都等于0.意味着无法叠加效果。所以需要加一个0.005来去除这个bug。效果如下:

b1f24c6d6eafde33fa1143d9774261b9.png

这期内容到此结束。看似非常简单,找到可以运用的代码,然后融入到文件中。但是在融合代码的过程中会遇到各种各样困难,需要一步一步的去理清代码再一步步推导下去。

同时觉得Navier-Stokes Equations会有更多的用途,希望有兴趣的小伙伴可以一起进一步的研究下去。


代码下载 

下载链接:https://share.weiyun.com/5SGLGlc


往期精彩文章回顾:

  • Processing教程6----Minim的简单运用

  • 【Processing 教程 5】 ----PeasyCam 和 gHowl

  • 【Processing教程4】----library的简单运用

  • 【Processing 教程3】--Arry和For Loop

  • 【Processing 教程 2 】----- function

  • 【Processing 教程1】--界面和参数介绍

  • 【号外,号外】大家期待已久的Processing教程来啦

  • 【Python】一键标注封闭多重直线

  • 【Python】通过python删除指定名称的电池

  • 【分分钟建模系列20】如何路径分组

  • 【分分钟建模系列19】如何用RhinoPython实现“向日葵”开洞

  • 【分分钟建模系列18】如何用Rhino做垂直格栅

  • 【分分钟建模系列08】山寨一个教堂

  • 【分分钟建模系列07】做个扭转建筑

  • 【分分钟建模系列】SoftMove命令的简单应用

  • 【分分钟建模系列】手把手教你做旋转楼梯

  • 【分分钟建模系列】手把手教你做表皮

  • 【分分钟建模系列05】手把手教你做编织

  • 【分分钟建模系列06】手把手教你做个凳子

  • 【分分钟建模系列09】如何用犀牛手工做灰阶度干扰

  • 【分分钟建模10】MAD中国国家美术馆

  • 【分分钟建模教程系列11】Big的W大楼

  • 【分分钟建模教程系列12】如何做一个漂亮的楼梯

  • 【分分钟建模教程系列13】如何做曲面干扰

  • 【分分钟建模系列14】如何快速打断相交的曲线

  • 【分分钟建模系列15】如何用Grasshopper建一座桥梁

  • 【分分钟建模系列16】茶几建模

  • 【分分钟建模系列17】BIG蛇形画廊的建模案例

  • 【Bubalus_RH for Rhino6】选择“选中物体”所在的图层

  • 【Grasshopper】Anemone插件的应用


大水牛参数化设计是一个传播分享建筑数字化设计与数字化建造资讯的平台

并且会不断连载原创或转载有价值的参数化软件教程

(Rhino、Grasshopper、Python、Revit、Processing等等)

是一个视野与技术并重的数字化传播平台

我们的目标是把这个平台创造成一个拥有良好氛围的学习平台

我们将带头冲锋;我们的立场非常坚定

我们的狂怒你驾驭不住;黎明就在眼前

欢迎你们加入我们的战队

记住我们不是一个人在战斗

b02ead57cf473df6e469b2838c4b0f12.png

点击关注微信公共号,获取更多精彩内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值