根据模型的顶点位置坐标和纹理坐标计算顶点的法线、切线和副法线

转载 2012年01月29日 23:31:52
 

如何根据模型的顶点位置坐标和纹理坐标计算顶点的法线、切线和副法线?

我们把顶点数据记作P(x,y,z,u,v),(x,y,z)是位置坐标,(u,v)纹理坐标

三角形的3个顶点就可以表示成

P0(x0,y0,z0,u0,v0)

P1(x1,y1,z1,u1,v2)

P2(x2,y2,z2,u2,v1)

因为u,v的变化对x的影响是线性的,则有

x = C1 u + C2 v + C3

不妨整理一下,写成

A0 x + B0 u + C0 v + D0 = 0 (1)

同理u,v的变化对y,z的影响是线性的,有

A1 y + B1 u + C1 v + D1 = 0 (2)

A2 z + B2 u + C2 v + D2 = 0 (3)

可以看到 x,u,v 是成平面的,而A0,B0,C0就是平面的法线,可以通过三角形的3个顶点求得

(A0,B0,C0) = ((x0,u0,v0)-(x1,u1,v1))×((x0,u0,v0)-(x2,u2,v2))

D0 = -(A0,B0,C0)·(x0,s0,t0)

同理也可以求得(A1,B1,C1,D1),(A2,B2,C2,D2)

通过(1),(2),(3)式联立可以求得

d(x,y,z)/du = (-B0/A0,-B1/A1,-B2/A2)

d(x,y,z)/dv = (-C0/A0,-C1/A1,-C2/A2)

我们就可以取d(x,y,z)/du为切线T,d(x,y,z)/dv为副法线B,法线N = T×B

参考:The.Cg.Tutorial.The.Definitive.Guide.to.Programmable.Real-Time.Graphics 8.4.1 Examining a Single Triangle

空间曲线的切线、主法线、副法线

  • pizi0475
  • pizi0475
  • 2015年09月18日 15:26
  • 3026

法线贴图原理,切线空间的概念理解

转自http://www.cnblogs.com/tekkaman/p/3992352.html 法线贴图原理 【法线贴图原理】   如果法线处于世界坐标中的(world space...
  • u013833399
  • u013833399
  • 2015年08月17日 15:43
  • 2905

副法线的来由(binormal)

Any given vertex has a tangent space as defined in Figure 12.4. The normal of the vertex that you’r...
  • GameRefer
  • GameRefer
  • 2012年08月19日 20:11
  • 1930

Shader自学笔记 3.2.1 用切线空间计算法线纹理

// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'Shader "Custom/texture/test2" {/...
  • WarrenMondeville
  • WarrenMondeville
  • 2017年01月16日 03:31
  • 800

Unity3D 法线转换与切线空间总结

在Shader编程中经常会使用一些矩阵变换函数接口,其实它就是把固定流水线中的矩阵变换转移到了可编程流水线或者说GPU中,先看下面的函数语句:// Transform the normal from ...
  • jxw167
  • jxw167
  • 2017年08月29日 10:02
  • 1046

DirectX11 法线向量

法线向量 1. 平面向量与表面向量的区别 平面法线(face normal)是描述多边形所朝方向的单位向量(即,它与多边形上的所有点相互垂直),如下图a所示。表面法线(surface normal...
  • sinat_24229853
  • sinat_24229853
  • 2015年10月02日 22:53
  • 1284

副法线和正切是什么?

法线,切线和副法线构成了所谓的切线空间(tangnet space),在Bump Mapping中,法线纹理中存储的法线值就是在切线空间内的。 从网上找了一段求切线和副法线的代码. 根据三个顶...
  • pizi0475
  • pizi0475
  • 2015年09月18日 15:24
  • 1557

【引用】空间曲线的切线、主法线、副法线

所有图形见:数学图形目录     切线、主法线和副法线形成的曲面:   返回:数学图形目录...
  • u014038143
  • u014038143
  • 2017年10月10日 14:19
  • 172

Unity Shader 学习笔记 (七) 根据切线和法线方向设置模型颜色shader

Unity Shader 学习笔记 (七) 根据切线和法线方向设置模型颜色shader 法线方向颜色Shader Shader代码 Shader "Custom/faxianColor" { Sub...
  • u011416077
  • u011416077
  • 2015年08月18日 22:06
  • 1813

Unity Shader:Unity网格(1)---顶点,三角形朝向,法线,uv,以及双面渲染三角形

1,顶点顶点是网格最基础的组成部分,可通过mesh.vertices获取和赋值。mesh.vertices是一个Vector3的数组,每个Vector3代表了此顶点在世界空间中的位置。顶点的位置,数量...
  • liu_if_else
  • liu_if_else
  • 2017年06月15日 17:33
  • 1332
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:根据模型的顶点位置坐标和纹理坐标计算顶点的法线、切线和副法线
举报原因:
原因补充:

(最多只允许输入30个字)