根据模型的顶点位置坐标和纹理坐标计算顶点的法线、切线和副法线
来源:互联网 发布:md5算法原理 编辑:程序博客网 时间:2024/04/28 07:01
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
- 根据模型的顶点位置坐标和纹理坐标计算顶点的法线、切线和副法线
- 根据模型的顶点位置坐标和纹理坐标计算顶点的法线、切线和副法线
- 简单的顶点着色(根据模型坐标和世界坐标位置)
- 纹理坐标和顶点坐标
- 顶点的纹理坐标
- 自动计算顶点缓冲中所有顶点的法线
- 自动计算顶点缓冲中所有顶点的法线
- 空间曲线的切线、主法线、副法线
- 【引用】空间曲线的切线、主法线、副法线
- 法线映射基本原理和相关的顶点数据压缩
- 根据顶点的投影坐标,获取对应的屏幕纹理的纹理坐标
- DirectX 3D_基础之光照 材质 顶点法线 光源 纹理映射 纹理坐标 多级纹理 纹理过滤
- 顶点法线
- 关于法线贴图, 法线, 副法线, 切线 的东东,看了很容易理解
- 顶点法线和面法线
- 顶点法线和面法线
- OpenGL中纹理坐标和顶点坐标表示
- OpenGL 纹理坐标 和 顶点坐标映射关系 详解
- jquery检测ie6的方法(修复了BUG)
- java.lang.NoClassDefFoundError: org/jaxen/JaxenException
- 欧拉角与万向节死锁
- 平行分割阴影图(PSSMs)的研究
- 估计纹理像素的缩放倍数
- 根据模型的顶点位置坐标和纹理坐标计算顶点的法线、切线和副法线
- 为什么texture wrapping不工作?
- 纹理采样过滤方式
- Direct3D中投影空间内的点坐标与屏幕上点的对应关系
- Gimbal Lock
- 万向节死锁
- LoadRunner性能能测试报表模板
- Vaadin Web应用开发教程(35):UI布局-Accordion布局
- Android ApiDemos示例解析(144):Views->Layouts->LinearLayout->4. Horizontal