顶点的法线和切线变换

sunrisefe 2009-11-23 08:55:03
DX中,顶点中有位置POS 法线NORMAL 和切线TANGENT,当对顶点进行各种变换(旋转 平移和缩放)矩阵M时,请问法线和切线应该怎么变换,是否有顶点声明可以保证在对POS运用M的时候,NORMAL和TANGENT自动变换的?谢谢
...全文
513 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zwqxin 2009-11-27
  • 打赏
  • 举报
回复
乘以M的逆转置矩阵的说....
怎么不觉得与归一化有关....
xingzhe2001 2009-11-23
  • 打赏
  • 举报
回复
normal, binormal, tangent这三个向量互相垂直
sunrisefe 2009-11-23
  • 打赏
  • 举报
回复
谢谢各位
法线和切线(令W=0,以防止被平移)乘上顶点的变换矩阵,将结果规范化(消除缩放的影响)即可,是吧。
再问一下,binormal 和 normal有什么关系?
xingzhe2001 2009-11-23
  • 打赏
  • 举报
回复
我的意思是世界矩阵的前3*3,其实如果把normal.w=0, 那么也可以乘以整个世界矩阵
luoya263547560 2009-11-23
  • 打赏
  • 举报
回复
恩,行者的shader渲染方法有见解,可以节省一些运算,不过在函数操作方面,不如直接乘上世界变换矩阵来的简单用一个mul函数加个normalize函数就OK了,如果把世界矩阵拆开的话,操作就有点复杂了。
xingzhe2001 2009-11-23
  • 打赏
  • 举报
回复
固定管线的话,不用关心,d3d会帮你变幻的
shader的话,要注意旋转是不应该影响法线和切线的,所以只要乘以世界矩阵的旋转分量就可以,但是世界矩阵的缩放可能会影响法线,你只要在变换后对法线和切线normalize一下就好了。
luoya263547560 2009-11-23
  • 打赏
  • 举报
回复
进行定点变换的时候,也就是变换的世界矩阵吧,在后来D3D的渲染流程中,法线自动都乘上这个世界矩阵了,LZ不用操心变换的时,变换过程就是确定世界矩阵之后,定点位置、法线、等等乘上相应的世界矩阵,如果LZ用shader的话,在shader里要自己去用函数实现矩阵的相乘。
张赐 2009-11-23
  • 打赏
  • 举报
回复
把法线和切线同样应用于变换矩阵就可以了。也就是说,乘以顶点坐标的变换矩阵同时乘以法线或切线就可以了。
xingzhe2001 2009-11-23
  • 打赏
  • 举报
回复
切空间一般在使用normal map时用来,因为存在normalmap上的法线是切空间的。
sunrisefe 2009-11-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xingzhe2001 的回复:]
normal, binormal, tangent这三个向量互相垂直
[/Quote]通常在什么时候使用切空间?

8,303

社区成员

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

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