LE3

ここでは、DOGA-L3の機能追加版、DOGA-LE3βについて説明…
していくかどうかはまだ未定。


この動画の簡単なレシピを紹介する。
なお、このレシピのオリジナルはidoroさんの考案によるもの。

まず、普通にモーションを作ってそれを作画し、AVIを作成する。
次に、これを動画模様として貼った平面板の物体を作る。とりあえずスクリーンと呼ぶ事にしよう。
次に、それとは別に像を歪ませる為のレンズを作る。
ここはちょっと詳しく。 後はモーションエディタで2枚の板を配置して作画するだけだが、ここでのヒントも少し。

まず当然だが、スクリーンもレンズもカメラに対して真正面を向くように配置する事。
スクリーンを傾ければ像が潰れるし、レンズを傾けると歪まなくていい所まで歪む。

カメラの画角は直接入力で最小2くらいにできる。
モーションエディタの画面を最大に使って、端にカメラ、反対の端に被写体を配置すれば等角投影による歪みもほぼ無くせるし、板もそれほど神経質にカメラに向きを合わせる必要は無い。

像の歪み方は屈折率と模様の強調度倍率、そしてスクリーンとレンズの間の距離で決まる。
レンズをスクリーンから離し過ぎると歪み過ぎ、近づけ過ぎると歪まなくなるので、作画して様子を見ながら配置を決定する。
配置を決めたら、微調整は屈折率と強調度倍率で詰める。
また、像が歪む事によってスクリーンの端が見えてしまう事があるので、あらかじめスクリーンはカメラから大きくはみ出すように配置しておこう。
という事は、最初にスクリーンに貼る動画を作画する時から、それを見越して余白を大きめに取って作画しておくのがいいという事になるわけだ。

より小難しい理屈は下に書いといた。


超どうでもいいけど、この動画、倍速再生するとアクション・エフェクト共にちょうどいいスピードになる。
…どんだけ遅いアクション設定しとんねん。



追加質感設定

LE3で追加された機能、レイトレースとデカールについて説明する。

法線

が、その前に。
レイトレースとデカールを理解し使いこなすには、法線について知る必要があるだろう。
hooky自身ろくに理解していない物を説明するのは辛いのだが…。

最近やっと分かってきたのだが、法線とは「面の向きを特定する為の要素」らしい。
頂点を辺で結んで「閉じた線領域」を作った時、面が貼られ、同時に法線も生成される。
法線は面の向きを表す要素なのだから、シェーディングから光沢から映り込みから…、詰まる所、面の角度を知る必要のある計算は全て、実は法線に頼っている事になるわけだ。

通常、法線は面を形成する全ての頂点から、面に対して垂直な方向に伸びるらしい。
これにより、面の表裏・面の角度を示すそうな。
一辺を共有して隣接する二面の場合、その接辺の両端の頂点からは二面の法線がそれぞれ伸びるのだが、この二面の間でスムージングがかかった場合、2本の法線はその中間で1本に融合するらしい。
これにより、平面であるはずの面に滑らかなシェーディングが施され、ついでに隣の面とも滑らかに繋がって見えるというわけだ。

また、凹凸模様…バンプマップだが、あれは面の法線を画像に沿って部分的に曲げるとかなんとか、そういう事をするものだそうだ。
これにより、光源方向を反映した陰影を作り出す事が出来るとか。


レイトレースレンダリング

レイトレースとは読んで字のごとく、光線を追跡走査する計算法の事である。
物体に当たった光が物体をどのように見せるか、はDoGA Rendererの標準レンダリング法であるグーローシェーディングでも計算している。
が、レイトレースレンダリングは、その後、物体に当たった光がそこでどんな影響を受け、反射してどこへ行くのか、というところまで計算する。
当然、計算には馬鹿馬鹿しいほどの時間がかかる。
高度な…というよりは、馬鹿正直な計算法と言うのが正しいであろう。
とはいえ、これによって物体同士の映り込みや光の屈折が計算できるようになったのであるから、L3ユーザーの選択肢にレイトレースレンダリングが加えられた事は素直に喜ぶべきだろう。

設定

レンダリングオプション

レイトレースレンダリングを使うには、LE3のrendopt.exeで「レイトレーシングを使用する」設定になっていなければならない。
その上で、パレット個別にレイトレースの設定を行う。
計算回数はどっちが優先されるんだったか。忘れた。
「強制的に、全ての…」は間違ってもチェックを入れないように。

パレット設定

「質感-自由設定」の「写り込み」「透明度」の右に、空白の地帯がある。
ここをダブルクリックすると、「追加質感設定」というサブサブウィンドウが開く。
ま、LE3使ってりゃ誰でも知ってるはず。
ここの「レイトレレベル」を1以上にすると、そのパレットはレイトレースで計算される。
「レイトレレベル」がrendopt.exeの「計算回数」に当たるパラメータ。
「屈折率」は下で説明する。
「デカール」はレイトレとは関係ないのでチェックを入れないように。


知識

反射

レイトレースでは、今までのDoGA Renderer(グーローシェーディング)では不可能だった
「物体を別の物体に映り込ませる」
事が可能になる。
PAのページの「質感-自由設定-環境光」の項で語った事を覚えているだろうか。

「物体の色とは、その物体が反射した光の事」
「赤い物体は赤い光線のみを反射し、それ以外を吸収するために赤く見える」

レイトレースで映り込みが可能になるのは、つまり、そういう事なのである。
赤い物体に当たった光線は赤い光、つまりその物体の色となって反射される。
その光線が別の物体に当たれば、物体の色が別の物体に投影されるのと同じ事になる。
結果、物体が別の物体に映り込んで見えるというわけだ。

間違えてはいけないのは、「他の物体に映り込ませたい」パレットではなく「他の物体を映り込ませる」パレットにレイトレースを設定するという事。
要するに、鏡と、鏡に映り込ませる物体を作るなら、レイトレースで計算するのは鏡のパレットであって、物体のパレットにレイトレースは必要ない。
逆に設定すると映り込みは出ない。

もちろん、レイトレースを有効にしたパレットでも、「写り込み」が全く無いような質感設定をしているとせっかくのレイトレースが無駄になる。
作画にかかる時間も馬鹿にならないので、設定ミスの無いように気をつけたい。

屈折

レイトレースの武器は反射だけではない。
むしろ、こっちの方が見た目のインパクトは大きいのではないだろうか。

CGでガラスや水の表現が難しい理由の一つに、光の屈折が挙げられると思う。
プールや湯船に水を張ると底が浅く見えるのは、光が水中に侵入する際、水面で屈折するからである。
水という物質が持つ屈折率により、斜めに侵入しようとした光線は屈折され、より垂直に近い角度で水中を進む。
これにより、実際にはもっと深くにある底が、浅くなって見えるのである。

ガラスでも同様の事は起こり、屈折率はガラスの方が高いが、我々が普段目にするガラスは薄いため、屈折というより
「ガラスの向こうの景色が少しずれて見える」
程度に収まる。
これは、光の屈折が侵入時だけでなく脱出時にも起こるからで、平らな窓ガラスなどの場合、光線は屈折して侵入した後、同じだけ逆に屈折して脱出するため、ガラスを通過する前後で同じ方向へと進む事になり、ガラスの厚さ分像がずれるような感じになる事による。

まぁとにかく、こういった「材質による光線の変化」を計算するにはレイトレースが必要なのである。

反射は「写り込み」の無い質感には無意味だが、屈折は「不透明」な質感に対して意味を持たない。
不透明じゃ光線が通過できないんだから屈折しようも無い、当然の話。
通常、透明度100%のパレットはただ見えなくなるだけ(存在しないのと同じ)だが、追加質感設定でレイトレ有効、屈折率を1以外にしたパレットは透明度100%でも存在感を放つ。
そのパレットを適用した物体の面で光線が屈折して、作画結果が変わるからだ。
屈折率は、大きくすると、面に対して斜めの角度で入射してきた光線を、垂直に近い角度になるように屈折させる。
逆に、屈折率を小さくすれば、面に水平な角度に近づくように屈折させる。
屈折率が1だと屈折が起こらないので作画に影響は無い。
面に対して垂直に当たった光線は屈折されない。

さて、ここに来てやっと法線の説明が活きてくる訳だが、前述の通り、凹凸模様は面の法線を部分的に曲げる事が出来る。
法線の角度が変われば面の角度が変わったと見なされ、陰影や光沢を作り出す事が出来るわけだが、透明レイトレで光線を屈折させる場合も例外ではない。
凹凸模様で面に起伏を作り出せば、光線の屈折角度も一様でなくなり、複雑な表現が手軽に出来るというわけだ。
例えば、平面に「海」や「小川」を貼って、透明かつレイトレで屈折率を1.333ぐらいに上げれば、波打つ水面を覗き込んだような映像を得る事が出来る。