2021-12-1733846次浏览
1评论
13收藏
3点赞
分享
文章分为上下篇,为了更好的阅读感受,请按顺序阅读。上篇链接:
通过检测场景图像中 Normal 和 Depth 的不连续性,我们可以获得细节较为丰富的勾线。无论场景的复杂性如何,这种方法的性能都是恒定的,我们还添加了对勾线颜色的色相、明度、饱和度的调整,使勾线更为自然。
常用的算法是Sobel算子 Wiki(Sobel Operator)
2018 10.《Line Drawing from 3d models》
这种方法的缺点则是较难控制勾线的宽度,如果我们想实现距离相关的线宽,我们只能在几个像素的范围内调整它,因此基于图像的方法主要适用于场景线条渲染,对于靠近摄像头很近的物体,我们最好使用 Backface 的方法。
这个过程中,我们也充分感受到了美术的控制力无处不在。
外线条使用depth的差异阈值判定。
最外层线条可以通过depth进行差异阈值判断。如图A所示。
问题:尽管在模型的外部边缘上均匀地绘制了线条,但并未绘制出手和袖口之间的边界以及衣服的松弛度,因此缺乏清晰度。
内线条分两种。
(1)同MeshID内部,指定的边缘强度记录在顶点颜色的R通道中。 如图B所示。
(2)不同MeshID之间,在G通道中记录MeshID指定的。 在MeshID发生跳变的Kernel判定为内边界。如图C所示。
最终结果如图D所示。在这个方案中,美术对于线条的控制力分别体现在顶点色(用来控制外线条的厚度),mesh mask(id), 以及内线条强度mask。
实现细节上也可以参考此文的实践
蓝色协议 后处理线条
深度:利用深度差异绘制外描边,红箭头表示内部未有影响
顶点色:控制亮度差异(类似MeshId),绘制内部线条
世界法线:使用对比度差异,绘制关节
线条模型 用于下巴,嘴巴,耳朵和头发等小零件
《GUILTY GEAR Xrd》 作为手游3渲2的“启蒙”,包括法线外扩技术和本村线在内的各式卡渲技术,影响了迄今为止各种日式风格游戏的制作(七大罪、赛马娘、崩坏等等)。
《二之国》 基于屏幕空间的描边线条技术,兼顾效率、效果、以及美术控制力,为目前后处理线条的方案的参考。
《蓝色协议》 在二之国基础上,同样基于Defferred管线,头发用了法线外扩,内线条用了手绘+屏幕空间检测,甚至在下巴,嘴巴,眉毛等小细节地方,使用了法线外扩,更多元化。
《某崩MMD》的线条场景使用了屏幕空间检测,角色使用了法线外扩+Geometry Shader+手绘内线条来做到质量更高的线条,但技术本身当时确实手机上比较难落地,所以只在官方MMD上进行了使用。
NS上的《新美丽世界》2021夏季(预告),已经开始进行线条笔触的风格化!
机器只是工具,可以给予艺术家更方便的创作,甚至是创造新的艺术类型。思考如何提升美术的控制力。
计算机本身是无风格的,正如前面提到的,在现阶段,手机上的游戏大部分的描线都是缝合怪,流程繁杂不统一,并且基于网格的大部分线条效果,就只是个均匀宽度的描边线条而已,毫无风格可言。
所以未来的NPR线条一个发展方向,进行风格化的方式,给予艺术家足够的控制力,使得他们可以基于现有的生产工具,来实现真正的风格化。
基于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.
问题:效果看起来不错,但是由于本身方法提取的线条限制太大,美术的风格化控制力度比较低。(美术原话:这线条就很没有灵性)
是blender 2.8推出的新功能,直接在2d/3d场景里进行绘制。打破了计算机生成线条的思路,借助程序Pencil进行画面的绘制。
真3d绘画。本质上把线条环节,从代码生成完全转化为手工绘制,美术具备最强的控制力。
外描边开始具备粗细变化
外描边和自阴影进行了融合
内描边使用传统细边
2021 夏季NS预告 带来了更强烈的线条感和风格化
而根据崩三mmd那部分的资料,简单的厚度变化可以靠刷顶点色来解决,更多细节的边以及做更复杂笔触是有需要GS支持生成额外多边形的,nds专用的gpu是支持GS特性,所以这里大概率可能是基于此方案实现的。
综合以上的研究,结合以下3个方案,在自研引擎上尝试实现更好的描边方案。
- 完整的边缘提取算法
- 可验证的算法效果
- 问题:离线CPU渲染,慢
- 【已验证】改进了法线外扩的效果,并且可以一套参数控制两套方案共存。
- 保证美术有充分的控制力
- 【已验证】友商某刀的GPU Driven地形已经落地手机
- 基于CS的Vertex Buffer实时生成,调用Indirect Draw来绘制“线条”
- 提供了绕开GS,真机实时运行的可能性
结合上述3个方案的优势部分,尝试组合出一种适合移动端的新描线算法。
算法流程:
实现过程注意合理设置cs的barrier以免出现vertex buffer的不稳定
当前效果如下:
逐项对比
整体对比
测试 小米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. 上面这篇里提到的速度线还挺有意思的,
稍微尝试了下,不过会有和本体不太融合的问题。
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)