Houdini | 程序化建模之路(四)Proceduralism Logic
Houdini技术Thepoly 15450 0
实名

通过了实名认证的内容创造者

发布于 2022-3-23 20:44:34

您需要 登录 才可以下载或查看,没有账号?注册

x
             QQ截图20220323200234.png
5fd96ebb287692385d08d3a57e63a5fa.jpg

Hello . 大家好
本文为Houdini程序化建模的分享
我是王掌柜

一 一个典型案例

如果将建模过程以方法论加以抽象,我们先尝试还原以Maya、3Dsmax为代表的传统建模过程。

上方所示是在场景建模中较为常见的立柱结构。在Maya、3Dsmax工作环境中,我们会新建一个圆柱体作为原始模型,通过加线调整点的位置来对应物体为轮廓(如图所示红线指示部分),最后完成单一立柱的制作。
这个过程的逻辑可以简单概括为:Basic Poly -->Edit Poly -->One Completed。简言之,传统建模方式的目的较为直接和单一,即以还原单一式样为目标,在过程中不计较操作流程的前后关联性。即目标的外形制作在Edit Poly这一环节中完成并闭合。即如果要制作图示中央的红色立柱,我要利用已经制作完的白色立柱,进行手动的、对网格点的逐一调整(缩放、加线减线);或者我再一次从一个陌生的圆柱开始进行操作。
在Houdini中,也有一种常见的制作类圆柱形立柱的方式,即利用Curve节点在正视图中制作出外轮廓剪影,之后用Revolve进行线级别的旋转,实现通过一个几何变换后产生一个网格的目的。
然而,这种方法在本质上和传统逻辑是别无二致的。原因在于其制作思路依旧是闭合,即如果要对这个模型进行再次的外形调整或是相似模型的制作,我还需要对Curve节点手动的进行逐点修改调整。这样导致了迭代流程较繁琐。另外,不局限于建筑、人物制作也是,往往调整局部的时候其他位置与该局部是相互关联的,例如你要拉伸一个立柱的长度,那么穹顶也应该适当提高或是变矮,这个过程也是需要手动调整的。这一特点我们称之为操作的闭合局限:Closing Limitations。同时,也丧失了使用Houdini程序化建模的意义。
二 典型流程

规避Closing Limitations的目的是为了在保证还原示例(原画)的基础上,利用参数暴露、参数关联以及数学模型实现高效迭代、批量制作。这是程序化建模的基本内涵,那么以上文立柱为例我们该如何制呢?下文会简述Houdini其中一种较为简单常见的建模逻辑。
首先,新建一个Line节点,并设置其相关属性,其中设置在该线上的点数,这个点的数量并不固定,因为制作完成后会根据模型特征进行大量删点。例如我在这一过程中设置为250个点,在制作最后我可能只保留十几个点,原因后文会提到。

第二步,也是较为关键的一步,利用PointVop节点构建数学模型(当然可以用Vex此处用Vop的可读性较好)。构建数学模型的最主要目的是还原物体表面的几何属性,并设计相关变量实现建模过程的非闭合。而此处要编写的数学模型是还原立柱的外轮廓,并可以进行参数化调整。


进入PointVop层级,我先将线上所有点进行一个相关运算,即点序号与总点数相除,得到一组数据。这组数据赋予给所有点Z轴正方向。我的目的在于初始化立柱外边缘原始轮廓(为一个斜坡)。此步骤两个小点:1.点序号是个整形数据总量也是,二者相除除不尽的话会进行取整运算,所以这里要用inttofloat节点将数据由整形转化为浮点型这样相除的商才能有余数;2.250个点第一个点的序号是0,最后一个点的序号是249,我要让最后一个商为1,那么就要将总数减1。
Vop第二阶段也是最关键的就是将这些外轮廓点进行二维图表化(参数化),让这些点散布在一张二维图标中。这里就要用到Ramp节点,将之前所得到的的250个商数据导入其中。另外,对于立柱来讲,还有一个重要的参数就是圆柱半径,实际上也就是外轮廓点的Z正方向一个参量值。那么,从Ramp输出的数据乘以一个半径变量,便可以在最后过程中调整立柱半径。

这里注意,用Input节点的时候,有的时候invisible是默认勾选的,要取消掉,参数才会在上一级别中暴露出来。

另外向量选择3,为Z向。
这样返回上一级,我们直接就可以在一张二维图标中直接拉点调点的横纵坐标值来调整立柱的外边缘轮廓。

同时之前提到的半径变量也暴露了出来,可以进行参数化调整。

最后Revolve一下,就利用三个节点制作出一个完整的立柱。(这里懒就不减点操作了)

三 Proceduralism Logic

实际上,我们利用Houdini制作的不是一个立柱,而是一个立柱生成器。并且这个立柱生成器还可以生成更多的细节,比如利用不同种噪声生成表面细节,并用噪声重叠来控制细节的自然分布这些操作在后面的文章会讲到这里就不赘述了。构建一个立柱生成器有着重大的意义。第一,参数化操作不仅能保证模型美术上的准确性同时方便操作;第二,批量生产;第三,便于与引擎对接形成高效的Pipeline(制作管线)在游戏漫威蜘蛛侠中,游戏中所有城市建筑物便是由Houdini集成生成。在血源诅咒老猎人DLC中,渔村那种高度复杂的场景Houdini也参与其中。
今天的Houdini分享就到这里,下期再见~

- End -

喜欢Thepoly的可以通过三种方式与我们建立联系。分别是公众号、微信群以及QQ群。公众号是我们最为官方的窗口,更多内容都必须关注公众号后才能获取。另外现以开通微博:手机版http://weibo.cn/thepoly网页版http://weibo.com/thepoly


         

本帖被以下画板推荐:

还没有设置签名!您可以在此展示你的链接,或者个人主页!
使用道具 <
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表