【NPR】非真实感渲染实验室

时间:2021-10-16 08:46:02

写在前面

前几天在知乎看到一个问题——关于非实感图形学或者风格化渲染有哪些好的书或者paper,我刚好接触过一些就去里面回答了一下。答完以后突然想在Unity里搞一个这样的集锦,把一些简单的NPR论文或者教程在Unity里实现一下。于是这两天就做了一下。我把这个项目放到了GitHub(https://github.com/candycat1992/NPR_Lab)上,有兴趣的同学可以去看一下。

项目链接:https://github.com/candycat1992/NPR_Lab

实现了哪些NPR

就这两天的工作,我主要挑选的是关于卡通渲染一些最早的论文,例如1998年的A Non-Photorealistic Lighting Model for Automatic Technical Illustration,这篇是最早提出在卡通渲染使用色调来模拟插画风格的文章。由于Unity封装的太好了,一些论文中的效果我没有在Unity里做出来,等到Unity更新之后开放更多功能的时候我会更新。

这个项目不出意外的话我会一直更新的,如果大家一些希望看到的NPR效果可以跟我说,有时间的话我会尝试去实现。

每次更新项目,如果添加了新的渲染效果,我也会在项目的README里注明。例如,在我写这篇文章的时候,我一共实现了五个简单的NPR:

  • Antialiased Cel Shading

    Related Scene: AntialiasedCelShadingScene

    Reference: http://prideout.net/blog/?p=22

    【NPR】非真实感渲染实验室

  • Tone Based Shading

    Related Scene: ToneBasedShadingScene

    Reference: Gooch A, Gooch B, Shirley P, et al. A non-photorealistic lighting model for automatic technical illustration[C]//Proceedings of the 25th annual conference on Computer graphics and interactive techniques. ACM, 1998: 447-452.

    【NPR】非真实感渲染实验室

  • Stylized Highlights

    Related Scene: StylizedHighlightsScene

    Reference: Anjyo K, Hiramitsu K. Stylized highlights for cartoon rendering and animation[J]. Computer Graphics and Applications, IEEE, 2003, 23(4): 54-61.

    【NPR】非真实感渲染实验室

  • Pencil Sketch Shading

    Related Scene: PencilSketchShadingScene

    Reference: Lake A, Marshall C, Harris M, et al. Stylized rendering techniques for scalable real-time 3D animation[C]//Proceedings of the 1st international symposium on Non-photorealistic animation and rendering. ACM, 2000: 13-2

    【NPR】非真实感渲染实验室

  • Hatching

    Related Scene: HatchingScene

    Reference: Praun E, Hoppe H, Webb M, et al. Real-time hatching[C]//Proceedings of the 28th annual conference on Computer graphics and interactive techniques. ACM, 2001: 581.

    【NPR】非真实感渲染实验室

背后的原理

这些实验大部分都是参考了论文,少数是基于一些教程。它们大多数只使用到了shader。在项目的README里,我给出了每种效果参考的资料以及在项目中的场景名字。我本来打算每种效果都写一篇博文来讲一下原理,但最近在写书而且还有实验室方面的工作要做,时间没那么充裕,因此更新会慢。但就目前实现的几种效果来说,大家都可以从论文中找到实现原理,而且shader也都不复杂。

写在最后

这个项目也是纯属兴趣,如果大家有任何意见和建议欢迎给我留言。如果发现我的实现有误,也一定要告诉我。

最后,希望大家可以hava fun~