ドリクラエミュ弄り:影問題

(※今月の動画投稿はお休みです)

 先日のステータス「た5」事件以来、一度バグった身体メモリデータはそうそう戻らず、未だに色々尾を引いております。
 だからデータ参照系バグはやめろって。ファイアの本とかやめろって。頭のドリルは外せって。

※何故かテレポの本が記憶に残ってましたが安全で有用な本としての情報だった模様。ブリンクの本とかとてもおすすめみたいですね()。

 さてとドリクラ小話なんですが、
 別に調子が悪いからという訳ではなくて、ただ昨今色々煮詰まっているので今月は動画は見送ります。(手は動かしてますが、しばらく重い作業が続きそうなのでこの先も間が空くかなとは思います)

 以下は裏方の動作の話なので一行添えておしまいレベルの案件でもありますが、
 ただ地味に見た目にも影響してくる話なのでちょっくらまとめておきます。こう変えちゃいますよということで。(一応言うと、別にこれで煮詰まってたのではないです)

●セルフシャドウ(影)問題
 時折セルフシャドウが何かおかしいな?というのは当初から気になってまして、前回の恋KOIでかなり派手にそれが現れていたので調べてみました。

 懸念点としては二つ。
 ・影が欠けている時がある
 ・影の向きがおかしくなっている時がある

 元々考慮されていた処理もあるような気は所々するんですが、結果として破綻するケースが出てしまっているので見直させて貰いたいなと。

○影の欠け
 まずは前者の欠け問題から。
 なかなか分かりやすい瞬間を選ぶのも難しいですが、例としては以下のような腕の下側とか、後は首の左右が欠けているケースなんかがよく気になっていたところ。

img
(左:変更前、右:変更後)
 これはマスク生成?の計算角度がずれているような感じなので、関連ベクトルデータを視線ベクトルに揃えてみたら割合綺麗に収まるようにはなりました。

 ただこの点、元々生成されているベクトルが何なのかはよく分かっておりませんで。単なる処理上の不整合にしては妙な感じもあって、敢えてずらすようにしていたのか?と。
 これがよく発生するのが腕の下側のような光源の反対側なので、いわゆる反射光みたいな効果を狙っていたのだろうかとも思えなくもない点。特にこうやって文章にまとめ始めるとより気になってきますよね(笑)。

 またここはカメラの角度がきつくなっている時ほど顕著に出るので、実は次の問題が影響していた部分も大きいところ。
 そこで次の問題だけを取っ払ってこちらは据え置きというのも考えてみたんですが、ただ角度によっては誤差が非常に大きく出てしまうのでやはり厳しいかなと。
 個人的には欠けが見える瞬間の方が(プログラマ根性的に)気になってしまうので、一旦なくす方向で様子を見たいかなと思います。

※追記:
 書き終えた直後に気付いた件。
 あと現状でも逆に上側が僅かに欠けるケースがあるようなのでこの辺で何かあるのかと思ってましたが、でもどうやらこことは関係なく、単にお胸周りが変形前のデフォルトL(の法線)で影計算されているのが原因のよう。
 そういやありましたねぇそんなの(汗)随分前に少し触れた案件)。Sサイズの陰影のウソくらいしか問題ではないと思ってましたがこんな所にも影響が。
 うーん、これは面倒なので流石に優先度落としますね、、(笑えない)。


○影の向き(光源の角度・位置)
 もう一つ、大きな問題だったのがこちら。
 影を作るための光源位置がカメラに合わせて移動している(カメラが回り込んでも画面の正面側から当たるようになっている)訳ですが、その移動処理に妙な癖があって時折おかしな影が出ているケースがありました。

 前回、恋KOIでおかしくなっていたのはこれ。(+先程の欠けの問題も影響出てます)
img
(左:変更前、右:変更後)

 基本的な考えとしてはステージを中心にカメラの回り込み方向に応じて光源が後ろに付き従う(一緒になって回る)訳ですが、その光源が妙に行きすぎてしまうといった形。
 調べてみると、どうやらその角度計算が「ステージの中央0基点」を基準に行われている模様。

 通常は大体ステージの中心にキャラが居るので大きな誤差は出ないものの、実際にはカメラは「キャラの動きを追いかけるように動いている」ので必ずしも基点0の方向を向いている訳ではなく。例えば「ステージの奥を向いたままキャラに合わせて平行移動で追いかけていく」と、うんまぁ計算ずれますよね(汗)。

 特にこちらで勝手にカメラ座標をハックしている(本来想定外の位置に置いている)ので余計に目立つ話にはなりますが、ただここはオリジナルのスイッチャーの視点でも時折計算が狂う部分。
 まぁ残念ながら仕様バグといったところでしょうか。
 なので、きちんと「カメラの注目点を基準に計算する」ようにすれば光源の角度は常に一定に保たれるようになりますよねと。

 この位置計算問題と先程の欠けのベクトル差問題で大分妙な結果になっていたんですが、それぞれ変更してみるとこういう感じ。
img
(左:変更前、中:欠け対処、右:光源変更)
 欠けをなくす(中央)と光源位置が横後方にまでずれ込んでしまっているのがよく分かり、そこから位置も直したのが右。

 既存のストリームでも時折出ていました。
img
(左:変更前、中:欠け対処、右:光源変更)
 ここもこうなってこう。
 欠け問題のお陰で幸か不幸かそこまで目立っていなかっただけで、計算上苦しくなっている箇所は幾つかあったというのが実情でした。


 ただこの位置計算、結果として「場面によって光源角度に差が出る」という効果が出てまして。
img
(左:変更前、右:変更後)
 ここなんかはカメラの後ろに控えているレフ板係(光源)がうっかり行き過ぎてテヘペロとやっていたシーン。(更にやらかし過ぎていたのが先程のケース)
 これを律儀に正面から当てるような計算にすると、まぁ実際はこんなに影が大きく掛かる事もないんですよねと。

 この辺、もしかして影の変化を狙っていた計算式だったのか、それが特にステージ上の移動が激しくなったZERO追加曲で破綻する結果になってしまったのか。(ココロとか恋KOIとかきっつい)
 そこは気になったので、基点は直しつつも敢えて位置(距離)に応じて差を出すような計算式というのも考えてみたんですが、それはそれで全体的な影響が大きくなりすぎたので一旦見送り。

 取り敢えず、「逆にこれまであった影の変化が出なくなる」という事にはなりますが、まずは異常ケースを修正しておきたかったということでどうぞ。


 あ、この辺の問題はそもそもPS版ないしはGogo.では解決してると思います、多分。
 とんだ再生産ですね(苦笑)。うるせぇ(逆ギレ)。

 そんな訳ですみませんがまた来月。(に出せるといいですね、、)