妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

マテリアルによるトゥーンアウトライン研究(8) 内側と外側のどちらに線を入れるか

妹「線を内側に出すのと外側に出すのって、そんなに違うものなの? お絵かきソフトとかでやる時はあんまり変わんなかったと思うんだけど」

「内側と外側というのは、より手前にある物体の表面に線があるか、奥にある物体の表面に線があるかという違いなんだけど、原理としては違わないけど、マテリアルの仕組みで考えると外側の方が難易度高い」

f:id:una_unagi:20170409002646p:plain

「これは例えば各ピクセルごとに現在地+上下左右4箇所のピクセルを調べて、輪郭線を出そうとしてるケース。これだと処理負荷は同じだし、現在地の方が深度値が大きい場合と小さい場合、どちらの場合にその場所を線の色にするかで内側か外側かが変わってくる」

妹「やっぱり同じような物なのでは?」

実際に線の形を決めている部分を現在地に出来るかどうかという点が違う。例えば昨日のマテリアルの考え方は、現在地の法線を調べて、面が傾いた方向のピクセルだけ調べることで、調べる点を少なくするという仕組み。外側方式で考えると、実際に傾いてる面が遠くにあって、その傾きを調べるためにまず全ての点を調べないといけないから節約にならない」

妹「他に違うところは」

「手前にある物体は線を太くする、というのも外側方式の方が難しい。4ピクセルの太さなら4ピクセル先を調べるというのは同じだけど、内側だと最初に物体の深度がわかるけど、外側だと全方向調べないと深度がわからない。だから最悪数倍の処理時間が掛かってしまう」

妹「できるけど遅くなるってことなのかな」

「複雑なことを考える場合ほど内側が有利な感じ。そのうちもっと速い方法が発見されるかもしれないけど。あとポストプロセスマテリアル以外の方法で線を生成する場合はまた違ってくる」