游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5940|回复: 6

有人知道shader里面法线贴图,切线空间矩阵转置的意义吗?

[复制链接]

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2007-7-16 15:57:00 | 显示全部楼层 |阅读模式
float3x3 TBN;
TBN[0] = tangentL;
TBN[1] = binormalL;
TBN[2] = normalL;
       
// Matrix transforms from object space to tangent space.
float3x3 toTangentSpace = transpose(TBN); //为什么要转置TNB 的3x3矩阵?

// Transform eye position to local space.
float3 eyePosL = mul(float4(gEyePosW, 1.0f), gWorldInv); //然后这里变换视线向量到切线空间
       
// Transform to-eye vector to tangent space.
float3 toEyeL = eyePosL - posL;
outVS.toEyeT = mul(toEyeL, toTangentSpace);
。。。

线性代数学的不好,空间思维能力有限,向量和矩阵相乘把一个坐标变换到另一个空间的坐标,意义很明确
可为什么要转置?想了一上午,对它的几何意义始终没想明白

望过来人指点一二。

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2007-7-16 18:28:00 | 显示全部楼层

Re:有人知道shader里面法线贴图,切线空间矩阵转置的意义

正交矩阵,转置 = 求逆。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-7-16 19:07:00 | 显示全部楼层

Re:有人知道shader里面法线贴图,切线空间矩阵转置的意义

哦,对哦

7

主题

438

帖子

438

积分

中级会员

Rank: 3Rank: 3

积分
438
发表于 2007-7-16 19:11:00 | 显示全部楼层

Re:有人知道shader里面法线贴图,切线空间矩阵转置的意义

TBN本身是切线空间转换到对象空间的矩阵,需要的是对象空间到切线空间的矩阵(因为要把视向量转换入切线空间),即TBN的逆矩阵。
由于TBN是正交矩阵,所以求TBN的逆等价于求它的转置。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2007-7-16 20:07:00 | 显示全部楼层

Re:有人知道shader里面法线贴图,切线空间矩阵转置的意义

这样解释很合理,明白了。

8

主题

28

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2007-7-20 11:20:00 | 显示全部楼层

Re:有人知道shader里面法线贴图,切线空间矩阵转置的意义

解释的好,又学习了

26

主题

178

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
发表于 2007-8-15 21:13:00 | 显示全部楼层

Re:有人知道shader里面法线贴图,切线空间矩阵转置的意义

切?空???Q到view空? ?楹挝以?下?硎
float3x3 BTN;
BTN[1] = tangentL;
BTN[0] = binormalL;
BTN[2] = normalL;

我用的是BTN ?有的文章或code用的是BTN 有的?t是TBN 倒底是怎?回事??]有?]有高人能解明?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 11:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表