您是否想过小型视频游戏开发独立工作室的工作原理?
您可以用很少的预算制作游戏,但这需要精巧,大量的工作以及对工作的热爱。
我们是波兰的一个小团队。 我们只有三个人,但是只有两个人从事全职项目。
今天,我们将讨论为“太阳的终结”游戏创建角色的过程。 请记住,本文中显示的屏幕快照取自仍在开发中的项目。
本文仅讨论字符的静态元素:我们将告诉我们如何扫描字符和衣服,如何创建其他元素以及如何配置Unity引擎以获取此类屏幕截图:
但是,让我们从头开始。 在开始之前,我们准备了角色需要的属性列表:
- 我们使用摄影测量法扫描了我们游戏中80%的元素 。 另外,我们想给英雄们一个人性化的外观,因此我们决定扫描人的脸。
- 与Unity游戏引擎兼容的漂亮头发。
- 在我们的游戏中,有可能在他一生的不同时期遇到同一个角色 。 这是什么意思? 每个时期我们必须创建多达四个版本的字符(儿童,青少年,成人,老年人)。 因此,对于我们而言,找到一种尽快创建较旧版本字符的方法很重要。
- 为了强调角色的斯拉夫外观,这是我们居住的地方的典型特征, 还扫描了传统的民俗服装 。
- 我们以标准方式(3D建模)手动创建了一些在现实世界中不存在或无法扫描的元素。
- 每个字符元素都可以打开或关闭 。 这是什么意思? 例如,我们可以替换角色的裙子,并在不需要时脱下帽子。 这给了足够的机会来创造新的外观-在一个过场动画中,英雄可以光着膀子,而在第二个场景中-穿着得体。
- 我们的角色是非交互性的,也就是说,玩家无法(至少直接)控制它们。 但这是关于他们历史的游戏,因此对于我们来说,能够通过面部肌肉的运动来控制整个角色非常重要(这将在另一篇文章中进行更详细的讨论)。
在本文中,我们将只讨论一个处于年轻人和老年人状态的角色,因为在我们的游戏中,情节非常重要,我们不想破坏玩家的乐趣。
因此,列出清单后,您就可以开始处理图形了。
1.面部摄影测量和三维身体的准备
女演员在摄影测量过程中。Fotogra ...什么?
我们首先使用
摄影测量法扫描模型的面孔。 这是另一篇文章的主题,但是您可以在我们的
youtube频道上了解更多信息。
转到维基百科:
摄影测量学是一门科学和技术学科,涉及根据其照片图像确定对象的形状,大小,位置和其他特征。
换句话说:
摄影测量法是一种从几张照片(或多张图片)恢复3D深度以创建看起来像现实世界中的物体的三维虚拟模型的方法。
一个预算庞大的大型AAA工作室使用许多摄像头来扫描角色。 他们位于演员周围,大约在同一时间拍摄一堆照片...
...但是,如果我们只有一台摄像机怎么办?
是的,这里出现了问题,我们如何解决? 以这种方式创建的扫描效果比使用许多相机时要差,但这足以使我们创建基本的脸部形状和烘焙的高质量纹理。 这是创建摄影测量的“独立方式”。
我们做了很多尝试,因此这里有一些技巧,仅用一台摄像机即可创建快照:
演员或女演员在完成对脸部拍照之前,不得移动。 他们甚至无法眨眼和呼吸。 (拍摄通常需要10到20秒,但这仍然很难实现)
我们必须非常迅速地从女演员的不同侧面拍照。 为此,我们使用了突发模式。 有时对焦存在问题,但以最快的方式拍照,使女演员保持一动不动。
最好将演员放在带扶手的椅子上,坐起来更容易。
我们只从女演员的前面照相。 在屏幕截图中,您可以从背面看到照片,但是在最终扫描中,我们没有使用它们。 通常,要进行扫描,
您只需要在前面8-10张好照片 。
最好在相机上使用偏光滤镜,因为它可以减少皮肤上的光线,从而改善模型的形状和纹理。
对于这种方案,请
至少使用四个柔光箱来改善纹理并减少后处理。
使用尽可能高的快门速度避免运动模糊,并使用尽可能小的光圈(我的意思是f.5和更高)来获得较宽的照片对焦范围。 为此,至少需要四个功能非常强大的柔光箱。 当然,应将ISO保持尽可能低以避免噪声。
为了分析照片并创建模型,我们使用了
Photoscan 3D软件。 这是在处理照片后点云的样子:
点云和照片布局可视化。如您所见,角色的顶部和底部都有照片,但是现在我可以说我们不建议您拍摄照片。 最好拍摄约8到12张面部正面的好照片(从左耳到右耳的弧形)。 这样可以为纹理和模型提供更好的结果。 唯一的
缺点是需要手动创建模型的颈部,但这是一个小问题。
创建点云后,我们将其处理为
三维高多边形模型 :
已经看起来好点了吧? 但是3D模型显示出很多噪音:
发生这种情况的原因如下:-具有非常快的快照的运动模糊
-我们女演员的微动(是的,即使将脸部移动1毫米也会产生类似的噪音)
你们中的大多数人可能都认为这看起来很可怕,而且您是对的。 这就是为什么我们采取了其他一些步骤的原因。
现在,您可以执行称为
“重新拓扑”的操作。 这是一种基于高多边形模型创建更简单和最佳形式的3D模型的技术。
实际上是这样的:
拓扑特征。这是因为上面显示的模型
包含超过一百万个三角形 。 帧速率为30-60 fps的普通计算机可以处理5-6百万。
(提供此信息仅是为了进行一般性理解,实际上,许多其他方面也会
影响性能。)也就是说,游戏只能显示带有多个三角形的少数几个模型。
重新拓扑的另一个重要方面是
创建平滑的面部模型 ,以准备进行面部动画处理。 对于拓扑,我们使用Topogun 2软件。
这是经过重新拓扑处理后的人脸模型(纹理化后,我们将在以后对其进行抛光):
然后,我们使用我们的照片
烘烤 (用3D图形的lang语表示,只是准备/创建)
脸部纹理,该操作几乎是自动执行的。 这就是为什么我们决定使用摄影测量法的原因-面部模型和良好的质感使我们的角色自然。
嗯,还有很多工作要做-如您所见,纹理中有一些小错误。 另一个小问题是缺少头部和眼睛的后部。
因此,下一步将是
创建未扫描的元素和无法扫描的元素,例如睫毛,头发,眼睛。 因此,让我们找出这是如何完成的。 我们使用另一个名为Cinema 4D的软件包。 在此软件中,我们可以创建模型的其余部分并改善其纹理。
很好,看起来好多了。 在开始处理纹理之前,我们需要
创建带有骨骼的动画主体 。 (这将是我们博客上的另一篇文章。)
对于我们的第一个角色,我们手动创建了整个身体,但这完全是不必要的浪费时间,尤其是考虑到我们在穿戴时,身体的裸露部分只有在游戏的罕见时刻才可见。
经过一番搜索,我们找到了一种为扫描的脸部创建3D身体的好方法。 对于此任务,我们使用
使人类软件免费用于商业用途。 使用此软件,您甚至可以创建具有脸部和骨骼的整个身体。 只需移动滑块,直到获得所需的结果,此外,它将具有与Unity 3d引擎兼容的框架。
因此,在短短几分钟内,我们的
整个身体就具有了出色的拓扑结构和均匀的重量,可以进行动画制作了! (如果您不明白我在说什么,请阅读有关角色动画的第二篇文章,该文章将很快发布!)这是非常有用的软件。
唯一的问题是,
我们需要通过从身体切除头部
来破坏模型的
一部分 (听起来很恐怖)。 我们需要执行此操作以将其替换为扫描模型。
这里最重要的是,借助Make人类软件,我们为动画准备了骨骼重量。
我们只需要
添加面部骨骼即可为面部表情设置动画或使对话的嘴唇运动同步。 但是更多有关此内容的内容很快将成为我们博客上的下一篇文章。
创建正确的脸部骨骼系统可能需要一整天的时间(是的,我知道,脸上没有骨骼,但是有肌肉,但这就是3D中所谓的骨骼)。
当然,要创建漂亮的纹理,您还需要做很多工作。 我们在Photoshop中使用了“
频率分离技术”来消除眩光和皮肤修饰。 这样创建的工作流程非常适合消除纹理中不必要的照明(即使是石头的扫描模型,而不是人脸)。 您还应该尝试此过程。 (Internet上有很多有关频率分离的信息。)
最终的Albedo纹理看起来像这样 :(很抱歉,但是在游戏发布之前,我们不想布置高分辨率纹理)
反照率纹理这是一个已经应用反照率纹理的模型。现在我们添加
牙齿,舌头和眼睛:这是经过扫描的脸部和身体与完成的纹理结合在一起的完成模型的外观 (施加了检查,以便您可以在社交网络上共享图片)。
3D身体和面部的完成外观。2.实时创建头和睫毛。
我写本章的原因是,创造一个在视频游戏中看起来既漂亮又美观的头发是一个相当广泛的话题。 也许您会在AAA游戏中看到一些最美丽的头发。 我们是印度人,所以我们不能像大公司那样在角色的一个方面花费太多时间。
因此,我们
从具有透明性叠加在其上的纹理的多边形创建了头发。如何运作? 首先,我们以头发形状对多边形进行建模,然后将其放置在角色的头部,然后使用3D建模工具移动/分布它们。 (在我们的情况下为Cinema 4D。)您也可以在样条线生成器中执行此操作-创建带有动态网格的样条线,然后将简化头发操作。
因此,所有发型都是从以下部分创建的:没有材料的头发看起来像这样:
这是一种带有完成纹理的发型:这是屏幕快照中的发型,显示在帖子的开头。
如您所见,我们可以
更改发型,因此没有问题 ,例如,在发型中添加较旧的角色。
当然,在创建头发时,我们
使用Photoshop和BodyPaint 3d在头发和不同形状的元素上绘制条纹。 您可以使用任何其他软件,但是如果它具有实时的alpha透明查看模式,那就太好了。 然后,您肯定会看到自己在做什么(而不仅仅是角色头部上的灰色条纹)。
头发的质地如下:反照率头发质地透明为了使头发具有自然的行为,我们尝试在头发网格上使用Unity 3d织物部件,以增加轻微的风或重力影响,但在另一篇文章中,更多了。
3.创建旧版本的字符
“女孩,你很快就会成为女人”正如我上面所说。 在我们的游戏中,您可以遇到处于不同人生阶段的角色。 这增加了玩家的兴趣,也迫使我们执行其他有趣的工作。
我将展示如何使一个漂亮的女孩长大。 我们观看了许多有关人体衰老的视频,图片和网页。
这不仅仅是皱纹;一个人的整个面部都会改变形状。 例如,您可以
在此处阅读有关此内容的更多信息。
在本文中,我将讨论该问题的技术方面。 因此,首先我们用所有骨头完成了年轻角色的3D模型。 这非常重要,因为准备骨骼和增加权重需要大量时间。 之后,我们只是复制它并开始使用模型的副本。 由于有了这个工作流程,我们不需要重新参与旧版角色的装配,因为它使用相同的骨架系统。 这在引擎中更为重要。 这样的系统可加快资源的加载和卸载速度,因为我们仅加载/卸载所需资源。
因此,首先我们要修改基础网格,并将面的某些部分降低到地面上,就像老化时母亲的重力一样。 鼻子,脸颊,眉毛,耳朵。 但是我们不太热衷于此,因为该模型的面部骨骼与年轻角色的模型相同。 (也就是说,过多更改基础网格会导致问题。)
仅网格变形然后,我们使用一些雕刻软件应用大的皱纹和细节。 例如,您可以使用免费的Scupltris。 然后,我们将它们烘焙为称为法线贴图的纹理。 怎么了 因为它可以为我们提供如下所示的结果,而无需在模型中添加额外的三角形。 (以便您的PC可以处理它。)我们还根据皮肤纹理创建一些细节的法线贴图,然后将它们混合在一起。
网格加上法线贴图最后,
我们在反照率纹理 (具有基色的纹理)上
添加皱纹 。 我们拍摄了几位老人的照片,然后在Photoshop中使用混合功能为模型添加了皱纹。
网格以及大型零件的法线和旧皮革的反照率纹理图因此,结果是,我们的老年人角色模型的皮肤使用了正常的细节图和反照率纹理。 我们还准备了次表面散射纹理(次表面散射效果,即穿过皮肤的光的效果)和镜面贴图,但是在屏幕上看到的内容中,仅使用了反照率和法线贴图(混合为一个法线部分,即大部件图+部件法线图) 。
在这里我们可以看到以下部分:1.反照率卡。
2.基于模型的成型细节的大型零件的法线贴图。
3.大部分的法线贴图与从反照率纹理创建的皮肤细节混合在一起。
在我们使用适当的着色器的Unity 3D引擎中,较旧的字符看起来要好得多:
但是在Photoshop中连接了两个版本的角色(放置在引擎中的一个位置)
4.扫描服装中的人物。
因此,我们几乎走到了尽头,但是要获得角色的最终外观,还有很多工作要做。
我们扫描了很多不同的衣服。 扫描技术类似于扫描面部或其他物体,但是现在可以缓慢进行,
通常衣服不会移动(风或猫跑过去可能会很烦人,特别是当轻微移动会破坏工作时间时)。
我们无法为您正确扫描衣服提供提示或现成的解决方案,因为这是我们关于您需要和不能做的提示:
-最重要的是固定结构,使衣服静止不动; 更好的是,将衣服保持在稳定的T型姿势中。 这是什么意思? 这是一个双臂分开的姿势,这是应用了动画的游戏中角色的标准位置。 同样在此位置,最好扫描衣服。
为此,我们买了一个模特。 我们无法立即在T型姿势中找到人体模型,因此手边射击非常困难,并且需要更多的工作来将扫描的衣服的3D模型与手沿角色的身体向下结合在一起。 最初,系统如下所示:
我们的第一个人体模型...因此我们对其进行了修改以举起手。 我们用PVC管制造了新手。 这是我们的Tube-Nook在T型姿势中的样子:
该人体模型的双手由PVC制成,并放置在T型姿势中我们可以移开该管以简化人体模型的敷料。很好,但是为什么我们的塑料朋友上有这些黑点?
这是因为表面非常发亮,并且在摄影测量中比较点的脚本不喜欢发亮的东西,但是它们喜欢点和特征,因此我们在标记上放置了很多点。
这使我们可以更好地比较软件中照片的位置,以便更好地扫描衣服。这是衣服的样子,在这种情况下是皮草(在T型姿势中):-使用摄影测量法制作衣服时,第二个最重要的方面是记住要在腋下和衣服下面拍照。这是我们为完成此服装的足够扫描而必须拍摄的照片:在这里,您可以看到扫描点云:-某些类型的衣服很难扫描,例如,用长皮毛或非常光亮的材料进行扫描,因此有时不进行扫描而是手动创建会比较容易。例如,为了改善此毛发的外观,我们创建了带有alpha透明通道的其他毛发元素。这类似于我们对角色的头发所做的操作。红色部分是毛发的元素,通过alpha通道手动创建这是没有纹理的外观-某些类型的对象更易于扫描,例如,此哑光裙非常好,因为它是由哑光材料制成的。同样在这里,我们使用HDR图像来获取阴影和高光方面的更多信息,但是hdr摄影测量需要花费大量时间。怎么了
因为每次拍摄都必须使用三脚架,否则照片会模糊。现在,想象一下,经过一个小时的工作,我们的一只猫简单地跳到这只皮毛上时的烦恼程度。我们不得不重新开始。看起来不错吧?通常,您花费在扫描上的时间越多,获得的结果越好,并且后期处理也更少。-最好是手动完成而不是扫描的其他元素是皮带。我们手动创建它们。我们使纹理循环,以便即使纹理分辨率较低,游戏的质量也很高。-花圈也使用透明材料制成,类似于头发。还没有准备好,但是可以在屏幕截图中看到:好吧,这就是现在的衣服。5.游戏引擎中所有内容的连接。
之前我说过,我们使用Unity 3D引擎。我将在屏幕快照中告诉您我们用来使模型看起来像什么样的着色器和设置。对于所有角色元素,我们现在使用免费的Alloy Shader。我们之所以选择它,是因为它具有我们所需的一切,尤其是每个着色器变体的“溶解”选项以及细分中的许多其他选项。您可以使用任何其他着色器,但我们使用Alloy(此外,它是免费的)。光线的不同位置会产生有趣的效果-皮肤:对于这部分角色,我们使用皮肤着色器,具有次表面散射和光透射的效果。地下散射效应是什么?这是光通过皮肤的模拟。看一下我们拍的照片:这是在现实世界中手的地下散射的样子如您所见,光线(如果足够强)穿过皮肤。
这给出了非常自然的外观,尤其是在弱光下。 您可以使用此gif示例和上面显示的屏幕快照,查看在《太阳的尽头》中这种效果的表现。 (请注意,尽管该模型甚至没有镜面纹理和Subsurface贴图,但在最后阶段看起来会好一些。)
-眼睛 :如您所知,眼睛是灵魂的一面镜子。 的确是这样-在不使眼睛完美的情况下,赋予角色自然的外观非常困难。 眼睛不仅仅是一个球体。 虹膜所在的位置平坦,瞳孔更低。 这就是为什么我们使用视差着色器。 这是一个表面,使人产生一种幻想,即还有其他更深的东西,而且效果非常好!
带有超大透明球体的眼睛可实现远距离反射没有这个领域的眼睛。此外,现在我们可以控制瞳孔的扩展,并且在过场动画中可以创建非常自然的外观(当瞳孔最大程度地扩张时会有些吓人,但是这种效果仍可用于幻想目的)。
-最后一个:由于我们在所有版本的衣服和身体上都使用一个骨架,因此我们可以轻松地将一个年轻角色变成一个较大的角色或更换他的衣服。 这为创建电影场景创造了绝佳的机会,同时也极大地优化了游戏。
这就是我们如何混合以这种方式创建的角色的元素。
-对于衣服,我们使用双面着色器,这样您就可以从两侧看到它。
-对于头发,我们使用具有光滑透明边缘的特殊双面着色器。
6.最终结果
完整的图片库展示了角色最终版本在Unity 3D引擎中的外观:(但仍在开发中)