.OBJファイルに頂点カラー情報を含めるにはどうすればよいですか?


25

エクスポートする.objファイルには、頂点の色のデータがありません。.objファイルに色情報を含める方法はありますか?そうでない場合、選択肢は何ですか?

回答:


9

BlenderはPLYファイル(.ply)をエクスポートできます。これはテキストベースであり、解析が非常に簡単で、頂点の色を含みます。難しい方法は、頂点の色が含まれるようにOBJエクスポーターコードを変更することです(そのため、objの互換性が失われます)。


8
間違った方法は、OBJの輸出を変更することです。ジョブに適切なツールを使用します。頂点の色が必要な場合、Wavefront OBJは明らかに使用する(または乱用する)ツールではありません。
マーティン・ソイカ

6
なぜそれが間違っているのですか?彼がOBJエクスポーターを使って自分で作成した場合、それがどのように「間違っている」かを実際に確認できません。それは常に誰かにとって間違った方法であるため、間違った方法は仕事をしていません。
ラバコール

.obj形式では、素材情報を保存するために.mtlファイルを使用しますが、私が知る限り、面ごとに1つの素材しかサポートしていません。また、.OBJは、Wikipediaのエントリは、実際に便利であるためではないので、多くのトピックの一つである:en.wikipedia.org/wiki/Wavefront_.obj_file
Exilyth

3
OBJは固定仕様であるため、間違っています。エクスポーターの変更を開始して余分な作業を行うと、OBJエクスポーターではなくなり、別のものになります。そこから、ほぼすべての多頭獣に変わる可能性があります。それでも、良い答えは、私はPLYのことを聞いたことがない。
エンジニア

@NickWiggill PLYは必ずしも良い選択とは限りません-おそらくあなたはそれを正当な理由で聞いたことがないでしょう。それはですはるかに複雑OBJよりも、それは1つが合理的に静的なモデルのために使用する必要があるだろうより多くの柔軟性を可能にします。追加の柔軟性が必要な場合は、COLLADA
bobobobo

18

頂点の色付けを容易にするWavefrontの* .objのフレーバーがあります。これらをエクスポートできる2つのアプリケーション、つまり「MeshLab」(無料)と「MeshMixer」(オートデスクからも無料)があります。頂点カラーは実際に見つかりました以下に示すように、各頂点定義の直後。

(* .objの部分)

####
#
# OBJ File Generated by Meshlab
#
####
# Object VERTEXPAINT_004_OBJ.obj
#
# Vertices: 284
# Faces: 281
#
####
mtllib ./VERTEXPAINT_004_OBJ.obj.mtl

vn 0.029683 0.730087 -0.682709
v 1220.094482 -572.500000 177.713943 0.984314 0.764706 1.000000  

# "3 vals for Vert and 3 vals for Col"

vn 0.000000 0.858139 -0.513418
v 1291.571533 -609.439636 -28.628490 0.921569 0.219608 1.000000
vn 0.303129 0.896367 -0.323480

meshlabを使用して「頂点ベースのアンビエントオクルージョン」を生成し、「MeshMixer」で開きます。

これはあなたの問題を明確にするはずです。頂点カラーリングはシェーダーの出現とともに戻ってきていると思います。画像マップが発見されたとき、頂点カラーリングが無視されているように見えるのは面白いです。今、「頂点カラーリング」の戻りが見られるはずです!これが有用かどうか教えてください!


ああなるほど。頂点の位置を指定した、3つのフロートとして頂点ごとの色を追加しましたv。(うまくいけば)既存のOBJパーサーとの互換性を壊さない賢い方法。
bobobobo

+1最近取得したobjファイルで、これらの色の付いた頂点に正確に遭遇しました。よるとOBJ頂点カラーリング解析の問題・課題#2083・mrdoob / three.js、色は、赤、緑、青の順になっているように典型的なものであり、0から1へ、あなたはのいずれかからのこのための任意の実際のドキュメントを認識していますそれをサポートする人々?それを実装するオープンソースコードはどうですか?広く受け入れられているobjの規格は実際にありますか?
nealmcb 14年

Aha-私の質問の1つに答えるために、MeshLabは無料であるだけでなく、オープンソース(GPL)およびクロスプラットフォームでもあります:)
nealmcb 14年

7

Wavefront OBJは、メッシュの色グループが同じ色であるマテリアルをサポートしています。

材料ステートメントは次のようになります。

newmtl redMtl
Kd 1.00 0.00 0.00
Ks 0.50 0.50 0.50
Ns 18.00

したがって、Kdは拡散成分、Ks鏡面反射光です。

これらは、.objファイルに付属する.mtlファイル内で指定されます。.objファイル内には、次のようなステートメントがあります

usemtl redMtl
f 1/5/1 30/39/2 20/29/3
f 20/29/4 30/39/5 31/41/6
f 35/48/7 26/35/8 2/6/9

これは、そこで指定された面がredMtlマテリアルを使用することを意味します。objファイルを解析しているとき、これは頂点ごとの色に変換されます。

さまざまな色がたくさんある場合は、さまざまな素材がありますが、それは可能です。

特定の顔のグループに異なるマテリアルを割り当てる方法のビデオを次に示します。必要に応じて、メッシュの各面に異なるマテリアルを割り当てることができます。


5
残念ながら、これは頂点単位のカラーリングではなく、面単位のカラーリングのみを許可します。
ふわふわ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.