LightWaveで二次元キャラ系人物モデリング奮闘記 ―UV編―

最終更新:2016/10/09

ボーン・ウェイトの設定が終わったので、次はIKの設定なんだけど、レイアウトに移る前にLightWaveにおけるUV展開について簡単にまとめておこうと思う。普通はUV展開後、テクスチャを用意してからリギングをするものなんだろうけど、動くかどうかわからないモデルに一生懸命テクスチャを塗っても意味がないのでIK以外のリギングを先に済ませておいた。

UV展開

LightWave標準機能にもUV展開用のツールが備えられているんだけど、平面状、円柱状、球状、アトラスの4種類からしか選べなくて、人物モデルのような複雑な形状のUV展開には向いていない。もっと言ってしまうと、その4種類しかないのであれば、UVマップである意義はあまりない。ただ、平面状であってもUVを使用するとバンプ・マップやノーマル・マップの凹凸がはっきり出るようになるので無意味とまでは言わないけど、必要性はかなり薄い。

そこで、フリーソフトウェアのLightWaveモデラー用プラグインplg_Make_UV_Editを使用する。LightWave関連書籍には大抵使い方が載っているLWユーザー必携のプラグインのひとつ。WEBサイトからプラグインのZIPファイルをダウンロードして解凍し、適当なプラグインフォルダにコピーしてモデラーに読み込ませる。x64ベースのWindowsでは動作を確認していないそうだけど、64bit版のLightWave 10で特に問題なく動作している。

本当はモデル全体のUVを展開する必要があるんだけど、ひとまず例として次の画像のジャケットのUVを展開してみる。

UV000

UVを分割する境界線をエッジで選択していくので、サブパッチはいったん解除しておいたほうが作業しやすい。図解のためにワイヤーフレームにしているけど、エッジの位置が確認しやすいものであればビューモードはなんでもいい。

UV001

plg_Make_UV_Editを起動し、次の画像の数値入力ウィンドウでUVマップ名を決めたらマップを分割するエッジを選択していく。Ctrlキーを押しながら選択すると最後に選択したエッジから最短距離の連続したエッジが選ばれるので、ポリゴン数が多い場合は幾分省力化できる。

UV003

どのように区切ったらテクスチャを塗りやすいかを考えながらエッジを選択していく必要があるんだけど、できるだけUVの分割線を目立たないところに設定しておくとテクスチャを描くときに継ぎ目の調整に苦労しなくて済む。テクスチャ・ペイント(3Dペイントとかポリペイントとか呼び方は様々)ができるソフトウェアを持っている場合は継ぎ目のことはあまり考えなくてもいいんだけど、UV展開をソフトウェア任せにしていると必要以上に細切れにされてしまい、テクスチャのどの部分がモデルのどこに相当するのかわからなくなり、画像編集ソフトウェアでの微調整ができなくなる恐れがあるので、一度は自分で工夫しながらUV展開する経験をしておくのをおすすめする。

UV分割があまりに大雑把すぎても、逆に細分化しすぎてもテクスチャを塗りにくくなるので、どんなテクスチャが必要なのか事前にイメージしておくことが重要になる。最初は加減がわからないと思うので、ざっくり前後に区切ってどのようにUV展開されるのか確認しながら分割するエッジを変更したり増やしたりしていってもいいと思う。展開時に無理があるところはプラグインが適当に補間してくれるので、すべての分割エッジが一筆書きのように連続している必要はないけど、エッジ選択をひとつ増減しただけでUV展開図が大きく変わることもある。

UV002

何かの拍子に選択したエッジがすべて解除されてしまうことがあるので、選択したエッジが複雑になってきたら適当なところで「Save Edge」でエッジ・データを保存しておく。

LightWave 11.5からようやく標準でもUVアンラップ機能が追加されたけど、ポリゴンの「パーツ」やポイントの「ポイントセット(選択セット)」のように過去に選択したエッジをまとめて保存しておく方法がなく、どこのエッジでUVを切り分けたのかを記憶しておいてくれないので、LightWave 7.5の時代に作られたplg_Make_UV_Editのほうがまだアドバンテージがある。

モデリング中のエッジ選択の方法とは異なり、選択判定が結構シビアでエッジの中央付近を正確にクリックしないと選択されないので、選択しにくい場合は、数値入力ウィンドウの「Hide Handle」のチェックを外してハンドルを表示させるとどこをクリックすればいいのかわかりやすくなる。次の画像のような静止画だと表示がゴチャゴチャしてかえってわかりづらくなっているように見えるかもしれないけど、プレビューを回しながら見てみるとハンドルがあるのとないのとでは相当違う。

UV004

また、「Ignore Backface」のチェックを外すと表側に見えていないエッジも選択できるようになるので、裏手に回り込んでいて選択しにくいエッジを選択したい場合などその都度使い分ける。

UV005

エッジの選択が終わったら、念のためエッジ・データを保存し、「Make UV」をクリックすると次の画像のようにUVが展開される。塗り分けテストのためにジャケットの本体部分と肩の部分を別のサーフェースにしていて、「Divide by Surface」を選択していたので、次の画像のようにジャケット本体から肩と襟がバラバラに展開されてしまった。

UV006

これではテクスチャを塗る時に都合が悪いので、肩のサーフェースをジャケット本体のサーフェースに統一し、再度「Make UV」すると次の画像のように展開された。肩とジャケット本体がつながっているのがわかる。「Divide by Surface」のチェックを外してもいいんだけど、それはそれで別の問題が起きることがあるので、モデルの都合で判断する。

UV007

このように、展開図が気に入らなかった時に何度でもUV展開をやり直すことができるので、plg_Make_UV_Editは非常に便利。エッジ・データさえ残っていれば、テクスチャを描いていて不具合に気付いた時にUV展開からやり直すこともできる。

現状ではUVマップに余白が多い。この余白を有効利用したい場合は、plg_Make_UV_Editと制作者が同じplg_Pack_UV_Chartプラグインで再パッキングできる。UVマップはモデルのジオメトリをUV平面に投影したものだけど、三次元空間とは独立した概念なので、UVマップ内にあるポイントを動かしてもモデルの形状には影響しない。最初は理解に苦しむかもしれないけど、色々試してみて少しずつ体感として理解していってもらうより他にない。

また、テクスチャを塗る時にポリゴンが左右対称、上下対称や直線状に並んでいたほうが何かと都合がいいので、あらかじめUVマップを整然と整列させておくという作成スタイルもある。ただ、テクスチャ作成が楽になる代わりに最終的にポリゴンに貼り付けた時に実際のジオメトリに合わせてテクスチャの伸縮が起こるので、文字や記号など模様に意味のあるものについては判読できなくなる可能性がある。

文字や記号の可読性とテクスチャ作成の簡略化を両立させることもできるけど、UVの特性を把握した上で、市松模様や水玉模様の歪み調整用のテクスチャを別に用意してテクスチャの歪みを丹念に修正しなければならないため、技術的にはむしろ高度になる。

今回はそれほど難しいテクスチャを作成する予定がないので、パッキングとUV編集は省略する。所望のUVマップが得られたら、Enterキーを押すか、plg_Make_UV_Editを割り当てたメニューボタンをクリックして編集モードを終了してUVマップを確定し、オブジェクトファイルを保存する。

テクスチャを描く

UVマップができあがったら、画像データに出力して画像編集ツールでテクスチャを描くんだけど、その画像出力でつまづき、結構悩んだ。LightWave 10からUVマップ(厳密には三面図のワイヤーフレームも含めて全部)をEPS形式で出力できるようになっている。「ファイル」メニューから「出力」を選ぶとEPSファイルにエクスポートできる。

UV008

次の画像のようなEPS出力ダイアログの「View」を目的のUVマップに設定し、ページサイズを選択する。インチスケールなので面食らうかもしれないけど、300dpi固定の解像度で出力されるので、デフォルトの6インチ四方だと1800×1800ピクセルの画像になって出力される。「Draw Grid」はグリッドを出力画像に埋め込むためのもので、必要に応じて指定する。「Draw Points」はよほど特殊な用途でない限り使う機会がない。

UV009

EPS形式はポストスクリプトに基づく画像形式なんだけど、ポストスクリプトの権利をアドビシステムズが保有していることもあり、対応している画像編集ソフトウェアが限られていて、メジャーなところではAdobe PhotoshopかIllustratorくらいしかない。GIMP2も一応ファイル形式の名前だけは表示されるけど、どういうわけか、正しく読み込まれない。

Illustratorの場合はUVマップがベクター画像として解釈されるので拡大縮小に強くなるという利点があるけど、ページのサイズは考慮されないので、上のダイアログでグリッドを出力しておかないと余白も含めたUVマップにピッタリ合う正方形の画像に形成するのでさえ負担になる。

ここでは、オーソドックスにPhotoshopでの編集方法を書いていく。PhotoshopでEPS形式ファイルを開こうとすると、次の画像のようなダイアログが表示される。6インチ四方、300dpiなので1800×1800pxのサイズになっている。これで特に問題なければ、「OK」を押すとラスタライズされる。アンチエイリアスはお好みで。マスクなどに自動選択ツールを使いたい場合はアンチエイリアスしないほうがいい場合もある。

UV010

ラスタライズが完了すると次の画像のようにUVマップがPhotoshopに表示される。これにレイヤーを重ねてUVマップをアタリにしてテクスチャを塗っていく。UVマップがラスタライズされたレイヤーは誤って編集してしまわないようにロックしておくのが無難。

Photoshopの場合はページサイズの設定や画像の位置調整が必要なく、すぐに描き始められるのが長所なんだけど、ラスター画像なのでPhotoshopをそれなりに使いこなす二次元作画スキルが必要になる。もっとも、最近のPhotoshopはスマートオブジェクト化が進んでいるので、幾何学的模様を任意の時点でパスによって変形・編集でき、さながらベクター画像のように作画することもできるようになっていて、Illustratorとの境目が曖昧になりつつある。

UV011

ひとまず、何も塗らずにPNG画像に出力してジャケットに合わせてみる。色・質感編集(Surface Editor)からジャケットのサーフェースを選択し、「色」設定の「T」ボタンをクリックしてテクスチャ設定画面を開く(テクスチャを完全に削除したい場合はShiftキーを押しながら「T」ボタンをクリックする)。

レイヤー種に「画像マップ」を選択し、投影は「UV」、UVマップは作成したUVマップ名、画像はPhotoshopで出力したPNG画像を指定する。なお、透過PNGを指定することもできるので、透明ピクセルに相当する箇所はサーフェース色か直下に位置するレイヤーが透けて見える。

UV019

「テクスチャ使用」をクリックするとモデルにテクスチャが貼り付けられる。次の画像のとおり位置はピッタリ合っているのは確認できた。ただ、サブパッチの都合で肩の部分が歪んでいるので、UVマップのポリゴン境界のとおりにテクスチャを塗ったとしても肩の塗り分けは綺麗にできないことが予想される。

UV012

とは言え、サブパッチによる歪みを計算に入れてテクスチャを描くのは困難なので、Photoshopでは素直にUVマップのポリゴン境界に沿ってテクスチャを作成していく。主に肩の塗り分けと、前に垂れている襟の輪郭の塗り分け、ジャケットの合わせ部分の装飾と裾の塗り分けをしている。ほとんどベタ塗りだし、テクスチャの描き方はそれこそ千差万別なので細かい描き方は省略する。

UV013

UVマップの境界線から余白にはみ出している箇所は無視され、モデルの表面には反映されないので境界線ギリギリに塗って継ぎ目にサーフェース色が一部残ってしまったりするよりは若干はみ出すくらいがちょうどいい。必要最低限の塗り分けが終わったら、UVマップのレイヤーを非表示にし、PNG画像に出力する。

LightWaveに戻り、着色前のテクスチャを着色済みのテクスチャに差し替える。前の画像に上書き出力して「画像編集」から再読み込みしてもいい。

UV020

歪みの修正

UVマップのポリゴン境界線に沿って色を塗ったので、サブパッチの影響により次の画像のように色の境目が歪んでいる。着色前のマップで予想できていたし、ある程度はやむを得ないんだけど、このままではさすがに目立つし格好悪いので、放置するわけにもいかない。良い方法か悪い方法かは別にして、テクスチャではなくUVマップを編集して歪みを修正する。

UV021

UVマップにテクスチャ画像を重ね、ポイントを選択して青色に塗られている方へ移動させる。ポイントの移動に従って色の境界が前方に動いていくのがわかるはず。

UV022

近傍のポイントも移動させて青色の面積をやや拡大させながら色の境目の歪みが許容できるくらいになるまで調整する。左肩が終わったら、右肩も同様に修正する。こういう時にUVマップを左右(上下)対称に整列させてあるとポイントの移動量は単純に正負を反転するだけでいいので、どちらへ移動させればいいのか悩まなくて済む。今回は対象が片側4ポイント程度だったので軽微な調整で済んだけど、事前のUVの整理にかける労力と天秤にかけてどちらが気楽かその都度判断する。

UV023

UVマップによるテクスチャの貼り付けが終わり、歪みの修正も済んだのが次の画像。ようやくジャケットらしくなってきた。

UV014

古典的なテクスチャ画像作成法

EPS形式の画像ファイルを読み込めるソフトウェアを持っていない場合や、どうしてもベクター画像で幾何学的にテクスチャを描きたいことがある。そういう場合は、LightWave 9.6以前から使われてきた古典的な方法でUVマップからテクスチャ画像を作成する。

まず、UVマップを表示しているビューの右上の最大化ボタン(虫眼鏡ボタンの右隣り)をクリックし、UVマップをディスプレイの解像度の許す限り大きく表示させる。

UV015

Alt+PrintScreenキー(F12キーの隣り)でウィンドウ全体のスクリーン・ショットを撮り、GIMPなどの画像編集ソフトウェアに貼り付ける。UVマップいっぱいで正方形にトリミングし、画像サイズを計測する。上の画像の場合は、984×984pxだった。トリミング後の画像をPNGなど圧縮で画質が劣化しない画像形式で保存する。

UV016

次に、Inkscapeを起動し、ドキュメントのプロパティを開く。ページのサイズをスクリーン・ショットと同じ984×984pxに設定し、トリミングしたUVマップ画像をインポートする。

UV018

インポートした画像はひとつのオブジェクトとして扱われるので、X座標とY座標をともに0に設定するとページの左上隅ピッタリに合わせられ、ページサイズとも一致させられる。

UV017

スクリーン・ショットの色が濃い場合は、当該オブジェクトを選択した状態で左下の「O:」(Opacity)の数値を下げてオブジェクトの不透明度を下げる。スクリーン・ショットを置いたレイヤーは間違って編集しないようにロックし、新しいレイヤーを用意してそこにテクスチャを描いていく。テクスチャ画像をビットマップに出力する際にはスクリーン・ショットのレイヤーを非表示にすればいい。

スクリーン・ショットを土台にするなんて、すごく大雑把な方法に思えるかもしれないけど、LightWaveではなかば公式に利用されてきた伝統的な方法なので、結構正確にマッピングできる。

この方法に限ったことではないけど、UVマッピングは厳格な位置やサイズの調整が必要なマッピングにはあまり向いていないので(UVを綿密に設計すれば不可能ではないけど)、別のマッピング方法を試すか、LightWaveではメモリの許す限りいくつでもUVマップを作れるので新しいUVマップを用意してそちらを使用してレイヤーを複数重ねるかを選ぶことになる。

途中経過

取り急ぎ、無地のままでUV展開が必要だったジャケットだけテクスチャを作成した。二次元イラスト風にしたい場合はレイトレースやシェーディングに頼らずに影なども直接テクスチャに描き込んでしまうのが定石になっているけど、それは最後の手段に残しておいて、LightWaveならではのアプローチで非写実的出力を目指す。

UV024

関連記事

参考記事

アンチエイリアス部分にアルファチャンネルを適用する

最終更新:2016/09/06

3DCGモデルのエッジ・ラインの抽出について書いた2013年5月14日の記事では、エッジ・ラインだけを残してそれ以外を透明にするためにGIMPの「色域を選択」機能で一括選択してざっくり削除していたけど、アンチエイリアシングで生じた暗い色のピクセルもそのまま残ってしまい、あまり綺麗にはできていなかった。

そこで、8ビット256階調のアルファ・チャンネルを利用してピクセルが暗くなるほど透明度が増すように設定し、背景に溶け込ませることができないだろうかと考えた。画像処理を得意とするソフトウェアを開発する企業の中には当然同様のことを考える人はいて、誰もが知っているAdobe Photoshopはもちろん、フリーライセンスのGIMPでも「レイヤーマスク」という機能で実現されている。モノクロ256階調のレイヤーマスクが黒に近いほどレイヤーの表示は透明に近づき、白に近いほど不透明度が増していく。

マスクを使うとなれば、グレースケールとしても使える画像のほうが何かと都合がいいので、前の記事では、背景色やサーフェース色を暗い青 RGB=(0,0,32) に指定していたけど、これを黒 RGB=(0,0,0) に設定しなおす。エッジ・ラインの色は白 RGB=(255,255,255) で同じ。前回はLightWaveの出力をアルファ・チャンネルとともに32ビットPNG形式で保存していたけど、あえてアルファ・チャンネル情報を破棄して24ビットPNG形式で保存する。

今回用意したのは次の画像(モデルは前回のものとは若干異なる)。

Alpha005

Adobe Photoshopによる方法(Photoshop CC 2015)

Photoshopで対象となる画像を開き、レイヤーパネルの下に並んでいるアイコンの中の左から3つめの「レイヤーマスクを追加」ボタンをクリックする。メニューからでは、「レイヤー」-「レイヤーマスク」-「すべての領域を表示」を順に選択する。すると真っ白なレイヤーマスクのサムネイルが当該レイヤーの隣に追加される。

Alpha000

次に、対象画像のレイヤー(カンバス)を全選択(Ctrl+A)し、コピー(Ctrl+C)しておく。レイヤーマスクのサムネイルをクリックして選択状態にして、更にAltキーを押しながらクリックすると、レイヤーマスクの編集画面になる(この辺はちょっとわかりにくかった)。コピーしておいたレイヤーをペースト(Ctrl+V)する。選択状態になっていてペーストできない場合は、いったんカンバスの外をクリックするなどして選択を解除しておく。

LightWaveでの画像保存でアルファ・チャンネルを破棄したのは、コピーしたレイヤーの余白に透明部分があると普通にペーストするだけでは同じ位置に貼り付けられないことがあるのと、透明だった部分のマスクは真っ白のままで変わらないので、あらかじめ黒で塗りつぶしておかなければならないから。位置については「編集」メニューから「特殊ペースト」、「同じ位置にペースト(Shift+Ctrl+V)」を順に選べばいいんだけど、1ピクセルでもズレると結果が大幅に変わってしまうので、余計な手間はないに越したことはない。

なお、今回は白い実線部分を残しておきたいので、「階調の反転」は行わない。

Alpha003

再びレイヤーのサムネイルをクリックすると、元は黒かった部分が透明になっている。わかりにくければ、背面に何か色のついたレイヤーを一時的に差し入れてみる。エッジ・ラインに隣接するアンチエイリアスのピクセルもレイヤーマスクの階調に従って半透明状になっているので、これを「ファイル」メニューから「別名で保存」を選択してPNG形式で保存する。

GIMPによる方法

GIMPの場合はPhotoshopよりもシンプル。レイヤーなどが表示されているパネルで対象画像のレイヤーを右クリックすると、「レイヤーマスクの追加」というメニューがある。メニューからでも「レイヤー」-「レイヤーマスク」-「レイヤーマスクの追加」で実行できるけど、右クリックのほうが操作は直感的。

Alpha001

クリックすると、どのようにレイヤーマスクを生成するのか「レイヤーマスク追加」ウィンドウで聞いてくるので、「レイヤーのグレースケールのコピー」を選択して「追加」ボタンをクリックする。これだけでいい。GIMPのインターフェースに慣れてさえいれば、レイヤーマスクの編集の手間がない分、Photoshopよりも手軽ではある。

Alpha002

対象画像を「可視部分」と「不可視部分」に分けて重ねているだけで、特殊なアルゴリズムを用いているわけではないのでソフトウェア間の性能差は生じにくく、Photoshopでやっても、GIMPでやっても基本的に結果は変わらない(はず)。

レイヤーマスクを利用して加工したものが次の画像。白い実線以外の部分は透明になっているのがわかりやすいように、ウェブサイトの背景画像の上に表示されているもののスクリーンショットをとった。元の画像よりもエッジが細くなった印象はあるけど、従前の方法よりシャープさが増し、不自然な段差も少ない。エッジの太さについてはLightWave側でなんとでもできる。全体的には綺麗にできていると思うけどいかがだろうか。

Alpha004

関連記事

参考記事

エッジ・ラインの抽出

最終更新:2016/09/06

ウェブサイトの画像を作るのに必要になったので、オブジェクト(モデル)輪郭のエッジ・ラインを抽出してみた。LightWave Super Cel Shaderを使う方法と、自己発光を使う方法のふたつを紹介する。

レイアウトのレンダーオプションで「ワイヤーフレーム」を指定するだけでは、ポリゴンの表面が全部透明になってしまい、モデリング中のワイヤーフレームのような画像が出力されてしまう(ポイントは目立たないので大昔のワイヤーフレームのゲームのような感じ)。「ラインレンダー」を有効にしてもエッジ・ラインだけが出力されるわけではない。そこで、

『裏側が見えない、余計な線も見えないソリッドなワイヤーフレーム』

を目指してみた。

最初に、「リアリスティック」モードでいつものようにレンダリングした画像。ところどころ文字やマーキングなどのテクスチャが貼られているのがわかると思う。

Dragoon-Realistic_640

これを、次の画像のように出力させるのが目標。オブジェクト・モデルはまったく同じもの。

Dragoon-Wire_640

共通手順・サーフェースの統一

まず、モデラーにある「色・質感編集」の設定で、テクスチャ・マップなどを設定してあるサーフェースをすべて主要な色に統一する。今回の場合、テクスチャ・マップを指定してあるのは主に白色の部分と青色の部分なので、基本色の設定を見ながらその2色に振り分ける。

このとき、「ポリゴン選択モード(Ctrl+H)」で「ポリゴン状態(w)」ウィンドウから「Surf:」をクリックしてサーフェース単位で選択をすると楽にできる。

3DCGは、要は数学の世界なので出力はいつも同じ結果になる。ということは、出力に影響しない作業をいかに効率化するかで時間を稼ぐ。ひとつひとつポリゴンをマウスで選択してたり、なげなわ選択で大雑把に選択してからジリジリ選択ポリゴンを減らしているようではイカンのです。

そもそも、なんでサーフェースを振り分けるなんて面倒くさいことをするかというと、レイアウトにあるオブジェクトのアイテムプロパティの「輪郭」タブで指定するラインレンダーで「サーフェイス境界」を指定すると、テクスチャが設定してあるサーフェースと設定していないサーフェースの境界を、LightWaveは「色の境界」と判断してしまうから。このため、本来カラーリングの境界線も鋭角のエッジのないところに意図しないエッジがたくさん出力されてしまう。

私の場合はだいたい、テクスチャを割り当てるポリゴンの指定には色の境を意図していない。複数のテクスチャも画像編集ツールではなく、LightWaveサーフェース上のレイヤーでブレンドしたり位置を調整したりする。UVマップはサーフェースとは関連付けられるけど独立した概念なので、オブジェクト全体をくるむようなマッピングもメカの場合はあまりしない。

全部のポリゴンをひとつのサーフェースに統一してしまうのがもっとも簡単なんだけど、隣り合うふたつのポリゴンが、例えば平面のように続いていてエッジを共有している場合は、LightWaveのレンダーはそのエッジを省略してしまう。このため、カラーリングの境界に適切なエッジ・ラインが引かれず、ただ輪郭外形(シルエット)をなぞるだけの扁平な出力になってしまう。

主要な色に振り分け終わったら、必要なサーフェースをすべて同じ色に統一する。言うまでもないけど、サーフェースは非常にパラメータが多いので、サーフェース名を右クリックしてコピー & ペーストすると楽チン。今回は暗い青(RGB = 0,0,32)にした。

LightWave Super Cel Shaderを使う方法

Super Cel Shaderはほとんどの一般的なサーフェースの設定を無視するけど、念のため「反射光」や「光沢」、「鏡面反射率」、「透明度」の設定は「0%」にしておく。なお、「拡散レベル」を「100%」にしておかないとサーフェースが真っ黒になってしまうので注意。

Edge_Cel_000

主要な色のサーフェースの「シェーダ」タブにある「シェーダ追加」プルダウンメニューから「Super Cel Shader」を選択する。シェーダを右クリックすると出る「プロパティ」で4段階の明るさの階調の境界値を0~100%の範囲で指定するわけだけど、これをすべて「100%」に指定する。すると、まったくハイライトも影もない扁平な出力が得られる。

Edge_Cel_001

シェーダもプロパティごとコピー & ペーストできるので、ひとつのサーフェースを設定したら、あとはコピーして済ませておきたい。ただし、最低ひとつはシェーダを設定していないと右クリックできないので、シェーダを設定していない場合、「編集」ボタンをクリックして「貼付け」を選択して貼り付ける。このへんはちょっとインターフェースがいまいち。シェーダの設定とまとめてサーフェース全体をコピーしてしまうのも手だと思う。

最後に、別名で保存する。綺麗に色分けしたオブジェクトを壊しては何にもならないので、上書きに注意!

下記「共通手順・レイアウト」に進む。

自己発光を使う方法

自己発光を使うほうが実はLightWave Super Cel Shaderを使うより簡単なことに後で気付いた。

具体的には、モデラーの「色・質感編集」で、「自己発光度」を「100%」に設定し、「拡散レベル」を「0%」に設定する。Super Cel Shaderの場合とは逆に、「拡散レベル」が「100%」になっていると、自己発光していてもサーフェースに微妙な陰影が出てしまうのでソリッドなレンダリング結果を得られない。

Edge_Luminosity000

「高度な設定」タブを選択し、「グロウの明るさ」を「0%」に設定する。レイアウトの設定で無効にすることもできるけど、グロウエフェクトが効いてしまうとエッジ付近にぼんやりした輪郭が出力されてしまう。

Edge_Luminosity001

サーフェースの設定が終わったオブジェクトを別名で保存してレイアウトに配置するか、既存のシーンのオブジェクトを置き換える。元のオブジェクトを上書きしないように注意!

あとは、下記「共通手順・レイアウト」の手順で同じ設定をしていけば同様の結果を得られる。基本的な設定だけでシェーダをいちいち設定しなくて済むので、こちらのほうがオススメ。

共通手順・レイアウト

レイアウトのオブジェクト選択モードにしてから、「アイテムプロパティ」を選択する。「オブジェクトのアイテムプロパティ」ウィンドウが開いたら「輪郭」タブを選択。

「点/線の太さ」を2.0px(ミディアム)、「鋭角の折り目」、「共有しないエッジ」、「サーフェイス境界」をそれぞれ1.0px(スモール)に設定する。「シルエットエッジ」を2.0px(ミディアム)にしておくとオブジェクトの外縁がはっきりしてメリハリがつき、機械出力っぽさが少し減っていい感じになる。もっとカメラとの距離が近ければ「距離でエッジを縮小」オプションがうまく効くかもしれない。

Edge000

エッジの太さは用途と必要に応じて変更する。なお、「その他エッジ」は設定しない。

エッジ色はお好みで。今回はオーソドックスに白(RGB = 255,255,255)にした。

ちなみに、「その他エッジ」をオンにするとこうなる。極端な鈍角のある多角形を三角分割したポリゴンのエッジがそのまま出てしまう。これはちょっとカッコ悪い。

Dragoon-Wire_worth

「ウィンドウ」メニューから「背景オプション」を選択して「特殊効果ウィンドウ」を開く。背景色をオブジェクトの主要色と同じ(RGB = 0,0,32)にする。

Edge001

「プロセシング」タブにある「グロウ有効」はオフにしておく。

Edge002

レイトレースは今回の場合はむしろ問題になるので、ライトは平行光源などフォールオフしないものに変えておく。レンダリング時間も短くなる。

レンダリング時間を長くしてもいいことはないので、ラジオシティを指定していたら、「レンダーオプション」にある「大域照明」タブの「ラジオシティ有効」もオフにしておく。

Edge003

レイアウトのレンダーオプションでレンダーモードを「リアリスティック」に設定し、「ラインレンダー」のみを有効にしておく。

Edge004

他にオブジェクトを配置していなければ、レンダリングをかけると、背景部分にアルファ・チャンネルができる。有効に使いたいので、BMP形式よりはPNG形式や、使用できる環境であればPSD形式(Adobe Photoshop形式)にしておきたい。まだ加工するのであれば、少なくともJPG形式などの不可逆圧縮フォーマットは避けたい。

画像の加工

ここではレンダリング画像をいったんPNG形式で保存して他のソフトウェアに移す。今回は透過機能が使いやすいGIMP 2.6を使用した。主要な色に適当なしきい値(大きくすればするほどエッジ・ラインは細くなる)の色域で一括選択をかけてやるとエッジ・ラインの内側の部分もすべて選択できる。選択部分をDeleteキーで削除してやれば、エッジ・ライン以外はすべて透明になるので、透過GIF画像や透過PNG画像として使える。

色数が少ないので、PNGよりはGIFのほうがファイルサイズも小さくなって取り回しはいいかもしれないけど、用途に応じてお好みで。

ウェブページなどで使うときに背景色や背景画像から浮いて見えてしまうハロー現象を防ぐために二値化するのもいいけど、エッジが途切れてしまったり、アンチエイリアスがかからずジャギー(ピクセルドットの段差によるギザギザ)がくっきり出てしまったりするので「古臭いコンピュータっぽさ」を演出したい時でもない限り注意が必要。拡大縮小にも弱くなるので、画像サイズの調整は減色する前にやっておいたほうがいいと思う。

関連記事

LightWave Super Cel Shader 2.15

最終更新:2016/09/06

NightBlade002f

Super Cel Shaderの使い方をド忘れして無駄な時間を食ってしまったので、備忘録。

「色・質感編集」から「シェーダ」タブを選択。「シェーダ追加」プルダウンメニューから「Super Cel Shader」を選択。必要なサーフェースすべてに関して同様の手順。

シェーダの設定はモデラーでもできるけど、出力結果がOpenGLでは確認しにくいので、レイアウトのVPRで出力具合を確認しながら設定して、後でシーンをオブジェクトごと保存してしまったほうが手軽。Super Cel Shaderを一時的に使うだけの場合は、サーフェースの設定を保存しておくか、専用のオブジェクトを用意する。

オブジェクト選択モードにしてから、「アイテムプロパティ」を選択。「オブジェクトのアイテムプロパティ」ウィンドウが開いたら「輪郭」タブを選択。「点/線の太さ」を2.0px(ミディアム)、「シルエットエッジ」、「鋭角の折り目」、「サーフェイス境界」をそれぞれ1.0px(スモール)に設定する。「共有しないエッジ」は必要に応じて。「その他エッジ」は設定しない(ワイヤーフレーム風にしたければ設定する)。

「レンダー」タブを選択して、「レンダーオプション」をクリック。「レンダーオプション」ウィンドウが開いたらさらに「レンダー」タブを選択。「ラインレンダー」オプションを設定。通常のシェーダを使っている時にラインレンダーを選択してしまうとサーフェースが透明になってポリゴンのエッジだけ色がつく透過ワイヤーフレームが出力されてしまうけど、セルシェードをする場合にラインレンダーを指定しておかないとエッジのラインが出ないので注意。

機首はサーフェース境界なのでやむを得ないけど、カナード翼後ろの部分のエッジはモデリングの手間を減らす都合上生じてしまったもの。真面目に消そうと思えば消せる。主翼端にちょこっと出てる不規則エッジも原因はわかってるけど、今回は実験なのでひとまず放置。

GIMP2.8のメニューバーのフォントの戻し方

最終更新:2016/09/30

以前に、Inkscape 0.48.2以降のメニューがWindowsの設定値に従ってくれず、明朝体風のフォントになってしまうので、Inkscapeのメニューバーのフォントの戻し方という記事を書いた。

GIMP2.8.10より古いバージョン

最近、GIMPもバージョンアップして2.8になっていたので、アップデートしてみたところ、Inkscapeとまったく同じ問題が発生した。どうも、中国語のフォントが選択されているらしいんだけど、クロスプラットフォーム用のフリーライセンス・ライブラリを使用して開発しているソフトウェアではほぼ共通の問題があるらしい。

しかも、設定の変更の仕方が異なるという不親切さ(笑)。

次のgtkrcファイルをテキストエディタなどで開く。

C:\Program Files\GIMP 2\share\gimp\2.0\themes\Default\gtkrc
style "gimp-default-style"
{
  stock["gtk-dialog-error"] =
    {
      { "images/stock-error-64.png", *, *, "gtk-dialog" }
    }
(略)
}

上記の部分に、次のように1行追加する。

style "gimp-default-style"
{
  font_name = "Meiryo 9"
  stock["gtk-dialog-error"] =
    {
      { "images/stock-error-64.png", *, *, "gtk-dialog" }
    }
(略)
}

とりあえず、「gtk-2.0」というモジュールと「gtkrc」という設定ファイルが深く関与していることは両者に共通していたので、次にこういうことがあったらまずそこを疑えばいいということだね。

GIMP2.8.16/18

実際に試すことができたのがGIMP2.8.16とGIMP2.8.18だけだったのでこれら2つのブランチについてはほぼ確実だと思うけど、他のウェブサイトを見る限りでは、GIMP2.8.10以降であればおそらく以下の方法でメニューバーのフォントを変更できる。

最近のGIMP2.8ブランチでは変更方法が変わった。PCのユーザーごとに設定ファイルが独立したため、カスタマイズしやすくなった。次のパスにファイルが存在していれば、gtkrcファイルを開く。存在していない場合は、新規作成する。普通のテキスト・ファイルでいい。

C:\Users\[USER NAME]\.gimp-2.8\gtkrc

次の一節をgtkrcファイルの末尾に追加するか、新規作成したファイルの先頭に記述する。

style "gimp-default-style"
{
  font_name = "Meiryo 9" 
}

GIMP2.8がこのファイルを参照しているとする根拠は、次のパスにあるthemercというテーマ設定ファイルで上のgtkrcファイルをインクルードしているから。

C:\Users\[USER NAME]\.gimp-2.8\themerc

themercファイルには次のように記述されている。

# GIMP themerc
#
# This file is written on GIMP startup and on every theme change.
# It is NOT supposed to be edited manually. Edit your personal
# gtkrc file instead (C:\Users\Taku Oshino\.gimp-2.8\gtkrc).

include "C:\\Program Files\\GIMP 2\\share\\gimp\\2.0\\themes\\Default\\gtkrc"
include "C:\\Users\\[USER NAME]\\.gimp-2.8\\gtkrc"

# end of themerc

もし、インクルードしているファイルが異なる場合は、themercに記述されているパスをよく見て新規gtkrcファイルを作成する。

参考記事