我是我们的2D艺术家,贴上3D艺术家的文章,文章中提到了在游戏中使用毛发卡片的方法。

我建议在阅读时打开图片,查看过程。

3D内容是在Blender中创建的,用于Godot游戏引擎。您也可以在https://murska.digital/blog.html阅读带有更好格式的文章。

在世界上,She Hunts的多种毛毛动物漫游着污染的荒野。在给这些动物穿上温暖的、毛茸茸的外套时,需要大量的自定义毛发卡片。对于一个小型开发团队来说,这是一个严重的问题;一个便宜、灵活、直观且兼容Godot的系统并不是很容易找到。我们的解决方案是,什么都没有,除了创建一个专门为我们设计的工具箱。这个帖子展示了通用的工作流程,以及我们的工具的某些功能。

短小的介绍

在游戏中,有多种方法来创建毛发。最简单的方法是从模型表面上拔出毛发样子的不规则突起。另一种流行的方法是使用单独的动漫风格卷发,这可以创造出令人印象深刻的风格化视觉效果,但往往会导致更密集的网格。虽然我们权衡了这两种方法,但最终决定使用一种称为毛发卡片的技术。毛发卡片是一种长、矩形的网格条带,上面映射了一张半透明的毛发团的图片。然后,将数百张卡片散布在表面上,以创造毛发或毛发的印象。虽然毛发卡片通常与真实主义相关,但它也适用于风格化的应用。

创建纹理表

毛发卡片的第一步和最重要的步骤是制作纹理表。为了模仿我们的其他资产的油画风格,需要在一个代表图像边界的平面上放置大量的宽、扁平的曲线条。每个条带都有一个基本的拉伸噪音纹理用于细节,根部有一个暗的渐变。随机扭曲一些曲线条可以添加额外的细节到光照响应中。将多个团体合并到一个纹理中,以最大限度地利用有限的图像分辨率。

一旦毛发被放置在纹理表上,就会使用一个正交相机连接到一些合成器节点来烘焙成2D纹理。任何缺乏专门的渲染模式的材料输出(例如粗糙度图)都会通过任意输出值(AOV)节点传递给合成器。与标准高低烘焙相比,这种方法需要更多的设置,但渲染、打包和导出也会显著加快整个过程。

生成卡片

纹理完成后,下一步是创建毛发几何体。在传统的工作流程中,构建毛发通常涉及解开一个单一的延长的网格条带,并将其复制到模型上。显然,这种方法对于我们的用例来说太繁琐了。相反,我们使用几何节点来生成卡片参数化。

在内部,生成器创建一个简单的网格原语,并将所有重要设置暴露在一个井井有条的用户界面中。从表面上看,这可能看起来像对一个基本的分割平面来说太复杂了。但是,意图是使过程更加易于理解和标准化,以便我们的非技术开发者可以更容易地使用它。除了非破坏性编辑外,最显著的好处是可以使用本地库覆盖来共享云资产。换句话说,这意味着下载的文件数量更少,内部工具的自动更新。

在构建一组卡片后,将一个空的毛发对象添加到角色网格中。它作为一个空白的画布,允许在其上绘制曲线。使用曲线作为基本对象可以使用现有的雕刻工具进行快速基础毛发,仍然允许在需要时对单个控制点进行精确调整。

尽管毛发在Blender中已经可以用作毛发,但对于我们的目的,另一个几何节点模块,称为毛发卡片曲线变形,是添加到堆栈中的。它将特定卡片网格映射到多个曲线上。卡片取决于其父曲线的形状,而仍然保持可编辑。

毛发放置

毛发在几个阶段放置,首先是几乎完全不透明的条带,然后是更具多样性的破坏条带,最后是单个的脱落毛发。这种构造确保外套看起来充满体积,但又具有多样性。由于每个团体都位于自己的对象中,因此可以临时隐藏图层。对于毛发的方向或“流动”,我们尽可能使用现实世界的参考。人类和动物毛发的流动始于头顶,向下流动到身体的末端,同时受到重力影响。毛发的模式形成于团体之间的重叠。尽管我们大部分时间都试图遵循这些基本规则,但对于腐败变形的死神怪物等一些特定情况,我们允许一定程度的艺术自由。

为了减少所需的总纹理数量,使用顶点颜色来着色单个团体。这样多个敌人就可以共享同一张卡片,但仍然可以有显著的外套颜色和模式差异。这一方法在glTF 2.0格式中工作,具有一个设置来将顶点颜色乘以不透明度。

最后一步是将权重和法线从基础网格转移到毛发上。这会隐藏任何角落的突出部分,并使外套看起来更软。小的转移错误可以手动修复。

结论

毛发卡片系统已经完成了。毛发丰富、多彩、高效且风格化——这是一个独立游戏所需的所有东西。虽然在本文中提出的解决方案和技术并不是原创的,但将它们结合在一起的设置是独一无二的。除了毛发之外,这个系统也可以轻松地调整来创建羽毛、植物和其他类似的资产。我们希望将这些工具在合理的费用下发布给其他独立开发者。

如果您有任何问题或评论,请尝试说服3D艺术家回答!-托尼,Murska的2D艺术家