</>)

SOFTWARE DOCS

Engines and APIs

Hybrid RT and samples

Our SDKs and libraries

Content creation

Blogs and videos

Performance guides

Reference

Latest news

Events

Research

Getting started with:

Site directory

Home » Blogs » Bilinear interpolation on a quadrilateral using Barycentric coordinates

基于重心坐标的四边形双线性插值

Picture of Łukasz Izdebski

Łukasz Izdebski

Łukasz Izdebski, PhD, 是 AMD 游戏工程部的开发技术工程师,专注于游戏引擎渲染功能的优化。他的研究兴趣包括动画、几何建模和微分几何。

在计算机图形学中,我们很少遇到连续数据。我们经常使用数字数据,在几何建模的上下文中,这意味着我们通常使用多边形网格,而不是像 Bézier 曲面片这样的程序化曲面。在专用建模软件中构建数字三维对象最流行的技术是多边形建模。创建阶段的结果是一组多边形(网格),其中网格中的多边形可以与其他多边形共享顶点和边。

虽然用户可以创建各种类型的曲面(例如,非流形),但最常见的曲面是拓扑 2-流形。简而言之,2-流形是拓扑学中的一个数学概念,其中空间在局部上类似于 R2\mathbb{R}^2R2 中的欧几里得平面。本质上,2-流形上的每个点都有一个看起来像平面一部分的邻域。

2-流形网格三角形示例 | 2-流形网格四边形示例 ---|--- |

在多边形的顶点上,用户可以存储附加数据(per-vertex attributes),例如顶点法线(用于模拟曲面)、纹理坐标(用于纹理映射)或 RGBA 颜色。

理论上,可以使用所有类型的多边形。然而,在实践中,3D 图形艺术家最常使用三角形和四边形。这些多边形通常在计算机图形 API(例如 Microsoft DirectX® 或 Vulkan®)中被称为拓扑图元。从艺术家的角度来看,四边形更有利,因为它们更容易使用。基于四边形建模的属性包括:

外观不干净的网格 | 外观干净的网格 ---|--- |

这些论点使基于四边形的拓扑成为艺术家在建模 3D 对象时的首选。

很久以前,GPU 放弃了对硬件加速四边形(或由 4 个以上顶点组成的多边形)光栅化的支持,因此也放弃了对其顶点中包含的顶点属性的插值(线条渲染是另一回事)。唯一具有硬件加速光栅化实现和参数插值的多边形是三角形。三角形赢得比赛是有充分理由的,我只说几个:

三角形是实时计算机图形学的基础,这反映在图形 API 支持的原始拓扑中。网格中使用的所有其他多边形类型都必须转换为三角形。当建模应用程序允许构建四边形网格时,此网格的可视化不是基于四边形。相反,应用程序将它们转换为三角形网格。这种必要的转换可能会在四边形表面上的插值顶点属性(例如纹理坐标、顶点法线向量和顶点颜色)中引入 C1C^1C1 不连续性。

对于本文涵盖的主题,C1C^1C1 不连续性是指分段函数连续但其一阶导数不连续的点。换句话说,分段函数本身没有跳跃或中断,但分段函数的斜率(或变化率)有跳跃或中断。

C1C^1C1 连续性 | C1C^1C1 不连续性 ---|--- 分段函数 | | 一阶导数 | |

对于将四边形光栅化为两个三角形,顶点属性插值中的 C1C^1C1 不连续性在将四边形分割成两个三角形的新创建的边上最为明显。

顶点颜色 | 纹理坐标 | 顶点法线 ---|---|--- | | [![](https://gpuopen.com/learn/bilinear-interpolation-quadrilateral-barycentric-coordinates</docs_images/bilinear_interpolation_on_a_quadrilateral_using_barycentric_coordinates/bilinear_interpolation_on_a_quadrilateral_using_barycentric_coordinates-html-_downloads-0290aed55724f46beb0047c2f18bc97c-5.