アウトラインの制御

20240114c.jpg備忘としてのメモです。

カメラの距離に応じて、キャラクターのアウトラインの太さを変えたい。そもそもの立脚点がここ。

Blender標準機能の「Freestyle」には“Distance from Camera”というModifierがあるので、これまでは問題なく解決できたですが、2024版ロールアニメーションではサードパーティーが開発した「Lightning Boy Shader(以下LBS)」をメインシェーダとして使っているので勝手が違うのでした。

20240114b.jpg
図のAラインはFreestyleで、Bライン(キャラクターの外郭)がLBSにおけるアウトライン。アウトラインと言えども、実はキャラクターのメッシュをコピーして、それを本体の後方に配置することでアウトラインに見せているようなので、Freestyleと違って実体があります。実体なのだから、カメラの距離に応じて太さは変わるわけで、本当なら何の問題もないのです。駄菓子菓子💦、距離によってはアウトラインのパンチが足りなくなってくることがあり、ここがどうにも妥協出来なかったりします。単なるわがままです(笑)。

LBSのアウトライン設定“Thicness”にはFreestyleのようなModifierは用意されていません。
さて、どうするか…。
試しにThicknessにドライバを当ててみました。

20240114.jpg
Driver : Averaged Value
Object : Camera
Type : X-Location, Y-Location, Z-Location
Space : Local

仮にキャラクターからカメラが5m離れたという状態で言うと、座標上は「+5m」と「-5m」が存在しますので、グラフはおのずとVの字になります(Vの谷が最接近値)。際限なく太さが変化すると、それはそれで表現が破綻します。回避策として、適当に上限値と下限値を設定。これをカメラの座標値xyzそれぞれに当てます。
結果は良好。グラフのラインをLinerにしたせいか、太さの変化に遊びがないようにも思えますが、後でBezierにして試してみます。
取り敢えず着々…と日記には書いておこう。

この記事へのコメント