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

最終更新:2016/09/06

体がおおまかにできあがったので、次は手を作る。人間の手の特徴は決まり切っているので、前後(Z軸)に8分割、左右(X軸)に3分割、上下(Y軸)に2分割のボックスを手の位置に合わせて作成する。ここで作ったボックスが手のひらになっていく。位置や大きさは大体で構わない。

Hand000

次に、エッジ選択モードにし、指の分かれ目に相当する部分のエッジを選択する。ここでは2本のエッジを選択している。

Hand001

この状態で「マルチ加工」メニューグループにあるエッジベベル(EdgeBevel)ツール(Ctrl+B)を選択すると、エッジを分割した後のプレビューが表示されるので、「右クリック」で確定する。LightWaveでは右クリックも左クリックと同様に決定として使われることがある。インターフェースが統一されていないと言われてしまえばそのとおりだけど、エッジベベルは特殊な挙動をするため致し方ない処置なのだと思う。「エッジベベルは右クリック」と覚えるしかない。

Hand002

エッジベベルは、選択したエッジを開いてふたつに分割した上で、その間に4ポイントのポリゴンと枝分かれしたエッジに合わせて3ポイントのポリゴンを補間してくれるツール。ポリゴンを選択してエッジベベルを使っても選択範囲の周囲にエッジを追加してくれる。エッジベベルを使うとポリゴンを破綻させることなく、モデルを途中から枝分かれさせることができる。メカ物などのモデリングをやっているとエッジベベルを使う機会はまったくなく、何に使うツールなのか疑問に思っていたけど、サブパッチ・モデリングをやるようになってからその有用性を理解できた。

次の画像が4本の指の分かれ目を分け終わった状態。

Hand003

例によって、指の根元の部分が都合八角形になったので、角の部分にあるポイントを選択して次の画像のように指の断面を形成しておく。

Hand004

指を作る

どの指でもいいんだけど、人差し指はエッジベベルの都合で左右対称になっていないので、作業しやすい中指の根元のポリゴンを選択し、別のレイヤーにコピーする。コピーしたら次の画像のように移動ツールで少し前に出しておき、後でブリッジツールを使って手のひらと指を接続する時に作業しやすくする。

Hand005

コピーしたポリゴンを「詳細」メニューグループにある反転(FlipIt)ツール(Fキー)でポリゴンの向きを反対にしておく。

Hand006

反転したポリゴンを選択したまま押し出し(Extrude)ツール(Shift+E)で指を伸ばす。拡張プラスを使わないのは、後でブリッジを使う時に接合するポリゴンがないと困るから。1回押し出したら、あとは拡張プラスで指先まで3段階に分けて伸ばす。指先は拡大縮小(Size)ツール(Shift+H)で小さくして細くしておく。

Hand007

爪を作る

次に爪を作る。爪を作るかどうかは好みの問題もあるだろうけど、手が完成してしまってから後で爪を作ろうとすると、反対の手は鏡面複製するとしても、5本の指の分だけ同じ作業を繰り返さなければならなくなるので、汎用性を重視するならとりあえず作っておくことをおすすめする。指全体を肌色のままにしておけば爪の有無はわかりにくいし、マニキュアを塗ったキャラクターを作る際にテクスチャーを描く目安になるものがなくてむしろ問題になるかもしれない。

爪を作らないことにした場合は、「指の複製と接続」に進む。

第一関節までの部分の途中をナイフツール(Shift+K)などで分割しておいて、次の画像のように上の面のポリゴンだけを選択する。

Hand008

選択したポリゴンに拡張プラスを使用してエッジを増やした後、移動ツールで一度押し下げ、次の画像のように拡大縮小ツールで少し小さくしておく。

Hand009

押し下げたポリゴンに更に拡張プラスを使用し、次の画像のように元の位置よりも上まで押し上げる。押し上げた部分の指先側のポリゴンを選択し、拡張プラスと移動で爪の先を前に出す。指先のポリゴンと接触してしまっていても問題ない。

Hand010

ひとまずここまでできたら、Tabキーを押し、サブパッチを適用してみる。加工した場所が次の画像のように爪のような形になっている。指先と爪の先がやや平たいようなので、後で丸くなるように形成する。

Hand011

指の複製と接続

人差し指、薬指、小指の分のモデルを「マルチ加工」メニューグループにある複製ツール(Cキー)で次の画像のように複製する。間隔はお互いに接触しない程度であれば大体でいい。

Hand012

スクリーンショットを撮る順番を間違えてしまったけど、複製する前に「変形」メニューグループの先細り(Taper2)ツールなどを用いて次の画像のように指先に向かうにしたがって細くなるようにしておく。ついでに関節の節をナイフツールで追加してある。

Hand013

次の画像のように4本の指を手のひらがあるレイヤーにコピーする。

Hand014

次の画像のように手のひら側の指の根元と指側の根元のポリゴンを選択する。

Hand015

この状態で「構造」メニューグループにあるブリッジ(Bridge)ツールを選択すると、次の画像のように手のひらと指が接続される。接続に使用したポリゴンは消滅しているのでサブパッチには影響しない。同様に4本の指をすべてブリッジで接続する。

Hand016

ブリッジは、お互いに向かい合った同じ形状のポリゴン同士を自動的に接続してくれる便利な機能。ただ、いつでも思ったとおりにうまく接続されるとは限らないので、最悪の場合はポリゴン作成(Make Poly)ツール(Pキー)でひとつずつポリゴンを生成しながら接続する。

親指は人差し指の第二関節までの部分をコピーして回転(Rotate)ツールで90度横に倒してから接続する。親指の根元は拡張プラスを使って手のひらの横から伸ばしておく。手のひらのポリゴンが多いので、ポイントの統合(WeldPoints)ツール(Ctrl+W)を使って少々強引にでも手首と接続する場所を作っておく。その過程で線ポリゴンができてしまったら削除しておく。

次の画像のような、ひとまず不格好ながら手の最低限の特徴を持ったものができた。

Hand017

手の仕上げ

小指や薬指を小さくしたり、親指を太く短くしたりなどして手の形に整えていく。自分の手の特徴を観察しながら形成していけばよく、想像に頼る部分がほとんどないので見た目ほど難しくない。指の太さの調整は「変形」メニューグループにあるトランス(Translate)ツールを使う。右ドラッグすると選択したポリゴンのノーマル(法線)方向に移動させることができるので、形状を変えずにボリュームを調整したい時に便利。ただし、左ドラッグは通常の移動ツールのように動作するので間違えないように。

手が完成したら、手首の太さに合わせて拡大縮小ツールで縮小しておく。

Hand018

次の画像は完成した手を手首側から見たもの。八角形の断面を持つ手首と接続するために八角形に整えてある。

Hand019

体のあるレイヤーに手をコピーし、ブリッジで接続する…予定だったけど、うまくつながらなかったので手動でポリゴンを作成して接続した。反対側の手は、接続部のポリゴンも含めて鏡面 X(mirrorX)ツールで複製し、ポイントの結合(MergePoints)ツール(Mキー)で接続する。反対の手首側のポリゴンは必要ないので削除する。

Hand020

接続完了後、サブパッチを適用した状態が次の画像。

Hand021

途中経過

体と手が完成した。ついでに足首から下の足を作ってある。足首の前側のポリゴンを拡張プラスで押し出して形成すればいいだけなので特に詳しい説明はしない。自分の足よりも靴の形を参考にすると靴を履かせる時にも容易になる。

Body016

もし、ミュールやサンダル履きなど素足のキャラクターを作る予定なのであれば、手と同じ要領で指と指の間をエッジベベルで作り、拡張プラスで押し出して足の指を作る。手と異なり、全部の指が大体同じ方向を向いていて関節らしい関節も少ないので手よりは簡単なはず。

この時点で高さが10.35mもあり、頭とのバランスが少し心配だけど、頭を作ってからまた考える。LightWaveは「後でなんとかする」という先送りが割と許されてしまうツールなので、若干気になるところがあっても今は手を着けないでおく。

関連記事

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

最終更新:2016/09/06

そのうちいずれは作ってみたいとは思いつつ、メカ物のモデルとはまったく異なる技法や経験を必要とする人物モデル。可動部が比較的少なく、関節部分も何かの軸を規準に全体を単純に回せばいいメカとは違い、モデルを作ったらそれでおしまいではなく、ポーズをつけるために人間の骨格に相当するボーンを組み込んだり、皮膚や筋肉の伸縮も加えた関節の曲がり具合を決めるボーン・ウェイトを設定したりといった「リギング」と呼ばれる作業が必要になる。リグを組む作業はモデリングと同等かそれ以上の根気が要る。また、顔の表情を作ったりするモーフ・マップも今では普通の技術で、人物モデルではやることが山ほどあるのだけはわかっていて、なんとなく気が重く先延ばしにしていた。しかし、得意ではないからといって逃げてまわっていても経験は積めないし一向に上達しない。何より、大枚をはたいて買ったLightWaveの性能をまったく活かし切れていないことになる。

人物モデルはたくさんの人が作っていて、中にはネットで無償配布されているものさえあり、わざわざ自分で作る意義があるのかどうか考えてしまったりもする。一方で、プログラミング言語のソースコードをはじめとしてスクリプト言語やCSSなんかのコードと同じで、他人が作った完成品を詳細に解析した上でカスタマイズして自分用に作り直すというのは非常に難しい。最終的な目的は同じでも使用するソフトウェア、技術や方法は人それぞれだからだ。場合によっては機能や性能は劣るものの自分の知りうる範囲の技術で自作してしまったほうが早いこともよくある。

それに、自分ですべて最初から作ったモデルをひとつ持っておくと、どうやって作ったのかぼんやりとでも頭の中に残るので改善しようとする際にどこをいじればいいのか見つけやすい。カスタマイズのための余地を残しておけばベース・モデルを転用して途中から別のキャラに作り替えることもできる。完成度が高い代わりに手のつけようがないレディ・メイドよりも、出来が悪くともオーダー・メイドのカスタム・モデルのほうが愛着も湧くし、「もっと良くしたい」という動機にもなる。そして何より、自作のオリジナル・キャラクターであれば著作権絡みの問題は一切発生しない。

前置きが長くなったけど、これから人物モデリングを始めていく。リアル系の人物モデルは海外はともかく日本国内ではあまり需要がないし、私自身があまり作りたいと思わないので、二次元キャラクターをフィギュアにしたようなモデルを目指す。もちろん、作るからには女性キャラクター。難易度はむしろ女性キャラクターのほうが高いので、女性が作れれば標準的な体型の男性を作るのはそんなに難しくはない。ガチムチの筋肉質の男性となると話は別だけれども。

準備

さっそくモデリングに取りかかりたいところだけど、最初に準備。

LightWaveモデラーのパースペクティブ・ビューに表示されるプレビューは初期設定ではかなり強くパースがかかっている。そのままモデリングを始めてしまうと、後でモデルをレイアウトに移した時にまったくの別人になってしまったりするので、次の画像の「表示オプション」ウィンドウ(Dキー)を開き、パースが一番弱くなるように「パースペクティブ画角」のスライダーを一番左まで動かしておく。ガイドとケージは基本的には無効にしておく。どちらもサブパッチを適用した時の補助線を表示するものだけど、かえって邪魔になることが多い。いずれにせよ表示の問題だけでモデルには影響を与えないので、試しに表示させてみて自分に合っているようならば有効にしてもいい。

Option000

もうひとつ。次の画像の「一般オプション」ウィンドウ(Oキー)を開き、アンドゥの回数を最大の「128」に設定する。LightWaveのアンドゥは、Adobe Photoshopのヒストリー機能ほど強力ではないけど、可能な限り戻れるようにしておいたほうがいい。一部のツールはバッチ・コマンドのように複数のツールを何回かに分けて実行していることがあるので、1手順戻るのにアンドゥが数回必要なことがあり、あまり少ないと戻りたいところまで戻れなくなる可能性もある。

Option001

何はなくともボックスから

準備ができたら、何はともあれ、モデリングの第一歩はボックスから。人間の身長は大きくても2mくらいだけど、大きさは後でなんとでもなるので、作業のしやすさを優先して1辺が1mのボックスを作る。

Body000

ただの立方体なので、プレビューの画像を示す必要があるかどうかさえ微妙だけど、すべては1個のボックスからスタートということで。

Body001

次に、モデラーの下にある「対称」ボタン(Shift+Y)を押す。以後、Y軸を中心にして左右対称にモデリングしていく。対称モードはY軸中心でしかできないので、必然的にX軸が左右、Y軸が上下、Z軸が前後になる。なお、対称モードはLightWaveのコンフィギュレーション・ファイルなどには保存されないので、PCを再起動などしてからモデリングの続きをする時は必ず対称モードになっているかどうか確認してから始める。

ポリゴン選択モードにし、ボックスの左右のポリゴンのどちらか一方を選択する。反対側のポリゴンも同時に選択されているのに気が付くと思うけど、これが対称モード。ポイントでもエッジでもポリゴンでもY軸を挟んで左右対称の位置にあれば常に両方選択されるし、選択を解除すれば同時に解除される。

こんなに早いうちから対称モードにしなくてもいいんじゃないかと言われそうだけど、何事も慣れが必要なので、一貫して対称モードで進めていく。

Body002

背中合わせの2つのポリゴンを選択した状態で、拡張プラス(Eキー)を使用する。見た目には何も変わっていないように見えるけど、くれぐれもポリゴンの選択を解除したり、Eキーを2回以上押したりしないこと。続けて「変形」メニューグループにある移動(Move)ツール(Tキー)を選択し、数値入力ウィンドウを開くためにNキーを押す。X軸方向に1m移動させる。正確に移動できるならマウスでドラッグしても構わない。

Body003

「適用」ボタンを押し、Enterキーで移動ツールの実行を確定する。次の画像のようになっているはず。片方のポリゴンしか動かしていないのに、反対側のポリゴンも同時に反対方向に動くので最初は少し戸惑うかもしれないけど、いずれ慣れていく。他の変形などのツールの適用範囲も選択したほうに限定されるので、鏡で映したように反対側にも同じ効果が現れる。

ちなみに、前回のおさらいでもあるけど、拡張プラスを使用したので、分割されたエッジに囲まれた面にはポリゴンはない。

Body004

左右の端にあるポリゴンを選択し、更に同じようにしてボックスを横に5つまで増やしたら、真ん中の3つのボックスの下面のポリゴンを選択して拡張プラスを押してから移動ツールでY軸に下方へ1m伸ばす。

Body005

次の画像のような形になっているはず。5つのボックスが並んでいるところが肩から腕になる部分で、3つのボックスの部分が胴体になっていく。

Body006

拡張プラスと移動ツールを繰り返し、胸、胴、腰の順に作っていき、最後は脚を伸ばしていく。腕をもう一段伸ばし、脚になる部分を3回に分けて作り、次の画像のような形になるまで形成していく。なんとなく人のような形になってきた。

Body007

この程度なら最初からボックスツールで直方体を分割して作ってしまえばいいような気もするかもしれないけど、最初に何分割するかあらかじめ決めておかなければならないので、分割数を間違えると最初からやり直しになってしまったり、結局ポリゴンを追加したり減らしたりしなければならなくなる。イラストや漫画で人物を描く時の「アタリ」に相当するものなので、この段階からいきなり厳密にすると修正に無駄な労力を使う羽目になる。それから、このくらいなら頭を使わなくても手が勝手に動いて作っていけるようにならないと、モデリングを始めるのにいちいち気が重くなってしまう。

地面に立たせよう

ここまでできたら、とりあえずモデルを地面に立たせる。「地面」というのは、Y軸座標でゼロのことを言う。「変形」メニューグループにある「その他」から接地(Rest-On-Ground)ツール(F3キー)を使う。「Rest Axis」を「Y」に設定して「OK」を押す。

Body008

次の画像が地面に立った状態。別に地面に立たせなくてもモデリングそのものはできるけど、Y軸のゼロ座標を地面と決めておけば、モデルをレイアウトに移した時に上下に移動させなくて済むので、人物が地面から浮いてしまったり、逆に地面に埋まってしまったりすることを避けられる。また、実際の地面に相当するオブジェクトを作る時の高さの基準になる。

Body009

強力な分割ツール「バンドソープロ」

どの部分も四角形ではさすがにどうにもならないので、ポリゴンを分割する。例として、次の画像のように左足に相当する部分のポリゴンを縦に3つほど選択する。図解のために対称モードは一時解除しているけど、対称モードのまま作業を続けても問題ない。

Body010

「マルチ加工」メニューグループにあるバンドソープロ(BandSaw Pro)ツールを選択する。次の画像のような数値入力ウィンドウが表示されると同時にポリゴンの分割状態が表示される。デフォルトの設定のままモデラーのウィンドウにフォーカスを移し、Enterキーで確定する。ただし、対称モードにしていても、バンドソープロは選択したポリゴンに連続するポリゴン群しか分割してくれないので、脚については片脚ずつ2回に分けて分割する必要がある。

Body011

バンドソープロは、ループ選択のように連続したポリゴンを自動的に一周して分割してくれるツール。連続さえしていればポリゴンの大きさが不揃いでも均等に分割してくれるのでナイフツールよりも確実で、サブパッチ・モデリングの時に特に高い効果を見込める。分割方向は選択したポリゴンの連続性によって自動的に決定されるけど、思った方向に分割されない場合は、「Direction」を「Auto」から「Odd」か「Even」のどちらかに変えてみる。「Preset」で「Default」の他、「Custom 1」から「Custom 10」まで11通りの分割方法を保存しておけるけど、「Default」は特別な理由がない限りは2等分専用にしておくことをおすすめする。余談だけど、バンドソープロは最初読んだ時、「ソープロってなに?」と思ってしまった。ちゃんと「バンド・ソー・プロ」って中点で切っておいてくれれば良かったのに。

両脚や腕の他、首に相当する部分もすべてバンドソープロで次の画像のように分割する。前後の分割も忘れずにやっておく。前後については1回で済んでしまうはず。これで、首、腕、脚のどこの部分をとっても都合、八角形の状態になった。

Body013

少しずつ人間らしく

四角形の角に相当するポイントを選択し、少しずつ丸めていく。断面を正確に正八角形にする必要はまったくなく、なんとなく角が取れたんじゃないか程度でいい。腕と胸がつながっている部分や、首と肩がつながっている部分などは縦や横に一律に動かしてしまうと形が崩れてしまうので、立体的に無理がないかどうかよく考えながら形成していく。

次の画像のような出来の悪い木彫りの人形のような形になっていれば、ひとまず基礎はできた。

Body014

システマティックにできるのはここまでで、あとは、ただひたすらにポイントを選択しては移動して、を繰り返して人間らしい形に形成していく。腕や脚の太さや腰のくびれなどはポイントを一周分まとめて選択してストレッチツール(Hキー)などで大雑把に調整してからにすると若干省力化できる。対称モードにしているので、労力は概ね半分になる。

LW 5.6くらいの昔のLightWaveは対称モードがなく、右半身だけ作って鏡面複製で左半身を作ってつなぎ合わせるという方法を使っていた。よほどのセンスがない限り張り合わせてみたら歪んでいたということも日常茶飯事で、その後の修正が大変だった。

コツとしては、最初は前後左右、つまりX軸とZ軸方向に動かしてみて形を整えていき、どうもうまい曲線にならないようなら、上下、つまりY軸方向にも動かしてみてうまくいかないか試してみる。基本的にトライ・アンド・エラーの繰り返しで、アンドゥとリドゥを連発しながら思い描いた形にしていく。

途中経過

最終的に、次の画像のようなところまで形成した。肘、膝や脚の付け根の部分に関節用の分割を加えたけど、それを除いては一切分割せず首、腕、脚の各所の断面は八角形を維持している。人間は複雑な形をしているので、八角形ではうまい形にならなくて最初は難儀すると思うけど、安易にバンドソープロで分割しないこと。

経験上、ポリゴンを減らしてなんとかなったことはあっても、何の見込みもなくポリゴンを増やして解決したことはほとんどない。ポリゴンを増やすと制御しなければならないポイントが単純に増え、もっと苦しくなる。多少苦しくてもポリゴンを増やさずになんとかできないか試行錯誤することをおすすめしたい。極力少ないポリゴンで目的のモデルの作成を目指すことでモデリングのセンスも磨かれていく。

Body015

指摘されるまでもなく、今の段階だと女性にしてはあちこちボリュームが不足している。しかし今はこれでいい。LightWaveではボリューム・アップは比較的簡単にできるけど、一度ボリューム・アップしてしまうとボリューム・ダウンするほうが手間がかかるからだ。

また、当然ながら最終的には服を着せることを想定しているし、服は体のラインから複製して作るので、無用なボリューム・アップは服のモデリングの際に問題になることがある。頭や手とのバランスもとらないといけないので、この段階から後で修正が困難になるほど作り込まない方が良い。グラマラスな体型にしたいとしても、服を着ていてもわかるくらいのボディ・ラインまでにしておいたほうがいいだろう。

比率の問題

おそらく、手足や胴体の長さをどのくらいにすればいいのか迷うことだろう。そういう時は、右に紹介している『漫画バイブル ゼロシリーズ』などの漫画やイラストの教本がとても役に立つ。特にこのシリーズは単純明快で小難しくなく、全編漫画仕立てになっているので読みやすく理解しやすい。美術の教科書でもいいだろう。逆に、コラムに小さい文字でびっしり追加情報を書いてある指南書は記憶に残りにくいし、リファレンスとしても役に立ちにくい。

ポイントは大きく分けて3つ。

  • 腕の長さは体側に下ろした時に股に届くくらい。
  • 股の高さ(脚の長さ)は頭を含めた体の中心くらい。
  • 膝から下の長さは正座した時にかかとがお尻に届くくらい。

このへんを守っていけば概ねバランスよく作れる。二次元キャラクターでは胴体が短く、脚が長かったりすることもあるけど、そういったアレンジはまた後でもできる。今は基本に忠実に作ったほうが結局は効率的にモデリングできる。非常に良くできたMMD用のモデルをよく観察してみると、大幅にデフォルメしているところはあっても、体のバランスは驚くほど基本に忠実なことがある。静止画ならともかく、動画でダンスをさせるとなると人体の基本をきちんと踏まえていないと不自然に見えてしまうのだろう。

関連記事

LightWaveのサブパッチの簡単な応用

最終更新:2020/04/22

前の記事でエッジとポイントを増やすことでサブパッチの影響範囲を制限できることを書いた。立方体ではあまりにも簡単すぎてサブパッチを何に応用できるのか想像しにくいと思われるので、ここでは一歩進めて、次の画像のようなモデルを用意した。高さの異なる立方体と直方体をつなげたような形で、低いほうの直方体にはさらに立方体状の突起が出ている。このような立体モデルで完成であるとすれば、エッジが必要以上に多いのに気付くと思う。

SubPatch000

この立体モデルに対してTabキーを押し、サブパッチを適用すると次の画像のような形になる。高いほうの立方体部分は角を残していてまだ原型をとどめているけど、右に張り出した直方体のほうは外側の角がなくなり、半円形になっている。また、立方体状だった突起は上面を残して全体が丸くなり、円柱状になっている。プラスチックを形成して作った子供向けのブロックの接続部のようにも見える。元は3DCGの初心者が手習いで作ったような四角だけで構成されたモデルだったにも関わらず。

SubPatch001

このような結果になるのは、サブパッチはあるポイントがエッジでつながっているもっとも近いポイントとの距離で曲率を決めるため、直方体の外側の部分と突起部分についてはその幅いっぱいの距離でサブパッチがかかっているためだ。最初の画像をよく観察して欲しい。直方体の外側を縦に走るエッジにはそれに平行するようなエッジは追加されていない。突起部分の縦のエッジも同様だ。

このようなモデリングをするには少しコツがいる。まず、絶対に守らなければならない鉄則は、3ポイント又は4ポイントのポリゴン以外を使ってはいけないということだ。2ポイントのポリゴン、つまり線ポリゴンが混ざっていると赤いメッセージで警告が出てサブパッチは正常に処理されない。5角形以上のポリゴンがあってもサブパッチはかかるけど、どのポイントがどこのポイントにどのように作用しているのかわかりにくくなるため、極力4ポイントのポリゴンだけでモデリングしていくのが好ましい。3ポイントのポリゴンは4ポイントのポリゴンだけではどうしても苦しくなってしまった時の最後の手段に残しておく。5ポイント以上のポリゴンは意図してサブパッチの自動曲面化に「おまかせ」したい場合のみにする。

そうかと言って、3ポイントや4ポイントのポリゴンにするために分割ツール(Ctrl+L)を頻繁に使ってポリゴンの形成に手間取っていると効率が悪いし、サブパッチの有用性を台無しにしてしまう。ポイント追加ツールは一度にひとつのポリゴンしか処理できないため隣接しているエッジを分離してしまい、サブパッチに穴が開いてしまう現象を引き起こす元になるので基本的には使えない。

そこで、「マルチ加工」メニューグループにある拡張プラス(Extender)ツール(Eキー)を使う。拡張プラスは選択したポリゴンの位置や大きさや向きをまったく変えず、「ゼロ距離」でポリゴンとエッジを拡張する機能。見た目には何も変わっていないように見えるけど、選択を解除しないように注意してポリゴンを移動(Tキー)や拡大縮小(Shift+H)などさせると元のポリゴンの周囲に新しいエッジとポリゴンが追加されているのがわかる。見た目が変わっていないからといって何度もEキーを押さないこと。2回以上押すと長さや幅がゼロのエッジやポリゴンがたくさんできてしまい、収拾がつかなくなる。まったく同じ場所にあるポリゴンやエッジを分離して選択するのは困難だからだ。

選択されているポリゴンを動かすと元の位置にあったポリゴンはなくなっているので、ポリゴンで囲まれた空間は空洞のままに維持される。もし、元のポリゴンがそのまま残ってしまっているとやはりサブパッチはうまくかからない。そういった意味で元のポリゴンを残す押し出しツール(Shift+E)は使えない。サブパッチ・モデリングの鉄則の2つ目は、表面に見えていないポリゴンを作ってはいけないということだ。

また、複数のポリゴンを選択して拡張プラスを使用すると、選択したポリゴンの外周のエッジの数だけポリゴンが追加され、隣接した内側のエッジにはポリゴンは追加されない。機械工学的なモデリングの場合は拡張プラスを使う意義はほとんどないけど、こういった特性はサブパッチ・モデリングの場合には非常に都合がいい。大きさや位置も変わらないので、その後の操作でサブパッチのかかり具合を好きなように調整できる。ShiftキーもCtrlキーもAltキーも押さずにただ単にEキーを押せば実行できるように初期設定でショートカットキーが割り当てられているのはサブパッチ・モデリングで極めて頻繁に使うから。余談になるけど、なぜ日本語訳を「拡張プラス」にしたのか甚だ疑問。素直に「エクステンダー」にしておいたほうがわかりやすかったのに。

次の画像に「逆もまたしかり」という例をあげておく。突起を作れるなら、その突起を通す穴もサブパッチで作ることができる。試しに、可動範囲を確保するための遊びをまったく考慮せずにぴったりに作ったけど、思いの外自然にはまった。あえてサブパッチ前のワイヤーフレームは示さないでおく。どのようにエッジを切ったのか考えて、作れるかどうかぜひ挑戦してみてほしい。ヒントは3つ目のサブパッチ・モデリングの鉄則、すべてのエッジは結合(統合)されたポイントを経由して連続していなければならないということだ。この問題にはひとつトラップがあり、気が付かないとサブパッチがバラバラになって崩れてしまうけど、サブパッチ・モデリングでは普通はやらないことなので、できなくても悲観することはない。これをすんなり作ることができたならば、サブパッチの鉄則や特性を理解できていて、LightWaveの機能にも十分精通している。今すぐにでもサブパッチ・モデリングを始められる。もうすでに初心者の域は脱していると言えるだろう。人間でも、動物でも、おとぎ話の絵本に登場するようなファンシーな家でも城でもLightWaveで作るのも夢ではなくなる。

SubPatch002

まとめると、サブパッチモデリングの鉄則は3つ。

  • 3ポイント又は4ポイント以外のポイント数を持つポリゴンを使ってはいけない(ただし、仕様上明確にエラーが出るのは2ポイントの線ポリゴンのみ)
  • モデルの中身は必ず空洞を維持し、表面に見えていないポリゴンを作ってはいけない
  • すべてのエッジは結合されたポイントを経由して連続していなければならない

LightWaveと3DCGソフトウェアへの誤解

上の例のような機械部品のようなモデルをサブパッチ・モデリングで作る場合、サブパッチの特性をあらかじめ理解し、ある程度の計画性をもってモデリングを始めなければならない。これを取り上げ、「LightWaveは直感的あるいは感覚的なモデリングができない」と批判する人もいるけど、本来はこのような部品のモデリングはサブパッチの本領ではない。あくまでも「ポイント間の距離によって丸まり方が変わる」ということを示したやや極端な例に過ぎない。「すべての物は立方体からサブパッチで作ることができる」と言い切れるほど、望むならいくらでも直感的モデリングができる。曲率を緩くし表面をなだらかにしたければポイント間の距離を離し、曲率をきつくし表面に急な角度をつけたければポイント間の距離を縮めれば良いだけなのだ。

ノコギリやノミといった工具でザクザクとモデリングしていきたいのに、与えられるツールはカッターナイフと紙ヤスリだけといったような感覚に陥り、粘土をこねたり石材や木材を削るような地味なモデリングを強いられるという指摘もあるけど、これもまったくの失当と言える。極端なことを言えば、Adobe PhotoshopとIllustratorとでは絵を描く方法はまったく異なるけど、これらのソフトウェアの特性の相違を無視して「IllustratorではPhotoshopのようにザザーッとブラシで絵が描けない!」と文句を言っているようなものだ。機械製図や建築パースといった3DCADのようなモデリングを望む場合、使うべきツールがまったく異なるし、LightWaveにもノコギリやノミに相当するツールはある。

精巧なモデルを作りたい場合はまったく別の方策やドクトリンがあり、3DCGの制限を考慮に入れながら目的に適うように独自の方法を編み出していくしかない。これはLightWaveに限った話ではないので、LightWave限定で機械や建築物の立体モデルの作り方を詳細に記した書籍や記事がないのは当然のことと言える。また、LWCADという追加ソフトウェアもあり、別枠で3DCADもできるようになっていることから考えてもLightWaveはそもそもCADソフトウェアではないのだ。もっとも、CADをやりたくてミドルレンジのLightWaveを選択したのなら理解に苦しむ。それなら、ほとんどの要求には応じてくれる3ds MaxやMayaをはじめとするオートデスク社の製品を選択すれば業界標準の3DCGソフトウェアを数多く取り揃えている。予算の都合でミドルレンジを選択するより他になかったのなら、自分なりのメソッドを見出すまではそれなりの苦労をすることになるのを覚悟するべきだ。まさしく「時は金なり」だ。

「LightWaveのサブパッチ・モデリングは時間がかかる」という指摘もあるけど、短時間で誰でも何でも簡単に思い通りにプロ級の立体モデルを作れるなんて、そんな魔法のような夢のソフトウェアが世の中に存在するはずがない。どんなに高価なソフトウェアを使用しても3DCGの制作には時間がかかる。美麗なイラストや絵画をワンタッチで描けないようなペインティング・ソフトウェアやドローイング・ソフトウェアには価値がないと言ったらおかしいことにはすぐに気付くだろう。それと同じこと。

もし、PhotoshopやIllustratorならとりあえずツールを選んでペンタブレットで線を引いてみれば子供でも何か描けるではないか、と反論する人がいるとしたら、その人は根本的に3DCGには向いていない。

誤解が多いようだけど、3DCGは大人でも理解しがたいような数学に基づく複雑な計算から導かれる出力であって、厳密には絵でも図面でもないし、その原型になる立体モデルを作る方法も数学的なアプローチになることも頻繁にあるため直感的でないのは当然ということになる。昔は3DCGといえば、電卓などで綿密に計算した三次元座標を特殊なスクリプトに直接書き込み、一発レンダリングで出力させるものだった。有名なレンダリング・エンジン「POV-Ray」は今でもテキスト・ベースのスクリプトで頂点の座標やマテリアルの設定を書き込むことができる。加工後のプレビューを見ながらGUIを使って操作できるだけでも十分直感的だと言える。

そもそも3DCGソフトウェアは、人間にとってはうんざりするような回数繰り返される浮動小数点演算を代わりに正確にやってくれるものであって、時間を惜しむユーザーに楽をさせるための道具ではない。ペンタブレットでなぞって立体モデルを作れるようでなければ直感的でないというのはあまりにも極論。映画でもアニメでもネット動画でも3DCGによるアニメーションが隆盛を極めているけど、それらの作品は気の遠くなるような地道な作業の結果であり、決して楽して作ったのではないと断言できる。その道のプロフェッショナルはそれを事もなげにやってみせるから、いかにも簡単そうに見えるだけに過ぎない。

もし、どうしてもペンタブレットで立体モデルを作りたければ、選択するソフトウェアを間違っている。そういう人はZBrushを選択するべきだ。価格も795ドルとLightWaveよりも安く、個人でも十分導入できる範囲。ZBrushはLightWaveのような古典的な3DCGソフトウェアとは異なり、「スカルプチャ・モデリング」という方法を採れるようになっている。「スカルプチャ」とは「彫刻」のことで、ペンタブレットでモデルの表面をなぞればなぞったようにモデルを盛り上げたり、溝を掘ったり、潰したり、削ったりできる極めて直感的なモデリング手法だ。しかし、実際に粘土をこねたり石材や木材を削ったりするのと決定的に異なるのは、モデルに直接触れることはできないためどのくらいの力を加えればどの程度モデルが変形するのかが最初は掴みづらいことだ。スカルプチャ・モデリングだけで自由自在にモデリングできるようになるにはそれなりの熟練を必要とし、「誰でも簡単にプロ級の腕前」とはいかないのは他のソフトウェアと同じ。もっとも、上で書いた反論のような「ペンタブレットでなぞれば子供でも何か作れる」というレベルでは十分達成できるので、3DCGソフトウェアはすべからく敷居が高いという時代ではなくなってきた。

なお、スカルプチャ・モデリングは感覚とセンスで勝負のモデリング手法なので、機械製図や建築パースなどの精密さを要求されるモデルには向いていない。ZBrushの直感的モデリングの根源であるデジタル・スカルプト機能の強化は映画『ロード・オブ・ザ・リング』で使われたクリーチャーのCGに端を発するけど、現在では日本でも二次元キャラクター物のフィギュアの原型制作に盛んに利用されている。プラ棒を芯にしてポリパテを盛ったり削ったりする従来の原型制作の手法と相通じるものがあるためのようで、デジタル原型ではなかば業界標準で使用されている。

ZBrushと同じPixologic社が無料配布しているSculptrisはスカルプチャ・モデリングを手軽に試せるソフトウェアだけど、LightWaveのオイラー座標系にすっかり慣れてしまった私には手加減がまったくわからず「かゆいところに手が届かない感」が強く、非常に面白いモデリング手法ではあるけど口で言うほど思い通りにモデリングするのは簡単ではない。オンライン・ドキュメントには緻密な作例がたくさん載っているけど、とてもではないけど真似できる気がしないほどだ。

誤解のないように付け加えておくと、ZBrushはスカルプチャ・モデリングに特化したソフトウェアではないので機械のモデリングもできるし、そういった作例もたくさんある。大抵は実在しそうにない機械ではあるけれど。

また、スカルプチャ・モデリングは自由度が高い反面、サブディビジョンを繰り返して精度を増していくため等比級数的にポリゴンの数が増えていくため、最終的には数百万クラスになる超ハイポリゴンのモデルを直接編集することになる。当然ながら、マシンのCPUもメモリもかなり高いスペックが要求される。低スペックのマシンではおそらくモデルを眺めるために回すのもひと苦労だろうし、メモリが足りないとHDDがページングで回ってしまって作業にならないと推測される。無料のSculptrisでさえジオメトリの演算に利用できるものはなんでも使うため、普段は静かなGPUのファンが高速回転し始めるくらいGPUの演算処理能力をフルに使う。よって、GPUも高スペックであればあるほど好ましいと言える。サブパッチを使い、できるだけ少ないポリゴンで曲線を管理しようとするLightWaveは比較的低スペックのマシンでも扱えるけど、直感的モデリングの追求のためにハードウェアに多額の費用をかけなければならないという点でZBrushも決して初心者向きの敷居の低いソフトウェアというわけではないという点には留意されたい。

サブパッチ・モデリング関連書籍の紹介

少し持論の披露に熱くなってしまったけど、上で挙げた例のようなサブパッチの影響範囲の制限方法を用いて、人間はおろか、尖ったところがなくてどこか愛らしい、「怪物」というよりは「憎めないお化け」のようなクリーチャー、本来は無機物のはずの機械まで空想的でファンシーに作ってしまう人もいる。下に紹介している『LightWave★Beginners』の著者・ウサギ王氏もその1人だ。

LightWave★Beginners[改訂第3版]
posted with AmaQuick at 2020.04.21
参考価格: ¥3,580 (2020-04-21)
ビー・エヌ・エヌ新社 (2012-03-23)

LightWaveの指南書は何冊か持っているけど、ほとんどの書籍は「とりあえずやってみればわかるよ」的な流れでサブパッチによるモデリングをなし崩しに始めてしまい、「サブパッチとはそもそもなんぞや」という点にはまったく触れていない。そのため、本に書いてある通りにやっているつもりなのに、いつの間にか「サブパッチによるモデリングで絶対にやってはいけないこと」をやってしまってうまくいかなくなり、LightWaveは敷居の高いソフトウェアだと思ってそこで挫折してしまうことがある。何を隠そう、私もその1人だった。「サブパッチでできる曲線の曲率はポイント間の距離で決まる」といった基本的なことを教えてくれたのはこの書籍だった。

初心者向けと銘打ってはいるけど、LightWaveのモデリングはサブパッチに始まりサブパッチに終わると言わんばかりに冒頭からひたすらサブパッチの解説が続き、むしろサブパッチ・モデリングの専門書と言ってもいいくらい。逆に、最近流行りのローポリゴン・モデルのモデリング手法などにはまったく触れていない。他の無償やロープライスに分類される3DCGソフトウェアでやるような、一見簡単そうで実はとても難しいローポリ・モデリングによるアプローチなんてサブパッチがあれば必要ないからだ。LightWaveのユーザーが美少女物やメカ物よりも人外の化け物のようなモデルを好んで作りたがるのにはそんな理由もある。人物モデルは備えているべき特徴が決まり切っていて、上手下手はともかく時間さえかければ誰でも作れてしまうので、独創性を問いたければ人間以外の物を作ったほうがいいのだ。また、そのような気を起こさせるだけの可能性をサブパッチは秘めている。

定価は4,000円ほどと決して安くはない書籍だけど、丸善など専門書を多く取り扱っている書店では置いていることがあるので、ネット通販などで中身も見ずにいきなり買うのには勇気がいる人は店頭でめくってみるといい。おそらく、最初の数ページで目から鱗が落ちるはずだ。私も書架の前で他の客の邪魔になることもお構いなしにしゃがみこんで読みふけってしまったことは今ではいい思い出。

関連記事

LightWaveによるエッジの丸め方と面取り

最終更新:2020/04/22

ある立方体の角や辺を丸めたいとする。転がりやすいように角をとってあるサイコロのようなものをイメージして欲しい。

ボックス

色々な方法があると思うけど、まずは「作成」メニューグループにあるボックスツール(Shift+X)で最初から丸めてしまう方法。ボックスツールを選択したらNキーを押して数値入力ウィンドウを有効にしてそこへカーソルを移す。「半径」を「100mm」に設定し、「局部の分割率」を「8」に設定する。ここでは簡単のために立方体の1辺の長さを1mに統一してある。

Round000

数値入力ウィンドウの何もないところを左クリックするか、Enterキーを押して数値を確定し、さらにEnterキーを押すと次の画像のような角を丸めた立方体ができる。

Round001

ラウンダー

次に、ラウンダーを使う方法。ボックスツールで角を丸めていない普通の立方体を作り、エッジ選択モードにする。「選択」メニューグループから選択モードを選ぶ方法もあるけど、マウスを動かすのはモデリングのためだけにして、極力メニューを選ぶのには使いたくないところ。

ショートカットキーの初期設定を変えていなければ、スペースキーを何回か押すと「ポイント」→「エッジ」→「ポリゴン」→「ポイント」と循環するトグル選択ができるので、選択モードを変えたくなったらとにかくスペースキーを押す習慣をつけるといい。

次の画像のように12本あるすべてのエッジを選択する。

Round002

「マルチ加工」メニューグループにあるラウンダー(Rounder)を選択し、Nキーを押して数値入力ウィンドウを開く。

できれば、数値入力ウィンドウは常に表示しておくようにしておくと数値入力を要求されているのかどうかすぐにわかるので便利。マルチディスプレイ環境にしている人はサブディスプレイに表示させておくと邪魔にならなくていい。

次の画像のように「Rounding Polygons」を「8」に、「Inset distance」を「100mm」に設定する。他の設定は変更しなくていい。

Round003

このままでは何も起こらないので、選択したエッジか、そのエッジを構成するポイントの付近を左クリックすると、角が丸まる。そのままドラッグすると丸まりの半径を変更できるけど、自分の意図しない方向へ動いてしまった場合は数値入力ウィンドウの値を訂正してEnterキーを押す。次の画像のような角のとれた立方体ができる。ボックスツールから作った場合とでは、8つある隅の処理の仕方が異なるのがわかる。

Round004

ボックスツールでは、必ず12辺すべてを丸めてしまうけど、ラウンダーは選択したエッジの場所によって丸める箇所を指定できる。例えば、次の画像のように上面のエッジだけを選択したとする。

Round005

上と同じ設定でラウンダーを適用すると、次の画像のように上の辺だけ丸まる。

Round006

立方体は生成ツールに角を丸めることができる設定があるけど、他のツールにはないことが多い。例えば、円柱のようなモデルはディスクツールで作るけど、角を丸める設定はない。そこで、次の画像のような円柱の上面のエッジをぐるりと選択し、ラウンダーを使う。

Round007

複数のエッジを選択する際に投げ縄選択で選択してもいいけど、連続する2つ以上のエッジを大雑把に選択しておいて「選択」メニューグループにある「ループ選択(Select Loop)」をすると一周自動的に選択してくれるので覚えておくと便利。

また、上面のポリゴンを選択し、同じく「選択」メニューの「選択をエッジに(Sel Edges)」ツールを使うとそのポリゴンに属しているエッジがすべて選択されるので、これも覚えておくと便利。他にも「選択をポイントに(Sel Points)」「選択をポリゴンに(Sel Polys)」があり、選択モードを逐一切り替えて選択しなおさなくても同じ対象をそれぞれの選択モードに置き換える機能がある。いずれもループ選択がうまくいかない場合やポイントやエッジの距離が密になっていて選択しにくい場合などに重宝する。

上面だけに同じ設定でラウンダーを適用すると次の画像のようになる。

Round008

3DCGの世界では厳密な意味での「円」という概念はなく、多くのエッジ(すなわち直線)で構成される正X角形を擬似的に円として扱う。コンピュータが高性能化した現在でも、リアルタイム性を問われるゲームなどで描画処理を速くするために、細かくて比較的どうでもいいところは断面が四角形の棒状のモデルを45度斜めに傾けて「円筒」として扱ってしまうこともある。

話を戻す。滑らかな円にしようとすればするほど円のエッジの数は多くなり、ポリゴン数も増え、その後の加工にも手間がかかる傾向にあるが、ラウンダーはエッジの数が多くても1回で加工できるため、このような場合に特に威力を発揮する。

ラウンダーによる面取り

ラウンダーによる分割数を1にすることで、面取りを行うことができる。立方体の12辺を選択し、次の画像のように「Rounding Polygons」を「1」に設定する。

Round009

次の画像が適用した結果。8つある角も三角形に形成され、すべての辺が面取りされているのがわかる。ラウンダーの本来の意義からは外れているように思えるかもしれないけど、サーフェースのスムージングの設定次第によっては丸まって見えるため、これでもラウンダーの効果はあると言える。

Round010

特定のエッジにだけ選択式に面取りを行うことももちろんできる。次の画像は上面のポリゴンのエッジだけを選択した場合。

Round011

次の画像のような円柱も同様。

Round012

上の2つの例はいずれも水平なポリゴンに対してラウンダーを適用しているけど、この程度であれば、ベベル(Bevel)ツールを使ってもできる。「ベベル」という言葉には元々面取りの意味もある。ただ、ベベルによる面取りは元の形から体積が増えてしまう性質があるものなので、体積を増やしたくない場合は後で元の位置に戻す必要がある。ベベルを適用したポリゴンが様々な加工をしてきた結果で、中途半端な座標にあると正確に戻すのは困難なことが多い。むしろ、キリのいい座標にあること自体が珍しい。また、ポリゴンの法線方向に沿って押し出してくれるものの、シフト量とインセット量は厳密に計算しない限り目分量に頼らざるを得ず、精密なモデリングにはあまり向いていないことがある。更に、複数のポリゴンを選択してベベルを使用するとそれぞれのポリゴンごとに独立してベベルをかけてしまうので使い勝手が良くないこともある。

ラウンダーはエッジがどんなに斜めになっていようと、どんなに中途半端な座標にあろうと、元の体積を極力変えずに正確に丸めてくれるので追加的に面取りをしたくなった場合には重宝する。ただし、対象とするエッジのうちの1つのポイントが多数のポリゴンに属していたりすると意図しないところにもラウンダーがかかってしまうことがあり、必ずしも万能ではない。

ちなみに、以前の記事での取り上げた六角柱の面取りもラウンダーを使うと、いとも簡単に行うことができる。

Round013

以前の記事では側面の面取りだけだったけど、次の画像のようにすべてのエッジをまとめて面取りできる。

Round014

ここまででラウンダーは良いところばかりのように思えるかもしれないけど、一度ラウンダーを適用してしまうとアンドゥ(Ctrl+Z)以外の方法で元に戻すのは困難になるという点は覚えておいたほうがいい。適用する前にオブジェクトを保存しておくか、別のレイヤーにコピーしていつでもそこに戻れるようにしておくことをおすすめする。

サブパッチによる角の丸め方

ボックスツールによって角を丸めた場合でも、ラウンダーツールを使って丸めた場合でも、後でその丸まり具合の半径を変えたくなったなどの場合は非常に厄介なことになる。拡大縮小(Shift+H)を使うなり、ストレッチ(H)を使うなり、方法はないことはないけど、12辺すべてに修正をかけていくのはそれなりに手間がかかる。LightWaveに限ったことではないけど、すべてのポイントの座標は浮動小数点数で扱われているので、拡大縮小を繰り返すと誤差が蓄積していき、次第に丸まりに歪みが生じてくるようになる。

立方体のような単純なモデルの場合は最初から作り直してしまえばいいこともあるだろうけど、最悪の場合、ポリゴン同士の境目の角度に破綻が生じて奇妙な出っ張りや溝が出るようになったりもする。サーフェースのスムージングのしきい値を上げて解決すればいいけど、しきい値を上げたことによって、今度はきちっとエッジがきいていて欲しいところのポリゴンの境目が見えなくなってしまうといった事態も起こりうる。すると今度は、スムージングのしきい値の異なる別のサーフェースを用意してそこへ分割して…といった具合に泥沼にはまっていく。ラウンダーは便利だけど、適用した後のことを考えるとモデリングの初期段階で使うのはあまりおすすめできない。

そこで、サブパッチを使う方法を考える。次の画像のように、立方体の6つの面すべてにナイフツール(Shift+K)で端から200mmのところに格子状に切り込みを入れ、エッジとポリゴンを増やしてある。1辺の長さが1mなのは同様。一度に4つの面を輪切りにできるからナイフツールは6回使えばいいので、そんなに大した作業ではないはず。

Round015

どこも選択していない状態で、Tabキーを押す。すると、すべてのポリゴンを選択しているのと同じと解釈され、立方体全体にサブパッチがかかり、次の画像のような形になる。

Round016

次の画像のようにワイヤーフレームを非表示にするとサブパッチの効果がわかりやすい。ボックスツールやラウンダーツールを使った場合ほど幾何学的に正確な感じではないけれど、全体的に丸みをおびてサイコロというよりはバターかチーズのような生っぽい感じになる。角の丸みを変えたくなったら、ナイフツールで切って作ったポイント群をループ選択で選択してまとめて移動させていくだけでいい。立方体の端に近づくほど角は丸みを失っていき、離れるほど丸みが増していく。ナイフツールでエッジを増やすことが最初は面倒だと思うかもしれれないけど、「今は仮決めにしておいて後で不都合が出たらなんとでもしよう」という『行き当たりばったりモデリング』ができるのは3DCGの世界では実は驚異的なこと。

Round017

8ポイントだけで構成された普通の立方体にただサブパッチをかけるだけだと球と言うにはあまりに不格好な球体になってしまうんだけど、それはポリゴンを構成しているポイントの間隔が広く、サブパッチの影響範囲が広いから。ナイフツールでエッジとポイントを増やしたことによってサブパッチの影響が及ぶ範囲を制限し、角を残しつつ丸くしている。

逆にサブパッチの場合、その特性上、直角や鋭角というのは難しく、「正確にきっちり100mm丸めたい」という要求にも応じられない。サブパッチの挙動はベジエ曲線によく似ているんだけど、サブパッチを適用したモデルの外形がモデルを構成するポイントのどれかを必ず通過するわけではなく、そのポイントが線を曲げる強度や角度を決めることもできない。だから、外形が実際にどのくらいの半径で丸まっているかを厳密に計測することはできない。もっと言えば、ポイント間の距離がまったく同じでも、それらを繋ぐ曲線が真円の一部になるような正確な円弧を描くという保証もまったくない。あくまでも、ポイント間の距離でサブパッチの強度が変わるという点がベジエ曲線との決定的な違い。ベジエ曲線を使いこなすのも熟練が必要なように(私はいまだにうまく使えない)、サブパッチもその感覚を掴むのに手間取るため、LightWave初心者がつまづきやすい点のひとつになっている。ただ、理解できてしまえば、これほど生物をはじめとする有機的なデザインに向いているモデラーもないと言ってしまえるくらい、LightWave最大の特徴のひとつにもなっている。

関連記事

Twitterの埋め込みタイムラインをカスタマイズ

最終更新:2017/01/14

以前はTwitterからのツイートの取得が比較的簡単にできて、WordPressのプラグインにも色々な特徴があるタイムライン表示ツールがあった。このブログにも自分のツイートを表示していた。でも、いつだったかTwitterがAPIを大幅に変更したとかで、使えなくなってしまったプラグインがあって、しばらくの間ブログにツイートは表示しないでいた。

Twitterの公式ウィジェット機能を使うと自分のウェブサイトにタイムラインを表示するための埋め込みコードを取得できるんだけど、あまり使い勝手が良くないという印象しかなかった。最近はかなり改善されたようで、WordPressのウィジェットくらいの小さなスペースでも綺麗に表示されるようになった。また、埋め込んだウェブサイトやWordPress側のコードにパラメータを与えるとカスタマイズできるようになっていて自由度が増した(単に知らなかっただけかもしれない)。

特に、日本語表示のタイムラインは、「@VANGUARD_FLIGHTさんのツイート」の「ツイート」の文字だけ妙に大きくて不格好なのが不満だったので、従前の英語表示に変更することにした。公式ウィジェットのコードは次のようなもの。

<a class="twitter-timeline" href="https://twitter.com/VANGUARD_FLIGHT" data-widget-id="xxxxxxxxxxxxxxxxx">@VANGUARD_FLIGHTさんのツイート</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>

これにいくつかの属性を次のように追加する。

<a class="twitter-timeline" href="https://twitter.com/VANGUARD_FLIGHT"
data-widget-id="xxxxxxxxxxxxxxxxx"
data-chrome="transparent"
data-border-color="#808080"
data-lang="en">@VANGUARD_FLIGHTさんのツイート</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>

基本的には、属性名に「data-」というプレフィックスをつけるようにする。

data-chrome="transparent"は、ウィジェットの背景を透明にする設定。ウェブサイトの背景色に馴染まない時に。
data-border-color="#808080"は、ツイート間の境界線の色の設定。
data-lang="en"は、表示言語を英語にする設定。この設定だけはプレフィックスなしでlang="en"でも同様の表示になる。

パラメータ

Twitterのウィジェット設定画面で設定を変更したのに埋め込みタイムラインに反映されないことがあるので、埋め込みタイムラインのコード側で設定を強制することができる。使いどころがありそうなものを一覧にした。他にもパラメータはあるけど使い道のよくわからないものは省略した。詳細は参考記事を参照。

パラメータ一覧
属性名 効果 有効な値
data-chrome ウィジェットの表示要素をなくす。非表示にする要素をスペース区切りで指定する。ただし、noheaderを指定した場合は、Twitterの表示要件を満たすようにしなければならない。 noheader
nofooter
noborders
noscrollbar
transparent
data-tweet-limit タイムラインに表示するツイート数。 1~20
data-lang ウィジェットの言語コード。ツイートの内容には影響しない。lang=”en”でも同様の効果。 en
ja
es
data-theme ウィジェットのテーマ。Twitterアカウント画面でのテーマ設定が反映されない時に強行できる。 dark
light
data-link-color ツイートのリンク色。16進トリプレット表記 #0080ff
(16進数)
data-border-color ウィジェットの境界線の色。16進トリプレット表記 #dddddd
(16進数)
width ウィジェットの最大幅をピクセルで指定する。 180~520
height ウィジェットの高さをピクセルで指定する。tweet-limitパラメータが指定されているときは無効。 200以上

WordPressのウィジェットへの表示

WordPressのウィジェットにツイートを表示させたい場合は、ダッシュボードから外観を選んで「ウィジェット」で設定する。もっとも一般的な「テキスト」ウィジェットをドラッグ&ドロップして、上記のコードをコピー&ペーストすればいい。

参考記事

MediaWikiでショートURLを使う

最終更新:2016/09/06

MediaWikiを運用するようになってからかなり経つけど、記事のURLは初期設定のままで、

http://vanguardflight.xii.jp/w/index.php?title=Page_title

といったように表示されていた。編集するユーザーも管理者も一人しかいない無名のマイナーウィキだから、それでも別に困ってなくて先延ばしになってたんだけど、どうせならウィキペディア日本語版のようなショートURLにしたい。

例によって、MediaWiki公式サイトの説明はわかりにくい。大抵のWebサーバーで使われているApacheを実装していて、mod_rewriteというモジュールを利用可能であれば、MediaWikiが動いているほとんどすべてのサーバーでショートURLを利用できると書いてある。

一方で、rootの権限がどうのこうのと書いてあるので、ローカルホストにアクセスする権限がないと無理なのかと思って真面目に調べてなかった。ところが、よく読むとリモートサーバーでも利用可能と書いてあるし、更には、「そのくらいのことができないようなリモートサーバーにお金を払う価値はない」とまで書いてあってかなり強気。

さくらインターネット公式サポートサイトによると、Apacheを実装しているし、mod_rewriteも利用可能と書いてある。mod_rewriteそのものの設定を変更するにはサーバー管理者の権限がないといけないんだけど、共有サーバーを使っているユーザー側でも.htaccessで設定できる。

.htaccess

.htaccessを配置すべき場所は、MediaWikiのディレクトリが存在しているディレクトリ。つまり、home/[user-name]/www/wというディレクトリにMediaWikiをインストールしているとしたら、home/[user-name]/wwwに.htaccessを置けばいい。

.htaccessに記述すべき内容はわずか2行。

RewriteEngine On
RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]

1行目のRewriteEngine Onは、mod_rewriteを有効にする設定。

2行目は、URLをどのようにリライトするかというルール。正規表現で記述されているのでちょっとわかりにくい。簡単に言うと、http://example.domain.com/wiki/Page_titleというURLを受け取ったら、それを内部的にはhttp://example.domain.com/w/index.php?title=Page_titleに置き換えながら、ブラウザのアドレスバーにはhttp://example.domain.com/wiki/Page_titleが表示され続けるということ。

最後の[L]は「ここで.htaccessは終わり」という意味。

LocalSettings.php

$wgScriptPath = "/w";
$wgArticlePath = "/wiki/$1";
$wgScriptExtension = ".php";

初期設定では$wgScriptPath$wgScriptExtensionしかないんだけど、その間に$wgArticlePathという環境変数を追加する。

補足

なお、独自ドメインを使用している場合でもショートURLを利用できる。独自ドメインが/wwwディレクトリの更に下の階層に設定してあって、例えばhome/[user-name]/www/directory/wにMediaWikiをインストールしてあっても問題ない。

また、独自ドメインの直下(上の例で言うと、home/[user-name]/www/directory)にindex.htmlindex.phpで始まるような普通のウェブサイトを配置していて、そこに上記の.htaccessを設置してもそのウェブサイトは何の問題もなく表示される。同様に、独自ドメインに/wpといったディレクトリを作って本記事のブログのようなWordPressを設置してMediaWikiと並列で運用していても問題ない。

唯一ダメなのは、/wikiというディレクトリが実際に存在している場合。MediaWiki公式サイトのインストール・ガイドにも「wikiというディレクトリ名だけはやめたほうがいい」と書いてある。もし、そこにMediaWikiをインストールしてしまった場合でショートURLを使いたい場合は別のディレクトリに移動させないとならない。

参考記事

MediaWikiの見出しをサンセリフ・フォントに戻す

最終更新:2016/09/06

最近のトピックではないんだけど、2014年4月頃にリリースされたMediaWiki 1.22.5以降からCSSが見直され、記事見出し(見出しレベル1)と見出しレベル2のフォントがサンセリフ・フォント(ゴシック体)からセリフ・フォント(明朝体)に一律に変更された。

MediaWiki公式サイトではTypography refreshという記事でどういった経緯や理由でフォントを変更することになったのか説明されている。元に戻す方策を示してくれているわけではないので、無理して全部読む必要はまったくなく、要は「とにかく見出しをセリフ・フォントに変えたよ」ということを伝える記事に過ぎない。

ラテン文字を主に使用する英語圏の人にとってはある程度説得力のある話なんだろうけど、日本語のように全角文字と半角文字を混ぜて書くことがある言語では問題になることがある。また、元は海外製のInternet Explorerをはじめとするブラウザに潜在的な不具合があって、日本語では通常使われない文字が表示されたりする問題などがウィキペディア日本語版のプロジェクトで指摘された。ラテン文字を主流とする他言語の人から見たら判別不能な『漢字』という特殊な文字を使っている日本語と韓国語(朝鮮語)と中国語がごっちゃになってしまっていることが原因のようだ。詳しいことは当該議事録を参照(長文)。

色々な修正方法が検討されたんだけど、もっともシンプルな解決方法は次のようなCSSをMediaWiki:Vector.cssに追加する。Vectorスキンを標準の外装にしていない場合は、更に上位のMediaWiki:Common.cssか対応するスキンのCSSを適宜変更する。

div#content h1, div#content h2, div#content #firstHeading {
 font-family: sans-serif;
}
html, body {
 font-family: sans-serif;
}
div#content .mw-editsection {
 font-family: sans-serif;
}

ひとまず、これで標準記事名前空間と付随する名前空間の見出しはサンセリフ・フォントに戻せる。

ただ、この方法でもログインや個人設定のページといった特別ページの一部はセリフ・フォントのままになってしまう。ブラウザの要素解析機能を使ってセレクタやクラスを丹念に調べれば対処可能なんだろうけど、もっとも重要な標準記事名前空間の記事名に問題が出なければよしとして、これ以上深入りはしないことにした。


[2016年3月12日追記]

深入りしないことには決めたが、やはり気にはなるので、要素解析をやってみた。標準記事名前空間(付随する名前空間含む)と個人設定の特別ページの見出しのクラスとセレクタは同じだった。

div#content.mw-body h1#firstHeading.firstHeading

同じならばMediaWiki:Vector.cssに記述したCSSが反映されてもよさそうなものだけど、個人設定の特別ページのレベル1(h1)とレベル2(h2)の見出しに最後に適用されているスタイルは次のようなもの。これが問題になっている。

.mw-body h1,.mw-body h2 {
	font-family:"Linux Libertine",Georgia,Times,serif;
	line-height:1.3;
	margin-bottom:0.25em;
	padding:0
}

確かに、これなら見出しがセリフ・フォントになってしまう。実際、ブラウザの要素解析機能を使って font-family のプロパティを一時的に解除してみるとサンセリフ・フォントに戻る。

標準記事名前空間の見出しでも同様のスタイルが設定されているんだけど、MediaWiki:Vector.cssにサンセリフ・フォントに戻すプロパティを設定してあるので、それが読み込まれて強制的に上書きされている。ところが、個人設定の特別ページではユーザー設定のMediaWiki:Vector.cssをStyleSheetとして読み込んでいるコードが見当たらない。どのスタイルシートを呼び出して適用するか決定しているのはMediaWiki本体だから、いくらMediaWiki:Vector.cssを変更しても画面の表示に反映されないのは当たり前ということになる。

どうも、問題のスタイルはどこかのファイルにまとめて記述してあるものではなく、MediaWikiがその都度「load.php」という名前のスクリプトに引数を渡してリソース・ローダー(ResourceLoader)と呼ばれるモジュールが自動的に生成するものらしい。PHPやJavaScriptのソースコードもひととおり検索してみたけど、該当する箇所が見つからなかった。リソース・ローダーの説明もざっと読んでみたけど、確かに凄い機能を持ったモジュールなのはわかる。凄いけど、高度すぎてまったく手に負える感じがしない。仮に、どこかを改変して問題を解決できたとしても、MediaWikiがアップグレードされた時に上書きされてしまうので書き戻す手間が発生するし、最悪、誤動作して本当に手に負えなくなってしまう可能性さえある。よっぽどのことがない限りMediaWikiの本体には手を着けたくないので、個人設定の特別ページの見出しについては諦める他にない。

MediaWikiのWikiEditorを設定する

最終更新:2016/09/06

Extension:WikiEditorは記事を編集するために必要なツール群をGUIで選択できるようにしたMediaWikiの拡張機能。MediaWiki公式サイトの原文では Enhanced Editing Toolbar と書かれていて、日本語では「改良型編集ツールバー」と呼ばれている。開発中に使われていたであろう仮名の betatoolbar という用語がしばしば環境変数名で出てくる。MediaWiki 1.18以降は標準でバンドルされていて、特に意識しなくても自動的にインストールされている。

機能そのものは存在していても、デフォルトでは有効になっていないので、初期設定では次の画像のようなちょっとしたツールバーしか表示されない。かなり前からウィキペディアを編集したことがある人にとっては懐かしいかもしれない。

WikiEditor000

改良型編集ツールバーを有効にするには、個人設定(Preferences)で個別に設定するか、LocalSettings.php ですべてのユーザーが一律に有効になるように設定する。

require_once "$IP/extensions/WikiEditor/WikiEditor.php";
# Enables use of WikiEditor by default but still allows users to disable it in preferences
$wgDefaultUserOptions['usebetatoolbar'] = 1;

# Enables link and table wizards by default but still allows users to disable them in preferences
$wgDefaultUserOptions['usebetatoolbar-cgd'] = 1;

# Displays the Preview and Changes tabs
$wgDefaultUserOptions['wikieditor-preview'] = 1;

# Displays the Publish and Cancel buttons on the top right side
$wgDefaultUserOptions['wikieditor-publish'] = 1;

3行目は、改良型編集ツールバーを有効にする設定。編集画面の上に次の画像のようなツールバーが表示される。頻繁に使うマークアップの入力を補助してくれる他、各言語に特有の文字を挿入できたり、マークアップの記述方法を忘れた時のためのヘルプを参照できたりする。wikitable のクラスを持った表を一発で挿入してくれるのは便利。個人設定の編集タブにある「改良型編集ツールバーを有効にする」をチェックしても同様の結果を得られる。

WikiEditor001

6行目は、内部リンクと外部リンクおよび表の挿入、検索と置換に関するウィザードを有効にする設定。個人設定の編集タブにある「リンクや表の挿入、および検索と置換のためのウィザードを有効にする」をチェックしても同様の結果を得られる。

なお、無効に設定すると、次の画像のように改良型編集ツールバーのアイコンが若干変わる。リンクのツールが外部リンク用のものと内部リンク用のものに分かれ、検索と置換アイコンがなくなる。

9行目は、プレビューと差分をページをリロードすることなく見られる機能を追加する設定。比較プレビュー(side-by-side preview)という名前がつけられている。改良型編集ツールバーを有効にしていれば、その上に更に次の画像のように「ウィキテキスト」「プレビュー」「差分」というタブが追加される。個人設定の編集タブにある「比較プレビューを有効にする」をチェックしても同様の結果を得られる。

WikiEditor002

なお、ウィキペディア日本語版ではプロジェクトの方針として必ず1回は従前のプレビュー機能を使って自分の編集に間違いがないか確認することを推奨しているため、この機能が使えないように設定されている。

12行目は、次の画像のように、改良型編集ツールバーに「投稿」ボタンと「中止」ボタンを追加する設定。個人設定の編集タブにある「段階的投稿を有効にする」をチェックしても同様の結果を得られる。

WikiEditor003

『段階的投稿(step-by-step publishing)』の意味がよくわからないんだけど、投稿ボタンは基本的にテキスト・ボックスの下にあるものだけで十分だと思うので、使いどころはあまりないかもしれない。

上の比較プレビューと同様に、ウィキペディア日本語版では拙速な編集を防ぐ目的で最低1回はプレビューを実行してからでないと投稿できないようになっているため、この機能は使用できないように設定されている。

関連記事

MediaWikiに編集支援ツールを追加する

最終更新:2016/09/06

ウィキペディア日本語版を編集していると、テキスト・ボックスの下に次の画像のような編集支援ツールが表示される。

Edittools000

MediaWiki用のマークアップや記号などが並んでいて、それらをクリックするとマークアップを半自動で入力してくれる他に括弧の間にカーソルを移動してくれたりもする、なかなかの優れもの。マークアップしたい語句を先に選択してからクリックしてもちゃんと括弧の中に入れてくれる。ウィキペディアを何度も編集したことがあって、ウィキ文法のマークアップを覚えている場合はなくてもそれほど困らないけど、手動で入力するには少々面倒なマークアップもあるので、あればあったで結構便利。でも、インストールしたばかりのMediaWikiにはこの機能は実装されていない。

この編集支援ツールを利用するには、CharInsertというエクステンションと、MediaWiki:Edittoolsというシステム・メッセージが必要になる。

Extension:CharInsertの実装

Extension:CharInsertのスナップショット(現時点で安定動作する最新版)をMediaWiki公式サイトからダウンロードし、適当なローカル・フォルダに解凍する。/extensionディレクトリに/CharInsertディレクトリを作成し、そこへFTPクライアントでアップロードする。

一応、MediaWikiのバージョンに合わせてスナップショットを選ぶようになってはいるんだけど、このエクステンションについてはメンテナンスをした覚えがない。MediaWiki 1.24が最新だったくらいのかなり古いバージョンを使っているけど、MediaWiki 1.26.2の時点で特に問題は起きてない。

LocalSettings.phpに次の1行を追加する。MediaWiki 1.25以降の場合は別の記述方法もあるみたいだけど、この記述でもちゃんと動作する。以前からMediaWikiを運用している人にとってはこちらのほうが馴染みのある書き方かも。なお、MediaWiki 1.26.2で動作確認済み。

require_once "$IP/extensions/CharInsert/CharInsert.php";

MediaWiki:Edittools

Extension:CharInsertは、MediaWiki:Edittoolsを参照するように設計されているので、自分のウィキにMediaWiki:Edittoolsという名前のページを追加する。内容は、ウィキペディア日本語版のMediaWiki:Edittoolsのソースを表示させて、まるごとコピー&ペーストする。まずはこれで試験運用してみるといい。

ちなみに、MediaWiki公式サイトのMediaWiki:Edittoolsは非常に凝っていて、ドロップ・ダウン・リストから言語を選んで各言語に特有の記号を選べるようになっているんだけど、システム・メッセージとは別にウィキ上で動作するJavaScriptのページを用意しなければならないなど実装が結構大変なので、マークアップの記述を省力化できれば十分だと思う。

小技として、次の1行をMediaWiki:Edittoolsのどこかに追加しておくと便利。自分のウィキで説明するまでもない基本的な事柄の説明をしてくれているウィキペディア日本語版の記事に転送する。

<span style="margin-left:1ex;white-space:nowrap"><charinsert>[[Wikipedia:ja:+|]]</charinsert></span>

「ウィキペディアというプロジェクトの、日本語版の記事へ」という意味のマークアップで、クリックすると縦線の前にカーソルを移動するか、選択した語句をマークアップするようになっている。記事名を記述すると、パイプが効いてWikipedia:ja:という部分は表示されない。長々とした外部参照URLを記述しなくても済むのでマークアップもすっきりして見やすくなる。

関連記事

BRDFシェーダ

最終更新:2016/09/06

BRDFは、Bidirectional Reflectance Distribution Functionの略で、日本語では双方向反射分布関数という。数学的なことはあまりよくわからないんだけど、LightWaveにおけるBRDFシェーダは簡単に言ってしまうと、特定の光源に対して反射する面のハイライトに変更を加えることができるもの。異方性反射に似たようなこともできる。

異方性反射に関する記事ではAnisotropicノードやAni-Reflectionsノードを使ってSpecular ShadingとReflection Shadingを実現し、Diffuse Shadingを使って金属表面のヘアライン加工の質感の再現を試みた。しかし、サーフェースや光源の色にレンダリング結果が影響を受けなくなるなどの制約もあることも書いた。BRDFシェーダは、厳密な意味での異方性反射を再現することはできないけど、ハイライトに色を着けることが可能で、光源に特殊な設定をすることなく比較的手軽な設定でハイライトの形状等を制御できる。

まず、次の画像のような球状のオブジェクトを用意する。もっとも単純な白色のスポットライトをひとつ配置しただけの簡単なシーンで、ハイライトは円形になる。これにBRDFシェーダを適用していく。

BRDF000

Regularモード

最初に、「Regular」モード。ハイライトの色(Color)、反射光(Specular)、光沢(Glossiness)を指定できるのみで、ハイライトの形状は通常と同様になる。

BRDF001

上の画像の設定でレンダリングすると次の画像のようになる。光源の色とは無関係に、ハイライトに黄色が適用され、光沢を弱めに設定したためぼんやりとした輪郭になる。ハイライトの位置が同じというところが重要で、BRDFシェーダは特定点における光の反射のみに適用されるものであることがわかる。

BRDF002

Anisotropicモード

次に、「Anisotropic」モード。ハイライトの色、反射光、光沢に加えて、「Anisotropy」と「Direction」を角度で指定できる。Anisotropyは異方性反射のことだけど、できることはかなり限定的で、放射状の異方性反射はある程度模擬できるものの、同心円状の異方性反射を模擬することまではできない。「Anisotropy」と「Direction」を設定するとハイライトの形状をずらすように互い違いに歪ませることができ、「Anisotropy」を「90°」、「Direction」を「0°」に設定するとハイライトの中心点で交差する扇状の反射になる。

BRDF003

上の画像の設定でレンダリングすると次の画像のようになる。ハイライトが緑色になり、異方性反射風の扇状の反射になっていることがわかる。「Anisotropic」モードでもハイライトの中心点は同じで、光を当てる方向やカメラの視点を変えなくてもBRDFシェーダの効果を得られる場所には変化がないことがわかる。

BRDF004

AnisotropicⅡモード

最後に、「AnisotropicⅡ」モード。「Anisotropic」モードの設定項目に加えて「Mapping」を指定できる。マッピングに「Cylindrical」を指定し、X、YまたはZのいずれかの軸を指定するとオブジェクトの軸に沿ったハイライトを生じる。「Anisotropy」と「Direction」の挙動は「Anisotropic」モードとは異なり、「Anisotropy」と「Direction」の両方を「90°」に設定するとハイライトの中心点で交差する扇状の反射になる。

BRDF005

上の画像の設定でレンダリングすると次の画像のようになる。ハイライトが赤色になり、異方性反射風の扇状になっているのは「Anisotropic」モードと同様だけど、ハイライトの中心点がオブジェクトのY軸に移動している。3つのモードのうち、動作としてはもっともAnisotropicノードに近いけど、同心円状の異方性反射の模擬が難しい(少なくとも、試した範囲では実現できなかった)上に、Anisotropicノードと異なり、異方性反射の中心点を任意の位置に移動させられないため制御が難しい。UVマップを指定することもできるけど、更に高度な設定になるので、そこまでする必要があるかどうかは判断の分かれるところ。

BRDF006

ティーポットで実験

それぞれのモード単体でできることはそれほど大したことはないけど、ひとつのBRDFシェーダに3つまでのレイヤーを設定できるので、自動車の塗装のように何層かの塗装面におけるハイライトを制御したい時に有効。

例えば、何の変哲もないティーポットのモデルを配置したシーン(左の画像)にBRDFシェーダの「Anisotropic」モードを二層にわたって適用することで、ハイライトにヒステリシス曲線のような歪みを生じさせ、表情を持たせることができる(右の画像)。

BRDF008

BRDFシェーダはその特性上、平面よりはハイライトが出やすい曲面のほうが効果がはっきりとわかるけど、光源の方向やモデルの角度などによって立体感が薄いと感じられる場合などに光源に依存しない反射を生じさせることで立体感を増すこともできる。

作品への応用

実験だけでは効果がわかりにくいと思うので、更に進めて実際の作品に反映したらどうなるか試してみた。次の画像はBRDFシェーダ適用前のもの。左右の白い斜線の入った青い部品は機首を中心にして山なりに角度がついているんだけど、光源の都合などで立体感がわかりにくい。

BRDF009

次の画像はBRDFシェーダ適用後。白色と青色のサーフェースに全体的に水色のハイライトを入れた。機首や主翼前縁部のような曲面のほうがシェーダの効果がはっきり見えるけど、平面にもレイトレースではわかりにくかった部分にハイライトが出て立体感はやや増した。ただ、本来の光源方向がわかりにくくなって嘘っぽく見えてしまうという欠点もあるので、度を超さない程度に使うのが良いように思う。

BRDF010

バグについて

最後に、BRDFシェーダにはLightWave3D 10.1の時点でバグがあり、サーフェースにBRDFシェーダを適用したままモデラーでオブジェクトのファイル間、レイヤー間のコピー&ペーストを行うとクラッシュする。モデラーではシェーダの効果を確認できないのでレイアウトで最後の仕上げに適用するようにしたほうがいい。この問題は、機能を一時的にオフにするだけでは解決できないため、シェーダ適用後にモデルを修正する必要が発生したら、シェーダをサーフェースから完全に除去する必要がある。その際に、パラメータが多いので設定を忘れてしまわないようにどこかにメモしておかなければならない。そういった意味では使い勝手が良くないシェーダではある。

関連記事