MeshLab:使用我自己的计算法线渲染obj文件

时间:2011-06-29 00:14:37

标签: graphics 3d mesh normals

我正在尝试用顶点编写一个obj文件。我正在计算代码中的顶点法线并写入此文件。当我尝试在Meshlab中渲染此文件时,它正确读取顶点,但是当我转到'Render-> Show vertex normals'时,它没有显示我计算的法线。相反,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

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

谢谢!

2 个答案:

答案 0 :(得分:0)

并非所有OBJ进口商都尊重法线。我发现这个旧的bug似乎仍然是关于MeshLab如何忽略OBJ中的法线:http://sourceforge.net/p/meshlab/bugs/70/

你可能正确地做了一切,但问题可能不在你身边。

当处理由于各种软件中不同级别的支持而可能变得非常毛茸茸的网格交换时,如果您要使用多个3D应用程序来测试导出的数据,那么它很方便。然后,您可以更快地找出问题是在您身边还是他们的。

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

答案 1 :(得分:0)

似乎在今天(2019年),这个问题已经在Meshlab中解决了。

在下面的图像中,您可以看到您的原始.obj文件(左),以及一个更改了法线方向的修改版本(右)。正常状态已按预期更改。

enter image description here