ニコニコ
ユーザーブロマガは2021年10月7日をもちましてサービスを終了いたしました。
このページは皆さまから投票いただいた記事を保存したものです。

ましましの拙筆

MikuMikuDance用 - 経験で語るSSAOエフェクト4つ

2016-10-11 22:40:00

header image

「とりあえず」でSSAOを使っていませんか。なんとなく」で特定のSSAOを使い続けていませんか。もしそうならそれは伸びしろです!各SSAOの特徴を知って,作品をより良くしちゃいましょう。

当記事の要約をスライド形式でニコナレに投稿しております。さくっと知りたい方はニコナレ版をご覧ください。(↓リンク)
link to niconare

中国語版はこちら。キャブ(JuanP)さんが翻訳してくださいました。

中文版请见(译者:JuanP):
https://www.bilibili.com/read/cv2658565

はじめに

本記事では次の観点で述べています。

(1) 対象は近距離の人物モデル。
(2) 出力はHD解像度。今回は幅1080,高さ1440。
(3) エフェクトは初期パラメータ。SvSSAOのサンプル数のみ変更

また,使用するソフトおよび比較するエフェクトは次のとおりです。

MikuMikuDance ver.9.26
MikuMikuEffect ver.0.37
SvSSAO ver.0.1 ─ 編集:#define SAMPLES 10 → 16
HgSSAO ver.0.0.3
ImSSAO ver.0.2
HgSAO ver.0.0.2

そして百聞は一見に如かず。まずはそれぞれの陰影をご覧ください。
左からSvSSAOHgSSAOImSSAOHgSAOです。

SvSSAOHgSSAOImSSAOHgSAO
SvSSAO
SvSSAOの陰影
局所的で使い勝手が良い

SvSSAO

そぼろさんのSSAOエフェクトです。陰影はまわりにモノが多い閉所にかかります。顔や首まわり,脇,小物,さらに腕に隠れたツインテなどにかかり,いっぽうで胸部や背後の壁などひらけた部分にはかかっていません。

陰影の判定および質ともに良好な印象で,モデル周辺に黒いモヤが現れることもありません。襟の部分はあまり正確ではありませんが,陰影自体は局所的なので悪影響が少なく,ある程度濃くしてもしつこくありません。引っ込むモノは引っ込ませたいときに,気軽に使えます。

MMD上で調節できるパラメータ

X:陰影の判定強度。この数値を大きくすると「ここは閉所なんだ」と判定されやすくなり,陰影がかかるようになります。陰影の濃さの最大は変わらないので,たとえばすでに閉所だと判定されている首がさらに暗くなったりはしません。

Y:陰影の判定減衰度。この数値を大きくするとより狭い閉所にはかかりにくくなり,より広い閉所にはかかりやすくなります。広い閉所とはいったい…。

Z:陰影のぼかし具合。この数値を大きくすると陰影がぼかされ柔らかくなります。たとえば局所的に濃くなりすぎて,暗いところと明るいところがはっきり分かれてしまい違和を感じるときにぼかします。

Si:陰影の濃度。数値を大きくすると陰影が濃くなります。

Tr:陰影のMMD用最適化度。0.0に近いほど陰影を無彩色にし,1.0に近いほど馴染ませます。ふつうは1.0でよいと思いますが,ホラー作品など恐怖を覚えさせたいときは0.0もよいかもしれません。

HgSSAO
HgSSAOの陰影
陰影が広範囲にかかる

HgSSAO

針金PのSSAOエフェクトです。陰影はおおまかな起伏に,なだらかにかかります。陰影の範囲が広いので全体に立体感が出ます。いっぽうで,その広さゆえにうす黒い絵になりやすいです。顔の下半分にも陰影がかかりやすく,顔色を悪くしがちです。

HgSSAOは閉所をあまり暗くしませんが,ひらけた部分でもおおまかに起伏があれば暗くしています。背後の壁全体に陰影をかけているのはHgSSAOだけです。

さらに,傾きの違い(言い換えればモノの丸み)に反応しやすく,平面っぽさを軽減できます。たとえば,腕の丸み,ならびに胸と肩の角度が鎖骨を境目に変わっていることなどを見て取れます。まれよん式ミクさんのツインテのひねりっぷりにもよく反応します。この傾きの違いに反応しやすいところがユニークな強みです。

MMD上で調整できるパラメータ

X:陰影の光線距離。「SSAO処理の光線を飛ばす長さ」とのこと。数値と陰影の関係はよく分かりません。個人的には,20~40ぐらい大きくするとより丸みに反応するSSAOになるのでそれもアリかなと。

Y:陰影の判定距離。この数値を大きくすると陰影をかけるべきだと判定されやすくなります。SvSSAOのXと同様で,陰影の濃さの最大は変わりません。

Z:陰影のぼかし具合。この数値を大きくすると陰影がぼかされ柔らかくなります。

Si:陰影の濃度。この数値を大きくすると陰影が濃くなります。

Tr:陰影の合成方法。0.0に近いほど乗算(無彩色)になり,1.0に近いほど自己乗算(馴染む)になります。こちらもふつうは1.0でよいと思います。

ImSSAO
ImSSAOの陰影
端正な陰影が美しい

ImSSAO

ElleさんのSSAOエフェクトです。陰影は閉所のほか細かな凹凸にもかかり,綺麗な濃淡をもっています。陰影の判定および質は秀でており,おでこが前髪に沈降していくさまを唯一表現しています。ただ,輪郭がやや荒れやすかったり,モノの後方に広く濃い陰影が出やすかったりする傾向があります。

SvおよびHgSSAOは襟の上端が暗かったり,首の上部が明るかったりしますが,ImSSAOは襟も首も正確な陰影になっています。また,SvおよびHgSSAOはぼかしの強い柔らかな陰影ですが,ImSSAOは輪郭を見て取れる端正な陰影です。前髪の房やヘッドホン,メガネもはっきりと映し出しています。

HgSSAOとは対照的に,丸みや傾きをやや表現しにくく,左肩や腕,肘の内側は真っ白になっています。

ローポリの街ステージに適用すると,大きな平面(たとえばビルの壁面や道路)に放射状の大きな陰影が発生しやすく違和感を覚えます。スカイドームのポリゴンのエッジにも反応することがあり,遠距離および広範囲にはあまり強くない印象です。細かい凹凸に反応するのも含め,室内モデルやハイポリモデルにうってつけのSSAOです。

MMD上で調整できるパラメータ

Y:深度ブラー強度。この数値を大きくすると閉所や広域にかかる陰影が濃くなります。

Z:法線ブラー強度。この数値を大きくすると細かな凹凸にかかる陰影が濃くなります。

Si:陰影のぼかし量。この数値を大きくするとより狭い閉所に反応しにくくなり,モノの後方により広く濃い陰影がかかりやすくなります。丸みにも反応しやすくなるので,端正さを保ったままHgSSAOに近づく感じです。

Tr:陰影の合成度合い(濃さ)。0.0に近いほど陰影が薄くなる…はずですが,ImSSAO.fxおよびImRadiosity.fxのImSSAOモードでは計算式にTr項が反映されないので薄くなりません。プログラムはよく分かりませんが,とりあえず

#if View_Result==View_ImSSAO
//imssao
return float4(pow(org.rgb, 1+imssao*Tr)*(1-SsaoBlackRate*imssao*Tr), org.a);
#endif

というように書き加えればTrで濃さを調整できるようになります。

HgSAO
HgSAOの陰影
調整次第で化けるポテンシャル

HgSAO

針金PのSAOエフェクトです。陰影は凹凸に沿って強くかかります。陰影の範囲がとても狭いのでモノの形や立体感がはっきり出る反面,不自然な陰影の帯になりやすいです。たとえば各SSAOは首全体を暗くしているのに対して,HgSAOは首の縁だけを暗くしています。

また,各SSAOはメガネのフレームならびに左腕に巻いたコード自体に反応しているのに対して,HgSAOはそれら自体ではなくそのまわりに強烈な陰影をかけています。細いモノに対しても太い陰影の帯が出るので注意が必要です。

加えて,ImSSAOとHgSAOは凹凸に反応するぶん,ポリゴンのよれもはっきり出ます。特にHgSAOは強く反応するので,変形が大きいところ,たとえば肩まわりならびに脚の付け根,膝などは荒れた陰影が出やすいです。

MMD上で調整できるパラメータ

X:AO処理のサンプリングを行う際のスクリーンスペースのスケール比とのこと。どのようなパラメータかは分かりません。。。

Y:凹凸判定における領域の半径。この数値を大きくするとより細かい凹凸に反応しにくくなり,より広い凹凸に反応しやすくなります。たとえば首をひとつの凹部と考え,端だけではなく首全体を暗くしたり,モデルと背景の間を暗くしたりするなど,他のSSAOに近づきます。

Z:凹凸判定におけるバイアス。この数値を大きくすると凹凸だと判定されにくくなります。陰影の濃さの最大は変わりません。

Rx:陰影の明度。この数値を大きくすると陰影が濃くなります。発生している陰影の濃さを現状の最大値に近づけるので,じゅうぶん大きくするとどの陰影も一様な濃さになります。濃さの最大が変わったり,凹凸だと判定されやすくなったりはしません。

Rz:陰影のぼかし具合。この数値を大きくすると陰影がぼけて柔らかくなります。HD解像度では0.5~ほどぼかすと良い陰影を得られます(後述の作例にて)。

Si:陰影の合成度合い(濃さ)。この数値を大きくすると陰影が濃くなります。掛け算のように濃くするので陰影の濃さの最大値も大きくなります。

Tr:陰影の合成方法。0.0に近いほど乗算になり,1.0に近いほど自己乗算になります。

BAD HgSAO
HgSAOあるある
ぼかし不足

HgSAOによる陰影の帯

HgSAOを使った作品において,陰影の帯がはっきり見えてしまっている作品が散見されます。とくに初期パラメータ+HD解像度だと帯になりやすいです。この場合,Rz(ぼかし具合)を調整して帯の輪郭をぼかせばよりうまく馴染み,より自然な陰影になります。また,ぼかすことで先述のポリゴンの変形による荒れた陰影もそれなりに消せます。

陰影の帯が発生しやすい部分は,前髪と顔の境目,ならびに衣服と肌の境目,肩まわりや足の付根など変形の大きい関節,曲げた肘や膝の内側の輪郭です。髪の房もいやにはっきりします。これらを見ながらRzを調整します。

difference between HariganeP's HgSAO and NCHL's one
標準版とNCHL同梱版の違い
陰影はHgSAOのみ

NCHLShader2同梱のHgSAO

基本は針金PのHgSAOと同じです。違うのは光の当たる部分(順光)に陰影をあまりかけないところです。光の当たらない部分(逆光)には陰影をしっかりかけます。

順光の場合はそもそも影があまり発生しないはずなので,このHgSAOなら違和感を軽減できます。また,斜光の場合は影になった部分だけにSAOをかけることができます。

針金Pが配布なさっている標準版HgSAOは,順光でも逆光でも陰影をしっかりかけます。常に立体感を得られますが,そのぶんうまく馴染むように調整することが重要になります。

NCHLShader2同梱のHgSAOはSi=0.0で無効化し(表示のチェック欄をOFFにしても無効化されません),標準版のHgSAOを使うのも手です。

HgSAO with Si = 1.0
HgSAO(Si=1.0)
ホラーチックな作品に
元の作品(ニコニコ静画)

作例1:濃さ(Si)= 1.0を楽しむ

以前投稿したニコナレでは「SSAOの濃さは0.6以下」をおすすめしましたが,HgSAOの特徴である強烈さを利用し,Si=1.0で怖さを醸してみるのもありです。

元の作品から解像度を変更しSiも1.0にした作例です。ネックレスのまわりはやや違和感を覚えますが,目元の陰りならびに肌のうす暗さは良い感じではないでしょうか。陰りを帯びた,ダークな雰囲気,ホラーチックな作品になります。Siをもうすこし小さくすればシックで落ち着いた,サスペンステイストの作品になります。

SSAOによる陰影の濃さは光源の位置ならびに照明系エフェクトなどの影響を受けます。常に同じ値にするのではなく,目的をもって調整することが重要です。

HgSAO Only
HgSAOのみで
1MB制限のため1080x1440を縮小
Y=1.0 Z=0.01 Rz=2.0 Si=0.7
HgSAOなし

作例2:HgSAO単独でも良し

HgSAOは調整次第でSSAOの筆頭にたつポテンシャルを持っています。HD解像度と初期パラメータの相性が悪いだけなので,解像度にあわせてパラメータを調整すればHgSAO単独でかなり良い陰影が得られます。

また,この作例ではメガネやコードをHgSAOの処理対象から解除し,不要な陰影を断っています。前述のとおり線状のモノは違和感のある陰影を発生させやすく,特にメガネの陰影は顔を暗くしてしまいます。

処理対象から解除するには,[MMEffect]メニューの[エフェクト割当]を開き,各SSAOのタブで解除したい材質のチェックを外したり(同梱されていれば)AOキャンセル用のfxsubファイルを適用したりします。


おわりに

各SSAOはそれぞれ得手不得手があるので,表現したい陰影にあわせて選びましょう。そして,パラメータのうち濃さとぼかしだけでも各作品にあわせて調整するとグッと良くなります。

ちなみに私は今回紹介したSSAO4つすべてを使うことが多いです。ImSSAO (実際はImRadiosity)をベースに,ものたりないところを他3つのSSAOで少しずつ補っています。

末筆ながら,まれよん式ミクさんめっちゃかわいい。

それではお疲れさまでした。


© 2016 ましまし



投稿者:

ましまし

プロフィールページ