見出し画像

4次元空間を身体化してみたい

中国のSF小説『三体』では、4次元空間における身体感覚が鮮やかに描かれています。この描写に魅了され、「自分もこんな体験をしてみたい」という思いが募り、実際にその感覚を再現するプロトタイプを制作することにしました。

でも、4次元空間を扱えるようなフレームワークやツールはほとんど存在しません。そのため、自力で4次元空間の理解を深め、試行錯誤を繰り返しながらの制作となりました。この記事では、その取り組みを記録し、当時の私の考えや発見を振り返っていきます。


目指す体験

4次元空間を可視化した事例は幾つか存在しますが、それを「身体感覚」として捉えるのは簡単ではありません。今回の目標は、4次元空間を主体的に移動しながら体験できることです。具体的には、以下のように進めました。

  • 断面表示を通じた4次元空間の理解

  • 視点操作を含む4次元空間内での自由な動き

  • ゲーム性を持たせた直感的なインタラクション

4次元空間の表現手法

4次元空間の表現方法はいくつかありますが、まずはシンプルに動くものを試すため、4次元空間を3次元空間で切り取って表示することにしました。4次元空間を3次元空間で切り取るとはどういうことか? これは少し想像しづらいため、まずは次元を一つ下げて考えてみます。

3次元空間を2次元平面で切り取る

まずは3次元空間を2次元平面で切り取ることを考えてみましょう。

左側の3次元空間にある2次元平面(Plane)と、右側の2次元平面(Plane)が対応しています。2次元平面をZ軸方向に移動させると、2次元平面上の表示が次のように変化します。

  1. 2次元平面と球が交わると、平面上に点が表示されます。

  2. 平面がさらに動くと、点が円となり、大きくなります。

  3. 2次元平面が球の重心を通過すると、円は小さくなります。

  4. 2次元平面が球を通り過ぎると、円は消えます。

これはいわゆる3Dモデリングや、MRIスキャンで行われる断面解析と同じです。

出典: Wikimedia Commons(CC BY-SA 3.0)

上のシミュレーションでは、3次元空間と2次元平面を横並びにして表示しているため、視覚的に分かりやすいですが、右側の平面だけを見て元の3次元空間を想像できるでしょうか?断面解析に不慣れな場合、想像が難しいかもしれません。この理解を助けるために、いくつかの情報を追加しました。

まず、2次元平面上で円が最大になる時の影を薄く表示します。上の例だと右側の平面に3つの影が映っており、これにより球が3つあることと、それぞれの大きさをおおまかに理解できるようにしています。
また、球の中心から2次元平面までの距離(球の半径 = 0.5)も円の上に表示しました。この距離は鉛直方向の相対位置として符号付きで表示しています。

4次元空間を3次元空間で切り取る

では3次元と2次元の対応関係を踏まえたうえで、いよいよ4次元空間を3次元空間で切り取る様子を見ていきます。

画面上の3次元空間はX, Y, Z軸で構成されていますが、4次元にはW軸が加わります。現在画面に表示されている球体は、実際には4次元方向にも膨らみを持つ「超球」と呼ばれるものです。

先の3次元の例でZ軸方向に動かしたのと同じように、4次元空間上でW軸方向に動かすと、3次元空間上の表示が次のように変化します。

  1. 3次元空間と超球が交わった瞬間、画面上に点が表示されます。

  2. 更に動かすと、点が膨らんで球形になり、サイズが大きくなります。

  3. 3次元空間が超球の重心を通過すると、球のサイズが小さくなります。

  4. 3次元空間が超球を通り過ぎると、球は消えます。

これは、3次元空間での断面解析と同じ原理です。

4次元空間の身体化

W方向への直進的な移動には慣れてきたため、次のステップとして4次元移動の自由度をさらに高めることにしました。そこで、TPS(サードパーソン・シューティングゲーム)のような視点移動を取り入れてみました。従来の3次元的なTPSゲームの操作に加え、4次元カメラ操作と4次元方向への移動を追加しました。

自由度がかなり上がったのでまた少しずつ感覚を慣らしていきます。まずは、静止している相手に対して、自分が4次元空間を移動してみます。自分が4次元的に移動したとき、相手がどのように見えるかを観察しました。

4次元カメラの操作は、最初は何が起きているのか理解が追いつきません。でも、繰り返し操作するうちに、徐々に4次元的な感覚が身についてくるように感じられます。

4次元空間の追いかけっこ

次に4次元空間を動き回る相手を追いかけてみました。

4次元空間内で相手を追いかけるには、4次元的な位置関係を正確に把握する必要があります。でも、これが非常に難しいのです。一応、3次元空間上には相手の「影」が投影されており、それを目安に移動することは可能です。ただし、この「影」を触ったとしても、4次元的に距離が近いとは限りません。なぜなら、影が3次元的に近く見えても、実際には目に見えない4次元方向で大きく離れている場合があるからです。
4次元空間での距離感を掴むには、視覚的に得られる情報とUI上で表示される数値情報を統合する必要があります。UIが示す4次元方向の距離と、目に見える3次元空間内の影までの距離を基に、4次元的な距離を瞬時に目算しなければなりません。この作業は、3次元的な追跡とは異なり、直感による認識と数値計算を同時に行うような難しさがあります。

さらに、相手の4次元的な位置を把握したとしても、次に求められるのは、実際にその方向へ移動する操作です。一応、UI的には4次元方向への任意の移動が可能ですが、この操作を直感的に行うのは非常に難しいです。試しに、まずは相手がいる3次元空間に自分を移動させようと試みましたが、これだけでも予想以上の難易度でした。相手は常に動き続けており、こちらがその3次元空間にたどり着く頃には、すでに別の3次元空間へ移動してしまうことがほとんどでした。

それだけではありません。さらに難易度を上げているのが、自分から見た相手の移動方向を把握する必要があることです。相手は4次元空間内を移動しているので、その移動ベクトルもある程度把握しなくてはいけません。

このような動的な位置関係を追い続けるには、単なる視覚的な判断を超えた直感が求められると痛感しました。文章だけではこの難しさを十分に伝えきれないかもしれません。実際にどこかで体験していただけたら、この感覚を共有できるのではないかと思います。

シューティングゲーム

追いかけっこに一区切りをつけ、次のステップとしてシューティングゲーム要素を追加してみました。

相手の上に表示される数字と影を目印にすることで、4次元空間内での相手との位置関係が少しずつ把握できるようになりました。これにより、4次元的な動きを追尾しながら狙いを定める感覚が磨かれていきます。もしこのシステムをPvP(対人戦)形式で実装できれば、ゲームとしての可能性を感じます。現時点では基礎的なシューティングの動作を確認する段階ですが、対戦要素を組み込むことを考えると、さらに発展性がありそうです。

感想

  • 操作が徐々に意図通りにできるようになり、少しだけですが4次元空間を「身体化」する感覚が芽生えてきました。Y座標は0に固定されているため、実は動き自体は3次元に制限されているのですが、それでも4次元空間の難易度を体感するには十分でした。

  • 長時間プレイしていたら、3次元酔いならぬ、4次元酔いに襲われました。

  • 4次元の表現方法についても改めて考えさせられました。一般的に、4次元の表現方法には「断面的な方法」と「投影的な方法」の2種類があるとされています。今回のプロトタイプでは断面的な方法を採用しています。

  • 制作面では、3次元空間の計算については既存のライブラリが充実していますが、4次元空間に関する計算はほぼすべて自前で実装する必要があり、予想以上に手間がかかりました。

  • 4次元空間での視点操作において、直感的で効果的なインタラクションを設計する難しさを痛感しました。現在の方法にはまだ改良の余地があるため、もっと良いアプローチを模索していきたいと考えています。

既存の4次元ゲーム

  • 4D Toys(2017)

    • 超球以外にもさまざまな形状の4次元モデルを直感的に操作できます。

    • 4次元空間における立方体的な形状「正八胞体」を、3次元空間で次々に形状が変わる様子を見るのが面白いです。

    • 視点は固定です。

  • Miegakure(開発中)

    • 4次元空間を移動して正解を導き出すパズルゲームです。

    • 視点移動によって景色が大きく変わり、異世界感が強いですが、視点移動の自由度は低めです。

    • 楽しそうです。

  • 4D Golf(2024)

    • 視点移動の自由度が高く、非常にチャレンジングなアプローチです。デモ映像を見ても何が起こっているのか、すぐには理解できませんでした。

    • 開発中とのことですが、チュートリアルを作るのはかなり大変そうです。

リファレンス

いいなと思ったら応援しよう!