Grasshopper + Processing 工作流(基础篇)

2020-04-20 15:50:42 浏览数 (1)

咸鱼了一个月的我

终于又来更新了

(再不更新就……就要明年了)

(渴望力量么?)

如图所示,这次带来的是Grasshopper Processing的工作流,至于为什么会有这样一个小众的工作流,是因为我(不想学AE)比较熟悉Grasshopper的操作,就想结合RhinoProcessing两者的特点快速制作(鬼畜)动画。

封面鬼畜但是……全程无高能

所有的 代码和GH文件 都可以在公众号后台回复“Grasshopper Processing”下载

也可以在www.openprocessing.org/sketch/815918 查看Processing部分

万能的.txt

众所周知,Rhino有着非常直观的曲线绘制和编辑能力,我通过Rhino画线来规划画面内素材的运动轨迹,利用Grasshopper来做出一些随机效果和运动速率的控制,并且把轨迹转换成点的坐标,把所有的坐标转化为字符串,写入txt文件,最后用Processing读取这个txt文件,运行就可以得到动画了。(.txt几乎可以链接所有的非实时工作流,傻瓜且有效

曲线轨迹 /匀速分布 / 变速分布

Grasshopper部分:当我们指定一个图片在Processing的画布中运动时,无时不刻要指定它的位置:image(img,a,b)。要获得这个位置,我们就要获得轨迹上的点,而点的疏密则直接决定了运动的速率。我们通过Graph Mapper就可以改变点的分布(更复杂的运动速率可以用Rich Graph Mapper或者V-Ray Graph来控制),每一帧Processing都读取一个点的位置并画出图像,从而实现动画。

Rich Graph Mapper和V-Ray Graph

在这样一个工作流中,有几个关键点:

1、画布和坐标系:要想在Gh和Processing中实现一致的效果,那就要统一画布大小。这里Rhino的单位并不重要,只要把“画框”的长宽数值保持和Processing中size(width,height)相同即可,这个“画框”并不是真实存在画面中的,只是为了标定画面的界限而画的一个矩形。至于坐标系,在Rhino的Top视图中,Y轴是向上的,而在Processing的画布中Y轴是向下的,为了统一画面和坐标的关系,我们在Top视图的Y轴<0的那侧进行设计,最后输出时把点的Y轴作相反数处理即可。

2、点数和帧速率:点的数量决定了总的帧数,Processing中的默认fps是60,修改帧速率的话使用frameRate(fps)的函数即可,而 总的点数÷帧速率=动画持续的时间,这些参数都可以根据设计的需求去调整,使得动画达到最佳的状态。

在Grasshopper中预览效果

在曲线上取点以及用Graph Mapper都是GH里的新手操作,我就不多赘述了,要点在于数据的排列顺序要和Processing中代码的读取顺序相匹配,字符串方面要把坐标里的括号去掉,数据间用逗号分隔,最后一条线合并成一行,并导出。

处理坐标数据并编织图片的其他属性的数据

处理完字符串之后就可以右键点击Panel,保存成txt格式

有了.txt文件之后就进入到了Processing部分(也是入门水平,大概看完半本Learning Process就能看懂这个代码)。孝吾已经把注释写的很详细了,我就简单解释一下用法。

最近新换的暗黑皮肤

首先是代码中的文件名要和文件夹中的一致,大家自己替换图片素材的时候不要忘记这点。其次代码中我们定义了XYZ三轴的坐标、绕这三轴的旋转角度、XY二轴上的缩放、以及RGB三种颜色的蒙版,一共11种参数(当然你也可以自定义修改),但是有些情况GH并不会输出这么多种参数,我们只要写入txt文件中的即可,剩下参数用默认值去替代。

代码语言:javascript复制
int Datalength = 4; //一组数据的长度

比如我在Rhino中输出了坐标的三个值、缩放大小,这样每个素材就有4个数据,我就要以4为间隔去读取数组,剩下数据就要用默认值填充。如果Rhino输出的单个元素数据类型的长度改变,这个Datalength就要做对应修改。

代码语言:javascript复制
ImgList[i].play(Img_Path[i][Rate],Img_Path[i][Rate 1],Img_Path[i][Rate 2],  0,0,0, Img_Path[i][Rate 3]*0.3,Img_Path[i][Rate 3]*0.3, 255,255,255);

调试好代码以后用saveFrame("###.png")函数进行每一帧图片的存储,最后用Processing自带的Movie Maker插件就可以进行输出视频,注意选择和程序中相同的FPS设置。

你说这AE它不香么?

0 人点赞