Lab元シリコンバレー在住のおっさん技術者、モバイルVRアプリ開発に挑戦中この広告は、90日以上更新していないブログに表示しています。Cardboardには、二種類の入力手段が用意されております。一つはGaze、画面中央に対象物が来るように首を動かすと、ゲージが現れます。ゲージがいっぱいになるまでそのままの状態を保つことで、対象物へのアクセスが可能となります。Cardboardの右上部分、カメラのシャッターボタンのようなもの)を押下、対象物にアクセスするというものです。いずれも首を動かして対象物の方を向く、という、VRらしい方法を前提にしております。今回は「対象物の方向に向いてボタンを押す」入力手段を利用して、バーチャルキーボードを作ってみます。「対象物の方向に向いてボタンを押す」方法で、問題なく文字入力ができるのか?その課題についても考えてみます。Assetには、有料のバーチャルキーボードのアセットが幾つかあるようですが、今回はそれらを利用せず、一からスクラッチしてみます。Cardboardです。それぞれインポートします。次にスクリプトを作成します。今回は以下の3つのスクリプトを作成しました。次にシーン内のオブジェクトを配置していきます。Mainを代わりに配置します。この時自動的に作成されるCardboardは不必要なので消してしまいます。ここまでは前回までと同様です。次にキーボードに貼り付けるキーを作成します。Object→Cubeを選択、名前をKeyとします。Textを選択、名前をTextとします。これでKey配下にTextがある状態になります。Keyには、インスペクタより以下の通り設定をします。Meshをドラッグ&ドロップします(インスペクタ内のコンポーネントをドラッグ&ドロップしてもう一方のインスペクタに設定する方法は、こちらのインスペクタで関連付けを参照ください)。Triggerについてはこちらのスケルトンをクリック可能にするを参照ください)。ここまで出来ましたら、KeyをProjectの任意のフォルダへドラッグ&ドロップし、KeyをPrefab化します(prefabについてはこちらのスケルトンをPrefab化するを参照ください)。KeyのPosition、Rotation、Scaleについては、Board.cs内で計算・設定されるため適当な値で良いです。次にKey群を配置するボードを作成します。Object→Cubeを選択、名前をBoardとします。Object→Cubeを選択、名前をDisplayとします。Textで、名前をTextとします。以上で、Board-Display-Textという構成のオブジェクトが作成されました。インスペクタでの設定は以下の通りです。Prefabには上記でPrefab化したKeyを設定してください。Displayは上記で作成したDisplayをドラッグ&ドロップします。Meshを設定します。次にイベント処理用の設定を行います。Empty、名前をGazePointerとします。Object→Spriteを選択してください。そのSpriteのインスペクタにて、以下の通り、Transform/Spriteの設定を行います。Modifiers_Accuracyについては64x64のものを選択してください。Moduleを追加し、以下の通り設定します。Cursorには、上記で作成したGamePointerをドラッグ&ドロップしてください。Raycastを追加してください。一応入力は出来るけど課題を列挙してみます。押したいキーの方を向き、そのキーを画面の中心(照準部)に合わせて、シャッターボタンを押す必要があるのですが、右下の方に配置されているキーを見ている時は、Displayに表示の「これまで入力した文字列」が見えません。バーチャルキーボードの表示位置は、シーンの3D空間内となります。Main/Headに配置することで常に一定位置に表示する方法をご紹介しましたが、このような方法をとることができません。照準は常に画面中央なので、それぞれのキーに照準を当てることができなくなるためです(一つのキーしか押せません)。文字入力はかなり厳しいです。首も腕もかなり疲れます(想像していたよりは、かなり素早く入力できる印象でしたが)。今回、シンプルなバーチャルキーボードの実装をしてみましたが、まだこのままでは実用に耐えない印象です。工夫次第ではVRコンテンツで広く活用できるバーチャルキーボードへの進化も可能かな?と可能性は感じました。TokyoにVRコンテンツを出展しました。Reality向けヘッドセットが来ましたMFT2017に出展したVRコンテンツ月別アーカイブ参加グループプログラミングはてなブログをはじめよう!tuti107さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。