游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2648|回复: 2

关于顶点法向量的变换

[复制链接]

36

主题

100

帖子

725

积分

高级会员

Rank: 4

积分
725
发表于 2003-10-5 08:34:00 | 显示全部楼层 |阅读模式
我们知道,我们在d3d中设置了一个World矩阵,并把顶点坐标与法向量送给d3d画时,d3d会自动变换顶点的法向量以使其与变换后的坐标匹配。
那么如果想把这部分工作提出来自己做,该怎么算呢(应是快速的算法,象d3d一样实时完成)?
比如用一个矩阵mat去变换一个模型,那么模型的顶点坐标变换后,顶点法向量如不动是不对的,但简单的乘上mat也是不对的,到底如何变换呢?

17

主题

454

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2003-10-5 10:42:00 | 显示全部楼层

Re:关于顶点法向量的变换

乘变换矩阵的转置,我推导出来是这样的,其他的地方也是这样说的。但是我在我的VertexShader里做卡通渲染的时候,发现不对,乘上原来不动的才对,
具体情况看我那片文章吧
gamehunter.3322.net/xpertsoft/

36

主题

100

帖子

725

积分

高级会员

Rank: 4

积分
725
 楼主| 发表于 2003-10-5 18:19:00 | 显示全部楼层

Re:Re:关于顶点法向量的变换

我的一点经验:
.如果模型的转换矩阵只有移动,那么法向量是不需任何转换的,乘上矩阵反而不对。

2.如果模型的转换矩阵含有移动和旋转,那么法向量可用D3DXVec3TransformNormal()去转换,直接乘以矩阵也是错误的。
(这个d3d的变换函数不知是不是用转置矩阵的方法。)

3.模型的转换矩阵含有缩放,那么我不知道如何快速的转换法向量.

在d3d中,即使对模型做任意的变换,计算出来的顶点光照也是对的。而且这是实时计算的,不知是怎么做的。另一思路是逆变换灯光的方向位置到模型空间,但如模型有缩放,这样做恐怕还是不行吧?我特别头疼这些数学问题。有机会要向你请教。(蓝心同志,我们还是老乡呢)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-22 11:37

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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