二次元描边技术现状和发展(下)

轻舟

2021-12-1711726次浏览

1评论

13收藏

3点赞

分享

文章分为上下篇,为了更好的阅读感受,请按顺序阅读。上篇链接:

二次元描边技术现状和发展(上)


思路三 基于图像空间的线条检测

通过检测场景图像中 Normal 和 Depth 的不连续性,我们可以获得细节较为丰富的勾线。无论场景的复杂性如何,这种方法的性能都是恒定的,我们还添加了对勾线颜色的色相、明度、饱和度的调整,使勾线更为自然。

常用的算法是Sobel算子 Wiki(Sobel Operator)

2018 10.《Line Drawing from 3d models》

这种方法的缺点则是较难控制勾线的宽度,如果我们想实现距离相关的线宽,我们只能在几个像素的范围内调整它,因此基于图像的方法主要适用于场景线条渲染,对于靠近摄像头很近的物体,我们最好使用 Backface 的方法。

1、二之国(CG world 2018-06)

这个过程中,我们也充分感受到了美术的控制力无处不在。

外线条使用depth的差异阈值判定。

最外层线条可以通过depth进行差异阈值判断。如图A所示。

问题:尽管在模型的外部边缘上均匀地绘制了线条,但并未绘制出手和袖口之间的边界以及衣服的松弛度,因此缺乏清晰度。

内线条分两种。

(1)同MeshID内部,指定的边缘强度记录在顶点颜色的R通道中。 如图B所示。

(2)不同MeshID之间,在G通道中记录MeshID指定的。 在MeshID发生跳变的Kernel判定为内边界。如图C所示。

最终结果如图D所示。在这个方案中,美术对于线条的控制力分别体现在顶点色(用来控制外线条的厚度),mesh mask(id), 以及内线条强度mask。

实现细节上也可以参考此文的实践

2、蓝色协议(2020 cedec)

蓝色协议 后处理线条

深度:利用深度差异绘制外描边,红箭头表示内部未有影响

顶点色:控制亮度差异(类似MeshId),绘制内部线条

世界法线:使用对比度差异,绘制关节

线条模型 用于下巴,嘴巴,耳朵和头发等小零件

小结

  • 《GUILTY GEAR Xrd》 作为手游3渲2的“启蒙”,包括法线外扩技术和本村线在内的各式卡渲技术,影响了迄今为止各种日式风格游戏的制作(七大罪、赛马娘、崩坏等等)。

  • 《二之国》 基于屏幕空间的描边线条技术,兼顾效率、效果、以及美术控制力,为目前后处理线条的方案的参考。

  • 《蓝色协议》 在二之国基础上,同样基于Defferred管线,头发用了法线外扩,内线条用了手绘+屏幕空间检测,甚至在下巴,嘴巴,眉毛等小细节地方,使用了法线外扩,更多元化。

  • 《某崩MMD》的线条场景使用了屏幕空间检测,角色使用了法线外扩+Geometry Shader+手绘内线条来做到质量更高的线条,但技术本身当时确实手机上比较难落地,所以只在官方MMD上进行了使用。

  • NS上的《新美丽世界》2021夏季(预告),已经开始进行线条笔触的风格化!

  • 机器只是工具,可以给予艺术家更方便的创作,甚至是创造新的艺术类型。思考如何提升美术的控制力。

当前问题以及未来发展

  • 计算机本身是无风格的,正如前面提到的,在现阶段,手机上的游戏大部分的描线都是缝合怪,流程繁杂不统一,并且基于网格的大部分线条效果,就只是个均匀宽度的描边线条而已,毫无风格可言。

  • 所以未来的NPR线条一个发展方向,进行风格化的方式,给予艺术家足够的控制力,使得他们可以基于现有的生产工具,来实现真正的风格化。

1、Triangle shell technique 的笔触

基于2 pass的Triangle shell technique,对线条风格进行了如下建模:

2015《Real-time Artistic Silhouettes Rendering for 3D Models 》

2016《Line Rendering in Loose Style for 3D Models》

intuitively as the following 4 aspects:

  • The farther the model is from the camera, the thinner the lines are.

  • Lines should be thin at detail regions, thick at relatively flat regions.

  • Lines should be thin at bright regions, thick at dark regions.

  • The thickness of lines should be clamped to a certain range.

问题:效果看起来不错,但是由于本身方法提取的线条限制太大,美术的风格化控制力度比较低。(美术原话:这线条就很没有灵性)

2、Blender Grease Pencil

是blender 2.8推出的新功能,直接在2d/3d场景里进行绘制。打破了计算机生成线条的思路,借助程序Pencil进行画面的绘制。

基本流程:概念设计->建模->线条绘制->着色->后期

真3d绘画。本质上把线条环节,从代码生成完全转化为手工绘制,美术具备最强的控制力。

3、(2021.4.9) 新番《美丽新世界》

  • 外描边开始具备粗细变化

  • 外描边和自阴影进行了融合

  • 内描边使用传统细边

2021 夏季NS预告 带来了更强烈的线条感和风格化

而根据崩三mmd那部分的资料,简单的厚度变化可以靠刷顶点色来解决,更多细节的边以及做更复杂笔触是有需要GS支持生成额外多边形的,nds专用的gpu是支持GS特性,所以这里大概率可能是基于此方案实现的。

三、实践中部分

综合以上的研究,结合以下3个方案,在自研引擎上尝试实现更好的描边方案。

  • Blender Free Style

- 完整的边缘提取算法

- 可验证的算法效果

- 问题:离线CPU渲染,慢

  • 友商某崩 mmd

- 【已验证】改进了法线外扩的效果,并且可以一套参数控制两套方案共存。

- 保证美术有充分的控制力

  • GPU Driven

- 【已验证】友商某刀的GPU Driven地形已经落地手机

- 基于CS的Vertex Buffer实时生成,调用Indirect Draw来绘制“线条”

- 提供了绕开GS,真机实时运行的可能性

结合上述3个方案的优势部分,尝试组合出一种适合移动端的新描线算法。

算法流程:

实现过程注意合理设置cs的barrier以免出现vertex buffer的不稳定

当前效果如下:

1、在自研引擎中还原blender中的安

逐项对比

整体对比

2、引擎里的新线条绘制效果

3、新老方案对比

4、控制方式

5、手机性能

测试 小米9-高通骁龙855 8 models
真机效果 55fps

在model数量 增加到20后 帧率开始低于30

暂未做任何优化,因此只是跑个大概。

to do : 笔触部分 大概流程:

(1)stroke path生成
正如blender freestyle的论文中提到的Strokes are connected paths in 2D 。实现笔触第一步就是进行path的生成(确定每根线条的起和收)。但其实这是一件非常复杂的事情,在pixar的论文《Computing Smooth Surface Contours with Accurate Topology》中做了详细的算法说明。而blender在自己的实现当中,加入了一些programable的stage,可以用户自定义split和chain的path。

(2)对path关联的vertex生成更均匀的采样点,理论上保证相邻点间隔2-3个像素最好。《Artistic Silhouettes: A Hybrid Approach》

(3)采用《Drawing and Animation Using Skeletal Strokes》里提到的skelteal stroke的方法(类似spine动画),对stroke(path)进行风格化的shading,包括aa,头尾变化,alpha变化,采样贴图等等。

P.S. 上面这篇里提到的速度线还挺有意思的,

稍微尝试了下,不过会有和本体不太融合的问题。

附录 CS & StructBuffer 兼容性

1、ComputeShader技术在Android上运行要求:Shader Model 5.0的设备(OpenGL ES 3.1及以上设备大部分满足此条件,少数3.1的设备不满足)。

2、ComputeShader技术在iOS上运行要求:系统软件最低为iOS 9。

3、在Android设备中,OpenGL ES 3.0及以下的手机,均不支持访问StructuredBuffer。

4、某些OpenGL ES 3.1的手机(Shader Model 4.5)只支持在片元着色器内访问StructuredBuffer。

5、Shader Model 5.0(OpenGL ES 3.1分为Shader Model 4.5 和 Shader Model 5.0两类机型)的设备上可以使用Compute Shader。

6、Metal下,一个ComputeShader中支持31个StructuredBuffer。

参考链接

四、参考资料

1、绘画中的线条艺术

2、https://www.zhihu.com/question/445052712/answer/1738673456

3、《Image Precision Silhouette Edges》 1999

4、《Non-Photorealistic Rendering in Contex》 2006

5、《Ray Tracing NPR-Style Feature Lines》 2009

6、《西川善司の 「GUILTY GEAR Xrd -SIGN-」で実現された「アニメにしか見えないリアルタイム3Dグラフィックス」の秘密》 2010

7、《Two Fast Methods for High-Quality Line Visibility》 2010

8、《Programmable Rendering of Line Drawing from 3D Scenes》 2010

9、《Computing Smooth Surface Contours with Accurate Topology》 2014

10、《Real-Time Artistic Silhouettes Rendering for 3D Models》 2015

11、《Line Rendering in Loose Style for 3D Models》 2016/12/01

12、《Line Drawing from 3d models》 2018

13、《移动端高品质卡通渲染的实现与优化方案》 - 米哈游:贺甲 Unite Beijing 2018

14、《二之国(CG world 2018-06)》

15、《七大罪》Unite Tokyo 2019

16、《「ブループロトコル」を“劇場アニメクオリティ”たらしめる手法とは?ゲーム制作におけるアニメ表現技法を紹介【CEDEC2020】》

17、《赛马娘》 FrameCapture Analyze 2021

18、2021.4.9 新番《美丽新世界》

评论 (1)

0/1000
网易游学APP
为热爱赋能
扫描二维码下载APP