大作业选题参考 games101, 2020 年春季...

22
大作业选题参考 GAMES101, 2020 年春季 教授:闫令琪 计算机图形学与混合现实研讨会 GAMESGraphics And Mixed Environment Seminar 发布日期为北京时间 2020 4 14 (星期二) 晚上2359 选题截止至北京时间 2020 4 19 (星期日) 晚上2359 提交截止至北京时间 2020 5 3 (星期日) 晚上2359 注意: 任何更新或更正都将发布在论坛上,因此请偶尔检查一下。 论坛链接:http://games-cn.org/forums/forum/graphics-intro/你必须独立完成自己的作业。 你可以在论坛上发布帖子求助,但是发布问题之前,请仔细阅读本文档。 在截止时间之前将你的作业提交到 SmartChair 上。 1

Upload: others

Post on 17-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

  • 大作业选题参考GAMES101, 2020 年春季

    教授:闫令琪计算机图形学与混合现实研讨会

    GAMES:Graphics And Mixed Environment Seminar

    发布日期为北京时间 2020 年 4 月 14 日 (星期二) 晚上23:59

    选题截止至北京时间 2020 年 4 月 19 日 (星期日) 晚上23:59

    提交截止至北京时间 2020 年 5 月 3 日 (星期日) 晚上23:59

    注意:

    • 任何更新或更正都将发布在论坛上,因此请偶尔检查一下。

    • 论坛链接:http://games-cn.org/forums/forum/graphics-intro/。

    • 你必须独立完成自己的作业。

    • 你可以在论坛上发布帖子求助,但是发布问题之前,请仔细阅读本文档。

    • 在截止时间之前将你的作业提交到 SmartChair 上。

    1

    http://games-cn.org/forums/forum/graphics-intro/

  • 1 大作业描述

    本次大作业的完成时间共计三周,即从北京时间 2020 年 4 月 14 日 (星期二) 晚上 23:59至北京时间 2020 年 5 月 3 日 (星期日) 晚上 23:59。在本文档的后续部分,我们给出了一些大作业的参考选题,当然这些仅仅只是参考选

    题,我们非常鼓励你根据自己感兴趣的方向自主选题!要注意的是,如果你是自

    主选题的话,请在北京时间 2020 年 4 月 19 日 (星期日) 晚上 23:59 前在smartchair 平台上提交一份简短的关于你所选题目的描述,我们需要确认你所选题目与图形学的相关程度和难易程度,从而同意你的自主选题。因此,选题描述

    越早提交越好!

    对于我们提供的参考选题,我们同时进行了难度等级的估计。请注意,不同的

    难度等级之间差别并非特别明显(只有难度等级为 3.0 的项目会非常有挑战性)。另外,我们会参考不同的难度等级,期待你有不同的完成度。

    大作业要求提交代码、视频与文档。具体的要求、提交方式、评分标准等等

    将在课堂上另行通知。

    2

  • 2 选题参考

    2.1 作业拓展

    2.1.1 使用 Loop 细分的 Displacement 贴图 (难度等级: 2.0)

    在作业中,我们实现了 displacement 贴图以改变对象的几何形状并添加令人惊叹的表面细节。但是,为了捕获更加精细的细节,我们需要具有非常小且多的三

    角形网格。为了解决这个问题,我们可以使用动态的细分方法。根据 displacement贴图指定的信息,仅在需要时才将大的多边形细分。之后,将动态细分的网格发

    送到图形管道中。在此项目中,你可以在 CPU 中把需要细分的三角形使用 Loop细分,然后使用任何渲染方法将它显示出来,而不需要使用 GPU 编程。

    参考资料

    3

    https://developer.nvidia.com/gpugems/gpugems2/part-i-geometric-complexity/chapter-7-adaptive-tessellation-subdivision-surfaces

  • 2.1.2 网格简化及重新网格化 (难度等级: 1.5)

    有时,三角形网格中的三角形数量远远超过所需要的,从而浪费了存储空间,

    并且会花费很多的计算时间。为了解决这个问题,我们可以简化网格,在其中找

    到可以使用较少三角形的区域,然后相应地简化这些区域。另外,还可以找到同

    一表面更好的离散表示。将网格转换为更好的表示形式称为重新网格化。注意这

    里由于单一方法实现难度较低,我们要求你实现网格简化与重新网络化两种方法。

    两种方法不要求同时应用。

    4

  • 2.1.3 多重重要性采样 (难度等级: 2.0)

    课程中提到我们可以对光源采样,也可以对 BSDF 采样,那么两种方法怎样才能结合起来?另外结合两种方法又有什么优势?你可以探索多重重要性采样的

    方法,当渲染表面的粗糙度较低时,更多依赖于对 BSDF 的采样,而当光源较小时,更多依赖于对光源的采样。注意这里要求你先了解并实现对 BSDF 的重要性采样,再考虑多重重要性采样。

    参考资料

    5

    http://www.pbr-book.org/3ed-2018/Monte_Carlo_Integration/Importance_Sampling.html##MultipleImportanceSampling

  • 2.1.4 支持光场相机 (难度等级: 1.5)

    光线追踪场景时,我们使用针孔照相机或薄透镜模型。我们可以扩展它以模

    拟光场相机的效果——原来的每个像素现在变成一个网格,记录来自不同方向的

    radiance。使用此网格,即使场景已经渲染完成,我们也可以对场景进行实时的重新聚焦,而不需要重新发射光线。你可以渲染一些光场图像,并实现一个漂亮的

    GUI 来展示你的结果!

    6

  • 2.1.5 屏幕空间的环境光遮蔽 (难度等级: 2.0)

    在作业中我们已经实现过了 Phong 光照模型。你可能还记得,环境项是一个常数,这看起来并不怎么有趣。

    环境光遮蔽 (AO) 是增加环境项真实感的一种方法。(某些高级的方法甚至可以伪造全局光照!) 从理论上讲,“环境光遮挡”会在半球上均匀地发射阴影光线,以查看在一定距离内有多少光线被遮挡。但是,屏幕空间环境光遮蔽 (SSAO) 可以仅在图像平面上对此进行近似,达到实时效果,该技术广泛用于游戏中!如果你

    选做本项目,我们要求你在 GPU上使用着色器完成此工作,你可以使用 OpenGL/ DirectX / Vulkan,当然也可以直接用我们课上提到的 ShaderToy,甚至可以使用 Unity / Unreal 引擎来完成!

    7

  • 2.1.6 布料模拟及布料材质的渲染 (难度等级: 2.0)

    你可以扩展我们的绳子模拟小作业,仍使用质点弹簧系统,但让它能够支持

    布料的模拟。

    对于布料的渲染我们知道,布料可以通过三种方式进行渲染: 作为实际的纤维,作为参与的介质和作为表面。在这里,我们建议你使用一个非常简单的表面

    模型来渲染布料。

    同样,由于单个任务过于简单,我们要求你在此项目中同时完成模拟与渲染

    这两部分任务。

    8

    http://graphics.ucsd.edu/~henrik/papers/practical_microcylinder_appearance_model_for_cloth_rendering.pdfhttp://graphics.ucsd.edu/~henrik/papers/practical_microcylinder_appearance_model_for_cloth_rendering.pdf

  • 2.2 渲染

    2.2.1 体积散射 (难度等级: 2.0)

    在作业中,你实现了对表面渲染,其中假定光线仅在撞击表面时才散射。在

    这种情况下,渲染方程式是场景中所有表面的积分。但是,这种表面渲染技术无

    法渲染一些体积散射效果,例如上面显示的雾。

    要对体积散射建模,你需要计算场景中所有体积和所有表面的积分。你可以

    通过修改路径追踪器来做到这一点。主要区别在于,射线在撞击任何体积的表面

    之前可能会发生散射。你可以阅读以下两篇文章。

    Wojciech Jarosz的这一章介绍了有关体积散射的一些基本概念。Lafortune和Willems 撰写的这篇论文中有实现细节。你可以跳过本文的第 4 节,以获得简单的路径追踪实现。

    9

    https://www.cs.dartmouth.edu/~wjarosz/publications/dissertation/chapter4.pdfhttp://luthuli.cs.uiuc.edu/~daf/courses/rendering/papers/lafortune96rendering.pdfhttp://luthuli.cs.uiuc.edu/~daf/courses/rendering/papers/lafortune96rendering.pdf

  • 2.2.2 渐进式光子映射 (难度等级: 2.5)

    你可能已经注意到,路径追踪渲染器在渲染 caustics 效果时效率很低。为了改善这一点,你可以实现一种称为光子映射 (photon mapping) 的技术。光子映射在 caustics 上更有效,因为它允许路径样本在像素之间共享。光子映射的核心部分是一个能在场景中的某个点的邻域内查找光子的结构。可供选择的结构包括

    KD-tree 和哈希网格。PBRT 中的第 16.2 章是一个很好的参考。但是,光子映射是一种有偏的方法!直观地讲,由于阴影点使用的是其附近

    的光子,因此阴影效果总是模糊的。你需要查阅有关渐进式光子映射的文章以进

    行改进。

    10

    http://www.pbr-book.org/3ed-2018/Light_Transport_III_Bidirectional_Methods/Stochastic_Progressive_Photon_Mapping.htmlhttps://www.ci.i.u-tokyo.ac.jp/~hachisuka/ppm.pdf

  • 2.2.3 次表面散射 (难度等级: 2.0-2.5)

    这是一篇 2001 年使用了 dipole approximation的开创性的论文。较新的方法对此进行了很大的改进,但这是一个很好的起点。这有很多复杂的数学运算,但

    是一旦你理解了它要做什么,它的实现会比较简单。此外,这篇论文的内容非常

    偏理论,所以我们建议你自行搜索实现相关的文章与教程,而不是直接参考这篇

    论文的内容。

    11

    https://graphics.stanford.edu/papers/bssrdf/bssrdf.pdf

  • 2.2.4 头发渲染 (难度等级: 2.5)

    你可以查阅Marschner等人的论文。此外,这篇论文也是一个不错的参考。如果你打算实现头发的效果,你将会面临一个难题,光线与头发曲线的相交。因此,

    我们建议你使用已经实现了光线-头发相交的 Mitsuba(0.5.0) 渲染器。如果你想挑战自我,也欢迎你实现闫令琪老师的高级毛发反射模型(难度等

    级:3.0)。

    12

    https://www.cs.cornell.edu/~srm/publications/SG03-hair-abstract.htmlhttp://www.eugenedeon.com/project/an-energy-conserving-hair-reflectance-model/https://sites.cs.ucsb.edu/~lingqi/publications/paper_fur2.pdf

  • 2.2.5 渲染复杂表面的闪光 (Glints) 效果 (难度等级: 3.0)

    你也可以将纹理添加到路径追踪器中!之后,你可以扩展微表面模型以支持

    闪光效果!请查阅闫令琪老师的这两篇论文 (论文一和论文二),使用高分辨率法线贴图来实现闪光效果。你也可以在没有法线贴图的情况下实现随机闪光模型。

    这里推荐一篇微分光线的论文 (在主光线旁边追踪稍微偏移的光线,使你可以计算一个像素在物体表面上覆盖的范围)。

    13

    https://sites.cs.ucsb.edu/~lingqi/publications/paper_glints.pdfhttps://sites.cs.ucsb.edu/~lingqi/publications/paper_glints2.pdfhttps://research.cs.cornell.edu/stochastic-sg14/stochastic.pdfhttps://graphics.stanford.edu/papers/trd/trd.pdf

  • 2.3 动画

    2.3.1 基于二维网格的流体动力学仿真 (难度等级:2.0)

    编写一个二维的流体动力学模拟程序,以估算Navier-Stokes 方程下不可压缩的均匀流体的行为。

    14

    http://games-cn.org/wp-content/uploads/2020/04/Navier_Stokes_equations.pdf

  • 2.3.2 基于 3D 位置的流体模拟 (难度等级:2.5)

    ∇pkCi =1

    ρ0

    ∑j

    ∇pkW (pi − pj, h) if k = i

    −∇pkW (pi − pj, h) if k = j(1)

    3D流体模拟可能听起来很吓人,但请不用担心。本文介绍了一种相当简单的流体模拟算法,将其作为多个球形粒子。从模拟的粒子中,你可以构建表面并将

    其渲染为真实的水!

    15

    http://games-cn.org/wp-content/uploads/2020/04/pbf_sig_preprint.pdf

  • 2.3.3 3D 雪景模拟 (难度等级:3.0)

    降雪是一种具有视觉挑战性的自然现象。本文介绍了一种基于粒子和网格的

    混合方法(物质点方法),用于各种参数的积雪模拟。

    16

    http://games-cn.org/wp-content/uploads/2020/04/siggraph2013_snow.pdf

  • 2.3.4 3D 熔化模拟 (难度等级:3.0)

    想要新颖的方法来摧毁兔子吗?本文教你如何融化它。

    17

    http://games-cn.org/wp-content/uploads/2020/04/siggraph2014_melt.pdf

  • 2.3.5 刚体模拟 (难度等级:2.5)

    除了流体之外,我们还可以使用粒子来模拟刚体。这是一篇描述刚体动力学

    基础的论文。刚体仿真可以在 GPU 上实时完成,NVidia 的 GPU Gems 上有一篇很好的文章介绍了如何做到这一点。

    18

    http://games-cn.org/wp-content/uploads/2020/04/notesd1.pdfhttps://developer.nvidia.com/gpugems/gpugems3/part-v-physics-simulation/chapter-29-real-time-rigid-body-simulation-gpus

  • 2.4 其他

    2.4.1 使用 NVIDIA OptiX 的 GPU 路径跟踪器 (难度等级:1.5)

    NVIDIA OptiX是在 CUDA之上构建的一组很酷的 API,可以进行 GPU光线追踪。它本身支持高效的 BVH 构造和光线与三角形相交。即使你使用的并不是 RTX 系列的的 GPU,你仍然可以期望运行速度提高 5 到 10 倍!

    在此项目中,你将会使用 OptiX 在 GPU 上编写路径追踪器。由于 OptiX 自己已经有基本的路径追踪实现,因此在达到作业 7 的效果基础上,我们还要求你实现最简单的 Cook-Torrance 微表面模型与环境光照。

    19

  • 2.4.2 用两个三角形渲染世界 (难度等级:2.5)

    你需要多少个三角形来表示此场景并进行渲染?仅仅只需两个!本文将教你

    如何使用距离场表示几何图形,以及如何在片段着色器中实时渲染它们!注意,此

    项目要求你使用 GPU的着色器,同样,你可以使用 OpenGL / DirectX / Vulkan,也可以直接使用 ShaderToy 来完成。

    20

    http://games-cn.org/wp-content/uploads/2020/04/rwwtt.pdf

  • 2.4.3 用点云来构建网格 (难度等级:2.0)

    该项目构想的目标是将通常由 3D 扫描仪获得的点云输入数据转换为网格表示。本文介绍了一种有趣且易于理解的算法,该算法运行良好。如果你想要更多

    挑战,则可以尝试实现本文。为了测试实现,你可以从该存储库中找到一些 3D网格模型。然后,你可以在输入模型的顶点上运行网格重建算法。重建网格后,可

    以轻松将其与模型中的原始网格进行比较。

    21

    http://games-cn.org/wp-content/uploads/2020/04/The_Ball-Pivoting_Algorithm_for_Surface_Reconstruc.pdfhttp://games-cn.org/wp-content/uploads/2020/04/poissonrecon.pdfhttp://graphics.stanford.edu/data/3Dscanrep/

  • 3 提交

    • 首先请清理你的项目,并提交你的代码;

    • 同时,请添加一个 README.md 文件,写清楚自己完成的项目是什么,并简述是如何实现的;

    • 再请附上一些结果图片与演示视频,并在 README.md 中附上视频的链接 (百度云等);

    • 最后,将上述内容打包,并用“姓名 Final Project.zip”的命名方式提交到 SmartChair 平台。

    22

    大作业描述选题参考作业拓展使用Loop细分的Displacement贴图(难度等级: 2.0)网格简化及重新网格化(难度等级: 1.5)多重重要性采样(难度等级: 2.0)支持光场相机(难度等级: 1.5)屏幕空间的环境光遮蔽(难度等级: 2.0)布料模拟及布料材质的渲染(难度等级: 2.0)

    渲染体积散射(难度等级: 2.0)渐进式光子映射(难度等级: 2.5)次表面散射(难度等级: 2.0-2.5)头发渲染(难度等级: 2.5)渲染复杂表面的闪光(Glints)效果(难度等级: 3.0)

    动画基于二维网格的流体动力学仿真(难度等级:2.0)基于3D位置的流体模拟(难度等级:2.5)3D雪景模拟(难度等级:3.0)3D熔化模拟(难度等级:3.0)刚体模拟(难度等级:2.5)

    其他使用NVIDIA OptiX的GPU路径跟踪器(难度等级:1.5)用两个三角形渲染世界(难度等级:2.5)用点云来构建网格(难度等级:2.0)

    提交