bump mapping 手动设置tangent vector 的值的疑惑

lwjvive 2011-02-12 02:09:52
各位大哥好.
我有一个简单的问题请教一下.
我在网上看到一个bump mapping的 demo.渲染两面相互垂直的墙壁.
tangent vector 是通过手动设定的.代码很简单,就是几个点而已.希望大家能帮帮忙
代码如下:
pVerts[0].pos = D3DXVECTOR3(wallSize, 0, wallSize);
pVerts[0].uv = D3DXVECTOR2(1, 0);
pVerts[0].normal = D3DXVECTOR3(0, 1, 0);
pVerts[0].tangent = D3DXVECTOR3(1, 0, 0);

pVerts[1].pos = D3DXVECTOR3(wallSize, 0, -wallSize);
pVerts[1].uv = D3DXVECTOR2(1, 1);
pVerts[1].normal = D3DXVECTOR3(0, 1, 0);
pVerts[1].tangent = D3DXVECTOR3(1, 0, 0);

pVerts[2].pos = D3DXVECTOR3(-wallSize, 0, -wallSize);
pVerts[2].uv = D3DXVECTOR2(0, 1);
pVerts[2].normal = D3DXVECTOR3(0, 1, 0);
pVerts[2].tangent = D3DXVECTOR3(1, 0, 0);

pVerts[3].pos = D3DXVECTOR3(-wallSize, 0, wallSize);
pVerts[3].uv = D3DXVECTOR2(0, 0);
pVerts[3].normal = D3DXVECTOR3(0, 1, 0);
pVerts[3].tangent = D3DXVECTOR3(1, 0, 0);

pVerts[4].pos = D3DXVECTOR3(wallSize, wallSize, -wallSize);
pVerts[4].uv = D3DXVECTOR2(0, 1);
pVerts[4].normal = D3DXVECTOR3(-1, 0, 0);
pVerts[4].tangent = D3DXVECTOR3(0, 1, 0);//我在这里产生了疑惑,不知道(0,1,0)是怎么得到的? 为什么不是(0,-1,0)?
这个问题困惑了我很久,希望大牛们够指点迷津~

pVerts[5].pos = D3DXVECTOR3(wallSize, wallSize, wallSize);
pVerts[5].uv = D3DXVECTOR2(0, 0);
pVerts[5].normal = D3DXVECTOR3(-1, 0, 0);
pVerts[5].tangent = D3DXVECTOR3(0, 1, 0);

pIndex[0] = 0;
pIndex[1] = 1;
pIndex[2] = 2;

pIndex[3] = 2;
pIndex[4] = 3;
pIndex[5] = 0;

pIndex[6] = 0;
pIndex[7] = 1;
pIndex[8] = 4;

pIndex[9] = 4;
pIndex[10] = 5;
pIndex[11] = 0;
下面是我画的示意图,沿着x轴方向看 (平行于y-z平面的墙.) 红色向量是我认为的tangent vector.(0,-1,0)
为什么代码中是 (0,1,0)?
...全文
71 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧