mieki256's diary



2017/03/20(月) [n年前の日記]

#1 [cg_tools][dxruby] Wings 3Dで頂点カラーを指定できるか試していたり

blenderを使って頂点カラーの指定ができるか試していたけど、もしかして Wings 3D を使うともっと楽に作業できるのかなと思えてきたので試したり。

結論を先に書いとくけど、Wings 3D上でテクスチャを貼ったり頂点カラーを指定したり等をしてはいけない感じだなと。何故なら、そのあたりの情報はまともにエクスポートできなくて結果ハマるから。あくまで、頂点座標群を作るツールとして扱って、3Dモデルの形ができた段階で blender に持っていって、そっちでテクスチャを貼ったり等したほうがヨサゲ。

でもまあ、一応、調べたアレコレについてメモ。

頂点カラーの指定方法。 :

とりあえず、頂点を選択して、パレット上の色をクリックするだけで、その頂点に色を割り当てることができた。ただし、Matrialの設定で、Vertex Colors を「Set」もしくは「Multiply」にしておかないとダメ。

wings3d_vtxcol_ss01.gif


例えば Cube を新規作成した状態なら、デフォルトで Cube全体に、「default」という名前のマテリアルが割り当てられてる。アウトライナーウインドウで、その「default」を右クリックして「マテリアル編集」を選べば、Vertex Colors の指定を変えられるはず。

マテリアルの Vertex Colors は、テクスチャが貼ってない状態なら「Set」でOK。ただし、テクスチャが貼ってある状態なら、「Multiply」にしておかないと、テクスチャと頂点カラーの両方が反映されないらしい。

wings3d_vtxcol_ss02.png

テクスチャの貼り方。 :

テクスチャの貼り方は、以下の記事が参考になりました。ありがたや。

_操作に慣れる9 Wings 3D: おじさんのCG日記
_操作に慣れる10 Wings 3D: おじさんのCG日記
_操作に慣れる11 Wings 3D: おじさんのCG日記

しかし、Wings 3D 2.1.5 では、UVマップを作る際に辺で分けていく操作がよく分からず。昔の版では、別に開くウインドウ上で辺選択モードも選べたらしいけど、面選択モードにしかならない…。まあ、右クリックメニュー → セグメント化する → 自動セグメント化、で、ある程度分けてくれるようではあるけれど。

む。辺選択と面選択の両方が使える時があるような。メインウインドウ側の、辺選択、面選択ボタンの状態で、何が選択できるのか違ってくるらしい。辺選択モードにして辺を選択したら、右クリックメニューを出して手動で分割する辺を指定することができた。

アンビエントオクルージョンの利用。 :

_Wings3D Misc Memo によると、アンビエントオクルージョンの結果を頂点カラーに反映させることもできるらしい。Tools → アンビエントオクルージョン、で適用される。

「アンビエントオクルージョンってなんや?」…以下の記事が参考になりそう。

_アンビエントオクルージョン・はじめの一歩 - アンビエントオクルージョンちゃん

試してみたら、たしかにそれっぽくなった。

wings3d_vtxcol_ss03.png

ただ、テクスチャ画像への反映のさせ方が分からん…。

.xファイルでエクスポートしてみた。 :

DirectX(.x)ファイルでエクスポートしてみたけど、中身を眺めて若干困惑。blenderからエクスポートされた .xファイルとは、色々違うな…。

例えば、「Mesh」のあたり。Wings 3D は、こんな感じ。
Frame Cube1 {
    Mesh {
        36;
        -0.5, -0.5, -0.5;,
        -0.5, -0.5, 0.5;,
        -0.5, 0.5, -0.5;,

blender は、こんな感じ。
    Mesh { // Cube mesh
      36;
      -0.500000;-0.500000; 0.500000;,
      -0.500000; 0.500000;-0.500000;,
      -0.500000;-0.500000;-0.500000;,

各数値の区切り文字からして違う…。

また、blenderからエクスポートした .xファイルには、
      MeshVertexColors { // Cube vertex colors
        36;
        0; 0.619608; 1.000000; 0.000000; 1.000000;;,
        1; 0.000000; 0.031373; 1.000000; 1.000000;;,
        2; 0.619608; 1.000000; 0.000000; 1.000000;;,
てな感じで、おそらく頂点カラー情報が含まれているけど。Wings 3D 2.1.5 or 1.5.4 からエクスポートした .xファイルには、頂点カラー情報が含まれていないように見えた。

blender からエクスポートする際、デフォルトでは「Export Vertex Colors」のチェックが外れているので、ひょっとすると標準的な .xファイルは頂点カラー情報を含まないもの、とされているのだろうか。でも、Wings 3D から .xファイルでエクスポートする際も、「頂点カラーの書き出し」というオプションがあるんだよな…。わざわざオプションが用意されていてチェックを入れてるのに出てこないということは単にバグなのか、それとも何かの仕様と絡んでいてコレで正解なのだろうか…。

考えてみれば、頂点カラーについてはテクスチャ画像側であらかじめその色にしておくことで、ある程度代用できそうな気もするし…。

実際、Wings 3Dは、例えばアンビエントオクルージョンの結果を頂点カラーに反映させつつも、ソレをテクスチャに焼き込む(?)ことで陰影があるように見せる、てなやり方を前提にしているっぽいし。

このあたり、わざわざ頂点カラーをモデルデータに持たせなくていいよ、テクスチャに焼いとけよ、てなノリがフツーなのだろうか…。どうなんだろう。でも、頂点カラーを指定できたほうが、同じテクスチャを使っていても見た目を色々と変化させられるよな…。リソース節約を考えたら対応してるほうが…。

wrlファイルでエクスポートしてみた。 :

昔のVRMLは .wrlフォーマットなるものを使っていたらしい。テキストファイル形式。Wings 3D にも .wrl のエクスポータが同梱されてるので、試しに .wrl でエクスポートしてみた。

.wrl なら、頂点カラー情報が含まれていた。が、しかし、今度はテクスチャのUV情報が含まれてない…。出力時のオプションに「UV情報を書きだす」というチェックボックスが用意されているのに、出力してみると含まれていない…。

一体どうなってるんだ。Wings 3D。

試行錯誤。 :

まさか Wings 3Dは、テクスチャのUV情報と頂点カラー情報についてエクスポート時に排他になるのでは。と予想して頂点カラーのみ指定したモデルを .x でエクスポートしてみたけど、やっぱり頂点カラーは含まれてなかった。

当時のやり取りを発見。 :

その後も諦めきれずにググってたけど…。

_Wings 3D .X Exporter - SEWiki
Note: Vertex colors are not supported and must be converted to materials before exporting, or else they won't show up.

Wings 3D .X Exporter - SEWiki より

「.x のエクスポータは頂点カラーをサポートしてないよん」と明言されてた。やっぱりそうか…。

_Wings 3D .X Export Plugin :: Spaceempires.net
As for vertex colors, I'm not sure if DirectX even supports those; it seems to support only assigning colors on a per-face basis, not per-vertex. But you should be able to convert your vertex colors to a UV-mapped texture inside of Wings with a few commands... I think it's "convert vertex colors to materials" then "UV mapping" then do your mapping then "create texture"... then once I get the textures to export you can just do that procedure when you're finished with a model.

Wings 3D .X Export Plugin :: Spaceempires.net より

2005年頃のやり取りだけど、「DirectXって頂点カラーをサポートしてねえだろ」「面単位でしか色をつけられねえよ」「似たようなことしたければテクスチャに焼けや」と言ってる、のかな。つまり「対応する気はねえ」「これが仕様だ」と…。

_.x形式 は、DirectX10 からサポート外になったらしいし…。 _DirectX - Wikipedia を眺めると、2002年にDirectX9、2006年にDirectX10が公開されたらしいから…。

もしかすると、Wings 3D の .xエクスポータは2005年頃に作られたものの、直後に .xフォーマットがサポート外になってしまって改良するモチベを失って、当時の仕様のまま放置、だったりするのかな。他の3DCGソフトとの連携用途や、DirectX の標準機能以外での使い道までは考えてなかったのかもしれない。

blenderに持っていければなんとかなるだろうか。 :

Wings 3D 側で、頂点カラーを含めて出力してくれる何かしらのフォーマットでエクスポートして、ソレをblenderでインポートして .x でエクスポート、とかやればなんとかなるだろうか…。

ていうか、Wings 3D のファイルを直接インポートできないのかな。と思ってググってたら。

_Wings3d import plugin for Blender 2.57
_kayosiii/blender_io_scene_wings: Wings3d import and export plugins for Blender

コレは! と思ったものの、blender 2.78 ではエラーが出ちゃってインストールできず。残念。

まあ、頂点カラーやUV情報を無視すれば、 _.obj にしてインポートできるという話 も見かけたし…。

_Import Wings 3D files to Blender?

英語圏のフォーラムでも、「いくらなんでもどれかしらのフォーマットでいけるやろ」ということになってるっぽい。

COLLADA形式(.dae) で試したら、一応頂点カラーも含めて blender にインポートできたように見えたけど。Wings 3D関係のどこかのフォーラムで「.dae のエクスポータがちゃんと動いてねえ」という話も見かけたような…。

結論。 :

頂点カラーに絞って調べた範囲では、だけど。Wings 3Dは、エクスポータがどれもボロボロな印象。あくまで頂点座標群のみを作るツール、と思っておいたほうがいいのかもしれない。

テクスチャを貼ったり、頂点カラーを指定したり等のお化粧は blender に持っていってからやるべき、かもしれず。いや、Wings 3D でやってもいいけど、他のソフトに持っていった際に何かしらの情報が失われて作業が二度手間になる予感。

以上です。

過去ログ表示

Prev - 2017/03 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project