web-dev-qa-db-ja.com

meshlabのメッシュエッジのカラーリング

私はメッシュを取得し、それを使っていくつかの凝ったことを行い、いくつかの出力を生成するアルゴリズムに取り組んできました。

結果を視覚化するために、メッシュのコピーを作成し、作成された出力に何らかの形で関連するスマートな方法で色を付け、Meshlabで視覚化することにしました。ただし、メッシュのエッジの一部を他のエッジとは異なる色にする必要があります。

数時間グーグルした後、ファイル形式(.obj、.ply ...)がこの動作をサポートしているように見えても、これを行う方法を見つけることができませんでした このチュートリアル (これに従って出力メッシュを作成しました)。

回避策を作成しました。つまり、各頂点に隣接するエッジの1つの色を割り当て、頂点の色に基づいてエッジに色を付けますが、残念ながら、これは(たとえば) 2つの異なる色のエッジは、ある色から別の色へのグラデーションでレンダリングされますが、これは意図した動作ではありません。

私はここで何か間違ったことをしていますか? (いくつかの明らかに明白なオプションを無視するように)。あるいは、エッジに色を付けることができるメッシュをレンダリングする別の方法はありますか(それは、自分のレンダラーをコーディングしたり、ブレンダーのマニュアルを調べて正しいキーの組み合わせを探すのに3日を費やしたりすることを意味しません)?

どんな助けでも大歓迎です。前もって感謝します。

12
John C

私は主に仕事を成し遂げるハックを思いついた。

元のメッシュを取得し、すべてのエッジに対して、このエッジのちょうど中間点である新しいポイントを作成します。両方のエッジ頂点をこの中点に接続して、面積がゼロの縮退三角形を形成します。この三角形とこの点をメッシュファイルに追加します。ご想像のとおり、この新しい頂点をエッジカラーで色付けします。

Meshlabの背景色の設定をいじると、Edgeの色付きメッシュをかなりよく見ることができます。

(私がまだ見つけようとしていることの1つは、線の太さを増やしてより鮮明に見えるようにする方法です。今は、頂点ビューに移動して、新しいポイントがすべてエッジカラーでうまく点灯するのを確認できます。 )

5
jason

OPが言及したように、MeshLabには、カスタムユーザーが選択した色(すべてのエッジで同じ色)または頂点/面の色(異なる色の頂点に接続するエッジはグラデーションの色になります)でエッジを着色する機能があります。これは、Wireframeレンダリングを有効にし、オプションからエッジカラーを選択することで実行できます。

enter image description here


ただし、MeshLabは、特定のエッジカラー属性を使用したエッジのレンダリングをサポートしていません。私は間違っているかもしれませんが、objoffのような一般的な単純なメッシュ形式には、エッジ属性(色、厚さなど)を格納するためのプロビジョニングがありません。 plyもこれをサポートしていないという印象を受けましたが、OPが提供するリンクはそうではないと言っています。

私が考えることができる唯一の解決策は、三角形の代わりに線を描くようにOpenGLレンダラーを作成することです。また、メッシュの書き込み中に、エッジの色が割り当てられたすべてのエッジの頂点を書き込みます。つまり、頂点に3つのエッジが接続されている場合、その頂点は3回繰り返されます。

1
Atekihcan