6

我正在尝试编写一个带有顶点的 obj 文件。我在我的代码中计算顶点法线并写入这个文件。当我尝试在 Meshlab 中渲染此文件时,它会正确读取顶点,但是当我转到“渲染->显示顶点法线”时,它没有显示我计算的法线。相反,MeshLab 计算自己的法线并显示它们。

我不确定如何可视化我计算/写入文件的法线。我想稍后根据我计算的法线应用 Meshlab 着色器。

为了测试这一点,我创建了一个测试 obj 文件-

vn 0.517350 0.517350 0.517350
v 0.500000 0.500000 0.500000
vn -0.333333 0.666667 0.666667
v -0.500000 0.500000 0.500000
vn 0.666667 -0.333333 0.666667
v 0.500000 -0.500000 0.500000
vn -0.666667 -0.666667 0.333333
v -0.500000 -0.500000 0.500000
f 1//1 2//2 3//3
f 4//4 3//3 2//2

这只是一个正方形。现在,如果我更改此文件中的法线值,当我选择“渲染->显示顶点法线”时,它仍会显示自己的顶点法线。如何拥有自己的法线并应用适用于我计算的法线的着色器?请帮忙。

谢谢!!

4

2 回答 2

1

似乎比今天(2019 年)问题在 meshlab 中得到了解决。

在下图中,您可以看到原始 .obj 文件(左),以及一个更改了法线方向的修改版本(右)。正常情况如预期的那样发生了变化。

在此处输入图像描述

于 2019-11-12T17:20:31.807 回答
0

并非所有 OBJ 进口商都尊重常态。我发现这个旧错误似乎仍然对 MeshLab 如何忽略 OBJ 中的法线保持开放:http: //sourceforge.net/p/meshlab/bugs/70/

你可能做的一切都是正确的,但问题可能不在你身边。

在处理网格交换时,由于各种软件的支持级别不同,网格交换可能会变得非常麻烦,如果您经常使用多个 3D 应用程序来测试导出的数据,这将非常方便。然后,您可以更快地确定问题是在您这边还是在他们这边。

如果您绝对需要对象在损坏的导入器上正确显示并且不能使用其他格式,则一种解决方法是手动拆焊(复制)顶点以提供那些尖锐的折痕/硬边。这不会像任意指定法线那样给您更多的自由,但它可以让您保留那些不应该平滑插值区域而是有折痕的不连续边界。

于 2015-05-24T08:15:19.713 回答