前回→空間再現ディスプレイSONY ELF-SR1を触ってみた - はつねの日記
ELFちゃんこと、ELF-SR1のSDKをUnityにいれて、[Edit]-[Project Setting]-[Spatial Reallity Display]で「Run Without SR Display」をチェックすると実機がなくてもUnity Editor上で動作を確認できます。
ただし、このチェックをしたままだと実機を接続した環境でEXEを起動しても動作しません。ビルドするときは必ずチェックを外しましょう。
それでは、このチェックをONにして実機がなくても分かるSDK附属プレハブツアーを始めてみましょう。
SRDisplayManager
まずは何はなくても必要だとおもわれるSRDisplayMangerの中をみてみましょう。
SRDisplayManagerプレハブの構造は次のようになっています。
SRDisplayManager
┗WatchAnchor
┗WatchCamera
┗LeftEyeAnchor
┗RightEyeAnchor
SRDisplayManagerの重要なプロパティとしては、「SRD View Space Scale」があります。初期値は1ですがサンプルなどでは100にしていますので、100にしておきましょう。
WatchAnchor
WatchAnchorの中にWatchCameraがあります。通常、Unityの世界ではCamera=視点位置となりますので、このプレハブをHierarchyに入れることで、WatchAnchorの座標がELF-SR1が検出した見ている人の視点位置に自動的に合うということです。
WatchAnchor座標の初期位置は、(x,y,x)=(0,0.2,-0.3)となります。通常、1Unity=1mみたいに考えますので、Unity Editor上での表示は正面より20cm上、筺体面より30cm離れたところからみたときと考えて、配置するオブジェクトの大きさなどをきめていくとよいでしょう。
また、Rotationがx=20ですので、20度下をみている感じでしょうか。
この20度というのは重要な数値で、テキストを表示するようなときもEditor上ではRotete=20で値をあわせておくと実機で見ても正面に正対した形でテキストが表示されているように見えます。
WatchCamera
WatchCameraには[Clipping Planes]プロパティがあります。[Near]が0.01、[Far]が1000となっています。
Unity Editor上では白い視野がこのプロパティの影響をうけます。この距離の時に描画されると考えるといいでしょう。
試しにNear=10、Far=15にしたときにはどうなるかを確認したのが次の図となります。
上のNear=10、Far=15では視野が角錐台で表示され、図右下のCameraPreviewで正方体が映し出されていないのがわかります。
下のNear=0.01、Far=1000では四角推のように視野が表示され、図右下のCameraPreviewでも正方体が映し出されています。
この視野距離を調整することで遠くにいると見えず、近づいてみると見えるような演出も可能になります。
WatchCameraをみてみるとちょっと気になることに「Audio Listener」コンポーネントが含まれています。これはUnityの標準コンポーネントで、ようはここから音が聞こえるような感じになります。
docs.unity3d.com
ELF-SR1にはスピーカーはついていないので、PCと接続したワイヤレスイヤフォンを装着しておくとスピーカーがついているので視点位置に合わせた音が再生されるのでしょう(視点位置にあわせてかは未検証)。
LeftEyeAnchor、RightEyeAnchro
この二つは左右それぞれの目の位置だと思うので、IPD(瞳孔間距離)あたりをとれるようになっているのかと思いましたが、WatchAnchor側もふくめてそれらしくプロパティはありませんでした。
SRDisplayBox
まずは、SRDisplayBoxです。これは、ELF-SR1の筐体そのものをとなります。
これを配置することで、設置したオブジェクトが実物のELF-SR1の形にあった感じに表示されるようになります。たとえば、筺体にめり込んだような表示も可能です。
FaceTrackStateMonitor
ファイストラッキングができなくなったときに自動的に警告表示を行うためのプレハブです。前回も記したように次のような条件で簡単にフェイストラッキングができなくなりますのでこの表示は配置しておいた方がいいでしょう。
- マスクをつけている
- つばのある帽子をかぶっている(つばを後ろにすればOK)
- 眉に髪がかかっている
- 眼帯をしている
AppStateController
アプリを終了するために操作を表示するためのプレハブです。UnityアプリはESCキーで終了できるのですが、Unityアプリの終了の仕方を知らないと戸惑いますので、表示があってもいいと思いますが、通常は、見ている人が終わらせる必要はないので、このプレハブの配置は不要だと思います。
ただし、便利だと思ったのが、このプレハブの[App Exit Key]で終了するためのキーを変更して、表示も例えば「Press Space to exit the app」のように割り当てたキーにしてくれるのは便利だと思います。
これ、Unityアプリの終わらせ方をしらないお偉いさんとかに見せて「これ、どうやって終わらせるんだ!キーは代えられないのか」とか言われて付け足したとかあるんでしょうか。開発側だと気づけない心遣いかもしれないと思いました。
3Dオブジェクトなど
SR1に表示する3DオブジェクトはUnityの3Dオブジェクトになります。
unity-chan.com
Unity Editor上で確認が出来たらビルド(その前に「Run Without SR Display」のチェックを外して)しましょう。
あとは、ELF-SR1の筐体を購入するだけで、嫁をいつでも3Dで目の前に召喚することができるようになります。
pur.store.sony.jp
それでは、ELF-SR1楽しんでくださいね!