小A出品:LANPR线框渲染器

【流量党注意:多图!多图!】

关于Freestyle

大家都是用Blender的哈,如果要做卡通效果那应该都知道blender有个描线渲染器叫做Freestyle,这货以前是一个独立的软件,结果不知道二点几版本的时候给Blender收编了,于是Blender直接就可以出带有样式的线框图了。Freestyle本身看起来的确666,结合卡通着色,描一个边既整洁又有风格,很多人很快就喜欢上这个东西了。

但是呢,Freestyle这个鬼的算法简直不能再坑,简单物体倒是很少出现问题,但是稍微复杂的物体就会出现十分感人的“断线”、“掉线”的问题,对于一个花了十几分钟甚至半个小时、一个小时渲染出的图,最后一刻出现这样糟糕的效果,大家也都觉得很烦……小a刚想演示一下Freestyle渲染简单物体的效果,结果发现:就连猴头也会断线!!!这只是一个猴头!!!

blender_2017-10-26_20-42-09

另外,Freestyle不支持物体相交线的计算!

本来说看小A自己建的一个灰机在Freestyle里的效果……算了,加载个模型已经要把我机子炸了……

所以这个鸡肋的Freestyle……真是够了。

0005

接下来嘛,咳咳,曾经挖了多少个教程的坑的小a今天来介绍下近段时间开发的小a线框渲染器:LANPR。

首先上点图~!

ImageA10T ImageEngine ImageRA1

这个线条质量,是不是已经喊666啦!!!!!!

0003

LANPR是什么鬼

  • LANPR==Little A's Non-Photorealistic Renderer,对,没错,就是小a的非真实渲染器,对就是小a自己做的小软件。
  • 用来取代Freestyle这个二货。
  • Blender的一个插件就可以一键启动外置LANPR程序渲染。
  • 各种线条样式支持!材质图层混合模式支持!
  • 完全多线程支持!!!!!!!!!!!!!!!!!
  • 目前还在不稳定阶段,小A正在开发这个破玩意,明年初可能会有测试版放出!!!!啦啦啦!!!!

目前有的功能!

1.准确的特征线计算和遮挡查询

LANPR可以非常准确地计算特征线,目前的功能包括:轮廓、折边、物体相交线和材质分界线四种,很快将会有外轮廓、Freestyle标记的支持。

给大家看看一些机械结构的细节结构渲染图:(不过在截这些图的时候没有启用交线计算,因为太慢了,后面还有一堆图,哥老倌些慢慢看!)

Demo_2017-06-23_00-21-17

img

QQ图片20170623111748 QQ图片20170623111746

QQ图片20170623111750

LANPR支持记录多达128层遮挡信息,也就是说,计算完成之后你将可以提取被遮挡任意次数的线条单独赋予样式哦!!!!!比如,按照ISO标准,被遮挡一次的显示为虚线、被遮挡两次以上的不显示,这也是能够实现的哦!!!!!

Demo_2017-06-23_22-58-43

2.物体交线计算!

很多人不用Freestyle的原因就在于交线计算太麻烦了,不过在LANPR里面,没有这样的麻烦啦!!!

下图这个模型是很多部件拼接而成的,LANPR成功计算出了所有物体间的交线!

这个功能虽然效果简单直接,但是不是特别好实现,特别是使用几何的方法,不过现在效果很是OK的。

Demo_2017-06-24_12-58-47

ImageGunT

3.实时调整、一键输出

可以在软件中实时调整并预览输出效果,可以像ps图层一样自定义线条、材质层的排列顺序、改变深度遮挡、选择混合模式、调节透明度等等等等。每种线条类型都可以分开调节样式,比如轮廓可以调成白色两像素粗、物体交线可以调成红色一像素粗半透明等。

下图是从保存的线条样式集中一键导入,相当于保存之前做过的工作,模型更新后还可以在原来的基础上再进行改动哦~~~~!

autoworkspace

下图是图层混合模式演示,还有一比一实时效果预览哦!!!!!

nprpreview

兼容Blender的基本材质颜色,同时还可以在LANPR中覆盖颜色选项,这样不满意的时候不需要重新改模型的颜色,直接在渲染器调节到满意为止就好!!!!

overrideMaterialColor

一键序列图层存储!!!!!!!再也不用手动分pass了,合成图像和分图层图像只需要一个按键就全部储存下来了!!!!!!!!

explorer_2017-10-26_21-24-54

Demo_2017-10-17_22-46-40

5.多线程!!!!!!!!!

Freestyle这个二货居然是单线程的,大场景会死人的。

但LANPR是多线程的(撒花!!!),加上图像空间优化算法,同样场景比Freestyle提升500%到5000%性能已经是事实!!!!!!

稀里哗啦的速度,看着就爽!!!!

add

频繁问到的问题

0001

Q:什么时候给大家用啊?A:顺利的话,LANPR可以在2018年2月左右放一个版本出来个大众试用。

Q:会开源吗?A:暂时不知道。

Q:放GitHub吗?A:到时候再说。

Q:能整合进Blender吗?A:代码行数不多,应该容易,但目前暂时没这么做。

Q:收费吗?上Steam吗?没钱怎么办?A:打66776677找张哥办贷款三。

Q:注册号是多少?A:……4008-823-823?

0002

关于小a:

  • 男的。
  • 西安交大今年大三学工业设计学渣一枚。
  • 患后天人脸识别障碍。
  • 不会画画。
  • 不要一天问我可不可以写一个什么功能我还要做作业!!!

0004

附录:为什么LANPR不会出现Freestyle那样的瑕疵

浮点精度

经过长时间实验,在几何结构上进行计算的方法,遇到瘦窄的三角形会出现精度不足的问题。而Freestyle只是在数学原理上实现了各种线条的标记和遮挡计算,对于不可能有无穷精度的计算机浮点数则没有多进行考虑。实际上,LANPR在很长一段时间之内还在使用32位浮点数作为所有数据的储存方式,最后证实是真的不够,改为64位之后要好很多,至少遭遇断线的情况时,它们的尺寸都远小于一个像素。

另外,由于对精度局限情况进行了更加精细的处理,LANPR已经可以保证在绝大多数情况下都能输出正确、准确的线条。

遮挡计算原理

与Freestyle不同,LANPR不精简几何图元,确保几何信息的准确,为了提升大数据量下的速度,特别设计了图像空间的加速算法,类似3D里常见的BVH系统,经测试,该算法使得大小场景都达到相同稳定的计算速度。

另外,LANPR允许进行OpenGL描边,对于线条质量要求不高但是几何图元数量过多的场合,使用这一算法能够以近乎实时的速度计算出最终结果。