当今市场中,3D卡渲无疑是最热门的一个技术竞争领域,此前也有不少厂商分享了各自基于不同引擎的3D卡渲实现技术。

前几个月葡萄君分享了万代南宫旗下一款基于UE4制作的赛璐璐3D卡渲产品《蓝色协议》的技术经验,提及它的风格选择、实现思路,以及相关的基本手法。

就在前不久日本举办的CEDEC 2021开发者大会上,万代南梦宫Studio的执行技术总监大井隆義又以《实装篇》为题,进一步分享了《蓝色协议》在实现赛璐璐3D卡渲时,针对UE4引擎进行的技术改造。

在大井隆義看来,一般的赛璐璐shading手法,要么不使用游戏引擎自带的光照系统,自行处理光照,要么是对引擎渲染出来的画像进行后处理让它看起来有动画的风格。这类手法的参考资料已经非常多了,但不改造引擎的做法有好有坏。

比如在UE4当中,不使用光照系统,相当于抛弃了UE4自身画面表现极其丰富的一大特色,转用后处理的做法,又相当于在已经渲染好的东西上再加一层多余的表演处理。于是万代南梦宫Studio尝试的是:如何在不遏制UE4功能的前提下,针对想要实现的渲染效果进行最小限度的引擎改造。

01:光照的处理

首先是为了生成阴影的光照处理。在《蓝色协议》中,比较独特的地方是,1个角色模型对应着两种法线数据。其中一种是模型数据自身的法线,另一种则是画师绘制的法线。下图右上是模型法线,右下是手绘法线。

直观地对比一下就能看出,模型法线呈现出了3D角色丰富的立体感,而另一套法线看起来就比较糊,尤其是角色面部的细节层次感不强。

原因在于,在通常的动画作品中,大多数的角度来看,在光源相反的脸颊边缘,都会以简洁的线条来区分出面部的阴影。而鼻子这类突出的位置,大多数情况都不会重点绘制阴影(具体情况根据画风也有差别)。所以使用相对模糊的法线数据,反而能呈现出更贴近动画风格的阴影表现。

此外,角色面部还搭在了捏脸功能,总共可以分割为6个部件。如果将这些部件单独计算为一个物件进行输入,每个部件都会呈现出自己的边缘,所以需要将他们囊括为一个整体进行输入,边缘部分的法线才能衔接顺畅。

通过手绘法线的数据以及主光源数据,就可以计算出角色的阴影。在《蓝色协议》中用到的皮肤阴影,属于动画术语中的一级阴影。要实现这个效果,首先需要准备一张二值化处理(将图像上的像素点的灰度值设置为0或255,即黑白化)后的遮罩。再保证即便存在再多光源,作用到角色阴影的只有主光源。

然后用主光源,以及通过手绘法线得到的二值化阴影数据进行对比,在明亮处使用角色基本色,在暗处则使用阴影色来进行着色。这样一来,一个角色的动画式着色就算完成了一大半。其中关键在于角色阴影只受主光源的影响这一点。

当存在主光源以外的点光源时,为了保证不出现干扰的阴影效果,光照效果需要无视法线只呈现与光源的距离关系。这种情况下,亮度过高的情况会比较常见,所以需要再做调整。下面这张幻灯片也是亮度过高的例子。

天空光、间接光也是如此,在渲染的时候都会基本无视发法线,这样就可以将外部光的色彩影响控制在最小的范畴内。尽管不是完全没有影响,但这种做法首要考虑的是优先呈现角色自身的颜色。毕竟蓝天背景下,背景求的颜色是蓝色,如果影响到角色也泛蓝,就会显得很奇怪。

此外,高光(镜面反射光)要素也进行了一系列的特殊处理,其中最明显的就是头发。高光处理时,首先生成一张将Blinn-Phong模型二值化以后的高光遮罩,紧贴在高光出现的部位。头发中间部分的高光偏圆偏小,周边部分的则是偏细长。这些形状差异,是根据相对物件重心的距离,来扩大或缩小高光遮罩而实现的。

需要注意的是,即便角色的轮廓没有逆光,也需要加上边缘光的处理,来强化与背景分开的立体感。边缘光的处理,是基于深度buffer的内容用Sobel filter提取出边缘数据,然后加强其亮度。不过这种做法需要追加一条渲染管线。

另外在filter的阶段,通过offset可以调节轮廓线的粗细,也能顺着轮廓添加边缘光。而且在不希望出现边缘光的地方(比如因为角色背部的光源生成阴影的地方等),还可以实施进一步的遮罩处理。

02:轮廓线的处理

轮廓线在动画风当中占据了相当重要的位置,它的处理也需要下功夫。

轮廓线的处理是依靠深度值进行判定,然后通过Sobel filter检测边缘部分,在深度值较大的一侧绘制轮廓线。角色数据中,顶点色2是轮廓线使用的数据,其中通过ID编排,二手手游账号购买平台存放了不同部位、不同粗细的数据,在绘制轮廓线的时候会被使用。在面部这类不希望出现轮廓线的地方,可以调整深度值,让它更不容易呈现出轮廓线。

通过反转深度值就可以指定不希望出现轮廓线的位置了。

值得注意的是,轮廓线可以想象成在角色的外侧进行了绘制。这是因为当画面太小时,如果在物件内部绘制轮廓线,会让物件看起来更小。

此外,前面提到的部件ID也会在物件边界部分的轮廓线上进行计算,即通过ID检测出边缘,然后在深度值较大一侧绘制轮廓线。

而在手指等深度值相差较小的,很难分配ID的部位,就需要使用通过法线来判断轮廓线的方法。同时,手绘法线也在事先准备好了,这里也会合成这方面的数据。

《蓝色协议》的角色还会表现出动画、原画中常见的,眉毛呈现在头发上面的效果,这是模拟透过头发看见眉毛的效果。技术上,则是先制作一张眉毛形状的遮罩,防止头发覆盖眉毛的处理手法。换句话说,单纯为了这个效果,就追加了一层渲染管线。

除此之外,轮廓线对Temporal AA的兼容性不好,容易被模糊处理,所以需要使用Responsive AA的抗锯齿处理。Responsive AA会使用模板,尽可能保持现在的图像轮廓,再实现一个类似Temporal AA的效果,尽管抗锯齿效果会偏弱,但对于张力比较强的图像来说,这种效果反而更好。

另外外部物件的阴影有时也会落到角色身上,但除了面部阴影以外的不会使用到角色的selfshadow,所以处理角色的shadow map(比如落到地面上的阴影)时,只使用角色自身的影子。

不过,游戏使用了一些类似selfshadow的表现来作为代替。即使用offsetshadow比较临近物体的深度数据和通常画像的深度数据,然后写入一张用来区分基本色和阴影色的二值化buffer。这样一来阴影部分就会扩散开来。

最后用diffuse后处理,使明亮部分进行扩散,这个功能也可以用Bloom代替,但是会与特效部分的Bloom处理冲突,所以项目组最后选择在另一边使用这个功能。

进行这一连串的处理之后,《蓝色协议》的3D赛璐璐风就实现了出来。当然,这也是在原本的UE4的渲染管线之上,追加了多层处理工序,deferred rendering的6个G-buffer几乎所有通道都被用上了。在大井隆義看来,要做好赛璐璐动画风格的3D渲染,绝对不是一件处理起来比较简单的事情。

万代南梦宫Studio这次针对UE4引擎的改造,基本都是集中在渲染通道的追加上,除此之外的引擎升级问题算是勉强处理完了。而这些改造比起追求物理的真实性,更倾向于实现创作者的想法和追求。「如果这么改动,会不会更有感觉?」这种不断探求的欲望,是大井隆義认为最重要的思考。

03:结语

在葡萄君的上一篇文章中提到过这个产品的技术探索思路:用大量细节的打磨,去摸索制作组最希望达到的效果。

这决定了《蓝色协议》不会简单套用市面上某个模板,其实不难发现,自《蓝色协议》曝光以来的两年里,这款产品细微处的技术手法一直有不小的变化,我也很想看看最终这款产品会变成什么样,拿出什么级别的技术呈现。

而每次看到类似的技术分享,葡萄君都会忍不住期待一下,3D卡渲已经成为标配和竞争入场券的国内市场里,什么时候会迎来风格与细节技术明显分化的产品浪潮。也希望在这个浪潮到来之前,这类技术分享能为开发者提供一些不同的思路。

如何改造UE4用于赛璐璐3D卡渲?这里有一份日本大厂的实操分享相关推荐

  1. 从实操教学到赛题演练,腾讯专家亲授TI-ONE平台操作攻略!

    ​ 5月10日,我们迎来了"视"界直播周的首场直播--"2021腾讯广告算法大赛赛题解析".直播现场,芦清林和熊江丰老师对本届赛事的两大赛题进行了深入浅出的解析 ...

  2. 日系赛璐璐鼻子上色教程,干货满满!

    今天给大家带来的是动漫人物鼻子的上色教程,鼻子在五官中有多重要,法国哲学家巴斯卡鲁有一句名言:"如果埃及女王的鼻子不高,世界历史也许会重写."鼻子在五官中有"面中之王&q ...

  3. 华裔女性钱璐璐:用 DNA 开发人工智能神经网络,识别手写数字!

    "既然要学人脑的思维方式,为什么不去研究人脑?"霍金斯在<论智能>中说道. 如今,不少生物学研究者正朝着这个方向努力. 不过,请注意:这不是一次传统意义上的生物实验. ...

  4. Easy3D:一个轻量级、易用、高效的C++库,用于处理和渲染3D数据

    作者:Liangliang Nan 作者介绍:来自荷兰代尔夫特理工大学三维地理信息研究小组 代码:https://github.com/LiangliangNan/Easy3D 简介 Easy3D是一 ...

  5. 目前缺少用于语义分割的 3D LiDAR 数据吗?关于三维点云数据集和方法的调查

    目前缺少用于语义分割的 3D LiDAR 数据吗?关于三维点云数据集和方法的调查 原文 Are We Hungry for 3D LiDAR Data for Semantic Segmentatio ...

  6. 一种基于UE4平台多人交互3D家装设计系统及使用方法与流程

    本发明涉及一种基于UE4平台多人交互3D家装设计系统及使用方法,属虚拟现实技术领域. 背景技术: 目前随着虚拟现实技术的飞速发展,当前在进行家装实际工作中,为了提高设计方案对用户展示的便捷性和准确性, ...

  7. 南邮 OJ 1972 炒股票的女巫璐璐

    炒股票的女巫璐璐 时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte 总提交 : 702            测试通过 : ...

  8. 机器人潘森护盾_[翻译团]10.21版本五大强势辅助:潘森、蕾欧娜、机器人、巴德、璐璐...

    虎扑10月20日讯 今日,外媒Dot Esports发表了题为The best support champions in League of Legends Patch 10.21一文,原文(翻译)大 ...

  9. 璐璐版本下强度的考虑

    背景 众所周知,软辅在联盟生态中始终处于生长阶段.众多下路组合中软辅的搭配模式仍具有较大创新空间,在消耗上除普通的eaq,利用小兵进行q与AD配合打出压制,几何Q学也占据特殊地位,尤其是在追击时,能达 ...

最新文章

  1. htc one m7刷Linux,HTC one m7官方刷机详细操作教程
  2. nginx负载均衡的策略
  3. MySQL配置文件my.cnf中文详解
  4. HP 3055 恢复出厂
  5. 创建 vxlan 并部署 instance - 每天5分钟玩转 OpenStack(147)
  6. 2000年考研英语阅读理解文章四
  7. 如何在 JavaScript 中实现拖放
  8. SpringBoot整合MyBatis并实现简单的查询功能
  9. 如何制作一款HTML5 RPG游戏引擎——第二篇,烟雨+飞雪效果
  10. 计算机信息技术基础知识教案,计算机的基础知识
  11. iis 回收工作进程时出错的解决办法
  12. 多元统计分析基于r课后答案_应用多元统计分析课后答案.doc
  13. 蓝牙协议保留(为了防止电脑内丢失)
  14. 小楼一夜听春雨,天下谁人不识君?
  15. 三角形法则平行四边形法则
  16. 企业为什么选择软件定制开发?
  17. 机器学习之提升方法Adaboost算法
  18. 【数字图像处理之(一)】数字图像处理与相关领域概述
  19. 实战技法 - 短线操盘 (8)
  20. HUAWEI交换机的Hybrid接口(混杂模式)详解与实验配置演示

热门文章

  1. 工业级路由器和家用路由器的区别_5G工业级路由器有哪些优势
  2. 前端面试技巧和注意事项_我的前端面试总结(套路篇)
  3. jQuery实现图片延迟加载
  4. vue中使用v-on绑定事件中,获取$event.currentTarget,日志打印为null
  5. python爬虫采集网站数据
  6. quartz(6)--集群
  7. 理解sqlalchemy与ORM
  8. Linux ALSA声卡驱动之三:PCM设备的创建
  9. Canvas 学习笔记1
  10. SharePoint 数据库管理-PowerShell