使用Houdini和Python单击鼠标即可构建城市



在游戏开发中,不断创建和应用流水线,算法和小流程,从而节省了大量时间和精力。这些解决方案通常很简单但很优雅。

本文是关于这个的。作者提出了一种构建虚拟城市的方法,将来他希望将其转变为一个关卡设计师的完整工具。

在本文中,我将介绍Houdini中City Builder工具的基本设置,该工具可以通过简单的鼠标单击来构建城市。请注意,它仅在使用Python Viewer状态的Houdini内部起作用。

参考


对我最大的启发是奥斯卡·斯托伯格他的工作给人留下了深刻的印象,使我想知道是否有可能在Houdini中重复这一步骤。我的尝试也可以被视为证明在另一软件中重现任何想法是很现实的证明。



最初设定


首先要做的是建造房屋的网格或平面。从理论上讲,它可以是任何东西,例如三角形,六边形等。我发现最简单的方法是使用四边形网格划分器。

从圆形节点开始,然后在其下放置一个即时网格节点(来自Labs工具,因此请确保已安装它们)。



在该位置之后,放置拉伸节点-稍后它将用于拉伸由鼠标选择的图元。



该设置将在HDA中最小化,您将在其中创建一个用于处理Python代码的参数。在这种情况下,您需要控制group参数以扩展和填充鼠标单击的原语。



Python查看器状态


现在,您可以转到Python代码。如果您是观众状态的新手,那么我之前已经为它写了一个基本介绍

创建一个新的查看器状态,并从一个空模板开始。这只会生成真正需要的代码。



有几件事要添加。您可以将它们分为2部分:

  • 通过单击鼠标即可查看几何。
  • 通过单击鼠标即可获取原始内容。

首先,在初始化部分中,为几何添加一个新的变量,称为self.geometry = None。然后添加OnEnter函数-当用户创建/选择节点并在视口中按Enter激活状态时,将调用此方法。

这是当前几何体存储在self.geometry自身中的位置。使用node.geometry()完成。



现在与几何有联系。

下一部分将根据单击时鼠标的位置获取原始编号。为此,请创建OnMouseEvent函数-这是对鼠标事件(例如单击或鼠标位置)的处理。

在鼠标事件开始时,创建变量以起作用。然后使用GeometryIntersector函数获得与几何的相交,并使用self.geometry。

从这个交叉点,您将获得所需的信息,找到并打印原始数字。



如果一切都正确完成,结果将是这样的:



最后一项设置是在组参数中使用原始数字,这是您在一开始所做的。用新字符串替换该字符串,调用group参数并将原始编号设置为值。请注意,它也转换为字符串,因为group是字符串参数。



事实证明:



这是我开始创建工具的主要思想。从现在开始,您将存储信息,而不是重写信息。该设置将为开始和进一步的实验提供基础。

详情


一旦有了这些多维数据集,就可以对它们执行任何操作。如果您需要一个城市,请创建一个房屋生成器-Internet上有很多关于此主题的教程。同时,我的例子。

模块化的墙复制在立方体的每一侧。



用UV斜切和展开的边框。



在这里,性能非常重要。为了使该工具快速运行并在您按下房屋时立即出现,您必须进行优化。为此,您可以尝试使用网络上最少数量的循环节点和布尔节点。

仪器的未来


我想更进一步,使其成为创建关卡的工具。这个想法是,您可以通过单击几下快速完成原型的原型。我受到了滚刀的启发



最后,简要演示一下我现在得到的内容:


All Articles