根据模型的顶点位置坐标和纹理坐标计算顶点的法线、切线和副法线
2012-08-29 06:32
465 查看
http://www.cnitblog.com/luckydmz/archive/2011/04/21/73393.html
如何根据模型的顶点位置坐标和纹理坐标计算顶点的法线、切线和副法线?
我们把顶点数据记作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
http://http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter08.html
如何根据模型的顶点位置坐标和纹理坐标计算顶点的法线、切线和副法线?
我们把顶点数据记作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
http://http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter08.html
相关文章推荐
- 根据模型的顶点位置坐标和纹理坐标计算顶点的法线、切线和副法线
- 根据模型顶点坐标计算法线
- 粒子系统基本原理 给出粒子中心点的坐标和粒子的大小,则很容易计算出粒子所需要的4个顶点的位置坐标。粒子系统由大量的粒子构成。每个粒子具有一组属性例如位置大小纹理颜色透明度运动速度加速度生命周期等属性。
- 简单的顶点着色(根据模型坐标和世界坐标位置)
- 根据圆心坐标以及手指坐标计算圆上点的位置
- Unity Shader 学习笔记 (七) 根据切线和法线方向设置模型颜色shader
- 根据凸多边形顶点坐标来计算面积算法与实现
- DirectX 3D_基础之光照 材质 顶点法线 光源 纹理映射 纹理坐标 多级纹理 纹理过滤
- 根据顶点的投影坐标,获取对应的屏幕纹理的纹理坐标
- Shader自学笔记 3.2.1 用切线空间计算法线纹理
- 根据经纬度坐标计算距离
- 惠更斯Rothermel模型模拟-森林火灾-计算坐标(思路)
- 自定义dialog窗口,根据坐标可随意设置dialog显示位置,实现了窗口弹出动画
- PostGIS+postgresql建立坐标位置计算
- 百度地图 根据标注点坐标范围计算显示缩放级别zoom自适应显示地图
- PHP根据两点间的坐标计算距离
- 处理模型——通过扩展模型处理器直接访问顶点位置数据
- Shader自学笔记 3.2.2用世界空间计算法线纹理
- PHP 根据两点的坐标计算之间的距离