Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

Unity + Oculus Rift - File BrowserのAssetをVRで使う。-

ファイル・ブラウザのAssetが無料で提供されているので使わせていただく。
Asset Storeで「file browser」で検索してFree Assetsで絞り込むと、現段階では3つ出て来る。
有料のものはとりあえず除外した。

Runtime File Browser
Simple File Browser
C# File Browser
Oculus Rift Touch UI Gaze Test」で使ってみたのはSimple File Browserだった。
一番最初の画面のボタンはクリックできて表示も変わる。
だが、それ以降は操作できなくなって、そこで放置していた。
で、何の脈絡も無く今度は Runtime File Browser というのを試してみた。
なんだか使えるようになったので、ここでは Runtime File Browser で行くことになった。
今やれば Simple File Browser も動かせるのかもしれない。

まだ挙動にしっくりしない点もあるので以下の手順が正当ではない可能性も高い。
それでも、行き当たりばったりとはいえせっかくたどり着いたので、一応覚書きしておく。

ProjectはVR仕様に設定してあって、Oculus IntegrationもImport 済みとする。
1. Runtime File Browser をImportする。
2. Assets\Plugins\SimpleFileBrowser\Resources\SimpleFileBrowserCanvas
 を新しいSceneにドロップする。
 「Oculus Rift Touch UI Gaze Test」の手順に沿う。
 上では自分で設置したCanvasに行っていた操作をここではまず
 SimpleFileBrowserCanvas に対して行うことになる。
 この段階でまだ全UIを網羅してはいない。
 それでも部分的にはVRでOculus Touchからクリックができるようになる。
 配置の関係でそのままではHMDの視野に入って来ない。
 Transformを以下のように設定した。


3. 表示用にCanvas>Textを配置する。
 取得したフォルダ名をTextに表示するのでScriptをTextに置いた(赤い四角)。
 このCanvasはHMDから見えさえすればいい。
 操作は必要ないので「Oculus Rift Touch UI Gaze Test」の手順のうち
 GraphicRaycasterの差し替えだけはやってない。

 この段階で下の絵の赤い部分はまだ選択・クリックができない状態だ。

4. SimpleFileBrowserCanvas\SimpleFileBrowserWindows\Padding\MidView
 \Padding\Files
 という深いところにも GraphicRaycaster がある。
 これも OVRRaycaster と差し替える。
 これですべてをクリックできるようになる。
 PC上のどのHDDのファイルも選択できるようになった。
5. あとは選んだファイルの情報をどうやって使うのかということだ。
 これについては作者がForumでこうやればいいよって書いてくれていた。

 上はファイル・モードで、フォルダを取得したければ下のように呼ぶ。

 残念ながらこのラムダ式というのがちんぷんかんぷんだ。
 現状ではそのまま使うが意味が把握出来たら書き直すことになるかも。
 3.でTextにアタッチしたOculusRiftTouchTest.csにこの処理を書く。
 下のコードは取得したフォルダのパスをTextに表示する部分。

 TouchのStartボタンを押したらBrowserが開く。

 BrowserのOKをクリックすれば showpath へpathが渡される。

スクリプトをアタッチするものの場所というか階層について良く分かっていないので、表示に使うTextそのものにScriptをアタッチしている。
より柔軟に使うには他から他を呼び出す方法をマスターする必要がある。

起動すると最初からFile Browserが開いた状態になっている。
呼ばないのに開いている。
この対処方法が良く分からない。

とりあえず、Start()の中で最初に閉じることにした。
位置関係が複雑なので確認しておく。
Canvas/Text/OculusRiftTouchTest.cs/Start();
SimpleFileBrowserCanvas/FileBrowser.cs/OnCancelButtonClicked();
で、Start();でOnCancelButtonClicked();を実行する。

これで実行直後に開いていたFile Browserは目に入らなくなる。

このエントリーをはてなブックマークに追加

Posted under: Unity, VR


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.