登录 注册
当前位置:主页 > 资源下载 > 15 > 在切线空间和物体空间之间变换-python实现pdf转换成word/txt纯文本文件下载

在切线空间和物体空间之间变换-python实现pdf转换成word/txt纯文本文件下载

  • 更新:2024-05-23 20:00:08
  • 大小:5.52MB
  • 推荐:★★★★★
  • 来源:网友上传分享
  • 类别:其他 - 游戏开发
  • 格式:PDF

资源介绍

18.4 顶点正切空间 在上一节中,我们为三角形推导了一个正切空间。不过,当进行法线贴图映射时,我 们希望以三角形的形式描述该正切空间,因为正切空间在三角形平面上是一个常量。所 以,我们在每个顶点上指定切线向量,就像是使用顶点法线来模拟一个光滑表面时所做的 事情一样: 1.对于网格中的任意一个顶点 v,它的切线向量 T 等于共享该顶点的每个三角形的切 线向量的平均值。 2.对于网格中的任意一个顶点 v,它的副切(法)线向量 B 等于共享该顶点的每个三 角形的副切(法)线向量的平均值。 在计算平均值之后,我们通常需要对 TBN 基进行正交化处理,使这 3 个向量彼此垂直 并为单位向量。这一工作通常使用 Gram-Schmidt 算法来完成。读者可以在网上找到能为任 意三角形网格生成顶点切线空间的代码:http://www.terathon.com/code/tangent.php。 这里,我们不直接在内存中存储副切线向量 B。而是,在需要 B 时计算 B=N×T,其中 N 是常规的经过平均后的顶点法线。此时,我们的顶点结构体为: namespace Vertex { struct NormalMap { XMFLOAT3 Pos; XMFLOAT3 Normal; XMFLOAT2 Tex; XMFLOAT3 TangentU; } ; } 回忆一下由 GeometryGenerator 程序生成的网格计算了对应 u 轴的切线向量 T。对于 Grid 和 Box 来说,我们可以直接在每个顶点中指定切线向量 T 的物体空间坐标(参见图 18.5)。对于 Cylinder 和 Sphere 来说,我们可以通过定义向量值函数 P(u,v)和计算∂P/∂u 来 求出每个顶点上的切线向量,其中参数 u 还被用作为 u 纹理坐标。 18.5 在切线空间和物体空间之间变换 现在,我们在网格的每个顶点上都有一个正交 TBN 基,而且还有相对于网格物体空间 的 TBN 向量坐标。所以,我们现在可以得到一个相对于物体空间坐标系的 TBN 矩阵,通过 该矩阵我们可以将坐标从切线空间变换到物体空间: 344 / 351