デカール製作に関する覚書
機体に華を添えるデカール(マーキング)の私的製作法と、DNMに組み込むまでの私的手順の解説。部分的にMetasequoia使用が前提になっている箇所あり。
はじめに
以下の文章は、あくまでも筆者の私的見解・私的手順を紹介したものであり、これがすべてではありません。
もっと良い方法があったらぜひご教授下さい。
なお、途中登場するPerlスクリプトはすべてF22愛好会氏が、製作・公開なされているものです。このような便利な数々のスクリプトを提供してくださっている同氏に感謝しております。
この文章は一部スクリプトの使用を前提とした箇所がありますが、スクリプトの導入方法に関する解説は行いません。
途中登場する単語のうち、特殊な単語や一般的な意味とは違った使われ方をする単語
についてはYSFSモデリング用語集Wikiへのリンクを設置してあります。
- update log
- 2006-03-06:表記ゆれ、誤字脱字などの修正。
- 2005-09-07:一部単語にYSFSモデリング用語集Wikiへのリンクを設置。
- 2005-08-29:初出。
マーキング製作法の変遷
YSの機体モデルはご存じのようにすべてポリゴン、いわゆる生ポリである。当然、部隊ロゴや機番などといったマーキングを製作するときもすべてポリゴンで製作することとなる。某シムのようにベースモデルだけあってあとはテクスチャを変えれば塗装バリエーションは自由自在、というわけにはいかない。
YSでマーキングといえば従来は機体のポリゴンに直接マーキングを埋め込む方法が主流であった。しかし、OpenGL版の普及や各種スクリプトといった製作支援環境の向上、あるいはMetasequoiaを代表とするGepolyX以外の製作環境の拡大などにより状況は大きく変わった。機体モデル本体の進化ともあいまってマーキングは次第に複雑化し、今では機番や部隊ロゴ入りの機体も珍しくなくなった。
このような作り込みは機体が重くなるだけであり、あまり好ましくないという意見もあるがこれは別の話。
こうなると従来の機体埋め込み式というやり方はなかなか困難なものとなる。その理由の1つとして、マーキングの精密化によりその外周を構成する頂点数がふえ機体本体と「つなぐ」ために大量のポリゴンを必要とするようになったから、ということがあげられよう。また、曲面にマーキングを埋め込む場合、機体にシワが寄ってしまう場合が多々ある。このシワはモデルの美観を大きく損ねるうえ、影とは違い頂点分割で簡単に解決できないやっかいな問題となる。(図1)
ここで登場するのが、今回この覚書で紹介するマーキングを浮かせる方法である。つまり機体本体のポリゴンは切らずに、機体の形に沿うように変形したマーキングを機体本体からほんの少しだけ離れたところに配置するのである。本体のポリゴンを切っていないため、当然であるがシワは発生しない。(図2)さらに必要ポリゴンが本体を切る場合に比べ少なくて済むといった利点もある。ただひとつ重要な問題として、Standard版(NonGL版)における表示の不具合があげられるが、OpenGL版がかなり普及している現状においてはさして問題にはならないであろう。
tyonibukunn氏も自身の覚書において同じようなことを述べられているので、参考までに以下に引用する。
以前までYSFSでは機体そのものの面を切り、色を塗る事でマーキングを施してきた。が。この方法だとマーク、機体側と両方のポリゴンが消費される。何故いままでこのような方法をとってきたかと言うと、ひとえにYSFSのスタンダードバージョンのせいだ。以前まではOpenGLを使用しないスタンダードモードが主流だった。スタンダードでは同じ方向に機体法線を持っていれば、角度によってはポリゴンを透過、無いように見せてしまうという欠点があった。そこで、どのような角度からもマークを見せるように、機体Surfにマークのポリゴンを埋め込む必要があったというわけだ。
だが最近、OpenGLが主流になると、この問題は解決された。正直言って機体Surfを切ることにはなんの利点も無い。せいぜいマークが機体に張り付いて見えるというだけだ。(中略)
自分はマーキングをポリゴンの上に浮くようにマークのポリゴンを重ねる事によってつけている。(中略)
マークを貼り付けたい部分のポリゴンを切り出し、それにスクリプトを使ってマークを沿わせ、処理が終了したファイルから元となる基本のポリゴンを消してしまう。こうすると、機体にそった形状のマークが完成する。後はこれをDNM側から適当な距離をもって設置してやればいいわけだ。(中略)
こんな方法でマーキングをすると間接的に機体側のSurfに皺がよらないっていう二次的な利点が発生する。マークのせいで起きた微妙な皺ってやつは本っ当に消えにくいから、泣ける。
製作前の下準備
では本題に入っていくことにしよう。
デカール製作に不可欠なもの、それは−−当然だが−−製作したいデカールの資料である。後にデカール製作するときは資料画像を下絵にしいて頂点を配置していくことになるので、なるべくなら角度による歪みの無い物が望ましい。
Google Image Searchなどで検索するとプラモデルのデカールシートがヒットする場合がある。実機と多少異なっている場合も少なからず存在するが、概形を取るには非常に有効であるので、見つかった場合はそれを下絵に採用してまず問題ないだろう。もちろん写真資料を収集して、そのデカールシートの信頼性をある程度確認しておくことは必要である。また特に文字の場合、フォントがあればBzEditなどといったスプラインエディタでアウトライン化するというのも有効である。
原型製作のワークフロー
資料が集まればいよいよ製作開始である。ここでは私がいつも使っているMetasequoiaを使用したデカール製作法を紹介していくことにしよう。
なお、以下に言う原型とはスクリプトで処理する前のデカールのことを意味する。
Step1:輪郭の製作
まず始めに下絵を取り込んでデカールの輪郭を製作していく(図3)。輪郭製作に当たっては辺のみで製作し、まだ面を貼らないようにしておこう。後の手順でナイフを入れるので、あらかじめ面を貼ってしまうと貼り直し作業が必要となり二度手間である。
基本は下絵に沿うように手動で頂点を打つことだが、円などといった場合は基本図形の変形を上手く活用したい。また、この段階ではデカールのサイズは気にしなくて構わない。後で相似変形すればいいだけなので、一番製作しやすいサイズで作業すればよい。同じ文字が複数ある場合などは、コピーして使い回すと作業時間を短縮できる。「頂点の位置を揃える」(図4)も非常に便利なのであわせて活用したい。
Step2:位置/サイズ決定、ナイフ処理
各デカールについて、輪郭製作が終わったら次は位置とサイズの調節を行う。(図5)本体がSurf/DNMでしか存在しない場合は、DNM2MqoないしはSrf2Mqoなどを利用してMQO化し、そこに挿入する。
輪郭はあらかじめ別オブジェクトとしてバックアップしておくといざというときに便利である。なお、この工程をすぎると位置合わせサイズ調節ともやりにくくなるので、この段階で写真資料をベースに入念に検証しておくべきである。
位置/サイズ調節が完了したらいよいよ面貼り・・・ではない。
後にSurfTextureで処理することを考え、デカールを貼り付けたい側(機体本体)のポリゴンの辺に沿うように輪郭の辺をナイフで切断する。(図6)この処理を怠るとSurfTexture処理後にGepolyXで面を貼り直す必要が出てきて非常に面倒なので必ず実施しておくようにしよう。もっとも、本体側のポリゴンがほぼ平坦で、スクリプトを使ってデカールを変形させるまでもなくデカールと本体を十分密接させる事が可能な場合はこの限りではない。
誤って本体まで切ってしまわないように本体のオブジェクトはロックしておく。辺を切るときは目視で大体一致していれば十分である。拡大してみて微妙にずれてるからといって何度も切り直すことはない。
ナイフ処理については面貼り、Surf化後でもGepolyXの[Cut Polyg By Plane]で可能だが、準備に手間がかかるのであまりお勧めしない。
Step3:面貼り、Surf化前準備
ようやくここで面貼りである。これについては特筆する必要はないだろう。GepolyXと違い超多角形に対応してないためここは地道な作業となる。
面貼りが一通り終わったところでいよいよSurf化に向けた準備作業−−といっても大したことはないが−−を行う。
まず機体本体の、デカールを貼り付けたい部分のポリゴンを選択し別オブジェクトに保存する。以後これをBaseと称する。(図7)これはSurfTextureで処理する際にBaseのポリゴン数が多いと時間が掛かってしまうからである。
次にBaseのポリゴンをすべてTrianglize(三角形化)する。(図8)これもSurfTextureで処理した後にデカールのねじれ(歪み)を最小限にするための措置である。たとえBaseのポリゴンがほとんどねじれていない場合であってもTrianglizeしておくに超したことはないので、とりあえずでもやっておくべきだろう。
なお、Triaglizeによって生じた新たな辺に沿って再びデカールにナイフを入れる必要は無い。
Surfdataモジュールの利用により計算精度が向上したため、上記に示したデカール貼り付け部の別オブジェクト化、およびその三角形化の必要は特にない。したがって、下記ではBaseを「デカールを貼り付けたい対象」の意とする。
最後にBaseの色をデカールで使用していない色に塗装する。なお、デカールでBaseに使用している色を使うことは普通は無いのでこの手順は不要であることが多い。こうすることでSurfTextureで処理して生成したSurfからBaseのポリゴンを消去する作業が、GepolyXを使用するまでもなくColorDeleteで可能になる。
Baseの色統一は、Surf化後にGepolyXのPaint Allを用いてもよいだろう。
また、スクリプトでのデカール貼り付けは一方向からの処理となるので、個々のデカールは適宜別オブジェクトにしておく必要がある。
以上で原型製作作業はすべて終了である。
実際のデカール製作ではここまでが一番大変なのではないかと思われる。原型さえできてしまえば後は機械的にスクリプトで処理を行っていくだけである。もっとも経験が無い場合、その流れが問題であったりするのだが・・・
では次節以降において実際に−−筆者がもっとも効率的と考える−−機械的処理の流れについてみていくことにしよう。
変形処理のワークフロー
Surf化からDNM組み込み手前の作業は(表示確認以外は)すべてスクリプトで行う。処理の流れを追う前にまず、必要となるスクリプトを処理順に挙げておく。まだ入手していないものがあればあらかじめ入手しておこう。
これだけでもう処理内容をお察しになった方も多いのではなかろうか。では順に流れを追っていくことにしよう。
Step1:MQOファイルのSurf化 - Mqo2Srf
まず最初はMqo2Srfを用いて、MQOをSurf化する。これについては特筆するようなこともあるまい。特になにも設定せず普通に出力すればよい。操作もすべて直感的なので、スクリプト付属の説明書を一読するだけで十分に理解できるだろう。強いて言うとしても、「表示Objectのみ出力」を使えば必要としないオブジェクトをSurf化せずに済むということくらいである。
Step2:デカール貼り付け - SurfTexture
Baseと原型のSurf化が完了すればいよいよ次は、今回の主役ともいえるSurfTextureでの処理となる。スクリプトの実際の使い方を説明する前に、この動作について説明書から一部を抜粋する。
あるSurfモデルに含まれる、特定軸を向いたポリゴンに対して他のSurfモデル(平面上にあることが望ましい)を平行投影で貼り付けます。
貼り付けるモデルの頂点を対象モデルのポリゴン上に移動すると同時に、対象モデルの辺を貼り付けモデルの辺との交点で切断します。
テクスチャの貼り付けをサポートしないSurf形式では、模様を再現するにはポリゴンで表現する必要があります。
このスクリプトは模様となるポリゴンの頂点を目的の位置に配置し、構造となるポリゴンの切断点を自動的に生成します。
今回の例で言うと、特定軸を向いたポリゴン
がBase、他のSurfモデル
が原型に対応している。要は、原型をBaseに貼り付けるということである。
この段階で最初に施しておいたナイフ処理が威力を発揮する。確かにこのスクリプトはポリゴンの切断点を自動的に生成
するが、頂点を生成するだけで面の張り直しまではやってくれない。つまりその部分の面の張り直しは手動で行わねばならないということである。これは非常に面倒である。しかし、ナイフ処理を施しておけば−−多少のずれはあるにしても−−あらかじめポリゴンが分割されているため、わざわざ貼り直す必要はなくなるのである。したがって、SurfTextureで貼り付けた後は、Baseのポリゴンの削除、及び未使用頂点の削除のみを行えばいいことになる。これらの作業はすべてColorDeleteを使用することにより一度に可能である。
言葉で説明すると非常に難解に聞こえるが、イメージ的にはさして複雑ではないので一回やってみればすぐに理解できるだろう。
では実際の処理手順をみていくことにしよう。
ここでは、先ほどから図に登場している文字をBaseの左側から貼り付けるという設定で話を進める。また、Baseはbase.srf,原型はdecal.srfというファイル名であるものとする。
といってもそんなに難しいものではない。スクリプトを起動し出現したウィンドウ(図9)に、必要事項を設定するだけである。(図10)必要事項というのは(図10)を見て貰えば説明するまでもないだろう。処理したいSurfと処理方向である。先の手順において、デカールを適宜別オブジェクトにしておいたのはこのためである。
なお当然のことだが、BaseとTextureにするものを逆にしたり、処理方向が間違っていたりすると正常に貼り付けられない。SurfViewなどで処理後のSurfを確認しておいた方がいいだろう。また、ナイフ処理を施してあるので切断点の生成は実質的には不要である。なので、[NO CUT]にチェックをつけておいてもいいだろう。
Step3:不要面の削除 - ColorDelete
SurfTextureで生成されたSurfは、当然だがBaseのポリゴンを含んでしまっている。(図11)しかし我々が必要とするのはあくまでも貼り付けられたデカールの部分だけであり、Baseの部分は必要としていない。よって、この不要ポリゴンを削除する必要が生まれてくる。ここで登場するのがColorDeleteである。もちろんGepolyXだけでも可能なのだが、作業時間短縮の観点からここではスクリプトを利用した方法を紹介する。
Baseのポリゴンを消すのに何故ColorDeleteなのかと疑問があるかもしれないが、Surf化前の最後の工程を思い出して欲しい。そう、Baseの色をデカールで使用していない色に塗装する
というまさにこの工程である。この結果ColorDeleteで出力する色を選ぶときに、Baseで使用した色を選択しなければ、出力されるSurfはBaseのポリゴンが削除された状態、つまりデカールのみの状態となるのである。なお、Step2において[NO CUT]オプションを選択していない場合、「未使用点の削除」にはチェックを入れておくべきである。そうでないと未使用点がSurfに残ってしまい、無駄にサイズ増加させてしまうからである。
処理をしたらもう一度SurfViewで確認して、Baseのポリゴンがしっかり削除されていることを確認しておこう。(図12)これで問題がなければ、残すはDNMへの組み込みのみである。
DNMへの組込と仕上げ
長かった(?)工程もいよいよ終盤である。
完成したデカールをDNMに組み込んで、最後の調整をする。ここからの作業はスクリプトを使わなくても出来る部分も多いが、ここではDFBを利用したやり方を紹介する。組み込み方は非常に簡単である。DFBでDNMを開いたら、そのウィンドウにSurfをドロップするだけである。すると、新たにSRFノードを生成するかどうかを尋ねるダイアログ(図13)が出るので[OK]とし、次にそのSRFノードのID設定ダイアログ(図14)に適当な数値などを入れ、最後にCLA設定ダイアログ(図15)で(通常は)[0(Body/Gear)]を選択すれば終了である。
これでめでたくDNMへの組込は完了である。この段階でセーブしてついに完成・・ではない。
試しにこの段階でDNMをSurfViewなどで開いてみよう。そう、(図16)を見れば分かるように胴体とデカールがほぼ重なってしまっているのだ。これはSurfTextureがデカールの頂点をBase、つまり機体本体に、密着させるように移動させるためである。ではどうすればいいのであろうか。答えは簡単、デカールを少し浮かせればよいのである。すなわち、今取り込んだデカールを、貼り付け方向とは逆向きに、微小距離だけ平行移動させるということである。
では実際どのくらいの距離浮かせればいいのか。これについては一般的に0.02-0.03[m]と言われている。大体のマーキングならこの距離で問題ないはずだが、もし不完全な場合は適宜対応すればよい。平行移動させるには、該当SurfのSRFノードのPOS行を編集すればよい。SRFノードについてはDNM製造に関しての覚書が詳しいので、そちらを参照して頂きたい。POS行を編集したら、もう一度確認してみよう。今度は(図17)のようになっているはずだ。これで位置調整は完了である。
なお、動翼にデカールを貼り付けたい場合は、動翼にデカールをぶら下げる必要がある。このときのPOS行編集は多少複雑であるため、DNMViewerで視覚的に編集したほうがいいだろう。
最後に、デカールのポリ欠け防止のため"RecalcSurf"を実行しておこう。DFBで該当Surfを右クリック→Script→RecalcSurfで簡単に実行できる。
ところで、最初にも述べたとおりこの方式でのマーキングはStandard版ではあまり綺麗に表示されない。なぜなら、Standard版には同じ方向に法線を持っていれば、角度によってはポリゴンを透過、無いように見せてしまう
という描画エンジンであるBlue Impulse 3DG SDKに由来する欠点があるからである。ならばいっそのこと、Standard版ではデカールを非表示にしてしまうというのも選択肢の一つであろう。そんなことが可能なのかと疑問に思われる方も多いだろうが、これは可能である。
SurfをStandard版で非表示にする方法といったらそう、ZZ指定−−すなわち、Non-GL非表示ポリゴン化−−である。主にHUDなどの半透明ポリゴンに設定するこのZZ指定をデカールにしてしまえばよいのである。
ZZ指定や透明度設定についてはSurf半透明設定についての覚書が詳しいのでそちらもあわせて参照して頂きたい。
しかしながらデカールは当然半透明ポリゴンではない。が、ZZ行のみでもStandard版でポリゴンを非表示に出来ることが、現行の最新版(20050522版)で確認されている。では実際どのように設定すればいいかというと、"SetTransparency"でZAの欄を空白にして、ZZにのみチェックをつけて処理するだけである。こうすることで、ZZ設定のみを付加することが可能である。
このデカールのZZ設定のアイデアはCarbonCro氏が発案されたものです。
以上で全工程が終了である。色々なスクリプトを使っていくので初めは難解に感じるかもしれないが、一旦分かってしまえばさして苦労することもないだろう。何事も慣れが肝心である。
どのような形であれ、この文章がデカール製作に対する理解の一助になれば幸いである。






