Viveport上的SteamVR缺少控制器绑定Unity

问题描述

我经常收到用户在Viveport上玩我的游戏的报告,说他们的控制器无法正常工作。我相信这是由于缺少控制器绑定。当我在Viveport上测试游戏时,对我来说效果很好。

已为每个控制器导出默认绑定。控制器可以在Steam上正常工作(直接使用SteamVR),但不能在Viveport上正常工作。由于某些原因,Viveport使用的SteamVR无法看到默认绑定。

绑定是由Unity自动生成的:Windows / SteamVR输入/保存并生成。 绑定文件位于:\ StreamingAssets \ SteamVR

Unity 2020.1.2f1

SteamVR beta 1.15.2

如何使绑定在Viveport SteamVR上工作?

应如何正确导出和保存默认绑定?

动作文件:actions.json

{
  "actions": [
    {
      "name": "/actions/default/in/InteractUI","type": "boolean","requirement": "suggested"
    },{
      "name": "/actions/default/in/Teleport","type": "boolean"
    },{
      "name": "/actions/default/in/GrabPinch",{
      "name": "/actions/default/in/GrabGrip",{
      "name": "/actions/default/in/Pose","type": "pose"
    },{
      "name": "/actions/default/in/SkeletonLeftHand","type": "skeleton","skeleton": "/skeleton/hand/left"
    },{
      "name": "/actions/default/in/SkeletonRightHand","skeleton": "/skeleton/hand/right"
    },{
      "name": "/actions/default/in/Squeeze","type": "vector1","requirement": "optional"
    },{
      "name": "/actions/default/in/HeadsetOnHead",{
      "name": "/actions/default/in/SnapTurnLeft",{
      "name": "/actions/default/in/SnapTurnRight",{
      "name": "/actions/default/in/SaberOnOff",{
      "name": "/actions/default/in/ForceUse",{
      "name": "/actions/default/in/Movement",{
      "name": "/actions/default/in/VIVE Tutorial",{
      "name": "/actions/default/in/Index Tutorial",{
      "name": "/actions/default/in/Oculus_Tutorial",{
      "name": "/actions/default/in/DirectionalMovement","type": "vector2"
    },{
      "name": "/actions/default/in/MENU",{
      "name": "/actions/default/in/WMR_Tutorial",{
      "name": "/actions/default/in/VIVE_Cosmos",{
      "name": "/actions/default/out/Haptic","type": "vibration"
    },{
      "name": "/actions/platformer/in/Move",{
      "name": "/actions/platformer/in/Jump",{
      "name": "/actions/buggy/in/Steering",{
      "name": "/actions/buggy/in/Throttle","type": "vector1"
    },{
      "name": "/actions/buggy/in/Brake",{
      "name": "/actions/buggy/in/Reset",{
      "name": "/actions/mixedreality/in/ExternalCamera","type": "pose","requirement": "optional"
    }
  ],"action_sets": [
    {
      "name": "/actions/default","usage": "single"
    },{
      "name": "/actions/platformer",{
      "name": "/actions/buggy",{
      "name": "/actions/mixedreality","usage": "single"
    }
  ],"default_bindings": [
    {
      "controller_type": "vive_controller","binding_url": "bindings_vive_controller.json"
    },{
      "controller_type": "oculus_touch","binding_url": "bindings_oculus_touch.json"
    },{
      "controller_type": "knuckles","binding_url": "bindings_knuckles.json"
    },{
      "controller_type": "holographic_controller","binding_url": "bindings_holographic_controller.json"
    },{
      "controller_type": "vive_cosmos_controller","binding_url": "bindings_vive_cosmos_controller.json"
    },{
      "controller_type": "vive_cosmos","binding_url": "binding_vive_cosmos.json"
    },{
      "controller_type": "vive","binding_url": "binding_vive.json"
    },{
      "controller_type": "indexhmd","binding_url": "binding_index_hmd.json"
    },{
      "controller_type": "vive_pro","binding_url": "binding_vive_pro.json"
    },{
      "controller_type": "rift","binding_url": "binding_rift.json"
    },{
      "controller_type": "holographic_hmd","binding_url": "binding_holographic_hmd.json"
    },{
      "controller_type": "vive_tracker_camera","binding_url": "binding_vive_tracker_camera.json"
    }
  ],"localization": [
    {
      "language_tag": "en_US","/actions/default/in/GrabGrip": "Grab Grip","/actions/default/in/GrabPinch": "Grab Pinch","/actions/default/in/HeadsetOnHead": "Headset on head (proximity sensor)","/actions/default/in/InteractUI": "Interact With UI","/actions/default/in/Pose": "Pose","/actions/default/in/SkeletonLeftHand": "Skeleton (Left)","/actions/default/in/SkeletonRightHand": "Skeleton (Right)","/actions/default/in/Teleport": "Teleport","/actions/default/out/Haptic": "Haptic","/actions/platformer/in/Jump": "Jump","/actions/default/in/SnapTurnLeft": "Snap Turn (Left)","/actions/default/in/SnapTurnRight": "Snap Turn (Right)","/actions/default/in/SaberOnOff": "Saber On/Off","/actions/default/in/ForceUse": "Force Use","/actions/default/in/Movement": "Movement (Grab)","/actions/default/in/VIVE Tutorial": "VIVE Tutorial","/actions/default/in/Index Tutorial": "Index Tutorial","/actions/default/in/Oculus_Tutorial": "Oculus Tutorial","/actions/default/in/DirectionalMovement": "Movement (Directional)","/actions/default/in/MENU": "MENU","/actions/default/in/WMR_Tutorial": "Windows Mixed Reality Tutorial","/actions/default/in/VIVE_Cosmos": "Vive Cosmos Identification"
    }
  ]
}

绑定文件示例:bindings_knuckles.json

{
   "action_manifest_version" : 0,"alias_info" : {},"app_key" : "application.generated.unity.saberfightvr.exe","bindings" : {
      "/actions/buggy" : {
         "sources" : [
            {
               "inputs" : {
                  "position" : {
                     "output" : "/actions/buggy/in/steering"
                  }
               },"mode" : "joystick","path" : "/user/hand/left/input/thumbstick"
            },{
               "inputs" : {
                  "position" : {
                     "output" : "/actions/buggy/in/steering"
                  }
               },"path" : "/user/hand/right/input/thumbstick"
            },{
               "inputs" : {
                  "pull" : {
                     "output" : "/actions/buggy/in/throttle"
                  }
               },"mode" : "trigger","path" : "/user/hand/left/input/trigger"
            },"path" : "/user/hand/right/input/trigger"
            },{
               "inputs" : {
                  "click" : {
                     "output" : "/actions/buggy/in/brake"
                  }
               },"mode" : "button","path" : "/user/hand/left/input/a"
            },"path" : "/user/hand/right/input/a"
            },{
               "inputs" : {
                  "click" : {
                     "output" : "/actions/buggy/in/reset"
                  }
               },"path" : "/user/hand/left/input/b"
            },"path" : "/user/hand/right/input/b"
            }
         ]
      },"/actions/default" : {
         "chords" : [],"haptics" : [
            {
               "output" : "/actions/default/out/haptic","path" : "/user/hand/left/output/haptic"
            },{
               "output" : "/actions/default/out/haptic","path" : "/user/hand/right/output/haptic"
            }
         ],"poses" : [
            {
               "output" : "/actions/default/in/pose","path" : "/user/hand/left/pose/raw"
            },{
               "output" : "/actions/default/in/pose","path" : "/user/hand/right/pose/raw"
            }
         ],"skeleton" : [
            {
               "output" : "/actions/default/in/skeletonlefthand","path" : "/user/hand/left/input/skeleton/left"
            },{
               "output" : "/actions/default/in/skeletonrighthand","path" : "/user/hand/right/input/skeleton/right"
            }
         ],"sources" : [
            {
               "inputs" : {
                  "click" : {
                     "output" : "/actions/default/in/interactui"
                  }
               },{
               "inputs" : {
                  "click" : {
                     "output" : "/actions/default/in/movement"
                  },"position" : {
                     "output" : "/actions/default/in/directionalmovement"
                  }
               },{
               "inputs" : {
                  "click" : {
                     "output" : "/actions/default/in/grabpinch"
                  }
               },"path" : "/user/hand/left/input/grip"
            },{
               "inputs" : {
                  "click" : {
                     "output" : "/actions/default/in/saberonoff"
                  }
               },{
               "inputs" : {
                  "click" : {
                     "output" : "/actions/default/in/index tutorial"
                  }
               },{
               "inputs" : {
                  "click" : {
                     "output" : "/actions/default/in/menu"
                  }
               },{
               "inputs" : {
                  "click" : {
                     "output" : "/actions/default/in/forceuse"
                  }
               },"path" : "/user/hand/left/input/trackpad"
            },"path" : "/user/hand/right/input/b"
            },"path" : "/user/hand/right/input/grip"
            },"path" : "/user/hand/right/input/trackpad"
            },{
               "inputs" : {
                  "click" : {
                     "output" : "/actions/default/in/interactui"
                  }
               },{
               "inputs" : {
                  "east" : {
                     "output" : "/actions/default/in/snapturnright"
                  },"west" : {
                     "output" : "/actions/default/in/snapturnleft"
                  }
               },"mode" : "dpad","parameters" : {
                  "sub_mode" : "touch"
               },"path" : "/user/hand/right/input/thumbstick"
            }
         ]
      },"/actions/platformer" : {
         "sources" : [
            {
               "inputs" : {
                  "position" : {
                     "output" : "/actions/platformer/in/move"
                  }
               },{
               "inputs" : {
                  "position" : {
                     "output" : "/actions/platformer/in/move"
                  }
               },{
               "inputs" : {
                  "click" : {
                     "output" : "/actions/platformer/in/jump"
                  }
               },"path" : "/user/hand/right/input/trigger"
            }
         ]
      }
   },"category" : "steamvr_input","controller_type" : "knuckles","description" : "","name" : "Saber Fight VR for Index Controller","options" : {},"simulated_actions" : []
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)