首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将变换应用于3D模型- Normals pb

将变换应用于3D模型- Normals pb
EN

Stack Overflow用户
提问于 2008-11-10 17:16:15
回答 5查看 441关注 0票数 1

我正在尝试将变换应用于STL文件中的3D对象(不创建结构化网格对象)。下面是我如何继续:我在STL文件中逐个读取法线和面信息,将我的变换应用于每个顶点和面法线,并将新的计算值写回另一个STL文件中。在生成的文件中,顶点是正常的,但我的法线是错误的。似乎我不能像对顶点那样将我的变换应用于法线。那件事怎么可能??

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-11-10 18:34:38

你应该看看transforming normals

实际上,杰夫,你只说对了一部分。对于一个向量来说,你是对的。但是对于一个正常的,这是有点不同的含义,你必须转换上3x3,但颠倒,然后转置。

票数 2
EN

Stack Overflow用户

发布于 2008-11-10 19:27:55

您可以对这两个应用几乎相同的转换,但请记住以下两点:

  • 法线是方向,因此不应应用4x4矩阵的位置部分。要避免应用它,可以在与矩阵相乘之前将向量格式化为向量(x,y,z,0),或者使用专用的TransformVector()函数来避免最终与零相乘的指令。
  • 如果应用的矩阵包含比例,则法线也将进行缩放,这意味着,如果使用典型的N.L光照点积,结果将比正常情况下更亮或更暗。通常,您需要在应用变换后重新规格化,或者确保变换不会反规格化法线(这就是矩阵的逆转置的用途)。

票数 2
EN

Stack Overflow用户

发布于 2008-11-10 17:22:27

变换向量不同于变换点--您不能应用变换,只能应用旋转。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/278528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档