wavefront.obj文件中的法线(vn)代表什么?

问题描述 投票:0回答:1

我在obj文件中有一个3D网格,它是3D人脸重建算法的输出。问题在于算法沿第二轴镜像人脸,即每个顶点v x y z都位于“真实” v -x y z中。

我尝试了显而易见的事情来反转所有x,它可以工作,但是现在网格物体具有反转的面方向。我可以通过在MeshLab中应用Filters -> Normals, Curvatures and Orientation -> Invert Faces Orientation来解决此问题。

问题是我无法理解该选项的作用,或者为什么我的原始修复不起作用,您能解释一下吗?另外,您能解释一下wavefront.obj格式的法线表示什么吗?

3d normals meshlab wavefront
1个回答
1
投票

如果将以“ v”开头的行中的坐标X的符号反转,则还需要更改“ vn”行中的X的符号,它们表示网格的法线-顶点。您可以使用meshlab过滤器“每个顶点法线功能”和以下表达式轻松完成此操作:

nx = -nx
ny = ny
nz = nz

无论如何,“该算法沿第二轴镜像人脸”听起来很奇怪。最有可能不是更改X坐标的符号,而是将网格旋转90度,这是因为您的程序被配置为“ Z轴在上”而不是“ Y轴在上”。此旋转将更改一个坐标的符号,也将交换您的坐标值。我建议对此进行修改,并了解您的算法是“ X镜像”还是“重新定向”输入网格。

© www.soinside.com 2019 - 2024. All rights reserved.