沿路疾驰的玩具车!Blender几何节点教学

小编:迷魂冰 更新时间:2022-08-20

不知道大家小时候有没有玩过四驱车,现在有不少商场都有专门的四驱车赛道,我们既可以用自己的车,也可以租车来跑圈,每次路过的时候我都会多看几眼,所谓“男人至死是少年”可真是一点不假……那么问题来了,作为Blender小能手,我不禁想问问大家,在Blender里,我们也可以制作这种沿路奔跑的玩具车效果么?


第一步:设计玩具车模型并构建“赛道”路径


要做四驱车赛车效果,首先要满足车和赛道这两个基本元素,咱们可以简单制作一个玩具车的3D模型,当然,也在网上下载现成的汽车模型,这个就风俭由君了,不过建议大家不要找高精度模型,因为咱们的几何节点设计会让玩具车模型大量出现,精度太高会增加预览和渲染硬件开销。


在得到玩具车3D模型后,接下来我们需要设计一个赛道,这个设计很简单,可以利用单顶点不断挤出来获得,完成后记得把赛道转换为曲线,因为在几何节点里我们将利用曲线功能来进行设计,第一步的设计结果如图1所示。


沿路疾驰的玩具车!Blender几何节点教学

图1

第二步:制作赛道并添加车辆


为我们的赛道曲线添加几何节点功能,然后在“组输入”和“组输出”之间添加“圆角曲线”,这个功能可以让曲线的直角边转换为圆弧角,类似于添加了倒角功能,然后通过“曲线转网格”,以曲线直线为轮廓曲线,让曲线的每个点都以线段的形式“扫描”过去,就能形成如图2的效果了,这也就是我们的赛道模型啦。


沿路疾驰的玩具车!Blender几何节点教学

图2


接下来就需要让我们的玩具车模型在赛道上跑起来啦,基本思路是让一条线段沿着赛道曲线移动,这样我们就能给线段的每一个点赋予车辆模型作为实例,形成车辆随路径疾驰的效果了。


因此我们先要获取曲线的位置信息,因为曲线并不像网格那样,每个点都有位置信息,所以我们要先“采样曲线”,然后把“网格直线”从“网格到点”,这样直线上的每个顶点都独立显示了,然后在通过设置位置,来让这些点都成功放置到曲线上。


这时候你会发现,为什么无论我设置多少个“网格直线”的数量,都只能显示一个点呢?这是因为“采样曲线”的系数是一个恒定数,所有的点都被放在了同一个位置,所以我们需要给系数添加“随机值”,这时候你就能看到所有的点均匀分布在直线上了,然后通过一系列的运算,我们就可以得到直线顶点在曲线“赛道”上以些许不同速度奔跑的效果了,具体设置可参考图3。


沿路疾驰的玩具车!Blender几何节点教学

图3

第三步:设置多车道和正确行进方向


但这时候还是有一个小问题:所有的点都非常规矩地以“单车道”的形式沿曲线运动,我们如果想要获得更多的“车道”,其实就是为直线每个顶点的位置添加随机值,这时候可以通过噪波纹理来实现。设置思路就是让“采样曲线”的“位置”添加一个“噪波纹理”,具体的设计可以参考图4。


当然,也可以直接“矢量相加”“采样曲线”的法向,并用“矢量乘法”来乘一个随机值,通过调整随机值的正负范围,也能起到相同的效果。


沿路疾驰的玩具车!Blender几何节点教学

图4


这时候虽然我们的玩具车在赛道上以多车道的形式跑了起来,但问题在于它们没有沿着正确的方向旋转,逻辑上来看,玩具车的旋转值应该与赛道曲线的切向对齐,而正好在“采样曲线”时我们就获得了曲线的切向,因此只需要通过设置“对齐欧拉到矢量”,就能让玩具车的旋转值以切向正确运作了,如果你跟我一样设置了坡道的话,记得要额外再加一个“对齐欧拉到矢量”来调整玩具车对应坡道时的俯仰,具体轴心要参考玩具车模型的轴向来进行设置,当然,全试一遍也能得到正确答案,并不复杂,具体设置可参考图5。


沿路疾驰的玩具车!Blender几何节点教学

图5


沿路疾驰的玩具车!Blender几何节点教学

本文所用几何节点一览


本章小结:相对复杂,但值得一学


从节点的复杂程度不难看出,这次的教学内容其实是有一定难度的,但这也是目前实现这一效果的最佳途径,而且几何节点最大的优点就是超高的调整自由度,我们可以直接修改玩具车的数量、位置、速度,也能在调整赛道曲线时让玩具车的行进方向和车头朝向无缝匹配,这都是传统跟随路径方案比较难以实现的,所以,难是难了点,但值得学!