読者です 読者をやめる 読者になる 読者になる

まっつん◆SW1/SWF8io が再起動するようです

ブログを使って日々勉強するよ!

飛べると!ご自宅でブース出展時と同じ環境(アーケード操作)を作るための手順書

この記事は07/17(日)に秋葉原で行われたVRコンテンツ展示イベント『Unity VR EXPO AKIBA』にて、VRコンテンツダウンロードカードをお買い上げいただき、「飛べると!」をプレイして、自宅でも展示時と同じジェットパックを背負ったプレイスタイル(アーケード操作)をしたい!と思った人向けに書いています。
わぁいターゲットすげー狭いw

 

※注意※

本手順は各自の責任において設定とプレイを行ってください。またアーケード操作は上半身を動かし、かつ着座の椅子でグルグル回るプレイスタイルとなるため、プレイの際は周りある障害物を避けるなど、回っても安全な空間を確保した上で行ってください。万が一お使いのPCに不具合等が発生したり、プレイ中に思わぬケガ等が発生しても、責任は負いかねます。

 

0.必要なもの

  • VR Ready PC本体(OSはwIn7推奨。8、10はそもそも作者が試してません)
  • SIXAXIS機能が搭載されたPS3コントローラ、またはPS4コントローラ
  • PSコンと通信する用のBlueToothアダプタ
  • PSコンのSIXAXIS入力をXInputの任意のキー入力に変えてくれるソフト
    (PS3コンはMotionJoy+BetterDS3、PS4コンはDS4Windows inputなど)
  • 背負い型のリュック、メッセンジャーバッグ、ランニングバッグ等
  • 100円ショップで売っているゴムとマジックテープが一体化したゴムバンド
  • 100円ショップで売っているマジックテープ
  • 軸部分が素直な形をしている回転する背もたれ付きの椅子
  • 普通の無線式マウス(通常使ってるマウスとは別にさらにもうひとつ) 
  • トラックボール式グリップマウス

 

1.PC側のセッティング

ジェットパック(中身)を準備する

PS3コントローラ+MotionJoy+BetterDS3を使う場合

MotionJoyをインストールし、PS3コントローラをUSB接続でMotionJoy環境下でキーマッピングできる状態にします。次にMotionJoy上で、用意したBlueToothアダプタにMotionJoyドライバをインストールし(※)、BlueToothPS3コントローラをペアリングして、PS3コンをBlueToothで通信できる状態にします。

BlueToothアダプタ内のドライバを上書きする挙動になります。さらに一度認識させたあとはこのBlueToothアダプタからは他のBlueTooth機器が接続できなくなるため、ノートPC等に内臓されているBlueToothアダプタがあったとしても、手順どおりに別途のBlueToothアダプタを用意することを強くお勧めします。

 

無事にBlueTooth接続ができたのち、接続したまんまでの状態でBetterDS3をインストールすると、BetterDS3上でもPS3コンとBlueToothが認識&接続されている状態が確認できます。 

f:id:n_mattun:20160714022626p:plain

(Better DS3のメイン画面。画面左にDualShock3(Bluetooth)って書いてればOK)

 

続いて[New]ボタンから「XInput」でキーコンフィグを行います。設定するキーは

  • SIXAXIS UP → Left Stick Y+ に設定
  • SIXAXIS DOWN → Left Stick Y- に設定
  • 振動は最大(150%)

だけで、残りのキーはすべて「None」のままです。

その状態でキーコンフィグ設定を作ったのち、「Selected Profile」で作成したキーコンフィグを選択し、[Apply]を押してキーコンフィグを適用します。そのあとは[ControlPanel]からゲームパッドのコンパネを開き、ちゃんと認識ができているかどうかを確認し、PS3コンを前後に傾けたらY軸が上下すればOKです。

PS4コントローラで他のキーコンフィグソフトで設定を行う場合でも、手順としては

BlueToothで繋ぐ」「SIXAXISのUP/DOWNをそれぞれLeftStick+-に当てはめる」さえちゃんとしていれば、基本的には問題なく動くと思います。

 

2.現実側のセッティング

ジェットパック(外側)を用意する

背負い型のリュック、メッセンジャーバッグ、ランニングバッグ等を用意して、その中にPSコントローラを垂直で、PSコントローラの背中が自分の背中とくっつくような向きで入れます。この際、PS3コントローラは自分の首に近い位置に入れるようにすると快適に操作できるようになります。

バッグが大きくてPS3コンが腰付近まで落ちてしまう場合は、身近にある空き箱等を入れてカサ上げをしてみてください。

手近にちょうどいいバッグがない場合は、展示でも実用したこちらのランニングバッグを試してみてください。

 

バッグを開けるとメッシュのポケットがありますので、この中に350mlの空き缶を入れて、その上にPS3コンを挟み込むとちょうどいいです。

f:id:n_mattun:20160714014129j:plainこれを f:id:n_mattun:20160714014132j:plainこうじゃ!

 

椅子の回転をPCが検知できるようにする

続いて椅子の回転をPCが検知できるようにします。

100円ショップで売っているゴムとマジックテープが一体化したゴムバンドと、100円ショップで売ってるマジックテープ単体、それとマジックテープの粘着で自重を支えられるくらいの比較的軽めのマウスを用意します。

f:id:n_mattun:20160714014209j:plain

 

  • マジックテープ一体式のゴムバンドを椅子の上に巻きつけます。
  • マウスの後ろにマジックテープを貼り付けます。
  • 椅子の軸に巻きつけたマジックテープに、マウスを下向きにくっつけます。

f:id:n_mattun:20160714014139j:plain f:id:n_mattun:20160714014136j:plain f:id:n_mattun:20160714014144j:plain

マウスを椅子に貼り付ける際は、マウス背面の赤外線センサーが椅子の下側の軸を読み取るような位置にうまく貼り付けてください。写真ではマウスの赤外線センサーをより確実に検知させるために、マウスパッド代わりにマスキングテープを下軸に巻き付けています。

 

うまくセッティングができると、下の画像のように椅子の回転角度がそのままマウスの動きにマッピングしてくれます。ゲーム内部ではこのマウスの移動ベクトル値を、VR空間内の体のヨー方向の回転に割り当てています。

f:id:n_mattun:20160714015026g:plain

 

3.プレイの準備をする

  • PSコンをBluetooth接続させ、通信されてる状態でバッグに突っ込みます
  • バッグを背負います
  • マウスを貼り付けた椅子に座ります
  • こちらのトラックボール式グリップマウスを持ちます。準備が面倒な場合は普通のマウスの手持ちでも良いです(ここはOculus Remoteで代用するつもりだったのに対応するのすっかり忘れてました・・・すみません)

     

  • ゲームを起動してEnterキーを入力すると、操作モードが切り替わるようになっているので、アーケード操作にします。
  • マウスのホイールクリックがゲーム開始/終了時のリトライボタンになっているので、あとはゲームをひたすら楽しんでください。
  • 椅子の回転の検知は、時間が経過するとだんだん判定がズれてきて、VR空間内で体を正面に向けた時の方向と、実際の進行方向が変わっていきます。
    そうなった場合、手元のトラックボールを左右に動かして、自分が正面を向いている時はVR内の画面上の矢印も正面が見える位置に調整をしてください。

 

4.おわりに

アーケード操作の下準備の手順は以上です。

ちなみに、OculusTouchやHTC vive+viveコントローラに今後対応していけば、こんな面倒なことをしなくても、片方のコントローラーを背中にくっつけるだけでハード側の対処は終了するので、それぞれのハードが手元に来次第、順次対応を進めていく予定です。値段的には現行の方式のほうがいちばん安上がりなのでこれはこれでアリなんですけどね。

Oculus Touch初体験の雑感まとめ

表題通りです。

PSVRの予約開始日である06/18(土)に秋葉のベルサール1Fで行われてたNVIDIAのイベントで「究極のVR体験」なる事前予約制の体験会があり、サイトのイメージ画像でOculusTouchが使われていたので『これはひょっとしてTouchを体験できる大チャンスでは・・!』と意気揚々に応募してきました。

 

んで、体験の感想をTwitterで連続ツイートをしたんだけども、Twitterだとあとで見返したくなった時にちょっと面倒なので、ブログで引用ツイートをまとめておこうかなと思って。

 

といいうワケで以下引用まとめ。

 

いやホント、この完成度はマジで期待しかない。発売日の発表はよ!

【拡散希望】VRHMDのVR酔い防止カメラ『Grid』の紹介【アンケート集計中】

f:id:n_mattun:20160530010139p:plain

タイトルちょっと宣伝気味でw

 

前の記事「Oculus+FPS視点のカメラ左右操作時のVR酔い対策を思いついて試したらかなり良かった件」以降、より詳細にVR酔いの原因と解決策を自分なりに調べたところ、前記事のようなTPS視点への遷移ではなく、一人称視点のままでVR酔いを防止できるカメラが作れたっぽいので紹介します。

(実際に体験できるソフトも本記事の最後に置いてあります)

 

体験用ソフトと合わせて、このカメラの効果の確認のためのアンケートフォームも用意しています。アンケートの結果はVR界隈の共有知見として後日公開を行う予定でいますので、みなさんぜひ体験&アンケートにご協力ください!

※ちなみに、いくつかのVR勉強会にこのカメラを持ち込んで何名かのVRエンジニアに口頭で感想をいただいてますが、かなり好評です。

 

既知のVR酔い対策の概要と、制作に至った背景

カメラの回転運動を伴うVRコンテンツを作る上で発生する「VR酔い」について、現在有効とされている主な対策は

  • カメラ(キャラクター)の移動を一方方向に制限する
  • カメラの回転を遅くする
  • ポインティング先にテレポートする
  • カメラの直前面に固定物となるコックピット、黒メッシュフレーム等を配置する
  • アバターとカメラを切り離し、神視点にする
  • 現実側でプレイヤーがカメラと同じ方向に回り、視覚と体感を一致させる

などがありますが、これらはいずれも従来の一人称視点コンテンツのカメラ操作、移動方法とは異なるため、同種の操作感を下敷きとした、VR内で自由に動き回るコンテンツが事実上作れないという非常に大きな制約があります。

今回作ったVR酔い防止カメラ「Grid」は、その制約をとっぱらうために、可能な限り従来のカメラ操作入力と同様の操作感になることを意識しつつ、効率的にVR酔いを防ぐことを目指して作られました。

 

VR酔い防止カメラ「Grid」の基本説明

カメラ操作開始時に、カメラを囲うように球形のグリッドが表示され、カメラ操作中はカメラの代わりにグリッドが回転(経度線が描かれた地球儀の中心にカメラがあるようなイメージです)。回転しているグリッドの線が中央に固定表示された赤線に触れた時に、グリッドの間隔と同じ角度ぶん、カメラが瞬時に回転します。

 

 

酔いを防ぐために考慮したこと

  • 加速度(だんだん速く/だんだん遅く)を伴ったカメラ移動は酔いやすい(OculusベストプラクティスガイドP25あたりに書いてあります)ので、なるべく等速(同じ速度)での移動や、瞬間移動などを使うようにする
  • 「予想外のカメラの動き」も酔いを引き起こす原因のひとつなので、カメラが動く時は予めユーザーが動くことを予測できるようにする
  • カメラ回転中、移り変わる景色に意識が向かないよう、景色以外に注視ができるオブジェクトを用意すること

 

Gridが酔わない理由

  • 景色以外に注視するオブジェクトとして、
    カメラ操作中は視線中央に赤線が固定表示される(ので酔わない)
  • グリッドが赤線に触れる様子が見えるので、
    カメラ移動発生の瞬間を確実に把握できる(ので酔わない)
  • 移動発生から次の移動発生までのタイミングは基本的には等間隔になるので、常時、次の移動発生のタイミングを的確に予測できる(ので酔わない)
  • カメラ(景色)の回転は瞬間的に行われる(ので酔わない)
  • グリッドの形状そのものが、既知のVR酔い対策案である
    カメラ前面に黒メッシュを配置しておくと酔い防止になる
    と似たような形をしている(ので酔いにくさに貢献しているハズ)
    ※ちなみにこれは開発時に意図したものではなく、まったくの偶然でしたw
  • 「正面を向いてカメラを左右に回す」よりも、人によっては「上を向いてカメラを左右に回す」方が非常に酔いを引き起こしやすいのですが、各グリッドは球の正面よりも球の天面の方が密集している(ので上向き回転でも酔いにくい)
    ※ちなみにこれも開発時に意図したものではなく、偶然こうなりましたw

Gridの他のメリット

  • 最初に書いたとおり従来の一人称視点ゲームと同じカメラ操作感になるので、酔いを防ぐ目的でゲームシステム自体に制限をかけたり、特殊な操作方法をユーザーに強要しなくて済む
  • 一人称視点だけではなく、TPS視点のゲームへも応用可能
    (神視点カメラ側の周囲にグリッドを表示し、アバター周辺は何もなし)
  • グリッドの目盛り間隔はスクリプトで可変指定できるので、
    個々のユーザーの体調や酔いにくさに応じて柔軟に調整、対応ができる
  • グリッドの目盛り間隔を少しづつ変えていくことにより、VR酔いを段階的に克服することができる可能性がある(!)

問題点

  • カメラ操作中、視界にずっとグリッドがパタパタ回転してるのがやや邪魔くさい(ただこの点は、カメラの移動が発生するタイミングを操作している本人が知覚した後であれば、グリッドを消しても大丈夫なんじゃないかなという気もしています。あとコンテンツ自体に夢中になってると、わりと気になりません)
  • 現実ではあり得ない景色の回転になるため、カメラ回転中はVR空間への没入感が損なわれる

 

まとめ

VRコンテンツを作る以上、VR空間に対する没入感は非常に重要です。
が、VRHMDが今後様々な分野への応用が期待される中で、コンテンツの種類、目的によっては『操作への不満や酔いへの不快感が解決できるのであれば、没入する快感を多少犠牲にしてもそちらを選ぶ』というケースも出てくると思いますので、そのようなケースではGridが非常に有効な選択肢になり得るのではないかと考えています。

そしてここまで、GridがVR酔いに効くことを前提に話を進めてきていますが、OculusベストプラクティクスガイドのP17あたりに「アプリ開発者自身のVR酔い防止経験談はアテにしてはいけない(意訳)」と書いてある通り、このカメラが本当に効果があるかどうかは、他の方の体験&感想があって初めて立証されます。
ので、ぜひ皆さん体験+アンケートへのご協力、よろしくお願いいたします!

 

※ちなみに「空を飛びながら周囲を見回し、目的地に飛んで行く」という、VR酔い上等なコンテンツを作ってる自分にとって、Gridが酔い解決の大きなきっかけになりそうで非常にホクホクしています。実戦投入にはもう少しカスタマイズが必要そうですが。

 

サンプルプログラム本体とアンケートフォーム

VR酔い防止カメラ「Grid」体験ソフト

VR酔い防止カメラ「Grid」体験アンケートGoogleフォーム)

 

参考資料

 

 

Oculus+FPS視点のカメラ左右操作時のVR酔い対策を思いついて試したらかなり良かった件

VR酔い、なんとかしたいですよね。

www.moguravr.com

 

上記、MoguraVRさんの記事でいろいろな対策方法が紹介されていますが、おそらく基本的な考え方は回転している画面をユーザに注視させないために、代わりとなる固定オブジェクトを画面内に表示するだと思います。

 

で。私のコンテンツは「FPS視点で空を飛び回る」をコンセプトにしているので、このへんの酔い対策は何らか考えなきゃいかんなーと思っていまして、こんな方法を編み出してみました。

コード的には難しいことはしていなくて、ただ単に

ゲームパッドのカメラ左右操作の入力値をモデルとカメラとの距離情報にも割り当てて、カメラ回転の時はやたらモデルが近いTPS視点になるという代物です。

これならカメラが回転していても、その時に注視するオブジェクトは固定されたモデルの背中になるので、体感ではかなりの*1酔い低減になりました。

 

検証用のexeファイルはこちら。

OculusRift カメラ左右操作のVR酔い対策 検証用ソフト - BowlRoll

※(2016/01/01追記)

すんません、ただいま検証用ソフトを丁寧に作り直しているので公開を一時停止しました(特にカメラ周り)、再配布まで今しばらくお待ちください。

※(2016/05/28追記) 

ここからさらに研究を重ね、もっと良いカメラを作ることができたので、体験用ソフトはそちらをご利用ください → VRHMDのVR酔い防止カメラ『Grid』の紹介

 

これ、FPS視点のOculusゲームのVR酔い対策としてめっちゃ低コストで実現できるので、他の開発者もぜひ試してみてください。そして実際に酔い低減効果が認められたかどうか、私のtwitter@n_mattun)などにぜひお知らせいただければと!※そして「おいこれでもやっぱり酔うじゃねーか!お前がVR酔いに強いだけだろボケナス!」と言われるまでがセット・・・じゃないといいなぁ。

*1:初回テストであまりにも自分が酔わなかったので「これは共有せねば!」と、コーディング作業をぶん投げてこの記事を書き始めたくらいに。

VR体験型ゲーム「飛べると!」の制作時の知見まとめ

この記事はOculus Rift Advent Calendar 2015 の9日目です。
(昨日 の記事は@hidex97さんによる「VRは健康!!!」でした)

Oculus・VR界隈で体験型ゲームを作ったり、たまにOcufesスタッフでも出没する@n_mattunです。今回は拙作の体感型VRゲーム「飛べると!」の初回リリースから現在までの変更点を書きながら、今まで得た知見を紹介していきます。
本記事が他のVRコンテンツ制作者へのヒントになれば幸いです。

 

そもそもどんなゲームなのか

背中に背負わせたジェットパックの出力方向を上半身の動きで制御して飛び回り、VR世界に浮いてる風船を制限時間内にたくさん割ろう!という、一人称視点の体感型ゲームです。
f:id:n_mattun:20151205203926p:plain

(この画像は出展時に使ってる説明書です)

Oculus DK2が出回りはじめて約1年半、VRコンテンツも数多く増えてきていますが、前後左右+上下の360度のVR空間を、ユーザの意思で自由に動き回らせるゲームとなると意外と数が少なくて、さらに体の動きをそのまま操作性に取り入れるコンテンツとなると、今のところ世界中見回しても本作だけだと思います。やった!世界初だ!!(自称)

操作方法

出力方向の検出

体の動きをエンジンの出力方向にマッピングするという操作系は当初から今までずっと変わっていませんが、軸の取得方法でマイナーチェンジがあったりしています。

  • ピッチ
    操作方法:体を前後に傾ける
    検出方法:背中に装着したジェットパック(PS3コントローラ)
         SIXAXISのピッチ回転を利用
  • ロール
    操作方法:体を左右に傾ける
    検出方法:SIXAXISのロール回転を利用
    OculusRift本体のロール回転の値を使うように変更しました。
     みんな背中より頭を動かすんだねw

  • ヨー
    操作方法:座ってる椅子で体ごと回る
    検出方法:椅子にマウスを付け、X方向の移動を利用
    →長時間運用でマウスが物理的に斜めにズれてくると値が変わるため、
     XだけではなくX方向とY方向の移動量のベクトルを使うように変更

    ※椅子の下にマウスはこんな感じでくっつけてます

    f:id:n_mattun:20151207023726j:plain

PS3SIXAXISの検知方法には、去年のAdventCarenderで紹介した「BetterDS3」を引き続き使っていますが、次のバージョンではPS4のコントローラに引越しをしようと思い、現在情報収集中です。

今のところ「DS4 windows input」がXInput形式でSIXAXIS、振動、タッチパッド、BlueTooth認識してくれ、SIXAXISの検出範囲の調整もでき、とても良さそうです。BlueToothドングルはCSR東芝のドライバだと動かないという罠があるので、注意しましょう。私はこれ使ってます↓

 

持たせたコントローラの変遷

主にエンジンの出力で使う、手に持たせるコントローラです。
ここはだいぶ試行錯誤してます・・・

複数のプレイスタイルに対応

初版ではPS3コントローラ背負い+手元にコントローラ+椅子にマウスという特殊環境のみでのプレイスタイルしか対応していませんでしたが、ソフト配布することも想定し、現在は従来のゲームコントローラでも遊べるよう、外部iniファイルから

PS3コン背負い+手元にマウス+椅子にマウス
PS3コン持ち+SIXAXISで出力方向調節
PS3コン持ち or XBOXコン持ち+アナログスティックで出力方向調節

など、いくつかのプレイスタイルを選べるようにしてあります。

 

出展時の立ち回り

実際にプレイしている様子を見るのは制作者にとって何よりも嬉しい瞬間なんですが、オペレーションを効率的にしてあげないとその様子を見る時間もなかなか確保できません。立ち回りは効率的にいきましょう。

説明書

本記事の冒頭に紹介した説明書です。最初は説明書は無く、苦労しながら現場で口頭で説明してましたが、ちゃんとマニュアル化しました。載せてる項目は

  • ゲームタイトル
  • 体験者のプレイの様子が一見でわかる写真
  • ゲーム画面のスクリーンショット
  • ゲームの簡単な説明文
  • ゲームの目的
  • 操作方法
  • OculusRIft自体の簡単な説明
  • 制作者名と連絡先

こんな感じです。この説明書をA4カラーで印刷してクリアファイルに入れ、体験待ちの人に渡しています。これを読んでもらうことにより口頭説明の時間が省略でき、かなりスムーズにブースが回るようになりました。
ちなみにけっこう忘れがちなのが「ゲームの目的(ゴール)」。これが明示されていないとユーザは「どうすればいいの?」と手が止まってしまうので、説明書なりゲーム内なりで終了条件をキチンと説明するか、ゲーム内で制限時間やゴール地点を設けるなりして、ユーザーが『終わりが明確にわかる』状態をちゃんと用意しておきましょう。

 

プレイ前の口頭説明時に気をつけていること

コントローラを渡す際は、まずマウスを見せ、使うのは1ボタンのみであることを説明し(この時点ではマウスは渡さない)、次にOculusをかぶせてVR世界を見渡してもらい、そのあとトリガーに指を通すように渡します。
ちなみに操作説明時は「Aボタンが●●、Yボタンが●●」と言われてもOculus装着後はそのボタンラベルが物理的に見えないので、「人差し指にあるボタン」という風に、指ベースに説明するのがコツです。

特殊装備

日本のVRコンテンツ制作者が大好きな特殊装備について。
飛べると!ではPS3コントローラを背負わすために使っている肩パッド+サスペンダーがそれにあたります。最初1セットのみでしたが、サイズもS・M・Lとバリエーションを持たせ、現在は予備含め5セット用意していて、オペレータが複数人いる時は体験待ちの人に先に装備してもらうというローテーションを組めるようにしてあります。
ただ装着の手間は相変わらずなので、小さいリュックとかにして装着の時間をさらに削減するのもアリかなぁと思ってたりしてます。

リアルタイム調整

ヨー軸の出力方向の検出で使っている「椅子マウス」について、激しい回転を連続で行うとマウスの位置がズれ、ヨーが高頻度で取得できなくなるというわりと致命的な問題があるのですが、ここは年明けの展示以降

『プレイ画面に表示されている矢印マークからヨー方向を常に監視し、椅子と矢印の向きがズれてきた場合は自分の手元にも持っているトラックボールマウスから直接調整する』

という、かなり強引な運用でカバーし続けています。

ここの解決方法については、椅子の側面かプレイヤーの腰付近にOculus Touchの片方をくっ付けてトラッキングさせるという資金力で殴る方向で考えてますが、他にもう少しコスパ的にも良いアイデアがあったら誰か教えてください・・w

 

ゲームバランス調整

出力エンジンの加速度

初回バージョンでは加速度はかなりピーキーで、行きたい方向に行くのはほぼ不可能でしたが、現在のバージョンでは地球防衛軍のペイルウィング/ウィングダイバーの経験、またはパイロットウィングスのロケットベルトの経験が豊富であればかなり自由に飛べるようになっています。

ちなみに後期のバージョンでは、落下時の火力を上昇時より強めに設定し、落下からのリカバリーをやりやすいようにしています。

風船の数と場所について

線路沿い、高速道路沿い、ビルの屋上、歩道橋の下など、なんとなく目指したくなるような所に置きつつ、空中にもランダムに散らして置いています。また風船の数は「数が多すぎてどこを目指したらいいかボやけてしまってる」という的確なレビューをいただいたことがあり、そこも適切な数になるよう自分なりに調整しています。

ちなみに開発時の風船の置き方については、Unityの3Dキャンバス上にいちいちドラッグで置いていくのは大変そうに見えたので、シーンプレビューで自分が飛びながら任意のボタンを押すと現在の座標を出力する状態を作り、その座標データを元に風船をスクリプトで配置していきました。

マップ

マップデータは「Japanese Otaku City」を利用しています。

マップの端っこにたどり着いた場合、どうやってごまかそうか・・という問題に対しての試行錯誤です。ちなみに一般的なゲームでもありがちな「空中に『見えない壁』があって、そこから先は『作戦外エリアです』とかもっともらしい理由を付けて行けないようにする」という解決策は、飛行時の爽快感を大きく損なうことと、見えない壁にあたってユーザの予測なしにいきなり慣性が変わると即VR酔いに繋がるので、ここは避けるべき問題と捉えていました。

  • 第一弾
    マップ端まできたら慣性を維持しながら反対側の画面端に演出付きでワープするようにしていた。

    →ユーザからすると画面端に到達してしまう焦りを伴った状態でいきなり別場所に飛ばされると意味がわからない状態になっていた。

  • 第二弾
    ワープ機能を無くして、街の端っこまで来たら地上に降りてもらい、反対側を向き直して飛びなおすように口頭で案内するようにした。
    →オペレーションが大変なうえに「ひたすら真っ直ぐ飛び続ける」ということができなくなり、ゲームとしての爽快感が失われた。

  •  第三弾

    体験しているユーザにはわからないように、マップを無限ループ化。
    方法は以下のとおり。

     ・同じ地図を3x3で9個配置
     ・地図上の線路と高速道路を、外側の地図と繋がってるように見せるために
      角度を微調整
     ・ゲーム上での飛行可能区域は中央の地図だけにし、
      中央地図の画面端まできたら、慣性を維持しながら
      中央地図の反対側の画面端にワープ。
      (ユーザーからすると画面上の変化は無い)

    →策としては成功したが、当然のように重くなり、オクルージョンカリングをかけてもOculus警察が見たら助走をつけて殴るレベルのバージョンになった。

     f:id:n_mattun:20151207014910j:plain
    (同じ地図を3x3配置してる様子。実際の飛行範囲は赤枠部分)

  • 第四弾
    現行のバージョン。ゲームのコンセプト的には秋葉原の街がちゃんと再現されてる必要は特にないので、許容できる程度のFPSがでるまで、建物の数をひたすら間引き。
    また風船も自分から離れている場合はアルファさせないなど、わかる範囲での軽量化を施す。

マップに対する手加えはいったんこれでFixしていますが、無限ループ実装でひたすら真っ直ぐ飛び続けられるものの、今度はそのせいでプレイヤーがほとんど旋回しない、やや単調なゲーム性になってしまっているので、次のバージョンでは飛行操作のひとつひとつを楽しむことに主眼を置いた、自作ベースのアスレティックなマップを提供しようかと思っています。

 

今後の予定(ひと段落したのでソフト配布も始めました)

今後ですが、OtakuCity上を飛び回るこのバージョンはこれでいったん開発終了にして、現在はUnity5.x環境下で大幅に作り変えた新バージョンをまたイチから作り直しています。新しいバージョンをOcufes等のイベント展示でお目にかけるにはまだまだ時間がかかりそうですが、どうぞ気長にお待ちください。

また、これでいったんひと段落したことだし、Oculus Runtime SDK 0.6.0.1以下でしか動きませんが、現状のバージョンのソフトを配布します。
こちらのアドレスからダウンロードしてください。

VR体感型ゲーム「飛べると!」 2015年版 - BowlRoll

 

コントローラ手持ち式でも普通に楽しめるかと思いますが、
がんばれば自宅でもPS3コンを背負ってワイヤレスのトラックボールマウスを用意した上で椅子にマウスを付けることも可能だと思いますので、面白そうだと思った方はぜひチャレンジしてみてくださいw 


明日のAdvent CarenderはOcuFesの縁の下の力持ち、@mkt_さんの「OculusRiftデモ展示Tips」です。

Oculus Riftペラいち説明書(メモ用)

OcuFes体験者に「Oculus Riftとは何ぞや?」って部分をザックリと説明するためのペラ1枚の説明書っていうつもりで書いてたのに、A4用紙1枚じゃ収まりきらないっぽい物量になってしまった・・・w とりあえず推敲晒し用にブログ上にドキュメント仮置きしておきますので、@n_mattunまで突っ込みをお願いします。

A4用紙1枚にまとめたpdfできました、こちらからダウンロードできます

用紙表面

Oculus Rift(オキュラスリフト ※)とは?

超高精度のヘッドトラッキング機能と3D表示機能がついたヘッドマウントディスプレイ(HMD)です。自分の頭(首)の動きと、HMD内で映る3D世界のカメラの動きが同調することにより、あたかも【自分が仮想世界内に存在している】ようなバーチャルリアリティ体験(VR体験)ができる、素晴らしいガジェットです。 

※機器自体の正式名称は『Rift』ですが、国内では「Oculus Rift」または「Oculus」という呼称が一般的です。本紙では「Oculus Rift」で統一しています。

 

本体の基本機能説明は以上です。が、実際に体験した方なら言葉では伝わりきれない感情をいっぱい持ってると思いますので、ぜひその感想を友達に伝えてくださいw

 

Oculus Riftをかぶるとどんな体験ができるの?

アニメやマンガの世界にそのまま入り込めたり、会うことができなかった「俺の嫁」に会いにいけたり、バンジージャンプ、乗馬体験といった現実でそうそう簡単には体験できないコンテンツの仮想体験や、現実では絶対にできない「重量級ロボットのコックピットに乗って戦う」や「空を自由に飛び回る」といった仮想体験ができるようになります。


■でも、お高いんでしょう?

Oculus Rift本体の値段は$350、送料や関税込みで約5万円弱です。それプラス、それなりのスペックのPC本体1台で、むしろこっちの方が高くつきますw が、その合計金額で未体験の近未来が買えるのであればハッキリ言って安いもんです(※)。購入はOculus VR社の公式サイトでできますが、現在販売されているものは「Development Kit(開発者版)」なので、PCに詳しくない方は製品版まで待った方が無難です。それでも今回の体験で「そんなの待ってられない!」となった方は、先日発売されたこちらの書籍

 

Oculus Riftでオレの嫁と会える本 UnityとMMDモデルで作る初めてのバーチャルリアリティ: 桜花一門, ゆーじ

http://www.amazon.co.jp/dp/4798137464


に購入の手順、最初のセットアップ、WEB上で配布されている無料アプリ紹介、さらには自作ダンスアプリの作り方まで丁寧に書いてあるので、こちらを読みながらの購入をお勧めします。MMDモデルを用いたアプリを作成、公開する際は、必ずモデルに同梱されたReadmeや配布サイトの利用規約、モデルキャラクターのライセンス等をよく読み、記載条件を遵守するようにしてください)

※もっと安いVR機として、手持ちのスマホHMD代わりにするカジュアルなHMDキット「ハコスコ」というものもあります。3D表示には対応していませんが、なんとお値段たったの1000円!

 

■Oculus Riftを楽しむために必要なPCのスペックはどのくらい?(入りきらないのでトル)

CPUはi5クラス、メモリは8Gもあれば問題ありませんが、グラフィックボードは万単位のものが【ほぼ必須】です。ノートPCでもモバイル用のグラフィックボードが載っていればそれなりに動きますが、将来的な拡張に不安があります。ゲーミングPCブランド「G-tune」と共同で『OcuFes監修PC』を提案しているので、これを機にPCの新調を考えている方はご一見ください。

OcuFes監修PC |G-Tune

http://www.g-tune.jp/ws_model/ocufes/

 

■Oculus RiftのようなVR機って他にもあるの?(入りきらないのでトル)

あります、以下いくつかご紹介。 

====

・[未発売] Project Morpheus(プロジェクトモーフィアス)

現在ソニーが開発している、Oculus Riftとまったく同じコンセプトのVR機。PCではなくPS4に接続する想定で開発されており、完成したらゲームメーカーによる良質のゲームがVRで体験できるようになることが期待されています。

・[日本未発売] GearVR
Samsung社とOculus社による共同開発で作られたVR機。本体にスマートフォン「GALAXY Note 4」をはめ込み、Oculus Riftと同様の機能を実現しています。機器の開発にあたってOculus社の技術力を結集したモバイル用のSDKが備わっているため、とてもモバイル機器とは思えないトラッキング精度が実現しています。 

・[発売中] ハコスコ
「もっとお手軽にVR体験を」を旗印に作られた、ダンボール組み立て式のVR機。GearVRと同じくスマホを本体に差し込み、スマホの加速度検知機能を使ってヘッドトラッキングを実現しています。対応コンテンツは同名のスマホアプリをDLすることにより体験可能。お手軽&安価にするために3D表示機能は無いが、値段(なんと1000円!)を考えれば充分。

スマホVRのハコスコ | 1000円で手軽にバーチャルリアリティ体験

====

ほかにも国内外問わず、現在数多くのVR機が開発されている最中です。世はまさにVR大航海時代の幕開け・・・!

 

■なんか酔いそう

適切に開発されたコンテンツと動作環境であれば、基本、酔いません。(特に今回の展示だと、メイドさんの着せ替え体験は酔いはゼロでしょう)なお、OcuFesではひとりでも多くのユーザに快適なVR環境を提供できるよう、開発者が個人、企業の枠組みを超えてノウハウを共有し、ソフト、ハード、さらにはUX(体験スペース)という多方面で、様々な努力を行っています。

 

■OcuFes(オキュフェス)とは?

・日本全国民、1億人にVR文化を体験させる
・VR作家に発表の場と発表の喜びを与える
・VR作家達の知識や人脈のハブとなり、VR文化をもっと加速させる

 

この3つを柱とした、パーソナルVRという新しい文化を支える開発者団体です。

URL:http://www.ocufes.jp/ 代表:桜花一門( @oukaichimon

文責:まっつん◆SW1/SWF8io ( @n_mattun ) 

 

用紙裏面(両面印刷できたらw)

■VR機を使った代表的な作品って何がある?

・まさにアニメそのまんまのSAO体験「ナーヴギアデモ」
リンクスタート! Oculus VRが「ソードアート・オンライン」のナーヴギアデモを公開 - ファミ通.com

http://www.famitsu.com/news/201407/04056592.html

 

進撃の巨人 序盤の名シーンを追体験できる「進撃の巨人展 360°体感シアター 哮」
巨人のデカさがヤバすぎる! 『進撃の巨人展』でOculus Riftをかぶってきた - 週アスPlus

http://weekly.ascii.jp/elem/000/000/278/278687/

 

・気分はジョッキー VRアトラクション「Hashilus(ハシラス)」
超会議3:Ocufesチームが乗馬ゲームHashilusを出展。Oculus+乗馬マシンで仮想荒くれ馬にライド - engadget

http://japanese.engadget.com/2014/04/27/3-ocufes-hashilus-oculus/

 

・ミクさんと握手「MikuMikuAkushu(ミクミク握手)」
何この未来! “初音ミクの握手会”がVRメガネと感触インタフェース装置で実現したぞ - ねとらぼ

http://nlab.itmedia.co.jp/nl/articles/1309/27/news070.html

 

・ミクさんと添い寝「MikuMikuSoine(ミクミク添い寝)」
MikuMikuSoine(ミクさんと添い寝できるアプリ改)を作ってみた

http://www.nicovideo.jp/watch/sm22268397

 

・女の子の部屋で家庭教師を体験「サマーレッスン」
Project Morpheusで『サマーレッスン』が体験できる!
興奮、緊張……「ヤバい!」の声続出のユーザー体験会をリポート【動画あり】 - ファミ通.com

http://www.famitsu.com/news/201411/29066814.html

 

筆者による「VR機の魅力が一見で伝わるであろう作品」という観点で
独断と偏見で選んでみましたが、VRアプリの総量からすると、ごく一部です。

他にも海外製で「日本を代表するアニメ映画監督が作った某子ども向け超有名映画の
『雨降りバス停で、すぶ濡れおばけがきたらあなたの雨傘を差してあげましょ』シーンの体験」なんていう、ものすごいアウトっぽいけどファンからしたら垂涎もののアプリもあったりします。

 

 

OculusでPS3コントローラのSIXAXISと振動機能を使う方法

この記事はOculus Rift Advent Calendar 2014の2日目です。

■1日目の記事その1

野生の男さん「Oculus Rift x LEAP Motion x JOBA x Wiiリモコンでドラゴンに乗ってみた

■1日目の記事その2:

@hiroyuki_honさん「ニート・無職のためのOculus Riftを用いて就職する方法

■今日のもう1つの記事:

@dvorakさん「Oculus Rift DK2初期不良と接続の戦記 - 銀の弾丸、はじめました

※その他の記事へはカレンダーのリンクからどうぞ。Oculusはさすがに旬の技術だけあってAdvent Calendarが2本立ってます、すげー。

 

こんにちは、OculusRift界隈で遊び回っている まっつん◆SW1/SWF8io(@n_mattun)です。直近では先月末のOculusGameJamにて友人の@faultierと「どうやら軍人らしい人が何らかの力により手から焔を出して全てを燃やし尽くす」ゲームを作ったりもしました。

 

さて、今回はそっちではなく別の拙作品、OculusRiftを駆使したロケットベルト体験ゲーム『飛べると!』*1で、PS3コントローラをどうやって設定をしたのかという部分を、ゲームのコンセプトも交えて具体的に解説していきます。ゲームの全体像をザっと確認したい方は、先に紹介動画をご覧ください。

 

PS3コントローラにたどりついた経緯 

今回自分で定めたコンセプトは「空を自由に飛びまわる」でした。

最初はアヌビスが超高速で飛ぶときに二の腕に仕込んでる(?)加速装置から出力を得て飛ぶようなイメージで、wiiリモコンプラス二刀流で翼を広げるような腕の動きと、手首のひねりで行きたい方向に進むというモノを考えたのですが、その操作方法だとアヌビスのような『鳥のように体を前に傾ける操作』をする必然性がないので、ちょっと体験ゲームとしての面白みに欠けます。

 

そこで発想を「ユーザーの体を強制的に傾かせるにはどうすればいいか?」という逆からのアプローチにして、

 

ユーザーの体を強制的に傾かせるにはどうすればいいか?

 ↓

体の傾きを操作方法に取り入れればいい

 ↓

じゃあモーションセンサーを物理的に背負わせてしまえばいい

 ↓

モーションセンサーを背負っても納得できるモチーフは何だろう?

 ↓

ロケットベルトだ!

 

という思考順序でゲームデザインの基本方針が決定しました。アヌビスどこいったw

またここには「ユーザ自身が意識的に行きたい方向に体を動かして、そっちにVR上の画面もついてくる」という操作系の方がVR酔いがしにくいのではという読みも含んでいます、「運転者は助手席や後部差席に比べて車酔いしにくい理論」に沿う形ですね。

 

続いて、wiiリモコンを背中に背負わせるというアプローチで調査も進めていたのですが、どうもPCやUnityでのwiiリモコンの制御方法に様々な方法論があり、またそれらの技術ブログを見る限りなんだか苦戦の匂いが漂っていたので、他の取得方法はないだろうか・・と思っていたところ、PS3コントローラに誰も見向きもしなかったSIXAXISというモーションセンサーがあったことを思い出しました。用途も前後と左右の傾きを取得する想定っぽかったので、かなりいいソリューションでした。

 

PCでPS3コントローラ(SIXAXIS)を使えるドライバ探し

 

※注 ここから下の説明はすべてWindows7上(+Unity 4.5.5 C#環境)での導入実績になります

Win8はなんとかなるかもしれないけど、Macは無理じゃないかなぁ・・・)

 

続いてはSIXAXISも検知してくれるPS3コントローラのドライバ探しです。

ググってみるといちばん使われているのは「MotionJoy」というソフトで、ひとまずOculus+Unity側での実装は抜きでPC上でテストしてみるとBluetooth接続もサポートし、振動機能もサポートしてて、SIXAXISの傾き検知も対応している風でした。しかし

  • MotionJoyの画面UIが使いにくい
  • 他のBT接続機器との相性がよろしくない
  • アンインストールしてもBTドライバを差すとソフトが復活する(!)

というやたら怪しい挙動をするソフトだったので、別のソフトは無いものかと探しまくった*2ところ、これらのMotionJoyの謎挙動にキレた人が作ったらしい『Better DS3』というソフトにたどり着きました。

 

■Better DS3

http://betterds3.ciebiera.net/

※注:ソフト単体だけでは動いてくれないので、以下の解説動画からDLLも合わせて入手しましょう。

解説動画(Youtubeリンク先にBetter DS3内で使うDllファイル単体のダウンロードリンク付き)

 

 このソフトならUIもとても見やすく、Bluetooth、振動、SIXAXIS、キーコンフィグとすべて問題なく動いてくれました。

 

ゲームパッドの入力形式は実は2通りある

コントローラ周りの情報を探しているうちに、実はゲームパッドの入力形式には『DirectInput形式』と『XInput形式』の2つの入力方法が存在することを知りました。

 

DirectInput形式は、一般的なUSB接続のゲームパッド等で使われている入力形式で、Unity のメニュー[Edit]-[Project Settings]-[Input]のインスペクタパネルから、入力ボタンと機能のマッピングができます。

 

Xinput形式は、XBOXコントローラの入力に特化した形式で、Microsoftが提供する公式のドライバを導入することによって利用可能になります。Unity・・というよりもOculusでは、OVR/Scripts/Util内OVRGamepadController.csでこの入力を常時監視していて(SDKバージョン0.4.3.1の場合)、XBOXコントローラの入力が使えるPCの場合、OVRPlayerController.csの後半あたりでこのクラス経由で各キーの入力情報を見て、操作を割り当てています。

 

振動も使いたい

せっかくロケットベルトにあたるものを物理的に背負ってもらっているので、

「背中にエンジンの『振動』が伝わる」

という機能も提供したい所です。正直この機能に関しては調べてる最中に面倒くさくなってやめようかなーという気になったのですが、PS3コントローラを入れたカメラバッグを背負って振動だけのテストをしてみたところものすごいロケットベルト感があったので「これは絶対に導入すべき!」と気が変わり、がんばって調べ込みました。

 

振動機能自体はメジャーな技術なのでどうにかしてる人はいるだろうと探し回っていたのですが、少なくともPS3コントローラの振動機能をUnity上でそのまま使っている情報にはたどり着けませんでした。その代わり、XBOXコントローラ(XInput形式)を使った振動機能のライブラリ「XInputDotNet」を見つけました。

 


speps/XInputDotNet · GitHub

 

それと前述の通り、XInput形式の入力を受け取るにはドライバも必要になるので、合わせて以下のMicrosoft公式サイトからダウンロード+インストール。


ソフトウェアのダウンロード:Xbox 360 Controller for Windows

 

あとはPS3コントローラがXInput形式の入出力を受け取れば良くて、幸いにもBetter DS3はDirectInput形式、Xinput形式の入力切り替え機能までもサポートしていたので、これで全て整いました。

 

本題の「SIXAXISと振動を使う」の手順まとめ

  1. PCにBetter DS3をインストールする
  2. Better DS3の解説動画を見て、Better DS3内で使うDLLファイルを入れる
  3. PCにXInput入力形式のドライバを入れる
  4. Better DS3上の入出力形式でXInputを選択し、SIXAXISの入力を他のキーにマッピングする
  5. XInputDotNetPureを使い、XInput形式としてBetter DS3経由でPS3コントローラに入力信号を伝え、振動させる。

 

f:id:n_mattun:20141202055002j:plain

こちらは現バージョンの『飛べると!』でのBetter DS3上のキーマッピングSIXAXISを右スティックの入力に割り当てて、他はブランクというなんとも漢らしい設定w ソフトを外に公開する際には普通にコントローラを持った形もサポートさせるために、もっと普通のキーマッピングにする予定です。

 

PS3コントローラ以外で取得した、最後の1軸

SIXAXISで取得できるのは「体の前後の傾き」と「体の左右の傾き」の合計2軸までしか取得できません。せっかく体の操作で2軸までコントロールしているので、「体の左右の回転」となるY軸もなんとかモーション的な操作方法で取得できないか・・・と思案した結果、こうなりました。

 

 

 

最終的に、手元で操作する本来のゲームコントローラは「wiiのヌンチャク*3のボタン1コだけ(ジェット噴射)」というものすごいエコな操作方法になりましたw

 

これなら将来的にゲームを拡張しよう!となった場合もキー割り当てに苦労しません。それこそ地球防衛軍4のウィングダイバーみたいに「飛び回りながら武器を切り替えて攻撃する」という操作も簡単にできるだろうし、なんならフェンサーの二刀流も組み合わせて、従来のFPSでは実現不可能だった『照準を二箇所にして左右別々に乱射しまくる』ということもやろうと思えば実現できるでしょう。

 

っていうかそこまでいくと自分で作るよりもオフィシャルで作って欲しいので、D3パブリッシャー地球防衛軍4.1をProject Morpheusにフル対応してこの願いを叶えてください。もしやってくれたらPS4+モーフィアス+Move二刀流ですげぇ高くつくけど全部まとめて買うから!!斬撃のレギンレイヴの次回作もやりたいけどその次まで我慢するからさぁ!

 

明日(12/03)は、@blkcatmanさんの「Unityから全球画像をつくるしくみ」と、@soyliquidさんの「OculusRift対応メタバース的なものをつくるかも」の予定です。

 

*1:正式名称決めました。仮名の「Flying Booster 2」も10年前に作ったFlashゲームの続編というタイトルの位置付けという愛着があるので、英語圏でリリースする時はこっちを引き続き使うかもw

*2:参考にしまくった記事

新生FF14 PlayStaion Move ナビゲーションコントローラーでプレイ XInput wrapper for ds3 編 - cartesiaの日記

Xbox360 コントローラーや DUALSHOCK 3 を PC で使うために非公式ドライバやツール、設定に関するネット情報を集めてみました 【 awgs Foundry 】

*3:ヌンチャクの接続はこれを使いました