我在obj文件中有一个3D网格,它是3D人脸重建算法的输出。问题在于算法沿第二轴镜像人脸,即每个顶点v x y z
都位于“真实” v -x y z
中。
我尝试了显而易见的事情来反转所有x,它可以工作,但是现在网格物体具有反转的面方向。我可以通过在MeshLab中应用Filters -> Normals, Curvatures and Orientation -> Invert Faces Orientation
来解决此问题。
问题是我无法理解该选项的作用,或者为什么我的原始修复不起作用,您能解释一下吗?另外,您能解释一下wavefront.obj格式的法线表示什么吗?
如果将以“ v”开头的行中的坐标X的符号反转,则还需要更改“ vn”行中的X的符号,它们表示网格的法线-顶点。您可以使用meshlab过滤器“每个顶点法线功能”和以下表达式轻松完成此操作:
nx = -nx
ny = ny
nz = nz
无论如何,“该算法沿第二轴镜像人脸”听起来很奇怪。最有可能不是更改X坐标的符号,而是将网格旋转90度,这是因为您的程序被配置为“ Z轴在上”而不是“ Y轴在上”。此旋转将更改一个坐标的符号,也将交换您的坐标值。我建议对此进行修改,并了解您的算法是“ X镜像”还是“重新定向”输入网格。