【Houdini动画】如何画出类似心形线的数学曲线?(图文详解)
› VFX大学 › Houdini FX中文社区 › 【Houdini动画】如何画出类似心形线的数学曲线?(图文详解)
标签: Houdini动画
-
作者帖子
-
-
2017-09-20 - 21:00 #24609
今天小海豚要教大家使用Houdini绘制迷人的数学曲线。下图从左到右依次是玫瑰曲线、蝴蝶曲线、心形线、螺旋线。
小海豚知道很多同学一提数学方程式就头疼,更何况是曲线方程组!这次小海豚以心形线为例,给大家讲讲数学曲线如何绘制。
-
2017-09-20 - 21:01 #24610
制作思路:1. 创建线条,进行重采样,得到点;2. 然后使用点序号驱动点的位置,得到曲线形状;3. 对曲线上色;4. 做曲线动画。其中关键步骤是在第2点。
下面以心形线为例,节点图和节点参数,节点很少,一一了解下。
1. line 节点只是用来生成1根线,所以只需要两个点,长度先设置长一点,以免后面的曲线显示不完整,以为弄错了。
2. resample 节点,重采样直线,长度为0.01,可以得到701个点。
3. Attribute Wrangle 节点放在下一楼说。
4. point 节点,为心形线加上红色。
5. mirror 节点,使心形线左右对称变化。
-
2017-09-20 - 21:02 #24611
接下来我们重点解决点序号驱动点位置的问题。
为什么要使用点序号驱动点位置。我们知道,每个点的序号肯定是唯一的且不与别的点相同,使用点序号就保证了每个点能占一个坑(在同一个时间周期内),按顺序排队。
心形线有很多种,大家可以百度搜下。
小海豚的这种笛卡尔坐标系方程是
123x=16*sin(t)*sin(t)*sin(t)y=13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t)可以看到方程式中的 x、y 值由变量 t 决定。这里的 t 就是方程式的驱动。
之前小海豚说了,点序号也是驱动,所以 t 与 @ptnum(点序号)成正比。这里我们假设 m 为常量,则 t = m*@ptnum。加上 x = @P.x,y = @P.y。带入上述方程式得到
123@P.x = 16*sin(m*@ptnum)*sin(m*@ptnum)*sin(m*@ptnum)@P.y = 13*cos(m*@ptnum)-5*cos(2*m*@ptnum)-2*cos(3*m*@ptnum)-cos(4*m*@ptnum) -
2017-09-20 - 21:03 #24612
然后我们确定 m 值。
先解释下 m 的意义,在数学上,m 叫频率,与周期成反比,m = 2π/T。在本次案例中,周期是什么呢?是我们决定用多少个点来完成这一圈曲线。因为 π 约等于3.14,所以小海豚决定用628个点来完成这个心形曲线,所以我们得到 m = 0.01。
再把 m 值带入上面的公式,得到
123@P.x = 16*sin(0.01*@ptnum)*sin(0.01*@ptnum)*sin(0.01*@ptnum)@P.y = 13*cos(0.01*@ptnum)-5*cos(2*0.01*@ptnum)-2*cos(3*0.01*@ptnum)-cos(4*0.01*@ptnum)为了简单起见,小海豚把曲线放在了 z = 0 处,所以最后填入 Attribute Wrangle 节点的公式就是
12345@P.x = 16*sin(0.01*@ptnum)*sin(0.01*@ptnum)*sin(0.01*@ptnum);@P.y = 13*cos(0.01*@ptnum)-5*cos(2*0.01*@ptnum)-2*cos(3*0.01*@ptnum)-cos(4*0.01*@ptnum);@P.z = 0;就得到了一个静态的心形线——
-
2017-09-20 - 21:04 #24613
最后我们来给心形线做动画。凡是动画,都和时间有关,这里小海豚通过时间来驱动线的长短,从而控制心形动画。将 line 节点的 length 参数设置为 n*$F,即 length = n*$F,这里 n 为常量。在重采样后的直线上,每两个点之间的距离为 0.01,所以点的数量 = length/0.01 = 100*n*$F,我们得到每 100*n 帧增加 1 个点。简单起见。这里小海豚设置的 n =0.01。
画面就开始比心啦~
-
2017-09-20 - 21:05 #24614
好啦,今天小海豚的更贴就到这里啦,大家可以尝试一下,按教程的思路绘出其他更好看的数学曲线。
如果本帖对您有所帮助,请评论或点赞,让小海豚知道你的存在,给予小海豚更贴的动力哟!
如果喜欢小海豚的帖子,点击我的头像,加我为好友,就可以看到我得更新啦,也可给我发私信,点击帖子顶部得收藏放入收藏夹,方便将来再次查看~
本帖未经允许不得转载,转载请注明出处并保留在本站的完整链接,谢谢^_^
-
2017-09-20 - 21:25 #24656
有意思O(∩_∩)O赞哦~
-
2017-09-21 - 10:43 #24701
有小伙伴问我,我查到的方程式是这样的(这里以椭圆为例),并没有把 x、y 单拎出来呀
1x<sup>2</sup>/a<sup>2</sup>+y<sup>2</sup>/b<sup>2</sup>=1这里小海豚提醒一下,查找的时候查笛卡尔方程式,什么标准方程式、极坐标方程式,再去手动转化的时间成本实在太大了,而且很多同学的数学并没有那么好。当然你是数学学霸当我没说咯
既然都扔了椭圆标准方程式出来,这里也写一下笛卡尔方程式好了
123x = a*costy = b*sint其中,a 是半长轴,b 是半短轴;a = b 的时候是圆形,a 为半径。
-
-
作者帖子
- 在下方一键注册,登录后就可以回复啦。