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

これはちょうど1つの正方形です。このファイルの法線値を変更しても、[レンダリング] -> [頂点法線を表示] を選択すると、独自の頂点法線が表示されます。独自の法線を持ち、計算された法線で動作するシェーダーを適用するにはどうすればよいですか?? 助けてください。

ありがとう!!

4

2 に答える 2

0

すべての OBJ インポータが法線を尊重するわけではありません。MeshLab が OBJ の法線を無視する方法について、まだ未解決のように見えるこの古いバグを見つけました: http://sourceforge.net/p/meshlab/bugs/70/

あなたはすべてを正しく行っているかもしれませんが、問題はあなたの側にないかもしれません.

さまざまなソフトウェアのサポート レベルが異なるために非常に複雑になる可能性があるメッシュ交換を扱う場合、エクスポートされたデータをテストするために複数の 3D アプリケーションを使用すると便利です。そうすれば、問題が自分の側にあるのか相手の側にあるのかをより迅速に判断できます。

壊れたインポーターに対してオブジェクトを正しく表示する必要があり、他の形式を使用できない場合の回避策の 1 つは、頂点を手動でアンウェルド (複製) して、鋭い折り目/ハード エッジを作成することです。法線を任意に指定するほどの自由度はありませんが、領域が滑らかに補間されず、代わりに折り目がある不連続な境界を保持することができます。

于 2015-05-24T08:15:19.713 に答える