第四章终于结束了……接下来会休息一段时间,祝各位五一劳动节快乐!
……
想了想还是不休息了,继续继续!!
实时渲染(第四版)Real-Time Rendering (Fourth Edition)
第4章 变换 Chapter 4 Transforms
4.5 变形 Morphing
在执行动画时,从一个三维模型变形到另一个三维模型可能会很有用 [28、883、1000、1005]。想象一下,一个模型在时间 显示,我们希望它在时间
变成另一个模型。对于介于
和
之间的所有时间,都使用某种插值获得了连续的“混合”模型。变形的一个例子如图 4.14 所示。
变形(Morphing)涉及解决两个主要问题,即顶点对应问题(the vertex correspondence problem)和插值问题(the interpolation problem)。给定两个任意模型,这些模型可能具有不同的拓扑(topologies),不同的顶点数量和不同的网格连接性,通常必须从建立这些顶点对应关系开始。这是一个困难的问题,并且在该领域已经进行了很多研究。我们推荐感兴趣的读者阅读 Alexa 的调查 [28]。
但是,如果两个模型之间已经存在一对一的顶点对应关系,则可以在每个顶点的基础上进行插值。也就是说,对于第一个模型中的每个顶点,在第二个模型中必须仅存在一个顶点,反之亦然。这使插值变得容易。例如,线性插值可以直接在顶点上使用(其他进行插值的方法请参见第 17.1 节)。
图4.14。顶点变形。为每个顶点定义了两个位置和法线。在每个帧中,中间位置和法线由顶点着色器线性插值。(图片由NVIDIA Corporation提供。)
为了计算时间 的变形顶点,我们首先计算
,然后进行线性顶点混合,
其中 和
对应于同一顶点,但是在不同的时间,
和
。
用户具有更直观控制的变形变体称为变形目标(morph targets)或混合形状(blend shapes) [907]。基本思想可以使用图 4.15 进行解释。
图4.15。在给定两个嘴部姿势的情况下,将计算一组差异向量以控制插值甚至外推。在变形目标中,差异向量用于将运动“添加”到中性面上。对于差异向量使用正权重,会露出笑容,而负权重会产生相反的效果。
我们从一个中性模型开始,在这种情况下,它是一张脸。让我们用 表示该模型。此外,我们还有一组不同的脸部姿势。在示例中只有一个姿势,即一张笑脸。通常我们可以允许
个不同的姿势,表示为
。作为预处理,“差异面”的计算公式为:
,即,从每个姿势中减去中性模型。
在这一点上,我们有一个中性模型 和一组差异姿势
。然后可以使用以下公式获得变形模型 M:
这是中性模型,最重要的是,我们使用权重 添加所需的不同姿势的特征。对于图 4.15,设置
可使我们恰好位于插图中间。使用
给我们一个半张微笑的脸,依此类推。你可以使用负权重,也可以使用大于 1 的权重。
对于这个简单的脸部模型,我们可以添加另一只眉毛“悲伤”的脸。负重的眉毛会产生“快乐”的眉毛。由于位移是累加的,因此该眉毛姿势可与笑脸姿势一起使用。
变形目标(Morph targets)是一种强大的技术,可为动画师提供很多控制,因为模型的不同特征可以独立于其他特征进行操纵。Lewis 等。[1037] 引入了姿势空间变形,它结合了顶点融合和顶点变形目标。Senior [1608]使用预先计算的顶点纹理来存储和检索目标姿势之间的位移。支持流输出的硬件和每个顶点的 ID 允许在单个模型中使用更多目标,并且可以在GPU上专门计算效果[841,1074]。使用低分辨率网格,然后通过细分阶段和位移映射生成高分辨率网格,可以避免在高度详细的模型中为每个顶点蒙皮的成本 [1971]。
图 4.16。角色 Delsin 在《声名狼藉:私生子(inFAMOUS:Second Son)》中的脸部使用混合形状进行了动画处理。所有这些拍摄都使用相同的静止姿势面孔,然后修改不同的权重以使面孔看起来有所不同。(图像由 Naughty Dog LLC 提供。inFAMOUS Second son c 2014 Sony Interactive EntertainmentLLC。inFAMOUS Second Son 是 Sony Interactive Entertainment LLC 的商标。由 Sucker Punch Productions LLC开发。)
图 4.16 显示了同时使用蒙皮和变形的真实示例。Weronko 和 Andreason [1872]在《 教团 : 1886 (The Order : 1886)》中使用了蒙皮和变形。
引用:
[28] Alexa, Marc, “Recent Advances in Mesh Morphing,” Computer Graphics Forum, vol. 21, no. 2, pp. 173–197, 2002. Cited on p. 87, 88, 102
[883] Kent, James R., Wayne E. Carlson, and Richard E. Parent, “Shape Transformation for Polyhedral Objects,” Computer Graphics (SIGGRAPH ’92 Proceedings), vol. 26, no. 2, pp. 47–54, 1992. Cited on p. 87
[1000] Lazarus, F., and A. Verroust, “Three-Dimensional Metamorphosis: A Survey,” The Visual Computer, vol. 14, no. 8, pp. 373–389, 1998. Cited on p. 87, 102
[1005] Lee, Aaron W. F., David Dobkin, Wim Sweldens, and Peter Schr¨oder, “Multiresolution mesh morphing,” in SIGGRAPH ’99: Proceedings of the 26th Annual Conference on Computer Graphics and Interactive Techniques, ACM Press/Addison-Wesley Publishing Co., pp. 343– 350, 1999. Cited on p. 87
[28] Alexa, Marc, “Recent Advances in Mesh Morphing,” Computer Graphics Forum, vol. 21, no. 2, pp. 173–197, 2002. Cited on p. 87, 88, 102
[907] Kleinhuis, Christian, “Morph Target Animation Using DirectX,” in Wolfgang Engel, ed., ShaderX4, Charles River Media, pp. 39–45, 2005. Cited on p. 89
[1037] Lewis, J. P., Matt Cordner, and Nickson Fong, “Pose Space Deformation: A Unified Approach to Shape Interpolation and Skeleton-Driven Deformation,” in SIGGRAPH ’00: Proceedings of the 27th Annual Conference on Computer Graphics and Interactive Techniques, ACM Press/Addison-Wesley Publishing Co., pp. 165–172, July 2000. Cited on p. 84, 87, 90, 102
[1608] Senior, Andrew, “Facial Animation for Mobile GPUs,” in Wolfgang Engel, ed., ShaderX7, Charles River Media, pp. 561–570, 2009. Cited on p. 90
[841] Jones, James L., “Efficient Morph Target Animation Using OpenGL ES 3.0,” in Wolfgang Engel, ed., GPU Pro5 , CRC Press, pp. 289–295, 2014. Cited on p. 90
[1074] Lorach, Tristan, “DirectX 10 Blend Shapes: Breaking the Limits,” in Hubert Nguyen, ed., GPU Gems 3, Addison-Wesley, pp. 53–67, 2007. Cited on p. 90
[1971] Zink, Jason, Matt Pettineo, and Jack Hoxley, Practical Rendering & Computation with Direct3D 11, CRC Press, 2011. Cited on p. 47, 54, 90, 518, 519, 520, 568, 795, 813, 814, 914
[1872] Weronko, S., and S. Andreason, “Real-Time Transformations in The Order 1886,” in ACM SIGGRAPH 2015 Talks, ACM, article no. 8, Aug. 2015. Cited on p. 91
4.6 几何缓存回放 Geometry Cache Playback
在剪辑场景(cut scenes)中,可能希望使用极高质量的动画,例如,对于无法使用上述任何方法表示的运动。天真的方法是存储所有帧的所有顶点,从磁盘读取它们并更新网格。但是,对于短动画中使用的 30,000 个顶点的简单模型,这可能达到50 MB / s。Gneiting [545] 提出了几种将内存成本降低到大约10%的方法。
首先,使用量化(quantization)。例如,位置和纹理坐标使用每个坐标的 16 位整数存储。在执行压缩后无法恢复原始数据的意义上,这一步骤是有损的。为了进一步减少数据,进行了空间和时间预测,并对差异进行了编码。对于空间压缩,可以使用平行四边形预测 [800]。对于三角形带(triangle strip),下一个顶点的预测位置就是当前三角形在边缘周围的三角形平面中反射的三角形,从而形成平行四边形(parallelogram)。与新位置的差异接下来会被编码(encoded)。有了良好的预测,大多数值将接近零,这对于许多常用的压缩方案是十分理想的。与 MPEG 压缩类似,在时间维度上也会进行预测。也就是说,每 帧执行一次空间压缩。在这两者之间,将在时间维度上进行预测,例如,如果某个特定顶点通过增量向量从帧
移动到帧
,则很可能以与帧
相似的量移动。这些技术减少了存储量,从而足以使该系统用于实时流数据。
引用:
[545] Gneiting, A., “Real-Time Geometry Caches,” in ACM SIGGRAPH 2014 Talks, ACM, article no. 49, Aug. 2014. Cited on p. 92
[800] Isenberg, M., and P. Alliez, “Compressing Polygon Mesh Geometry with Parallelogram Prediction,” in Proceedings of the Conference on Visualization ’02, IEEE Computer Society, pp. 141–146, 2002. Cited on
4.7 投影 Projections
在实际渲染场景之前,必须将场景中的所有相关对象投影到某种平面或某种简单体积上。此后,执行裁剪和渲染(第 2.3 节)。
到目前为止,在本章中看到的变换不影响第四个坐标 分量。也就是说,点和向量在转换后保留了其类型。另外,在
矩阵中,最底行始终为
。透视投影矩阵(Perspective projection matrices)是这两个属性的例外:下一行