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

2015年08月28日 13:53 0 点赞 0 评论 更新于 2025-11-21 18:53

作者:candycat1992 原文地址http://blog.csdn.net/candycat1992/article/details/47284289 泰斗原文地址http://www.taidous.com/forum.php?mod=viewthread&tid=32207 项目链接https://github.com/candycat1992/NPR_Lab

写在前面

前几天在知乎上看到一个问题:关于非真实感图形学或者风格化渲染有哪些好的书籍或论文?由于我刚好接触过相关内容,便在问题下进行了回答。回答完之后,我突然萌生了一个想法,想在Unity里创建一个集锦,将一些简单的NPR(Non-Photorealistic Rendering,非真实感渲染)论文或教程在Unity中实现。于是,这两天我便着手开展了这项工作,并将该项目上传到了GitHub(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)
  • 相关场景:AntialiasedCelShadingScene
  • 参考资料http://prideout.net/blog/?p=22
  • 基于色调的着色(Tone Based Shading)
  • 相关场景:ToneBasedShadingScene
  • 参考资料: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.
  • 风格化高光(Stylized Highlights)
  • 相关场景:StylizedHighlightsScene
  • 参考资料:Anjyo K, Hiramitsu K. Stylized highlights for cartoon rendering and animation[J]. Computer Graphics and Applications, IEEE, 2003, 23(4): 54 - 61.
  • 铅笔素描着色(Pencil Sketch Shading)
  • 相关场景:PencilSketchShadingScene
  • 参考资料: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
  • 排线渲染(Hatching)
  • 相关场景:HatchingScene
  • 参考资料: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.

背后的原理

这些实验大部分参考了论文,少数基于教程,且大多数仅使用了shader。在项目的README中,我提供了每种效果的参考资料以及在项目中的场景名称。原本我打算为每种效果撰写一篇博文详细讲解其原理,但由于近期我正在写书,同时还有实验室的工作需要处理,时间较为紧张,因此更新速度会较慢。不过,就目前实现的几种效果而言,大家可以从对应的论文中找到实现原理,并且这些shader并不复杂。

写在最后

这个项目纯粹是出于个人兴趣而开展的。如果大家有任何意见或建议,欢迎留言。若发现我的实现存在错误,也请务必告知。最后,希望大家能在这个项目中获得乐趣!

作者信息

洞悉

洞悉

共发布了 3994 篇文章