🚗

Looking Glass Goで飛び出す3Dゲームを作る

2024/12/16に公開

こんにちは!jig.jp Advent Calender 2024の16日目の記事を担当します はたはた です。

最近Looking Glass Goというガジェットを手に入れました。
手元のディスプレイで立体的な3D映像を体験することができるガジェットで、3DSを想像してもらえれば分かりやすいかと思います。


出典:https://greenfunding.jp/kibidango/projects/7956

今回は、このLooking Glass Goを使ったUnityでの開発セットアップを紹介するとともに、その特性を活かした簡単なゲームを作成してみたいと思います。

開発環境
OS: Windows
Unity: 2022.3.21f1
Looking Glass Go Firmware: ver 1.0.44

事前準備

Looking Glass GoとPCの接続

Looking Glass GoはDisplayPort Alternate Modeを使って映像入力を行います。
ノートPC等でDisplayPort Alternate Modeに対応していれば問題ありませんが、自分のデスクトップPCは対応していませんでした。
HDMI to TypeC では当然電源供給が無いので動かず、公式で売っているこちらのケーブルを使うことで動作させることに成功しました。
https://checkout.lookingglassfactory.com/products/looking-glass-go-hdmi-cable?variant=41145833488473
注文してから約1週間で届きました。

Looking Glass Bridge の導入

以下のURLから最新のLooking Glass Bridgeをインストールします。
https://lookingglassfactory.com/software/looking-glass-bridge

ケーブルを適切に繋ぎ、PCとLooking Glass Goを繋げます。
接続後電源ランプが青点滅するので、短く一度電源ボタンを押すとモニターとして認識されます。
YouTubeなどの通常の映像も表示できますが当然3Dにはなりません。

動作確認

下記サイトに接続してTest your Looking Glass ボタンを押し、キットカット(綿あめ味)の画像が表示されていれば成功です。
https://codesandbox.io/p/sandbox/detect-a-looking-glass-l5o9d

Unityでの開発環境構築

プロジェクトの作成

Unityで適当な3Dプロジェクトを新規作成します。
下記サイトからLooking Glass Unity Plugin をDLしてプロジェクトにインポートします。
https://lookingglassfactory.com/software/looking-glass-unity-plugin

インポート後に表示されるダイアログはApply Changesを選択

LookingGlass/Examples にあるサンプルはどれも興味深いので一度は見ておくのがおすすめです!

簡単なゲーム作成

Looking Glass Goの側面についている3つのボタンは入力検知可能なので使っていきます。
3D感を感じたいものの、ボタン3つでは大したアクションもできないのでレトロチックなレースゲームを作ろうかと思います。

再配布の予定も無いのでフリーアセットの下記を使わせて頂きました。
https://assetstore.unity.com/packages/3d/environments/simplepoly-city-low-poly-assets-58899
このアセットはかわいいのでテストのときによく使っています。おすすめです。

シーンにHologram Cameraを配置し、元のカメラを削除します。
Hologram Cameraでキャプチャされたものがレンダリング処理され、Looking Glass Goに映し出されます。
気をつけたいこととして、レンダリング負荷軽減のためHologram CameraはFar Clip Factorに設定した値より遠くの描画を行いません。

using LookingGlass;

InputManager.GetButtonDown(HardwareButton.Forward)    // ⏭️ボタン
InputManager.GetButtonDown(HardwareButton.PlayPause)  // ⏯️ボタン
InputManager.GetButtonDown(HardwareButton.Back)       // ⏮️ボタン

これでハードウェアボタンの入力を取ることができます。
ただし、長押し判定は取れませんでした。そもそもゲームの入力なんかに使われることを想定していないのでしょうがないですね。

背景の設定に少し手こずりました。
Hologram CameraのRender StackにあるStepsを調整することで描画順を制御できます。要素の値が大きいほど先に描画されます。
このあたりはLookingGlass/Examples/8-RenderStacking が参考になりました。
デフォルトではHologram Cameraの背景色が 000000FF(不透明) になっており、下層の要素が表示されません。背景の透明度を100%に設定することで解決しました。

適当な画像をAIで作成し、Generic Textureを選択し背景として設定します。

完成したものがこちら



動画だと3D感が伝わりづらいですが、おおむね思った通りにできました。画面の小ささの割には臨場感があります。
側面のボタンで左右に移動するため操作性が極悪です。普通にキーボード入力で良かった気がします。

感想

買ってから少し放置していたガジェットだったのでこの機会に触れて良かったです。
Unityプラグインはサンプル等も含め思った以上に整備されており扱いやすいと感じました。
ただ、奥行きを強調しすぎると映像がぼやけてしまい、逆に奥行きを浅くすると3D特有の迫力が失われるのが難しいところです。
使ってみて問題点として挙げられるのはレンダリングの負荷が高く、自分のノートPCでは動作が厳しいため、外に持ち出して遊んだり人に見せたりできない点です。

出典
https://docs.lookingglassfactory.com/software-tools/looking-glass-bridge/display-settings-on-windows
https://docs.lookingglassfactory.com/developer-tools/index/tutorial
https://docs.lookingglassfactory.com/developer-tools/index/setting-up

jig.jp Engineers' Blog

Discussion