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

写在前面

前几天在知乎看到一个问题——关于非实感图形学或者风格化渲染有哪些好的书或者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

  • 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.

  • 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.

  • 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

  • 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.

背后的原理

这些实验大部分都是參考了论文。少数是基于一些教程。

它们大多数仅仅使用到了shader。在项目的README里。我给出了每种效果參考的资料以及在项目中的场景名字。我本来打算每种效果都写一篇博文来讲一下原理,但近期在写书并且还有实验室方面的工作要做,时间没那么充裕,因此更新会慢。但就眼下实现的几种效果来说。大家都能够从论文中找到实现原理,并且shader也都不复杂。

写在最后

这个项目也是纯属兴趣,假设大家有不论什么意见和建议欢迎给我留言。假设发现我的实现有误。也一定要告诉我。

最后,希望大家能够hava fun~

时间: 2024-10-18 02:18:33

【NPR】非真实感渲染实验室的相关文章

12.1、Libgdx的图像之持续性和非持续性渲染

(官网:www.libgdx.cn) Libgdx在默认情况下,渲染现成调用render()方法进行持续性渲染.频率取决于你的硬件设备. 有时候有些游戏中并不需要持续性的渲染,为了省电,可以关掉持续性渲染. 只需要在create()方法中执行如下语句: Gdx.graphics.setContinuousRendering(false); Gdx.graphics.requestRendering(); 第一句告诉游戏自动关闭render()方法.第二句触发render()方法一次. 如果持续性

【NPR】漫谈轮廓线的渲染

写在前面 好久没写文章.最近在看<Real Time Rendering, third edition>这本书,看到了NPR这一章就想顺便记录下一些常见的轮廓线渲染的方法. 在非真实感渲染中,对轮廓线的渲染是一个应用非常广泛的手法.根据<Real Time Rendering, third edition>一书的总结,在这篇文章里介绍几种常见的渲染方法.当然,这里只是抛砖引玉,如果要用于实际项目中可能会根据需要进行完善.一些很好的效果可能需要去参考一些论文,这里不涉及那么深. Su

Unity Shader 卡通渲染 基于退化四边形的实时描边

一.边缘检测算法 3D模型描边有两种方式,一种是基于图像,即在所有3D模型渲染完成一张图片后,对这张图片进行边缘检测,最后得出描边效果.一种是基于空间,即针对3D模型的三角面三个顶点构成的线条做边缘检测(注:和基于图像的边缘检测的检测方式是不同的,但都叫边缘检测).在本文中使用的是基于空间的3D模型的描边. 空间的3D模型的描边的边是有类型的,大致总结有4种:轮廓边.边界边.折缝边.材质边.其中前3种是本文认为卡通渲染所必须有的. 图1 空间中的边分类 来自文献[1] 轮廓边的检测根据定义就是,

【我的书】Unity Shader的书 — 目录(2016.1.29更新)

写在前面 感谢所有点进来看的朋友.没错,我目前打算写一本关于Unity Shader的书. 出书的目的有下面几个: 总结我接触Unity Shader以来的历程,给其他人一个借鉴.我非常明白学Shader的艰难,在群里也见了很多人提出的问题.我觉得学习Shader还是一件有规律可循的事情,但问题是中文资料难觅,而大家又不愿意去看英文...这对我有什么好处呢?强迫我对知识进行梳理,对细节问题把握更清楚. 第二个原因你懂的. 关于本书的定位问题: 面向Unity Shader初学者,但要: 有一定的

【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)

写在前面 感谢全部点进来看的朋友.没错.我眼下打算写一本关于Unity Shader的书. 出书的目的有以下几个: 总结我接触Unity Shader以来的历程,给其它人一个借鉴.我非常明确学Shader的艰难,在群里也见了非常多人提出的问题. 我认为学习Shader还是一件有规律可循的事情,但问题是中文资料难觅,而大家又不愿意去看英文...这对我有什么优点呢?强迫我对知识进行梳理,对细节问题把握更清楚. 第二个原因你懂的. 关于本书的定位问题: 面向Unity Shader刚開始学习的人,但要

【《Real-Time Rendering 3rd》 提炼总结】(一) 全书知识点总览

本文由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://blog.csdn.net/poem_qianmo/article/details/69849858 一.<Real-Time Rendering 3rd>其书 在实时渲染和计算机图形学领域,<Real-Time Rendering 3rd>这本书一直备受推崇.有人说,它实时渲染的圣经.也有人说,它是绝世武功的目录. 诚然,<Real-Time Rendering 3rd>这本书的世界观架构宏大,

光线投射算法与光线跟踪算法

原文:http://blog.csdn.net/changbaolong/article/details/8461704 光线跟踪计算机算法的一般描述 为了生成在三维计算机图形环境中的可见图像,光线跟踪是一个比光线投射或者扫描线渲染更加逼真的实现方法.这种方法通过逆向跟踪与假象的照相机镜头相交的光路进行工作,由于大量的类似光线横穿场景,所以从照相机角度看到的场景可见信息以及软件特定的光照条件,就可以构建起来.当光线与场景中的物体或者媒介相交的时候计算光线的反射.折射以及吸收. 光线跟踪的场景经常

OpenCV 3 最新模块一次看个够

OpenCV 3 的改动在哪? C 风格的API很快将会消失,完全被C++的API替代,代码更加简洁.不易出错.读者如果想借助opencv最新的功能,记得清理代码中的C风格API. C++ API 将更加简洁. 所有的算法都将继承自 cv::Algorithm 接口. 大型的模块将拆分为小模块,模块将在后面继续讲解. OpenCV 3 有这么多文件夹,从何入手? 3rdparty/,包含第三方的库,比如视频解码用的 ffmpeg,jpg.png.tiff等图片的开源解码库. apps/,包含进行

【我的书】Unity Shader的书 — 目录(2015.09.04更新)

写在前面 感谢所有点进来看的朋友.没错,我目前打算写一本关于Unity Shader的书. 出书的目的有下面几个: 总结我接触Unity Shader以来的历程,给其他人一个借鉴.我非常明白学Shader的艰难,在群里也见了很多人提出的问题.我觉得学习Shader还是一件有规律可循的事情,但问题是中文资料难觅,而大家又不愿意去看英文...这对我有什么好处呢?强迫我对知识进行梳理,对细节问题把握更清楚. 第二个原因你懂的. 关于本书的定位问题: 面向Unity Shader初学者,但要: 有一定的