在以游戏开发者为主的讲座「CEDEC 2023」当中,由GAME FREAK 的前泽圭一带来了以「《宝可梦朱/紫》绘出帕底亚地区—— 彻底解说视觉表现的机制!( 【ポケットモンスタースカーレット・バイオレット】 パルデア地方を描き出す――见た目の仕组みを彻底解说!)」为题的演讲,讲述以「从美术风格就可以知道是哪部作品」这个观念为前提开发的《宝可梦》系列,是如何打造《宝可梦朱/紫》的宝可梦、主角、整个世界的各种构成,从着色器处理到资源建造,彻底解说其中的奥妙。
根据前泽所述,《宝可梦 朱/紫》设定的美术概念为「拟真与变形(リアルとデフォルメ)」,也就是让背景的质感与形状接近现实做为目标。但是由于宝可梦与人物角色等会简化,所以必须要找出将它们统整放在一起时会出现破绽的地方才行。
美术概念
现实与简化
- 希望背景的质感与形状等,要比前作更接近现实
- 但是,由于宝可梦与人物角色并不会弄成完全真实风格,因此必须要找出在背景与角色统一放在一起时会产生的破绽
质感
- 基本上接近现实就好
- 必须要思考如何调整轮廓与背景融合
素材
- BaseColorMap
- NormalMap
- MetallicMap
- RoughnessMap
- EmissionColorMap
- AOMap
使用 Gbuffer
- 利用 Flags 使处理分歧(也收入在模板)
- 以 Mesh ID 为基础并抽出追加情报
可使用的光
- 定向光源(太阳光等)
- 点光源、聚光光源
- IBL
- DiffuseProbe / SpecularProbe
- IrradianceVolume
—— 用在前作(《阿尔宙斯》)
—— 在本作不使用
点光源
- 使用在城镇的灯光等
IBL
- 由于时间带的变化,要以作出灰阶影像 DiffuseProbe 并另外叠上颜色。
打灯光
- BRDF(基本呈现)
镜面反射:GGX
扩散反射:Lambert
- 半透明放在最上层
在演讲首先展示了素材的构成与光源等,并且在介绍整个作品中基本的表现方法时,也顺便解说了使用在宝可梦身上的特殊手法。
而提到宝可梦主要的外观就先提到的便是 SSS(Subsurface Scattering)的阴影呈现。这套阴影系统会根据宝可梦的身体大小与密度等进行配合,套用各式各样的设定,对宝可梦的造型个性造成巨大的影响。
SSS
- 使用接近 Pre-Integrated Skin 的手法,在阴影部分使用散乱色渗出的效果
- 避免使用 LUT texture,并使用 Spherical Gaussian 进行近似计算
- 根据身体大小变化数值
- 左图:厚度跟密度等较薄的部位数值调到偏亮
- 右图:眷恋云「白色」的地方也会因应头部的毛跟云而利用数值设定区分
胶状物
- 只在轮廓附近适用 SSS 呈现质感,表现出只有外侧呈现出透光的效果以模拟质地
- 轮廓部分,单纯以视角跟法线的角度为基准抽出
构造色
- simulation base 的手法,因为表现的自由度等观点而放弃采用
- 以视角与法线的角度为基础再加上三色渐层,使用简单的功能进行
粒子
- 左:粒子的 texture 种类动画(4*4=16 种类)
- 右:指定深邃感(视差的强弱)的 texture
火焰(头顶的动态物件)
- 在 Displacement Map(左)用顶点色(右)乘算,用来控制影响程度
其他也有介绍如何表现出凝胶般的质感、构造色的呈现,还有悖论宝可梦的粒子呈现等各式各样的手法,并且提到了《宝可梦朱/紫》最大特征「太晶化」的相关表现。
当宝可梦太晶化,便是将本体(也就是宝可梦)的部分保持原本的模组并更换素材,配合 Normal Map、Color Map 与杂讯纹理,就可以呈现出宝石的质感。不过,如果将所有物件都宝石化的话,反而变得不美观,所以也做出了能够指定「不要」太晶化的 Mesh。
另外,在太晶化的时候出现在宝可梦头顶的太晶宝石,其实是将表面的 Mesh 设成半透明,而里面的 Mesh 设成不透明,借此产生出深度并呈现立体感。
太晶化(本体)
- 左:用在表现质感的 Normal map
- 右:从左边开始为
- 用在表现分散光的 Color map
- 让边缘(エッジ)发光的 Normal map
- 放在边缘(エッジ)上的杂讯纹理
- 可以指定「不要」太晶化的 Mesh
- 里侧与表面还有 Sphere Map
太晶化(完成)
接着则是展示关于主角(人物)角色相关的呈现手法。首先从在游戏一开始可自定义的主角「造型」是如何呈现的。
《宝可梦 朱/紫》在创角的时候能够选择的各种眼眶与眼睛大小等,其实是使用 Maya 的 Lattice 功能制作的。使用这个功能就可以控制眼尾的上下或眼睛、嘴巴的大小、嘴唇的厚度等。不过,如果全部的细节都可以调整的话会变得太过繁杂,所以事先准备了配合各种变形值组合的预设值。
另一方面,虽然眉毛基本上是以 texture 描绘,不过藉由在前端使用 α 做出阶层,就可以做出眉毛长度的不同版本。
眼帘、嘴巴的自定义
- makeup_all
自定义角色用的 Lattice 本体。能直接把 Mesh 变形
- makeup_eye
控制眼帘的 Lattice。控制 makeup_all
- makeup_mouth
控制嘴巴的 Lattice。控制 makeup_all
眼睑的 Lattice 种类
- 可以设定各种眼睛大小和形状
嘴巴的 Lattice 种类
- 可以设定嘴巴大小和嘴唇的厚度
混和以上种类
- 定义预设值
眉毛、睫毛的种类
- 基本的种类以 texture 制作
- 根据各种类,以设定 α 增加版本
另外,表情则是将脸分成五个部分之后以变形目标(Morph target)制作。最一开始套用变形目标,接着再用刚才提到的 Lattice 功能进行演算,就可以实现实际角色的脸的形状。
表情
- 拆开各部位后以变形目标制作
- 眉毛周围变形
- 右眼变形
- 左眼变形
- 嘴巴变形
- 加算至整体
表情与脸部妆容
- 依照下列顺序处理。
- 将各部位的变形图像合并后,制作变形用的 Mesh
- 混和至 BaseMesh(反映表情)
- Lattice 变形(反映脸部妆容)
眼球
- 使用非统一比例,让直长型的眼睛也可以转动
而在表现肌肤的部分,则是先做出假的法线,并与实际法线混合。接着,依照脸或视角的角度、光源的方向等各种情况,调整哪个角度才是最为美观,再控制光的反射度,不断重复尝试,才终于达到开发团队希望的美术概念。
shade(伪装法线)
- 伪装法线 N0 = normailze (P0 – O)
- 把基准点 O 跟 “head”joint 连动
shade(风格调整)
- 以条件跟参数,跟实际的法线进行混合
脸跟摄影机的角度
顺光或逆光
- 下方图片:根据参数产生变化的结果
光的反射调整
- 和模型的风格不符,看起来完全不像「皮肤」
- 将 dot (normal, light) 的结果补正得更滑顺
最后则是讲解在打造帕底亚地区的世界时,如何呈现各种环境的相关手法。
首先是大地(地图)的制作方法。帕底亚地区的大地,是以 Maya 的 Mesh 为基础,再利用 Houdini 追加细节,然后选择 High tMap 与质感,或是输出长出花花草草的 Mask。然而,光只用这样的方式也有无法完整呈现的地形,所以会在之后利用 Houdini 进行程序建模弄出悬崖或岩石等再配置于地图上,慢慢打造出想要的地形。
大地的制作方式 1/3
- 以 Maya 的 Mesh 为基础,再利用 Houdini 追加细节
大地的制作方式 2/3
- 从 Houdini 输出 HightMap 与 Mask
大地的制作方式 3/3
- 用 SplatMask 选择质感
- 用 DetailMask 长出花草
- 把悬崖或岩石从上面放置
悬崖&岩石
- 利用 Houdini 进行程序建模
- 加上形状、输出素材混合等参数的 Mask
- 将产生的 Mesh 利用 Maya 加工等情况,就使用只再生 Mask 的工具
接着是关于海、河川等水边的呈现。这部分会根据顶点动态的动作、流型图的流动,还有依照水深的透明度变化、萤幕画面空间的折射表现等而配合,进行基本的处理。甚至也特地准备了浪潮拍打岸边时白色波纹的专用模型,让其越靠近陆地时就有越大变化,以强调「拍浪感」。
海&河川
- 以 Gerstner Wave 为基础的顶点动态
- 根据 Flow map 表现出流动
- 因应水深改变透明度
- ScreenSpace 的折射表现
- Normal Map 与 Flow Map
- SpecularProbe 的 texture 以手绘制作
开发成员还说「我们在这真的下了很多工夫,请一定要介绍这部分」
- 利用专用的模型追加白色波纹
接着是天空,为了要从水平线延伸出颜色的渐层,则是以 Precomputed Atmospheric Scattering 等新技术为基础呈现。在云层的表现上,先将在建模完成的云上从六种方向打光后的结果压制成两张 texture,并且以真实世界的光为原型计算描绘色。
天空
- 以 Precomputed Atmospheric Scattering 等技术为基础,然后再加上特定的渐层处理
云朵
- 在 Houdini 将一团云用离线彩现
- 把从六方向(±xyz)打光后的结果,再压制成两张 texture
- 贴上 Billboard 并以光源向量为基础计算描绘色
建筑物内则是简单用光线映射表现出来
室内
- 建筑物里面使用光线映射表现
- 根据昼夜变换有各自的资料
- 乘算至 Base color
以上就是本次「《宝可梦 朱/紫》绘出帕底亚地区 —— 彻底解说外观的构造!」的演讲内容了。在本次的演讲中,可以感受到开发团队是如何用尽了各式各样的表现手法,进而呈现出《宝可梦 朱/紫》里帕底亚地区光鲜亮丽的一面。