以前からmodo標準の輪郭マテリアルについて欠点を話題にしてますが、ちょっと改善方法を進歩させました。
問題の欠点とは、漫画調・セル画調の輪郭線を再現してくれるCelEdgesMaterialというのがあるんですが、そのまま絵の全体に適用すると、キャラ本体や背景は当然として、オシッコにも輪郭が描かれてしまう。
そこでオシッコには適用させなければ解決するだろうと期待するわけですが、実際にやってみると、確かにオシッコ自体には輪郭線は描かれなくなりますが、オシッコとの境界を持つキャラや背景の方には描かれてしまうので、結局オシッコにも半分輪郭が残ってしまうという。
▼オシッコ以外輪郭あり/しかし不完全
なので、今までは輪郭なし、輪郭あり、オシッコのみのアルファチャンネルの3種類をレンダリングし、輪郭ありの画像にアルファチャンネルからマスクを作ってオシッコの輪郭線だけを消していたんですが、これも実は完全とは言えませんでした。
▼輪郭なし
▼オシッコ以外を非表示にしてアルファチャンネルのみ出力
従来の方法の不完全なところは、オシッコのアルファチャンネルなんですが、上図のように本来はキャラに隠れてるので考慮しなくていいはずの部分も出力されちゃうんですね。
すると、消さなくてもいい輪郭線まで消えてしまうわけです。
(ちなみに輪郭ありの出力時、オシッコを表示OFFにすれば? と試しましたが、それだとオシッコの影がキャラや背景に落ちないので駄目でした)
▼裏に隠れてるオシッコの影響で、ふくらはぎや顔も所々輪郭が欠けてる
今まではそのまんまか、必要に応じて手作業でポチポチ直してましたが、その手数をもっと削減したいと思って考え付いたのが、今回の改善法。
オシッコのアルファチャンネルを出力するのではなく、オシッコは赤や緑など極端な色にし、オシッコ以外は真っ白にして、影や陰影、反射など余計な計算もOFFにした状態を出力します。
▼テストなので適当ですがキャラを発光させると更に余計な陰影が消せるはず
これをPhotoshopの色域指定で赤い領域だけを選択し、必要に応じて領域を拡張してからそれをエッジあり画像のマスクに使うと…
まだ多少気になる箇所はありますが、手作業で直す量を考えればはるかに完成直前の状態が半自動生成できました。
詳細
・色域指定「赤」でオシッコ部分を選択
・選択範囲の拡張を2回行って選択具合を強くする
・選択範囲の変更→拡張で3ピクセルほど範囲を広げる
・グレースケールのマスクにしたらコントラストを50ほど強調
ちなみにPhotoshopでの作業も、最初は手作業で手順を踏みますが、その段階でアクションに記録しておくので、後はスクリプトで必要回数(要するに動画のコマ数)繰り返し処理させます。
とりあえず一旦これでまた生産力がアップする…といいなあ。