0

我现在有一个大问题。我使用 kinect fusion 捕捉 3D 场景并将其输出为 .OBJ 文件。

文件的输出如下所示:

v 123 123 123
v 123 123 123
v 123 123 123
vn 321 321 321
vn 321 321 321
vn 321 321 321
f 1//1 2//2 3//3

其中v是顶点,vn是法线,f是面。3个顶点组成一个面,所以面的个数正好是顶点个数的1/3。但问题是 kinect 的输出没有将顶点合并在一起。所以在我将它导入maya并将它们合并在一起之后,顶点和顶点法线的数量会以某种方式变得不同!

合并后顶
点数:52837 合并后法线顶点数:299997 合并后面
数:99999

这怎么可能!?每个顶点不应该只有1个顶点法线吗?为什么法线比顶点多?我写的代码只有遵循这种结构才能工作。另一种方法是不将顶点合并在一起,但将来可能会给我带来问题。

希望有人能帮帮我T_T

4

1 回答 1

0

这是预期的行为。想象一下,你有两个三角形组成一个四边形。未合并,即 6 个顶点和 6 个顶点法线。合并后,您将拥有 4 个顶点,因为对角角处的顶点现在已合并。如果合并的网格被平滑(例如,使用normals > soft edge)共享的顶点也将共享顶点法线。如果网格是多面的,即使您有 4 个顶点,您仍将有 6 个顶点法线。这可能就是您的额外数字的来源。

如果原始几何体是干净的,则面数将保持不变 - 但不良几何体可能包括应通过合并消除的重复面,同时也会减少顶点数。

您可以通过执行mesh > triangulatenormals > Harden edge人为地增加垂直法线计数。这将导致网格看起来是多面的。如果你想要平滑法线(再次法线>软化边缘),你应该期望平均每个顶点大约有 1 个法线。

于 2013-08-01T03:55:18.387 回答