Oculus Go と ALVR と FreePIE で、キーボードでVRコントローラーの入力をエミュレートする手順

https://github.com/polygraphene/ALVR/wiki/FreePIE-Integration
・FreePIEをダウンロード・インストール
・C:\Program Files (x86)\FreePIE\plugins
 へ、ALVR.exeがあるのと同じフォルダにある「ALVRFreePIE.dll」をコピー
・コピーしたファイルのプロパティを開き「セキュリティ:このファイルは~ブロックされる可能性があります」の許可するチェックをONにする
WindowsスタートメニューからFreePIEを起動
・ALVRのフォルダ/freepie-samples/sample3.pyを開く
・ALVRを起動してOculusGoでPCVR画面を表示させる
・キーボードのZキーを押して、左右コントローラーが切り替わって2つ目のコントローラーが表示されれば成功。



いちばん使うであろうsample3.pyの説明。

・キーボードZで左右コントローラー切り替え
・キーボード入力
  ["system"          , Key.G]
, ["application_menu", Key.X]
, ["trigger"         , Key.T]
, ["a"               , Key.V]
, ["b"               , Key.B]
, ["x"               , Key.N]
, ["y"               , Key.M]
, ["grip"            , Key.F1]
, ["trackpad_click"  , Key.F2]
, ["back"            , Key.F3]
, ["guide"           , Key.F4]
, ["start"           , Key.F5]
, ["dpad_left"       , Key.F6]
, ["dpad_up"         , Key.F7]
, ["dpad_right"      , Key.F8]
, ["dpad_down"       , Key.F9]
, ["trackpad_touch"  , Key.F10]
・コントローラーbackでモード切替
 0:trackpad guesture mode
  タッチパッドをキー入力に変換
     上:TrackpadClick
   左:AppMenu  右:System
     下:Grip
 1:fly mode (buggy)
  移動  :タッチパッド
  リセット:タッチパッド+トリガー
 2:passthrough mode
  タッチパッドの入力をそのまま送る



ちなみに、ALVRv2.3.1に添付されているsample2.pyは、スクリプト内容が間違っていると思う。

# 誤
alvr.controller_position[0] = alvr.input_controller_position[0] + offset[0]
alvr.controller_position[1] = alvr.input_controller_position[1] + offset[1]
alvr.controller_position[2] = alvr.input_controller_position[2] + offset[2]

# 正 (alvr.controller_positionは、最初の配列引数が右手左手コントローラー指定で、2番目が空間上の位置XYZ?)
alvr.controller_position[0][0] = alvr.input_controller_position[0] + offset[0]
alvr.controller_position[0][1] = alvr.input_controller_position[1] + offset[1]
alvr.controller_position[0][2] = alvr.input_controller_position[2] + offset[2]