Origin
mp.weixin.qq.com
Tags
简悦
项目
收藏夹
创建时间
收藏类型
Cubox 深度链接
更新时间
原链接
描述
▲查看合集▲
今天是 2023 年 06 月 30 日  星期五
文字: 3524  图: 37  预计阅读 9 分
正 文(仅个人学习笔记)
【转载文章】:作者 /Simonschreibt
【文章地址】:https://simonschreibt.de/gat/river/
你们建造河流本身的方式是什么?
第一步是 100% 从本的教程中复制的,它们非常有趣。首先,创建一条样条曲线,并让它在地形上 “落下”。这是通过读取样条曲线点位置处的地形高度,然后将点移动到此高度来完成的(在我的情况下,向上移动点以匹配地形高度,因为我的样条曲线位于地形下方)
notion image
【使样条曲线适应地形】
接下来,让样条曲线点 “滚” 下山,使河流更好地与地形融为一体
notion image
【将样条曲线点滚下山】
事实上,它们并不是以物理方式滚动。相反,您可以使用基础表面法线和点的法线来计算每个点的局部轴(远离样条线并指向山下)。然后,沿着计算出的轴稍微移动点(Ben 的视频中很好地记录了这个过程)
下一步是确保河流不会向上游流动,以防地形引导它流向上游(因为河流沿途有一座小山)
notion image
一个小小的 Python 脚本可确保 3D 空间中的样条点永远不会高于样条线上的前一个点
notion image
【使用 Ben 的小 Python 脚本避免河流逆流而上】
另一个获得更自然外观的好技巧是避免连续的斜坡,而是让河流逐步流动(为了更好的可视化,我在这里显示了河流几何形状,但实际上我们现在仍然只使用单个样条线)
notion image
【将连续的斜坡转变为台阶】
最后,我们进入了我贡献自己想法的步骤:我为样条线添加颜色,以标记坡度的位置(绿色)、起点(绿松石色)和终点(红色)。这将帮助我稍后混合不同的水纹理并放置粒子系统
notion image
【让我们更快地了解河流几何创建,因为所有这些都在本的视频中得到了完美的解释。最重要的一点是,只有河流的外边缘再次与地形对齐(就像我们首先对样条线所做的那样)】
notion image
【从样条线构建河流几何形状】
#你是如何设法使河流流动的景观变形的?
同样,这也是 100% Ben 的工作流程,但它首先将地形移动到河流几何体下方,这样它就不会以任何方式相交
notion image
【将地形移至低于河流几何形状的位置】
然后,对地形上的每个点,向上发射一束射线。如果它击中河流几何图形,这个点将向上移动到击中位置
notion image
【向上展示射线,如果您撞上河,将地形移至这个高度】
每一点都没有碰到任何东西,都会再次分配其原始高度
notion image
【每个点不击中任何东西都会分配其原始位置】
在这里,您可以看到现在一切的行为,当您更改样条时
notion image
【程序性地形变形】
然后将地形高度场转换为多边形并重新网格化。现在它已经准备好在虚幻中使用了
notion image
【将高度场转换为多边形并进行优化】
即使不是问题的一部分,我也想添加一些有关 UV,材料,流图等的详细信息
#河几何形状
你之前看到的河流几何只是用来雕刻地形的。实际的河流有点薄,得到了 UV 和细分 (注意,我的斜坡颜色仍然在那里)
notion image
图片
#UV
谈论 UV:由于样条线的长度总是变化的,因此 UV 必须适应这一点。幸运的是,这在胡迪尼非常容易。首先在 0-1-UV 空间中创建 UV,然后测量样条线长度。该值可用于缩放 UV。在这里可以看到我更改样条线,在下半部分可以看到 UV 是如何自动适应的。相信我,如果你曾经经历过这种情况,你就再也不想手动创建 UV 了
notion image
#河床
另一个细节:我想把河床弄得又黑又湿。为了做到这一点,我从每个地形多边形向上发射一些光线,如果我击中河流,我会为该多边形的所有点指定一种颜色。创建的遮罩如下所示:
notion image
下面是一个例子,当在材质中使用遮罩来指定不同的漫反射和粗糙度值时,会产生多大的差异
notion image
【具有不同漫反射和粗糙度值的河床】

#Flow-Map(流向图)

使用胡迪尼可以非常容易地生成河流的流量图。你只需告诉一个特殊的节点 “这是我的河流几何图形,这是指示河流方向的样条曲线”,然后砰的一声,你的河流几何图形突然有了代表河流流量的顶点颜色
notion image
【流向图生成】
可以添加另一个节点,使流程图对障碍物做出反应。现在水可以在他们周围流动了
notion image
【有障碍物的流向图生成】
你可以在虚幻中触发流图的烘焙!无需在虚幻和胡迪尼之间来回切换。只需将胡迪尼 -“渲染”- 按钮作为参数公开即可。在这里,你可以看到我改变了障碍物,然后渲染了一个新的流动图(注意:烘焙比视频中花费的时间更长
notion image
【流图烘焙在虚幻中】
#新增:避免 3 个流程图错误
我制作了一个关于我在烘焙流程图时犯的 3 个错误的视频,希望它能帮助你避免这些错误
泡沫遮罩
为了在障碍物周围的水面上产生一些泡沫,我使用了所谓的 isoooffset 节点。它基本上将物体的距离存储到河流的顶点颜色中。然后我用一点噪音来调味,面具就好了
notion image
【泡沫遮罩的生成】
为了使泡沫蒙版不那么静态,我使用了一个简单的 Photoshop 云模式,我沿着河流移动,并从原始蒙版中减去它。这增加了一种更有趣的感觉
notion image
【给泡沫遮罩增加更多的动感】
因为我们在讨论泡沫: 瀑布也有一个简单的泡沫纹理,它只显示在河流的斜坡上 (我在创建样条时用顶点颜色掩盖了这个斜坡)。泡沫结构比河水滚动得更快
notion image
【使用口罩在水和瀑布之间混合】
#粒子系统
因为我存储了级联的顶部和底部,所以我现在可以过滤这些元素(这些线用于生成河流几何体),在它们的中心创建一个点,并将虚拟立方体复制到该点,该点稍后将与虚幻中的粒子系统交换
notion image
【粒子放置在级联】
对于障碍物周围的粒子,我使用了一个叫做交集分析的节点来得到障碍物和河流的交集。这些相交的边都有点。对于其中的随机数字,我再次复制一个假盒子 (稍后在虚幻引擎中与粒子系统交换)
notion image
【在障碍物上放置粒子】
#新增:流量检测
我通过检测粒子系统是放在障碍物前面(与河流的流动方向相比)还是后面来扩展这个系统。有了这一点,我可以使用不同的粒子效果,这取决于水是正面 “碰撞” 到障碍物上,还是在障碍物周围流动得更轻松:
前面的粒子系统由障碍物的法线对齐
notion image
【将假人放在障碍前】
另外,我现在检测到流动方向(通过从 Houdini 的河点读取 V-Attribute),并能够按照此操作对齐粒子系统(我在本教程视频中详细说明了该过程)
粒子系统 “后面” 与河流对齐
notion image
【将假人放在障碍物后面】
在这里,我展示了当我指定两个不同的粒子系统时它的外观
notion image
【将 Houdini-Dummies 与粒子系统交换‍】

#新增:反射探测器

重要提示:我最后没有使用这个,因为我的虚幻天光已经捕捉到了一个漂亮的立方体贴图。但也许这个工作流程对其他人有用
反射探测器基本上是相机,从它们的角度捕捉世界,提供具有更好反射的闪亮表面。我想每隔一段时间就把它们放在河边
notion image
【将 Houdini-Dummies 与球体反射捕获交换】
为了能够在这里使用反射演员,您必须将其封装在蓝图中
notion image
#您将如何准备和将该项目导出为虚幻?
所谓的 Houdini Engine 是一个用于 Unity,虚幻,3Ds Max, Maya 和 Cinema 4D 的插件,并执行节点网络,您直接在胡迪尼中创建上述程序。所以我要做的是,让地形和河流显示出来,我要把我的 houdini 文件保存为数字资产。这可以像虚幻中的任何其他资产一样导入和使用
notion image
‍‍【在虚幻中使用胡迪尼数字资产】
现在,我可以更改参数(我在 Houdini 中暴露了参数)或更改样条以使河流走不同的道路
notion image
【只需更改样条曲线即可获得不同的河流】
材质仍然是在虚幻中创建和指定的,但您可以预先指定材质(您可以在此处找到我的教程)。
当然,它还不完美。例如,进一步的改进将是:避免将障碍物粒子 “放在” 对象后面(远离河流流向),设置障碍物粒子沿流图的方向,使粒子移动到流的方向,接受虚幻地形作为输入,提高节点网络的性能,以便更快地计算样条曲线上的变化,根据区域缩小 / 扩大河流宽度(如本的视频
学习文件后台私信:Houdini 河流
本期笔记分享就到这里,我们下期见!
  • 坚持与您分享最有价值 “干货” 内容,本期分享就到这里,我们下期见!
往期推荐
notion image
notion image
关注我们
学习不止、不止学习
notion image
notion image
公众号小编
  • *
notion image
  • *
公众号
  • *
notion image
  • *
哔哩哔哩

▎本文由 简悦 SimpRead 转码。