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

それは予想される動作です。四角形を作る 2 つの三角形があるとします。マージされていない、つまり 6 つの頂点と 6 つの頂点法線です。マージすると、対角線の角にある頂点が結合されるため、4 つの頂点ができます。マージされたメッシュがスムージングされている場合 (たとえば、法線 > ソフト エッジを使用)、共有頂点は頂点法線も共有します。メッシュがファセットされている場合、4 つの頂点があっても 6 つの頂点法線があります。それはおそらくあなたの余分な数字がどこから来ているかです.

元のジオメトリがクリーンな場合、面の数は変わりませんが、悪いジオメトリには重複した面が含まれている可能性があり、マージによって削除する必要があり、頂点の数も減少します。

mesh > triangulateに続いてnormals > Harden edgeを実行することで、頂点の法線カウントを人為的に膨らませることができます。これにより、メッシュがファセットに見えるようになります。スムージングされた法線が必要な場合 (再び法線 > ソフト エッジ)、平均して頂点ごとに約 1 つの法線を期待する必要があります。

于 2013-08-01T03:55:18.387 に答える