首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 求教两个GPU渲染基本的数学矩阵问题
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jj456
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-03-09 16:20:53 楼主
    (1) 我看到许多顶点着色器代码中在将法向量由物空间变换到世界空间时是通过乘以物到世界的变换矩阵m_World的逆矩阵的转置m_WorldIT来完成的,请问这与直接通过乘以m_World进行物空间法向量到世界空间的变换有什么区别?为什么要这样做?
    (2) 相机在世界空间的坐标为什么可以表示成世界空间到视空间的变换矩阵的逆m_ViewI的分量m_ViewI[3].xyz?
    不胜感谢!

    第二个问题,因为m_View代表从世界空间到视空间的变换,所以m_ViewI代表从视空间到世界空间的变换,而变换矩阵的第四个分量m_ViewI[3]的作用是完成空间的平移变换,即设r = m_ViewI[3].x, g = m_ViewI[3].y, b = mViewI[3].z, a = mViewI[3].w, 将空间坐标平移P(r/a, g/a, b/a)个单位。这恰恰是将相机由原点移动到P点上。
    可是第一个问题我还是想不出来,请问哪位高人能为我指点一下,不胜感激!
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Jiana
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-23 19:28:231楼 得分:0
    (1) 有区别,因为直接通过乘以m_World进行物空间法向量到世界空间的变换是不对的,因为法线不是一般概念的真正向量,
    举个例子:三维平面: x + y = k  法线n [1 1 0]
    我们进行一个非均匀缩放x 2倍,变换矩阵:

        |2 0 0 0 |
    A = |0 1 0 0 |
        |0 0 1 0 |
        |0 0 0 1 |
    法线变换后
    A(n) = nA = [2 1 0] 画图看看,这是不对的,不垂直于原平面了.
    实际上,法线是两个与曲面相切的(线性无关的)向量的叉积:
    n = u X v
    => u.n = unT = 0 (前一个是点积,后一个是矩阵相乘,T是转置)
    又由于法线变换后仍然垂直于变换后的切线u,和v,
    设A(u)是u变换后的向量(切线),m是n变换后的向量(法线)
    =>A(u).m = 0
    又0 = unT = u AA-1 nT = (uA)(A-1nT) = A(u).( n (A-1)T )
    =>A(u).m  = A(u).( n (A-1)T )
    =>m = n (A-1)T
    这里A就是m_World,(A-1)T就是m_World的逆矩阵的转置m_WorldIT
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Hakurei
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-25 13:46:552楼 得分:0
    请教下1L达人,A(u).( n (A-1)T )=0可得n(A-1)T与A(u)垂直,然后同理它与A(v)也垂直,所以它必定垂直于变换后的平面。但怎样证明当n垂直于平面向外时 n(A-1)T仍然垂直于变换后的平面向外呢,就是说相对于平面的方向没变。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Jiana
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-25 22:37:033楼 得分:0
    引用 2 楼 Hakurei 的回复:
    请教下1L达人,A(u).( n (A-1)T )=0可得n(A-1)T与A(u)垂直,然后同理它与A(v)也垂直,所以它必定垂直于变换后的平面。但怎样证明当n垂直于平面向外时 n(A-1)T仍然垂直于变换后的平面向外呢,就是说相对于平面的方向没变。

    我们进行的变换都是仿射变换.
    由仿射变换定义可知A(u),A(v)仍然是向量,我们只有证明A(u),A(v)线性无关
    因为仿射空间的平面是由两个线性无关的向量(即不平行的两个向量)所决定,
    又n(A-1)T与A(u)垂直,与A(v)也垂直,可得n(A-1)T垂直于A(u),A(v)决定的平面(变换后的平面)
    (例如一个三角形,n是面的法线,取两边分别作为两个向量,有上面可知n(A-1)T仍垂直于这个三角平面)
    你去看仿射变换的定义,容易证明A(u),A(v)仍然线性无关。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Hakurei
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-26 14:45:034楼 得分:0
    引用 3 楼 Jiana 的回复:
    引用 2 楼 Hakurei 的回复:
    请教下1L达人,A(u).( n (A-1)T )=0可得n(A-1)T与A(u)垂直,然后同理它与A(v)也垂直,所以它必定垂直于变换后的平面。但怎样证明当n垂直于平面向外时 n(A-1)T仍然垂直于变换后的平面向外呢,就是说相对于平面的方向没变。

    我们进行的变换都是仿射变换.
    由仿射变换定义可知A(u),A(v)仍然是向量,我们只有证明A(u),A(v)线性无关
    因为仿射空间的平面是由两个线性无关的向量(即不平行的两个…


    0.0那个,我知道n (A-1)T 仍垂直于这个平面,但是我想证明如果原来n是垂直于平面向外,变换后n (A-1)T仍然是垂直于平面向外而不可能变为垂直与平面向内的。。因为如果变向了的话,算光照就出问题了。 。垂直于线性无关的两个向量只证明了垂直于这两个向量所决定的平面,却没保证方向。。比如[1,1,1]垂直于某个平面,[-1,-1,-1]也垂直于该平面,但两个向量的方向是相反的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Jiana
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-27 01:11:065楼 得分:0
    引用 4 楼 Hakurei 的回复:
    引用 3 楼 Jiana 的回复:
    引用 2 楼 Hakurei 的回复:
    请教下1L达人,A(u).( n (A-1)T )=0可得n(A-1)T与A(u)垂直,然后同理它与A(v)也垂直,所以它必定垂直于变换后的平面。但怎样证明当n垂直于平面向外时 n(A-1)T仍然垂直于变换后的平面向外呢,就是说相对于平面的方向没变。 
     
    我们进行的变换都是仿射变换. 
    由仿射变换定义可知A(u),A(v)仍然是向量,我们只有证明A(u),A(v)线性无关 
    因为仿射空间的平面是由两个…

    sorry,没看清你的意思.求导过程只保证垂直.一般的变换都会保证相对于平面的方向没变.


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • happy__888
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 11

      9

      3

    发表于:2008-03-27 10:56:566楼 得分:0
    平面方程:
      P*N-P0*N=0
    变换后的方程:
      P'*N' - P0'*N' = 0
    因为:
      P'  = M*P
      P0' = M*P0
    所以:
      (M*P)*N' - (M*P0)*N' = 0
    ==> 矩阵乘法交换顺序要专置
      P*(MT*N') - P0*(MT*N') = 0

    剩下按照一楼的继续推导, 就会发现实际上M-1T 会依然保证垂直的, 没有正反方向的说法的


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • knowledge_Is_Life
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-04-30 23:53:077楼 得分:0
    我也想了解,谢谢LZ.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • meiZiNick
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-05-01 04:06:448楼 得分:0
    支持搂主,收藏
    修改 删除 举报 引用 回复