【Houdini动画】如何画出类似心形线的数学曲线?(图文详解)

VFX大学 Houdini FX中文社区 【Houdini动画】如何画出类似心形线的数学曲线?(图文详解)

标签: 

正在查看 7 条回复
  • 作者
    帖子
    • #24609

      Hiの冰海豚
      参与者
      骑士

      今天小海豚要教大家使用Houdini绘制迷人的数学曲线。下图从左到右依次是玫瑰曲线、蝴蝶曲线、心形线、螺旋线。

      小海豚知道很多同学一提数学方程式就头疼,更何况是曲线方程组!这次小海豚以心形线为例,给大家讲讲数学曲线如何绘制。

    • #24610

      Hiの冰海豚
      参与者
      骑士

      制作思路:1. 创建线条,进行重采样,得到点;2. 然后使用点序号驱动点的位置,得到曲线形状;3. 对曲线上色;4. 做曲线动画。其中关键步骤是在第2点。

      下面以心形线为例,节点图和节点参数,节点很少,一一了解下。

      1. line 节点只是用来生成1根线,所以只需要两个点,长度先设置长一点,以免后面的曲线显示不完整,以为弄错了。

      2. resample 节点,重采样直线,长度为0.01,可以得到701个点。

      3. Attribute Wrangle 节点放在下一楼说。

      4. point 节点,为心形线加上红色。

      5. mirror 节点,使心形线左右对称变化。

    • #24611

      Hiの冰海豚
      参与者
      骑士

      接下来我们重点解决点序号驱动点位置的问题。

      为什么要使用点序号驱动点位置。我们知道,每个点的序号肯定是唯一的且不与别的点相同,使用点序号就保证了每个点能占一个坑(在同一个时间周期内),按顺序排队。

      心形线有很多种,大家可以百度搜下。

      小海豚的这种笛卡尔坐标系方程是

      可以看到方程式中的 x、y 值由变量 t 决定。这里的 t 就是方程式的驱动。

      之前小海豚说了,点序号也是驱动,所以 t 与 @ptnum(点序号)成正比。这里我们假设 m 为常量,则 t = m*@ptnum。加上 x = @P.x,y = @P.y。带入上述方程式得到

    • #24612

      Hiの冰海豚
      参与者
      骑士

      然后我们确定 m 值。

      先解释下 m 的意义,在数学上,m 叫频率,与周期成反比,m = 2π/T。在本次案例中,周期是什么呢?是我们决定用多少个点来完成这一圈曲线。因为 π 约等于3.14,所以小海豚决定用628个点来完成这个心形曲线,所以我们得到 m = 0.01。

      再把 m 值带入上面的公式,得到

      为了简单起见,小海豚把曲线放在了 z = 0 处,所以最后填入 Attribute Wrangle 节点的公式就是

      就得到了一个静态的心形线——

    • #24613

      Hiの冰海豚
      参与者
      骑士

      最后我们来给心形线做动画。凡是动画,都和时间有关,这里小海豚通过时间来驱动线的长短,从而控制心形动画。将 line 节点的 length 参数设置为 n*$F,即 length = n*$F,这里 n 为常量。在重采样后的直线上,每两个点之间的距离为 0.01,所以点的数量 = length/0.01 = 100*n*$F,我们得到每 100*n 帧增加 1 个点。简单起见。这里小海豚设置的 n =0.01。

      画面就开始比心啦~

    • #24614

      Hiの冰海豚
      参与者
      骑士

      好啦,今天小海豚的更贴就到这里啦,大家可以尝试一下,按教程的思路绘出其他更好看的数学曲线。

      如果本帖对您有所帮助,请评论或点赞,让小海豚知道你的存在,给予小海豚更贴的动力哟!

      如果喜欢小海豚的帖子,点击我的头像,加我为好友,就可以看到我得更新啦,也可给我发私信,点击帖子顶部得收藏放入收藏夹,方便将来再次查看~

      本帖未经允许不得转载,转载请注明出处并保留在本站的完整链接,谢谢^_^

    • #24656

      小仙女
      参与者
      军士

      有意思O(∩_∩)O赞哦~

    • #24701

      Hiの冰海豚
      参与者
      骑士

      有小伙伴问我,我查到的方程式是这样的(这里以椭圆为例),并没有把 x、y 单拎出来呀

      这里小海豚提醒一下,查找的时候查笛卡尔方程式,什么标准方程式、极坐标方程式,再去手动转化的时间成本实在太大了,而且很多同学的数学并没有那么好。当然你是数学学霸当我没说咯

      既然都扔了椭圆标准方程式出来,这里也写一下笛卡尔方程式好了

      其中,a 是半长轴,b 是半短轴;a = b 的时候是圆形,a 为半径。

正在查看 7 条回复
  • 在下方一键注册,登录后就可以回复啦。
error: 提示:内容受到保护!!