8.4K Views
September 08, 25
スライド概要
第六回UE九州in大分にて使用したスライドです
https://ue-9shu.connpass.com/event/361932/
UEノンゲームエンジニア兼一般経済学部系大学生
リアルタイム3D錯視の すゝめ 月ヶ瀬
自己紹介 月ヶ瀬 理緒 @Gisu_Love • UE歴5年目 • ディプロス株式会社のエンジニアのようなTAのようななんでもやる ポジ • 3D錯視狂い人
目次 • 3D錯視とは • 現在の3D錯視系コンテンツの特徴 • UEで作ってみる(nDisplay省略解説) • リアルタイムな入力 • nDisplayって展示/デモだと使いにくい?
3D錯視とは • 特定の手順を踏んで視線を動かした際立体に見えるものや左右で 違う角度から見せるVR的な手法、3D眼鏡のような赤と青をずらした ものまで広くそう呼ばれる
この講演の3D錯視 • アナモフィック技法(とある位置から観測したときなどに意図したもの が見える技法)で立体に見えるもののこと 一部では • 3Dアナモフィック • 3Dアナモフィックビルボード • 3Dサイネージ …と呼ばれている
なぜUnreal Engineで? • リアルタイムで立体に見える歪みマップを作製して立体視ができる ようなツール他にもいくつかある • 標準機能 • フォトリアル • リアルタイム ↑ これが簡単にできる
現在の3D錯視系コンテンツの特徴
3D感を作っている要素の分解 大まかに •枠 • 奥行 • 飛び出し この3つに分解できる…と思う ※学術的なあれではなく個人の分析です
枠
枠は立体感を作っている こういう形の モニター? 枠なし 枠あり ! 猫が箱の上 にいる! 枠は立体感を出すのに とても重要
枠の種類の分析 枠の種類はおおむね • 配置型 • 窓型 • 空間型 の3つに分類できる …と思っています
配置型 特徴 • 箱を置いたような見た目 • ベーシック • ビルの上側に設置とこのタイプが多い
窓型 特徴 • 建物に穴をあけたような見た目 • 平面ディスプレイでも成立しやすい • 壁などに設置されるとこのタイプがおおい
空間型 特徴 • 何なら枠がないことも(ディスプレイの土台が枠の見た目を果たす) • 代わりにガラスなどで現実との仕切りを出す • とにかく「そこにある」感を出すことに特化
奥行
奥行の種類の分析 奥行の種類はおおむね • 一致した奥行 • 一致していない奥行 の2つに分類できる …と思っています
一致した奥行 ビルの上に箱が 乗ってて鹿がいる • 人間が3D錯視コンテンツ を見たとき、周囲と整合性 を考えてしまう • 一致しているほうが現実感 が強い ビルの中に人が埋 まってる ↑人間が現実の奥行と3D錯視コンテンツが 一致していると感じやすい例
一致していない奥行 • 映像の奥行と現実の奥行が 合わないとき、違和感が生じ やすい • が、ディスプレイのサイズや 画像の端の処理などでいい 感じにきれいに見えるときも ある(すべては製作者の腕) 異空間が広がって る!? ↑錯覚的に違和感を感じやすい気がする例
飛び出し
枠は飛び出しがあってこそ 飛び出し なし 飛び出し あり 猫がいるなあ ! 猫がこっちに身を 乗り出してる! 飛び出しがないと枠は宝の持ち腐れ
立体感の部位 • どこにかかっているかによって立 体感・現実感が変わる 多 中 小 飛び出し部位に応じた 立体感の感じ方の差 • 大きく壁(枠)に飛び出した部 分も立体感を感じやすくなる
飛び出しの種類 • ディスプレイ空間にあるはみだし • ディスプレイ空間から飛び出たはみだし
空間にあるはみだし 猫が座っている とき • 部分的な飛び出し • 画像のようにあくまでもオブジェクトの重 心は空間にある • 枠へのはみだしは立体感を出すうえで 重要 水色:ディスプレイ空間 白:壁(枠) オレンジ:空間からはみ出している範囲
空間から飛び出た飛び出し 猫がジャンプし て前に来た時 • 画像のように重心は完全に飛び出し、 視点側に寄っている • 画面からはみ出してしまったり、飛び 出した後の処理(画面外に動かすと ディスプレイ間が出てしまう)に問題が 出やすい • 実寸が想像できるものだと逆に違和感 を抱かせやすい(次ページ) 水色:ディスプレイ空間 白:壁(枠) オレンジ:空間からはみ出している範囲
物体のサイズ感 による錯覚バグ …が起きると思っています あれ?思った より圧(近くに いる圧)を感じ ないな 3D世界では人の前に来たらも う全体が見えないサイズ なのでおもったより飛び出てい ない 人間は飛び出してきた物体が どれだけ飛び出してきたかわ からないので 「たぶん現実の猫のサイズだっ たらこれくらいの位置だな」み たいなのを想定してしまう 実際と距離感の差で違和感が 出る
一番はディスプレイが近くてデカけれ ばかっこよく見える(と思っています)
というわけで…
UEで作ってみよう!
UEで立体視をするには nDisplayという機能を使う
nDisplayConfigのセットアップ • 映す先の形状(メッシュかnDisplayスクリーン)を決定して配置 • Default View Pointを動かして視点の位置を決定
nDisplayConfigのセットアップ • 画面のサイズやどの形状を使用するかなどを設定する ※この画面はかなり抽象的な セットアップ画面です。 後述の詳しいセットアップ方法 をご覧ください
マップに配置する • マップで立体にしたいオブジェクトの位置を見ながら配置する
Switchボードで実行する • SwitchBoardとSwitch Board Listenerを起動する • Configを作成し、先ほど作った nDisplay Configアセットを読み込み 配信
3D錯視が動作!
より詳細で詳しいnDisplayの操作方法は 公式クイックスタート https://dev.epicgames.com/documentation/ja-jp/unrealengine/ndisplay-quick-start-for-unreal-engine 今から始めるnDisplay https://www.docswell.com/s/tukigaselio/KDNJ3R-nDisplay_Now をご参考に
最近流行りの3Dスキャンを取り入れよう! • フォトグラメトリやNeRFなど、現実の空間を撮影する3Dスキャ ナーはたくさんある! • うまく使えば背景×見せたいものだけでその場にあるような疑 似MRも! • UEなら時刻・天気もリアルタイムで反映できる!
リアルタイムな入力
入力には • UI • マウス • タッチ(一部ディスプレイ) • Leap Motion/VIVEなどのトラッカー が使用できる …など
UI • 現状、狙って複数のディスプレイに別のUIを出す方法がない • 表示してボタンを出したりなどはできる • 5.4からnDisplay Cluster Module APIノード(nDisplayの情報をいろい ろとるためのノード)がなくなってしまい現状いろいろ情報を取る方法 がないため狙ったモニターに出せない
マウス • マウスの正確な3D座標が取れない傾向があり、Actor ClickやLi ne Trace、座標変換などは全く違うところに飛んでしまうことがあ る • 移動量は正確にとれる
タッチ • タッチで入力ができるようなタイプのものはマウスと同じように扱え る • タッチできるような距離で視点を設定しないといけない • タッチパネルで且つ画面の発光量を確保できるようなディスプレイ がそこそこ高価であることを考えると使用できる場面が限られる
Leap Motion/VIVEなどのトラッカー • Switch BoardのLive Link経由でデータを渡すことをできる • 画面に干渉せず入力ができる • もともとnDisplayがバーチャルプロダクション向けよりの機能なので 相性がいい
目的に応じて使い分けましょう
nDisplayって展示/デモだと使いにくい?
nDisplayはもともとバーチャルプロダクション 寄りの機能なので、 あんまりUEが入っていないPCでスタンドアロ ンで動かしたりすることは想定していない… (たぶん) →動かせる方法見つけました! ※PC一台の場合に限り
パッケージで実行する方法 • projectとEngine Dirを空にしてConfigを作成する • SettingからuProject PathとUnreal Editor File Nameを実行ファイルに設定
Switch Board/Swich Board Listener • SwitchBoardやListenerはUE内に独立したアプリケーションや.batとし て存在している →そこだけ切り分けてしまえば別PCに持っていくことが可能!
いるもの一覧1 Binaries Build Content Config(iniファイル全部) Extra
いるもの一覧2 Content Plugins Source
これらをくっつけて疑似UE_5.〇を作る • Pythonがエラーを吐くので、作成したUEがおかれている場所に合わ せて配置する(DドライブにUEをダウンロードしているのなら疑似UE もDドライブに置くこと) • MultiServer(複数PCをつなぐためのアプリ)は関連ファイルが多く切 れていません。
これによりランチャーを入れたくないデモ用 のPCなどでも簡単に実行が可能に!
ぜひUEで3D錯視をつくりませんか?
ご清聴ありがとうございました