阅读论文摘要02

阅读论文工作,整理每篇读过文献后进行摘要,方便之后查询。

LOD需要对三角网格进行减面操作处理,如何在进行减边操作的同时保证网格本身的其它信息(法向、色彩、纹理)仍保持连续是问题所在,本文给出了一种解决上述问题的方法。

方法概述

减边的方法实际的做法是将一条边的两个顶点合并成同一个顶点,从而实现减边的目的。在这个过程中有两个问题需要考虑:

  • 合并的新顶点应该取哪个位置?
  • 减边的先后顺序怎么确定?

这两个问题通过计算一个关于边向量 $\mathbf{v}$ 的矩阵 $C(\mathbf{v})$ 来解决:通过最小化 $C(\mathbf{v})$ 的值来获得合并后新顶点的信息,并通过对不同边的 $C(\mathbf{v})$ 进行排序来决定减边顺序。

通过计算一个误差量(Quadric Error Metric, QEM)来进行上面的要求,它像是一个范数,这篇文章中给了一种新的

2. InstaLOD Pipeline

Polygon Optimization 多边形优化

减少网格多边形数量直到网格满足目标要求

减面过程中维持顶点属性(法线、纹理坐标、颜色等)

Remeshing 重新网格化

利用输入网格作为草图,构建新网格。

这样做可以创建一个映射,使原有网格的着色映射到新网格,但是网格尺寸 由数十万个多边形减少到几千

借助自动遮挡几何(Automatic Occlusion Geometry)或忽略背面(Ignore Backfaces)等功能,甚至可以对非流形输入网格进行重新网格划分,而 无需生成内部面 。此外,InstaLOD还可以通过设定一个模糊目标面数(fuzzy face count),根据重新网格划分分辨率、输入网格面数、输入网格复杂性及其边界框大小选择适当的目标面数。

Game-Ready 重新网格化

该工作流程借助重新网格化将高精度模型转化为“Game-Ready”游戏道具资产,可以在模型质量上作出小的牺牲,从而换取在游戏中的效率提升,节省开发时间。

这个工作流程中最重要的一点在于 纹理贴图的输出 。“Game-Ready” 配置文件会在重新网格化的过程中自动生成所有的纹理贴图,包括切线空间法向量、对象空间法向量、位置、厚度、曲率、环境光遮蔽、MeshID

Imposters

Impostors 是面对镜头的四边形, 或简单多边形形状,通过为原始对象渲染假 3D 图像来取代复杂几何体。

InstaLOD可以创建各种不同的Imposter:

  • AABB
    • AABB(Axis Aligned Bounding Box)Imposter 会在所选对象的边界创建billboards,它们全都是在轴向上创建的,这种Imposter在处理盒装物体(树篱或者建筑物)的时候非常有用
  • Flip-book
    • Flip-book imposter仅由一个billboard构成,通过绕轴点旋转使其始终面向摄影机的位置。根据摄影机和billboard的相对位置,UV空间也会调整到相应纹理,直到物体的纹理图块与当前方向对齐位置,这样仅仅通过一个billboard就可以实现给人3d物体的错觉
  • Billboard
    • 经典的一种Imposter,适用于不会近距离观察或者旋转观察的远处物体
  • (Hybrid) Billboard Cloud
    • 这种Imposter即便靠近旋转观察,也能产生逼真的视错觉
    • 它通过在一个空间中创建点云后,在各点上生成独立的billboard imposter
    • 可以通过调整”Hybrid Mesh Face Factor”来调整转化成billboard cloud部分和保留原始几何结构部分的比例
  • Imposters using custom geometry
    • 自定义billboard的几何形状

Merging Mesh Materials (这部分的覆盖率没看懂)

准备角色模型和环境模型时往往都会通过模块化的不见或者被称为”kit-bashing”的过程进行构建,这样既可以创造大量多样化都资产,也缩短了生产时间。但是这类技术的弊端之一是这样的组合网格通常需要多个材质纹理,从而导致单个对象的绘制调用计数增加。因此,生产时间的改进会影响渲染性能。

借助InstaLOD中将所有材料纹理融合到一张输出纹理上,这种问题可以被漂亮地优化。通过调整参数还可以修改不同的参数

  • Visual weight 以低分辨率对场景进行快速光线追踪,以确定可见材料到像素的覆盖范围。
  • Texture weight 通过纹理尺寸生成的权重。
  • World-space geometry weight 通过确定世界空间单位中的材料覆盖率生成的权重。
  • UV weight 通过确定UV空间中的材料覆盖率生成的权重。

高质量固化、超采样和对 UV 包围盒旋转约束的完全控制可确保在所有情况下都能实现最佳模式质量,因此InstaLOD可以处理面数多、纹理大的高模。

Occlusion Culling

GPU Gems: Efficient Occlusion Culling介绍了有关这遮挡剔除的算法与实例

InstaLOD 具有高精度遮挡剔除功能,使用内部开发的多线程光线追踪器。通过使用存储在输入文件中的一个或多个摄像机将场景光线追踪到预先配置的分辨率来确定可见面部。

被遮挡的几何体可以通过 InstaLOD 直接删除,也可以写入顶点颜色以用于进一步处理网格。为了避免删除大型几何体的单个面,InstaLOD 支持在每个子网格的基础上删除几何体。当基于每个子网格进行剔除时,如果可见面少于指定数量,则整个子网格将被删除。此外,InstaLOD 支持自动删除内部面作为零配置解决方案。

InstaLOD提供多种遮挡剔除方案:

  • Automatic Interior Culling:零配置的遮挡剔除方案
  • Camera-Based Occlusion Culling:基于输入文件中的摄影机信息进行遮挡剔除
  • Visibility-Based Mesh Optimization:结合遮挡剔除和网格优化可以实现基于可见性的网格优化。这是确保优化器选择在删除可见面之前优先删除被遮挡面的好方法。

UV operations

Baking

Materials

3. GPU Gems 阅读笔记

Chapter 29. Efficient Occlusion Culling 高效的遮挡剔除

通过不去渲染视椎体外或被阻挡的几何体,提升渲染表现

常见的两种遮挡剔除分别被称为occlusion query(遮挡查询)和early-z rejection。

  • Occlusion Query:在硬件上已经被应用了,通过GPU上执行查询,跳过被遮挡对象的整个渲染过程,从而减少GPU上的渲染负载。
  • Early-Z Rejection:在渲染过程的光栅化阶段,early-z 将要渲染的片段的深度值与当前存储在 z 缓冲区中的值进行比较。当片元因为深度测试失败而不可见时就会在获取片元纹理、执行片元着色程序之前发生拒绝,这样做实现了内存带宽在片元级别被节约。

Occlusion Query 和 Early-Z Rejection的显著区别在于,Occlusion Query是在几何级别拒绝多边形渲染,而early-z是光栅化水平的。因此利用Occlusion Query进行遮挡剔除需要更多应用程序级别的控制。