zoukankan      html  css  js  c++  java
  • 计算顶点法向量在世界坐标中的值

    顶点从模型空间转换到世界坐标空间只需要乘以世界转换矩阵即可,但是顶点的法向量却不能通过直接乘以这个矩阵将其变换到世界空间。

    一个顶点的世界转换矩阵为m,则该顶点的法向量转换矩阵为m的逆矩阵然后转置

    Vec3 localVertex, localNormal;

    Vec3 worldVertex=localVertex*m;

    Vec3 worldNormal=localNormal*(m-1)t

    可以参考:http://www.cnblogs.com/mengdd/archive/2011/08/30/2598025.html

    以下内容来自http://www.cnblogs.com/qzzlw/archive/2012/10/23/2736277.html

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

    假定采用行向量,假定一个通过原点的面的法向量为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的逆矩阵然后转置

  • 相关阅读:
    java.security.ProviderException: java.security.KeyException
    DES ECB 模式 JAVA PHP C# 实现 加密 解密 兼容
    mysql timestamp类型字段的CURRENT_TIMESTAMP与ON UPDATE CURRENT_TIMESTAMP属性
    阿里云composer 镜像
    封装redis操作 php版本
    金钱数友好显示 php版本
    php代码规范->如何写出规范且易于理解的项目代码-ZX版
    hibernate 注解大全
    国家省市区县乡镇三级,五级地址数据
    java基础 数据类型转换
  • 原文地址:https://www.cnblogs.com/coolbear/p/4056665.html
Copyright © 2011-2022 走看看