HipsterSloth / PSMoveSteamVRBridge

PSMoveSteamVRBridge is a client for PSMoveService that computes the pose and button data of PSMove/DualShock4/PSNavi controllers and routes it into SteamVR.
Apache License 2.0
142 stars 47 forks source link

Feature Request: Add NullDriver-like Controller support using Ping pong ball tracked controller #2

Closed EtherealIntellect closed 7 years ago

EtherealIntellect commented 7 years ago

Basically as a mirror to https://github.com/cboulay/PSMoveService/issues/222

Adding a feature for head tracking and eventually controller tracking through the sensor fusion algorithms from PSMoveSteamVRBridge but from other sources like Colored ping pong ball or marker and/or/older phones. Afaik other implementations like https://hackaday.com/2016/12/16/revealed-homebrew-controller-working-in-steam-vr/ still have problems with trowing objests even though they technically work.

ninjav69 commented 7 years ago

Guys guys guys... I'm so happy to see this happening. Thanks so much for putting the shoulder to the wheel with this.

Just one Q: Am I right to think that this is an API-breaking change and that all adapters (such as freepiebridge) needs to be updated to accommodate this?

g-coded commented 7 years ago

@HipsterSloth- I was thinking/hoping it would pass the same info to the plugin, I will test it out when an updated plugin is available. Thanks for everyone's work on making this possible. EDITED for clarification.

HipsterSloth commented 7 years ago

@ychoucha

that's means i can use my chines headset PIMAX 4k, with this, to have headtracking ? I believe if you use PSMoveSteamVRBridge + PSMoveFreePIEBridge + FreePIEConnector (See http://www.driver4vr.com/) then that should work.

why we have two version of psmoveservice Great question. Sorry this is a bit confusing. You almost certainly want to use PSMoveSteamVRBridge.

PSMoveService - Provides a tracking client API and config tool used to track PSMoveControllers and colored bulb (virtual HMDs). Does not connect to any specific VR system. You usually don't want to download releases for PSMoveService specifically. Other client applications will bundle psmoveservice.

PSMoveFreePieBridge - Client application that forwards controller and virtual HMD tracking data from PSMoveService to FreePIE.

PSMoveSteamVRBridge - Client application that forwards controller tracking data to SteamVR. Does not attempt to provide any solution for HMDs, just controllers. PSMoveService comes bundled with each release of PSMoveSteamVRBridge.

Latest version of PSMoveFreePIEBridge is here: https://bitbucket.org/hawkinse/psmovefreepiebridge/downloads/PSMoveFreepieBridge-Release13.zip Latest version of PSMoveSteamVRBridge is here: https://github.com/HipsterSloth/PSMoveSteamVRBridge/releases/tag/v1.2.0

@ninjav69

Just one Q: Am I right to think that this is an API-breaking change and that all adapters (such as freepiebridge) needs to be updated to accommodate this?

Indeed. You'll need to download the latest versions of PSMoveSteamVRBridge and PSMoveFreePIEBridge

HipsterSloth commented 7 years ago

I just submitted a PR for virtual controller support: https://github.com/cboulay/PSMoveService/pull/430

If anyone wants to give it a test you can download a build (setup instructions in the PR) PSMoveService_0.9_alpha8.5.0.zip

After this change is integrated I'll make an official release, then update PSMoveFreePIEBridge and PSMoveSteamVRBridge.

HipsterSloth commented 7 years ago

I was incorporating the the virtual controller changes in PSMoveSteamVRBridge last night when it occurred to me the current implementation wasn't going to work without button support. You need a button for HMD alignment. I could make it work by forcing the virtual controller to always be a child of a PSNavi controller, but that's pretty restrictive. So I decided to add support for attaching any XInput controller to a virtual controller. This will allow a XBox360 (or other controller that supports XInput api) to become a tracked VR controller.

Currently there is no solution for orientation. I'm going to try an experiment with some two-bone IK to see if I can fake an orientation using the position of the HMD and and the position of controller as part of my next change.

As before I submitted another PR for this work if anyone wanted to take a look here: https://github.com/cboulay/PSMoveService/pull/433

And if anyone wants to try out the modified version of PSMoveService/ConfigTool you can try that here: PSMoveService_0.9_alpha8.5.0.zip

NOTE: PSMoveSteamVRBridge still needs to incorporate these new changes.

Nerdenstein commented 7 years ago

Hi!

I have a pimax 4k too and I'm a bit confused.

At the current moment can I have position tracking with steam vr?

If so can you please post here how to do it?

Thanks!

HipsterSloth commented 7 years ago

@Nerdenstein Follow instructions for VirtualHMD setup here: https://github.com/cboulay/PSMoveService/wiki/Virtual-HMDs

HipsterSloth commented 7 years ago

VirtualControllers are now officially supported in PSMoveSteamVRBridge v1.3.0: https://github.com/HipsterSloth/PSMoveSteamVRBridge/releases/tag/v1.3.0

Follow instructions here for setup: https://github.com/HipsterSloth/PSMoveSteamVRBridge/wiki/Virtual-Controller-Setup

If you are a PSMoveFreePIEBridge user, you'll have to wait until my PR goes through and the new release is up: https://bitbucket.org/hawkinse/psmovefreepiebridge/pull-requests/3/virtual-controller-client-api-support/diff (The client API changed so you need to update PSMoveFreePIEBridge even if you aren't routing the virtual controllers through PSMoveFreePIEBridge).

ninjav69 commented 7 years ago

Is it possible to use the PSMoveFreepieBridge and the PSMoveSteamVRBridge at the same time?

I'm a VRidge user, wanting to use the Virtual HMD via Freepie to RiftCat and 2 real PSMove controllers to SteamVR.

zelmon64 commented 7 years ago

@ninjav69 not only is it possible to do so, it is encouraged and designed with RiftCat in mind!

Edit: but of course you need to either wait for PSMoveFreepieBridge to be updated to 14 to use it with PSMoveSteamVRBridge v1.3.0 and PSMoveService v0.9-alpha8.6.0 or use PSMoveFreepieBridge-Release13 with PSMoveSteamVRBridge v1.2.0 and PSMoveService v0.9-alpha8.5.0 (the latest is necessary for the VirtualControllers stuff).

ninjav69 commented 7 years ago

Yesssss! This opens up all the motion-controller-required titles for me! Much appreciated. Gonna try out the VirtualHMD side tonight.

ninjav69 commented 7 years ago

Tested the HMD side of things. Works like a charm if the bulb is well-calibrated.

Trying the SteamVRBridge soon!

ninjav69 commented 7 years ago

I've tried PSMoveService-alpha-8.5.0 with PSFreepieBridge and the PSMoveSteamVR drivers in order to use the VirtualHMD with 2 real PSMove controllers. After calibration when HMD and controllers tracked perfectly, I fired up Freepie and my known to work HMD tracking script.

Freepie does not get any tracking data with this configuration with 8.5.0, but does with 8.4.0. Am I doing something wrong or is the VirtualHMD code not merged with 8.5.0 yet?

hawkinse commented 7 years ago

@ninjav69 I haven't had a chance to merge the changes made for 8.5.0 into PSMoveFreepieBridge. I should have the new release up by the weekend.

ninjav69 commented 7 years ago

Ahhh great thanks. Can't wait to finally try it out.

When the merge is complete, will this be available in the PSMoveSteamVRBridge project also? I suppose that's the one I'll have to download for my use case?

HipsterSloth commented 7 years ago

@ninjav69 You should be good to go with latest version of PSMoveFreePieBridge and PSMoveSteamVRBridge

https://github.com/HipsterSloth/PSMoveSteamVRBridge/releases/tag/v1.3.2 https://bitbucket.org/hawkinse/psmovefreepiebridge/downloads/PSMoveFreepieBridge-Release14.zip

I'm going to close this issue since I believe the spirit of the request is now resolved. Any new feature requests should be either a new discussion on the google group and/or a new issue here.