ドリクラエミュ弄り:二画面化

 さてとドリクラタイム。
 大体うまくいったのでそろそろTimeTravelerを投下しますよ。
 TimeTravelerを聞いてると何だか個人的にエンディング感強いんですよね。
(更に言えば月の露珠からのTimeTravelerの流れの安心感。一時期はしょっちゅうカラオケメドレーで流してたから脳内に染みつきすぎて。今は専らランダム再生になってますけど)

 尚、成果物は動画サービスYouTubeニコ動の方に上げてますのでそちらもどうぞ。

 散々後回しにして何を作っていたかというと、
ドリームクラブZERO アイリ TimeTraveler(二画面化)

(開幕ワイプ部分で動画編集ではないアピール)

 はい、動画編集ではなくてリアルタイムで二画面化しました。しました、、。
 以下証拠画像(加工してないよ)。
img

 前からつべとかに上がってる動画を見てて「二視点並べるのはいいよね」と思ってまして。勿論皆さん2回録って結合している訳なんですが、「編集するの面倒くさいじゃん」「そのままリアルタイムで見たいじゃん」と。
 理屈で言えば描画処理を二回回せば行けるんじゃないの?と。軽い気持ちで追ってみたら取っ掛かりは何とかなってしまったのが運の尽きで。そこからの調整に難儀しまくりましたけども、、。

 まぁでもね、これはあくまでPC上でリアルタイム再生させるためだけの物なんですよ。
 端から見れば割と「でっていう」。アホみたいに苦労したのに。
 「うるせえ俺は(競泳水着を)前からも後ろからも見たかったんだよ」と開き直るほかないんですが。

 ただまぁこれだけではなくもう一寸のネタとして、
ドリームクラブZERO アイリ コイヲシテイマス(立体視1)
ドリームクラブZERO 理保 絶対アイドル☆宣言(立体視2)

(以下前者)


 二画面の視点をそれぞれずらしていわゆるステレオ立体視動画に。
(平行法用です。交差法はニコ動に
(あとこちらは開幕ワイプ処理の対応が厄介なので一旦見送りで切ってます)

 これも二視点録って編集すればいいと思われるかもしれませんが、ところがどっこいドリクラのカラオケは細かい所にランダムが潜んでいますからね。カラオケ毎に定義されている基本動作(ステージエフェクト、口パクや一定の視線操作)以外にも、ランダムで各種ライトアップや瞬き等も所々で入ってくるので全くの同じ動画を録るのはまず不可能かと。(重ね合わせ合成動画を上げている人はエフェクトを切ったりその他諸々涙ぐましい事もやってると思う)

 なのでこれで二画面同時描画の意味を見出すことは出来るのですよ。
 まぁそれも強いて言えばそのランダムを固定化してしまう(それで二度録る)というのも一つの手なんでしょうけどね、という自己ツッコミは欠かせませんけども(鬼)。
 個人的最終目標はあくまで動画作成じゃなくてPCエミュ上のリアルタイム動作にありますので。
 「うるせえ俺はアイリちゃんの飛び出るOSHIRIが(以下略)」と開き直りますよ。(笑)

 尚、注意点として、立体感強調のために画角を少々極端に上げてます。
 そのぶん絵としては若干歪んだ感じになりやすいんですがそこは立体感重視でどうぞ。
 ここを抑えるといまいち中途半端な立体感になってしまうので、加減が難しい。

 あと見るならスマホ用簡易ゴーグルがお勧めかもです(後述)。

 以下諸々余談。

●カメラ視点切り替え
 因みにずっと同じ視点じゃ面白くないよなぁということで何視点かを盛り込みました。それをタイムラインで切り替える改造も仕込んで。あと自然に切り替わるようアニメーション対応。
 まぁ小ネタですが。

●二画面化改造
 そんなに細かい話は書きようもないですが、まぁ勿論色々苦労しました(苦笑)。

 まずは興味本位でスクリーンサイズの定数(1280×720)を参照している所から処理を追ってみたところ、描画範囲と位置変更行けた!、それで描画処理を二回回してみたら二回描画行けた!、その二回目でカメラ情報を変えてみたら別視点で描画行けた!!、とここまでは割と順調に何とかなってしまったものでして。もっともそこで気を良くしてからが地獄だったのは言うまでもありません(苦笑)。
 それこそ去年に「峠を越した」と思い込んでいたそれが全くの幻でしかなかったりとか。(まぁあの後からはパフォーマンス問題に傾倒していたので一旦周り道をしてからの再開ですが。流石にずっとやってた訳ではないです、はい)

 分かり易い話としては左右画面で1フレームずれたり、それを合わせようとしても何故か髪の毛だけがずれ込んだり! 結局1フレームで二回処理を回してしまう都合で色々良くない部分が出てしまうので、何を飛ばして何を通すのか、それの切り分けにひたすら奔走。こちらを切ればこちらが立たずにもなったり。

 そもそもカメラだけ変えて二回描画させられればいいんじゃないのみたいな感じで、当初はループさせる部分をもっと絞り込もうと考えていたけど、中々そうそう上手くも行かず。結局は描画処理の頭から最後までざっくり2ループさせて、その中で要らない処理を飛ばすという一番シンプルなやり方に留めたのが現状。
 本当は処理構造をきちんと把握出来ていればループを最適化してもっと手早く、処理としても高速に回せるようになるのかもしれないけれど、まぁ流石に無茶言うなというか(笑)。

 そんな訳で、細かい所ではまだ課題も残っているんですが(バックスクリーンが意外としんどいので現状はステージ限定。あと開始終了ワイプ周りとか)、ひとまず上げる分には問題無いかなというところで。気付かない所で何処かおかしかったりするかもですがご容赦をば。

 因みに立体感を出す為に画角を上げた都合で視点(カメラ)を寄せているんですが、視点を近づけすぎてしまうとセルフシャドウの光源角度がおかしくなるという問題があるのでその匙加減も悩ましいところ。
 それ以外にもちょっと影の描画がおかしくなってる所もあって「またかー」とは思ったものの、そこはどうやら元からだったので気にしないことに(笑)。ドリクラはカメラの向きに対してキャラに当てる光源を変えているので、その辺りで問題が起きやすいですね(カメラロールの頃から色々悩まされていた)。まぁここは雰囲気でどうぞ。

●ステレオ立体視
 因みに立体視としては一番シンプルなステレオグラム方式で。
 頑張れば裸眼立体視でも行けますが、昨今はスマホ用の簡易VRゴーグルも出回っているのでそれで見るのがお手軽で良いかと。(ただ中華業者の粗悪品も多そうな分野なのでご注意を。自分は一応国内商品のe社ので(言っても中身は~でしょうけども得体の知れない業者よりは安定))
 その関係でつべには平行法用で上げました。ニコ動には交差法バージョンを上げてます。

 VRゴーグルって、別に普通のステレオグラムも見られるんですね。
 VR動画は見回し用に湾曲した画像が出力されるのでそういう物専用の特殊レンズなのかと思ったけれど別にそんなことはない。逆に四隅は歪んでしまうのかもしれないけれど少なくとも中央部分を見ている分には全く支障はなくて。単に左右の目それぞれの画像を切り分けて見るゴーグルとして使えますと。
 これでステレオグラム動画を見るのが、裸眼で頑張って見るよりはお手軽で良いかと。

●YouTubeの3D動画
 尚、YouTubeには3D動画という規格が一応あって、VR360,VR180以外にもステレオ動画にも一応対応しているようなんですが、これがまたえらく使いにくいので対応は見送りました。参考動画

 左右ハーフサイズに切り詰めたステレオ動画を上げると、懐かしやアナグリフ(赤青メガネ)用と、VRゴーグル用のトラッキングモードに変換してくれるという。また「PC版なら」3Dを切れば片面2D再生してくれるけれども、スマホ版には見事に無し。視聴方法の限られたアナグリフかゴーグル表示の二択を迫られる苦渋。
 あとこの場合はハーフサイズなので裸眼立体視用のステレオグラムとしても使えず。昔は色々対応していた時期もあったようだけど参考記事、今はごっそり消え去った模様。

 アナグリフ(赤青)は実際一番気軽に立体感は得られるのだけれど、色はどうしても死ぬよねと。
 それにメガネ自体が割と入手しづらい。まがい物の青ばかりできちんとしたシアン色の物は非常に少ないし。どちらにしてもメガネ越しの色は厳しくなる。

 あとはスマホ版でVRゴーグル用のモードを使うしかないんだけど、ただゴーグル用の分割画面をわざわざジャイロでトラッキングしてくれるので真正面を覗いていないと画面がずれるだけという誰得のお粗末機能。しかもスマホの液晶が長くないと画面も小さくなっちゃいますからね(2:1サイズ無いとダメ)。
 成る程こりゃあ使えないわと、普通にステレオグラムで上げている物ばかりでこの3D動画モードに対応している動画が少ないのも頷けてしまいましたわと(苦笑)。

 因みに、検証の過程で幾つかアーマードビキニの動画を上げてたら無事18禁認定食らいました(笑)。(立体感のわかりやすさで装飾の多い物を録っていたという言い訳は一応ありますが)肌色成分多めの人物がすっと中央に固定で、その3D動画だということでしっかりアダルト判定されたもよう(笑)。(※あくまで検証用で色々おかしいので削除済み)

●PC上でのゴーグル再生
 さてそれではゴーグルでステレオ再生するにあたって、録画した動画ではなくてリアルタイムでPC上で見るにはどうしようかと。
 簡易ゴーグルに取り付けられるスマホサイズのモニタがあればいい訳であって、PCからスマホを外部モニタにする方法はあるのでそれを試したら非常にすんなり。→ Spacedesk

 無線でも60fps設定にしたら割と動いたのでこれが有線で使えたらなと思っていたら、そもそも有線接続も完備してました。USBテザリングをオンにすると使えるよう参考記事。実に素晴らしい。感謝極まりない。

 これで片っ端からステレオ再生して一通り満足してました。
 まさしく目標達成(笑)。

●いわゆるVR
 尚、昨今だとVR動画なんて話もありますが、流石にエミュ改造でそこまでは厳しいので無しで。
 簡単に調べたところ昨今のGPUならシェーダーに Equirectangular 180 を適用すればいいという話なので参考記事、Xbox360もあの頃からプログラマブルシェーダ云々とは言っていたからもしかしたらワンチャンはあるのかもしれない。

 ただまぁアセンブラの横乗りで処理データの差し替え(とプログラムフロー弄り)くらいが現状関の山なので、流石にオリジナルに無い処理を組み込むのはそれこそ「無茶言うなw」というものでしょう。
 大体3D知識なんて20余年前の前世紀に囓った経験の残滓だけでやってますし、、。それこそ現代の最新3D技術とXbox360固有の知識を相互に備えたプロフェッショナルが見れば(出来る出来ない含めて)もっと正確な回答を出してくれるんではないでしょうか。

 大体にして、VRと一口に言っても要素としては立体視と視線移動(トラッキング)とがあって、ぶっちゃけこういう特定のキャラクター動画は前者だけあれば十分なんですよね。見回しとか全然必要ない。インタラクティブなプログラムならカメラ自身を動かして覗き込む(何を)とかいう話にもなりますけど、一定視点のVR動画ではね。
 そんな訳でステレオグラムに落ち着けた次第です。

 VR対応は、PS3版のデータで見られるモデルビュアを作った方が居られますので是非そちらをどうぞ。(→ニコ動

●高速化
 最後に余談、
 制服モデルで二画面録ったら流石に重いな、、、となってしまい。
 軽いモデルを選ぼうと思ってたけど、やっぱり一度制服で録っておきたかった(何を)。

 そこで以前に行った高速化を更に押し進めた改良版も作成しました。元々ゆっくりやろうと思っていたけれども前倒しで。
 これでどれくらい早くなったかって、制服二画面は素で30fpsくらい、前回版でも40fps行けばいい方で、それを50fps強にまで大幅改善。もう大勝利。お陰で競泳水着なら60fpsフルフレームでしたよ。
 ちょっとまだ一部ケースに未対応のプロトタイプだけれど、今回は十分だという所でひとまず。また後日触れたいと思いますというか苦労は語りたい(笑)。

 そんな訳でようやくここまで漕ぎ着けました。
 はっきり言って疲れました。(笑)

 当面抱えていたネタとしてはこれで一通り出し切ったし、念願だった高速化(の自動化)も概ね果たしたので、ちょっと一休みの気分。
 いや前振りのエンディング云々というのは別にこれでおしまいにするという意味ではなくて。ちょっと既存ネタを振り返りつつというのは考えてますが、投稿は不定期になっていくかとは思います。

 いや、まだ大きなネタとしてはPS3版のデータをどうにかしてみたい、というのは頭にはあるんですよ。一応そういう思いは書き残してはおきますが。ただこればかりは作業量が大きすぎるので確約は致しかねるところですので、はい。