zoukankan      html  css  js  c++  java
  • 如何将法向量转换到世界空间

    顶点从模型空间转换到世界坐标空间只需要乘以世界转换矩阵即可,但是顶点的法向量却不能通过直接乘以这个矩阵将其变换到世界空间。原因是世界矩阵不仅包含旋转,还有可能包含着缩放操作,如果模型被不成比例的缩放,在不同方向上会有不同程度的拉伸或者压缩,顶点的坐标会因而伸缩,但是如果对法向量进行同样的伸缩,那么变化后的法向量将不再垂直于对应的表面。因此对应没有缩放或等比缩放的世界转换矩阵,可以直接采用相同的转换矩阵作为法向量的变换矩阵。那对于有不等比缩放或者通用的法向量转换矩阵,该如何求取呢?

    假定采用行向量,假定一个通过原点的面的法向量为n,转换矩阵为m,面上面某点为p,则有(p-0)nt==0  即 pnt=0, 假设有个转换矩阵x,对法线转换后仍然垂直于经过m转换后的面,则有 pm (nx)t=0 展开 pmxtnt=0;从这个等式看到 如果 mxt=I,(I为单位矩阵), 则  pmxtnt=pInt=pnt=0;

    而对mxt=I求解可得到x=(m-1)t  .

    通过上面的计算可以知道,如果一个顶点的转换转换矩阵为m,则该顶点的法向量转换矩阵为 m的逆矩阵然后转置

  • 相关阅读:
    C#解压或压缩文件夹
    C#文件帮助类FoderHelper
    C#数据库帮助类SqlHelper
    非常有意思的程序猿数据比較
    hdu1066
    【SICP练习】149 练习4.5
    【spring+websocket的使用】
    Android Studio 使用正式签名进行调试
    基于空间直方图meanshift跟踪
    Intel为Google的物联网平台Brillo推出开发板Edison
  • 原文地址:https://www.cnblogs.com/qzzlw/p/2736277.html
Copyright © 2011-2022 走看看