Hall

関連アプリケーション

UVMapper:マップを使った塗装テクニック

2008.05.16

作品を制作するのに、ネット上に沢山ある有償無償のモデルを利用しない手はありません。しかしこうしたモデルをPoserで使うためには、それなりの下準備が必要です。その準備の中でもテクスチャ用のマップを用意するというのは、基本中の基本なので是非ともマスターしたいところです。

マップを使いこなす為に

四角い箱や平面用のマップを作成するのは、さほど難しくありません。たいていの場合、そのマップがそのまま平面に貼付けられるので、特に気にせずペイントツールで絵を描いてマップを作成することができます。でも複雑な曲面で構成されたモデルでは、どのようにマップを作成すれば良いのでしょう。

実際多くのダウンロードしたモデルにはマップが付属していません。テンプレートも用意されていないことがあります。もし手に入れたモデルににマップ用のテンプレートが付属していれば、そのテンプレートを基に絵を描くことができますが、テンプレートが付属していないときには悩むことになります。

多くの3Dモデルは複雑な形状をしており、そのモデルに特化したマップを作成する必要があります。そのため、テンプレートの有無は重要なのです。自作したモデルでも同様で、テンプレートを用意しなければマップを作成するのは困難な作業になります。

実は、マップのテンプレートを簡単に作成してくれるツールがあるのです。その一つがUVMapperです。UVMapperは長年フリーウェアとして配布されているツールで、WindowsとMacOSをサポートしています。UVMapperは下記のサイトからダウンロードできます。

http://www.uvmapper.com/

マップの作成手順

マップはモデルのオブジェクトファイルと深い関係があります。2次元のマッピングデータと3次元の面とを対応させたデータは、3次元側のオブジェクトファイルに記述されます。Poserの場合は、拡張子がobjのファイルにこの記述がされています。

拡張子がobjのファイルはPoser独自のフォーマットではなく、wavefrontOBJフォーマットと呼ばれる形式のファイルで、内部は構造的なテキストで3次元モデルが記述されています。このフォーマットは元々Wavefront Technologies社(現在は無い)によって販売されたプロダクト「Wavefront Advanced Visualizer」のためのものでしたが、今では普遍的なフォーマットとして多くのアプリケーションで利用されています。

UVMapperを使ったおおまかな作成手順は、およそ次のようになります。

  1. UVMapperでobjファイルを開く
  2. テンプレートのイメージを操作してオブジェクトのグループをマップ上に配置
  3. 作成したマップを保存
  4. マップと対応したobjを保存

実際に何かマップを作成してみたいと思います。そのためにはobjファイルを用意しなければなりません。今回はちょっとひねって3DSファイルを手に入れてPoserで利用できるように仕上げることを試してみようと思います。

モデルを手に入れる

一口にモデルと言っても色々とあります。実はモデルを手に入れようと思う時、Poserファイルを直接探しても見つからないことは良くあるのです。なぜならPoserにはモデル作成機能がないので、わざわざPoser用にファイルを生成するのは作成者側からすると苦労する上にユーザを限定してしまうので、一般的に行われないのです。しかしPoserには外部ファイルを読み込む機能があるので、その機能でサポートされているファイルなら流用可能なので探すファイル形式はPoserに限定する必要はありません。

乗り物の場合、3D Studioで作成されたファイルが数多く出回っているので、Poserでも扱える3DSファイルが狙い目です。という訳で、今回ゲットしたのはヘリコプターの3DSファイルです。下記のページからダウンロードしました。

HELICOPTER from arqam

ヘリコプターの絵の直下にあるDOWNLOADと書かれたリンクをクリックすると、ファイル「helicopter.3DS」がダウンロードされます。もしDOWNLOADをクリックして、ブラウザに文字化けしたページが表示される時には、DOWNLOADを右クリックして表示されたコンテキストメニューから明示的にダウンロードを指示しましょう。

モデルをobjファイルに変換する

3DSファイルをobjファイルに変換するツールは色々とありますが、ここではPoserに慣れる意味でも、Poserを使って変換を試みてみようと思います。

と言う訳で、Poserを起動します。起動するといつものようにサイモンがでかい顔で表示されるので、さっさと削除します。始終サイモンに悩まされるのがいやでしたら、この空っぽのファイルを保存して、Poserをダブルクリックする代わりにファイルをダブルクリックして起動するのがスマートなのかもしれません。

空のファイルが用意できたなら、このファイルにhelicopter.3DSを読み込ませます。読み込むためには、ファイルメニューから「読み込み」さらにサブメニューの「3D Studio」を選択します。すると「読み込みのオプション」と銘打ったダイアログが表示されます。このダイアログでオプション設定を変更せずに読み込ませても良いのですが、ここで「床に配置」オプションを選択しておくと3Dモデルの座標系に問題があっても、とりあえずモデルが床面上に配置されるので扱いやすいと思います。

読み込んだヘリコプター読み込みが終了すると、床の上に着陸したヘリコプターを見ることができます。少し細部はともかく、可愛らしいヒューズ風のヘリコプターがPoserファイルに読み込まれたはずです。

読み込んだモデルを今度はobjファイルとして書き出します。書き出す時にダイアログが表示されて、どのオブジェクト(モデル)を書き出すのか選択しなければなりません。書き出しはファイル内に存在する全てのオブジェクトがターゲットなのです。objファイルにはヘリコプターだけを書き出します。書き出しが終了したならPoserを使ってのファイル形式の変換作業は終了です。

マップの編集

objファイルが用意できたなら、いよいよUVMapperの出番です。ここでは都合上MacOSで説明しますが、Windowsでも基本的には同じです。

とりあえずダウンロードしたヘリコプターのobjファイルをUVMapperで開いてみます。すると・・・

アラートダイアログ

こんなダイアログが表示されることがあります。表示されなければ、ラッキーです。そのままマップ編集作業に入れます。

このダイアログへの対処は、そんなに難しいことではありません。この警告は、objからとりあえずマップを作成しようと試みた所、デフォルトのマップの領域に収まらなかったことを表しています。とりあえず「Fix now」を選んで進むのが吉です。Fix nowボタンを押すと、とりあえず全てのパーツがマップ内に収まるように大きさを調整してくれます。

読み込んだマップ右の絵は、読み込んだ直後に表示されるマップです。表示されたマップをみると、オブジェクトに対応したパーツが並んでいるのが判ると思います。しかし、パーツのほとんどが、重なり合っている状態になっています。このままだと、マップを着色ようとしても、個々のパーツ毎に色を塗るのは不可能です。そこで、これらのパーツが重なり合わないように再配置していきます。UVMapperは、マップ上のパーツを再配置する事ができます。

再配置するためにはパーツを選択して、選択したキーボード上のキーとマウスを使って、位置と大きさを調整していきます。パーツの選択は、直接パーツをマウスでクリックして選択する方法と、メニューから操作する方法があります。しかし重なり合ったパーツをマウスで選択するのは相当困難で、そのような場合にはメニューを使うしか方法はありません。

Poserのメニューこのヘリコプターの場合、マテリアルが設定されているので、そのマテリアル毎にパーツとして編集が可能です。ということで、早速マテリアルを選択してみます。メニュー「Select」のサブメニュー「Material」から選択したいマテリアル名を選びます。このobjモデルの場合、次のようなマテリアルが設定されています。

  • Screw(ローター類)
  • Cabin(キャビン/操縦室)
  • Back-cabin(キャビン後方のジェット排気口)
  • Glass-cabin(窓ガラス)
  • Pipe-tail(後方に突き出した部分)
  • Back motor-tail(キャビン上部のエンジン吸気口)
  • Plumage-tail(最後部T字型の尾翼)
  • Ski(着陸用スキッド/ソリ)
  • Black circle-cab(キャビン最前部の前照灯)

これらのパーツを選択しては上手く重ならずに、着色し易い大きさにスケールを調整して配置します。例えばCabinは最も目につく部分ですから大きくして塗り易いように端の方に配置した方がよいでしょう。メニューからCabinを選択、「*」キーを押して拡大、矢印キーを使って移動、「enter」キーで固定化して調整します。キーボードで操作するキーについては下の表にまとめておきましたので、参考にしていただければと思います。

キー機能
矢印(←↓↑→)マップ上でオブジェクトを移動する。マウスでドラッグして移動することもできます。
esc移動やスケールの操作を元に戻す。
enter / return移動やスケールの操作を固定化する。
Y(大文字)縦方向に拡大。
y(小文字)縦方向に縮小。
X(大文字)横方向に拡大。
x(小文字)横方向に縮小。
+縦横比率を変えずに拡大。
*縦横比率を変えずに拡大。+キーとは違い、一気に大きさが変化する。
-縦横比率を変えずに縮小。
/縦横比率を変えずに縮小。-キーとは違い、一気に大きさが変化する。

マップ例マップは丁寧に仕上げて行きます。仕上がり具合が塗装のし易さを左右します。先の説明ではメニュー毎にパーツを選択して編集しましたが、その他にマウスを使って範囲指定することもできます。マウスボタンをマップ上で押し続け、ラバーバンド(表示される矩形)で範囲指定することができます。右の作例では、尾翼の垂直部分と水平部分を切り離すために、水平部分を範囲指定で選択後に位置を移動しました。

マップが仕上がったなら保存しますが、マップだけでなくobjも保存してください。マップに対応した情報がobjに追加されているからです。マップを使うためには、マップに対応した新しいobjファイルを使わなくてはなりません。

マップの塗装

さて作成されたマップを塗装します。言うまでもありませんが、念のためオリジナルは別に保存しておきましょう。塗装は自由に行って構いませんが、ちょっとしたコツがあるので解説しておきます。

いきなりペトペトと塗っても良いのですが、できればレイヤを扱えるペイントアプリケーションがあると便利です。まずマップをアプリケーションに読み込ませます。次に、マップをレイヤとして扱えるようにしてください。Photshopなら全体を選択した上でカット&ペーストを行うと、マップはレイヤとして扱えるようになります。その上で、白い部分を色選択ツールで選択して削除します。これで黒いフレームだけが透けてレイヤ化された状態になります。

塗装のポイントは、この骨組みだけになったマップのレイヤを最前面にして、マップの下側に塗装を施して行きます。すると、実際にどのパーツを塗っているのかが判りやすく作業効率良く塗装をすることができます。

塗装中のマップ

ある程度塗装ができたなら、モデルを表すワイヤーフレームのレイヤを非表示にして細部の仕上げを行います。仕上がったらPoserで読み込みが可能な形式で保存します。塗装には決まった方法がある訳ではないので、好みのテクニックで行ってください。

実はこれで完成とは言えないかもしれません。この後で実際のモデルに設定して、レンダリングを行いイメージ通りにマップが、仕上がっているか確認して満足できない箇所を手直しすることになるからです。

モデルのマッピング

マップに塗装したら、いよいよPoserでモデルとマップを対応させて、塗装されたモデルを完成させます。

Poserを起動したなら、いつものように空のファイルを作ります。そして、新しく保存しなおしたobjファイルを読み込みます。読み込む時に「床に配置」オプションにチェックを忘れずに入れておきます。着陸状態のヘリコプターが現れたら、一旦Poserファイルとして保存しましょう。保存するとき、ひな形として利用する利便性を考えて、例えば「ヘリコプター」というような名称のフォルダを作って保存することをお勧めします。なぜなら、マップファイルも取っておかなければならないですし、マップファイルは基本的にPoserファイルと同じフォルダに入れておくからです。

ひとつのフォルダに、Poserファイルとマップファイルを入れたなら、準備完了。早速マテリアルルームでマッピングを行います。

キャビンのマテリアル設定この例では、Cabin、Pipe-tail、Plumage-tailの3カ所に塗装を施しました。各パーツにマッピングしていきますが、全て同じマップを指定することになります。塗装をしていないパーツには特にマッピングする必要はありませんので、3カ所にマップの設定を行えば良いことになります。

マテリアルルームでヘリコプターを選択して、各マテリアルの拡散色の色を指定していきます。Back-cabinは排気口ですので、黒光りするように設定します。拡散色にグレーを反射色に白を設定してそれっぽく仕上げます。Pipe-tailは白、Skiも白に見えるように拡散色を白に設定します。マップは指定しません。Glass-cabinはガラスなので透明度の設定をしますが、100%の透明度だと内部ががらんどうなのがバレバレなので、ここでは拡散色を黒にした上で透明度を70%ぐらいに設定し黒っぽいガラスにして内部を誤摩化しています。それでも下のレンダリングのようなアングルでは、中が丸見えで何も無いのが判ってしまうので、実際に使う時にはカメラアングルにも気をつけましょう。Black circle-cabはライトなので、グレーにするとそれっぽく見えます。Screwは黒に近いグレーにしました。

いよいよCabin、Pipe-tail、Plumage-tailです。拡散色を白にして、それからノードを加えます。拡散色の右側にあるプラグアイコンをドラッグして白い紐を引っ張りだします。マウスボタンを放すとコンテキストメニューが現れますので、新規ノード→2Dテクスチャ→イメージマップを選択してノードを作成します。ノードが作成されたらノードの1番目の項目「イメージソース」をクリックします。するとテクスチャマネージャが表示されるので、そのウィンドウ上にある「ブラウズ...」ボタンを押して、さらに表示されるファイル選択ダイアログでマップを開きます。これでマッピングできました。この作業を3つのマテリアルに対して行って完成です。

設定して行く行程の中で、全てのマテリアルが同じマップファイルを使いながらも、きちんと色分けされているのが見て取れたかと思います。

ところで、マテリアル設定を行うとき、Black circle-cabが「黒」に、Back motor-tailが「バック」と表記が化けたのに気がついたと思います。実はPoserはファイル内部の表記をスペースで区切って理解します。そのため「Black circle-cab」は「Black」に、「Back motor-tail」は「Back」と読み込んでしまうのです。さらにPoserの日本語版の機能が追い打ちをかけます。日本語表記を日本語と英語の単語を置き換えて表現しているので、「Black」が「黒」に、「Back」が「バック」へと書き換えられ、その結果、変な日本語に化けてしまったのです。これを修正する方法はあるのですが、ここで説明すると長くなるので、改めて記事として書くことにします。

レンダリング後前にも書きましたが、最終的に満足のいく塗装を施すには、何度かレンダリングをしてみながら再度マップの塗装をしなおすことになると思います。マップを塗装し直したのにも関わらず反映されないのは、マップが一旦読み込まれるとメモリ上のマップをずっと使い続けるからです。レンダリングの時に、明示的にマップの再読み込みを指示することを忘れないでください。満足のいく塗装が完成したらファイルを保存して、ひな形として取っておきましょう。

作品で利用する

完成したモデルとは別のファイルで作品を作成します。ジェシーを配置して水着を着せ、ジェームスを配置してボディを縮小し、ビルなどの小道具(!)を配置し、そしてヘリコプターを読み込ませます。Poserでは他のPoserファイルに配置されたオブジェクト(モデルと設定)を丸ごと読み込むことができます。作品とは別に、街のセットや乗り物だけのファイルを用意しておくと、その後の作品作りに何かと便利です。

Poserファイルを読み込むには、「ファイル」メニューから「読み込み...」→「フィギュア/小道具」を選択します。すると読み込むファイルを選択するダイアログが表示されるので、ヘリコプターが保存されているPoserのファイルを指定します。この操作で、Poserファイルに納められたモデルが全て読み込まれるのです。

読み込み時に、マップを見つけられずに聞かれることがあります。Poserは、現在使っているPoserファイルと同じフォルダ階層にあるファイルか、Poserアプリケーションと同じフォルダ階層にあるRuntimeフォルダ内にあるファイルしか見つけられないのです。またファイル名を変えてしまったときなどはファイルが見つけられず、ファイルの位置を聞いてくることがあります。その場合には、ファイルの場所を指定し直さなければなりません。正しく指定できないような時には、ファイルを指定せずに処理を進めて、改めてマテリアルルームで設定しなおした方が手っ取り早いかもしれません。

全ての小道具が作品ファイルに読み込まれたなら、後は全体の大きさや配置やライティングを調整して仕上げます。上手くできたら、是非とも何らかの形でネット上で発表してほしいと思います。

作例