polygraphene / ALVR

ALVR is an open source remote VR display for Gear VR and Oculus Go. With it, you can play SteamVR games in your standalone headset.
MIT License
1.82k stars 248 forks source link

Has anyone used ALVR with PS move controllers? #94

Closed vrokolos closed 3 years ago

vrokolos commented 6 years ago

How well does it work? Thinking of buying a set for using it in games like Fallout 4 VR etc.

Do I need 3 ones in order to track head movement as well?

davinux commented 6 years ago

I'm waiting for some components to make myself one for head tracking. I've already have two controller and three cameras and the controllers aren't bad, but the number of buttons make them not fully usuable for some games.

vrokolos commented 6 years ago

I just ordered 2 controllers 2 cameras and a navigation controller. Do you think I can play most games with 180 degree fov? Do I really need a 3rd camera and a head tracking thing?

davinux commented 6 years ago

The third camera is to improve the quality of the tracking and to increase the movement range (depending on the position of the cameras). About playing 180 degree fov games, it'll depend on the number of buttons and/or trackpad/joystick use on every game. But you'll be able to set some of them to enjoy!. Let me know how it goes!

vrokolos commented 6 years ago

Great. I got my 2 controllers and 2 cameras set up and they work. I believe the biggest problem is the lack of a trackpad / joystick. I've also got a PS Navi controller which I haven't set up yet and I don't know if I should. I need another Bluetooth adapter for that and lots of setup.

120-130 degree tracking works fine. during 90 degree turns the tracking is messy so probably having 2 more cameras would work better even for 180.

I just need to set up a nice mapping schema for the controllers on the configuration page and get used to it. I also need to better mount the cameras and make some space. I prefer to play seated so this might work perfectly fine for seated games.

TBH currently I prefer playing with a gamepad but there are games that are not playable with a gamepad so this opens up lots of closed doors.

davinux commented 6 years ago

Yesterday I managed to create a head tracking device with a ping pong ball. I didn't have too much time to test it, but after creating a basic freepie script I could get some head movement on steamvr home. Some more work needed in order to make it perfect, but seems promising!.

vrokolos commented 6 years ago

Did it work ok? Was there lag? I tried using the ARCore version and I prefer not to use head tracking at all. I don't know if doing it this way is better.

How did you make the mod? Is there any tutorial for hardware-side only?

davinux commented 6 years ago

I worked fine, no lag (that I could notice). But the position wasn't perfect, I need to work on the freepie script and then I'll create a PR with it. About the hardware, you can see a lot of versions on youtube. I made mine with two AA bateries in a box and a 1w led inside a ping pong ball. Based on this one: https://www.youtube.com/watch?v=IunGVk89-TY Also an update for that one: https://www.youtube.com/watch?v=LiYkDXu20VA

TheJaeger commented 6 years ago

To add, I've used both ping pong ball (Virtual HMD) and ARCore. I very much prefer the ease of use with ARCore, but know that tracking is capped at 30 FPS, whereas PSMoveService can track the virtual HMD at 60 FPS if your bandwidth allows. With the right PSMoveService configuration, tracking will be superior to ARCore.

If you have 4 cameras, I'd suggest going with virtual HMD, otherwise, stick to ARCore. With regards to your PS Move setup, I'd recommend adding two more cameras for better controller triangulation. While the cameras themselves may be dirt cheap, you'd have to consider getting a PCI-E USB Expansion slot. Let me know which route you plan on going, I can guide you in the right direction.

vrokolos commented 6 years ago

Thinking of buying more cameras. My main issue is the lack of touchpad and the configuration needed to make it work. I wish there were ready to use per game mapping profiles I could download. Tracking with only two cameras is messy. Also I wish there was an easy way to use the navi thumbstick without having to get another Bluetooth stick and stick it to the ps move.

VRtinker commented 6 years ago

Also I wish there was an easy way to use the navi thumbstick without having to get another Bluetooth stick and stick it to the ps move.

If you have a device that has a bluetooth adapter installed (for this scenario I only tried it using PC laptops and desktops), you can use VirtualHere to share via LAN the adapter with the PC running PSMoveService. My VR rig doesn't have any bluetooth, nor I own any USB adapters, so I use this solution to share one adapter from a Dell Laptop and one from my main non-VR rig, which runs on an ASUS MB with integrated bluetooth.

The server is free for sharing a single device or paid for unlimited devices, while the client is always free and can connect to multiple servers simultaneously. I run everything via Ethernet, but it works through WiFi as well (of course to keep latency at a minimum Ethernet is preferable).

Food for thoughts: In the same vein, this kind of setup, can be used to avoid buying USB extension cords for the PS3 cameras (I mean, if you have old equipment and ethernet cables sitting around, why not :-P)

You can have the server running on Android as well. I haven't check if it can share the integrated bluetooth adapter though, but it did work with the Razer Hydra plugged into the GearVR (albeit via WiFi).

For joining the PS Move and PS Navi, you can play with a PCL polymer like Instamorph, or whatever they might call it in your country. Kinda fun (and fascinating) when you realize you can use your hands as a very rough 3d printer :-)

vrokolos commented 6 years ago

VirtualHere sounds good and I've got a spare rpi somewhere that I can use but I'm afraid of the lag (Bluetooth + VirtualHere = double lag). I might give it a go. Generally it takes too much effort to play with this kind of setup - hardware setup, camera mounting, cables, calibration, furniture setup, lighting. I really prefer just grabbing my gamepad and playing skyrim VR on the couch or standing up. I wish more VR games would just come with gamepad support. It makes things a lot easier.

I'm still thinking of buying two more extra cameras for games like beat saber where gamepad is no go but I bet the most amount of my playing time will be with a gamepad.

TheJaeger commented 6 years ago

The problem with streaming additional cameras via VirtualHere will choke the network bandwidth that could otherwise be used by ALVR. While I have not tested this yet, I am fairly certain you'll not experience smooth ALVR when streaming cameras with VirtualHere.

For Beat Saber, PS Move controllers don't perform that well. There's inherent latency and tracking isn't smooth enough. I've tried it, and it's not good.

VRtinker commented 6 years ago

@TheJaeger

The problem with streaming additional cameras via VirtualHere will choke the network bandwidth that could otherwise be used by ALVR. While I have not tested this yet, I am fairly certain you'll not experience smooth ALVR when streaming cameras with VirtualHere.

While it was just some food for thoughts that I haven't even tried myself (but neither did you, sounds like), i don't believe bandwidth would be an issue, if you are (of course) using a gigabit router/switch.

The THEORETICAL bandwidth for USB 2.0 is 480Mbit/s which x2 is 960Mbit. On ALVR, at least until before H265 was introduced, I couldn't go past 30Mbit/s without getting artifacts. So with 990Mbit/s available, you can handle this traffic, while sparing some 10Mbit/s. Also I didn't verify this, but I would be very surprised if the PS3 camera could actually saturates the bandwidth. I know on a PS3 I can't get 60MB/s (480Mbit/s) out of any external HDD (heck, you can't get it even on the internal one), so I see no reason why Sony would have designed the camera to fill the bandwidth when the hardware it's meant to work with is not capable of sustain that flow of data.

TheJaeger commented 6 years ago

@VRtinker

You bring up some interesting points about Sony's hardware design. I'm curious too how they managed this (maybe it's not running at full 60 FPS?). but for PS3 applications, people in general used only one camera (correct me if I'm wrong). The real improvement came when PSVR came, which no doubt has better tracking.

I've been wanting to try VirtualHere to stream one of my cameras too because I only have USB bandwidth for 3 cameras at 60 FPS. However I've been put off because of my beliefs and possible latency or phase shift relative to other three cameras. It'd be nice if someone could try this. I'm moving in a couple weeks so my entire VR setup is packed.

vrokolos commented 6 years ago

Two ps3 cameras cant do 60 fps on same usb hub here cause of bandwidth. 1 is good

VRtinker commented 6 years ago

You bring up some interesting points about Sony's hardware design. I'm curious too how they managed this (maybe it's not running at full 60 FPS?). but for PS3 applications, people in general used only one camera (correct me if I'm wrong). The real improvement came when PSVR came, which no doubt has better tracking.

@TheJaeger On PS3, it runs at 60fps, like the rest of the system. They manage because, very possibly, one camera doesn't saturate the bandwidth. In fact I think I've seen someone running two on YouTube.

@vrokolos

Here they say "no more than two cameras per root usb hub" so 2 cameras can't even eat up 0.5Gbit/s. So there is plenty bandwidth left to handle alvr traffic, internet and what have you.

EDIT: I actually went ahead and tried it... it doesn't work at all. Psmoveservice can detect the LAN cameras but never display the video. In fact, even the cameras connected locally become incapable of passing the video feed. But it turns out that VirtualHere has a bit of mixed success record with cameras in general, and maybe using a non-windows platform for the host may cure it. I read there's also some issues related to using VirtualHere and libusb, so maybe using a different driver solution for the cameras other than libusb-win32 might work. At some point I will have a Mac up and running in my network, so I will try with that then.

gb2111 commented 6 years ago

here it is - basic way to add second controller :) https://www.youtube.com/watch?v=g7493DJxwJQ

TyborAUT commented 6 years ago

@vrokolos @VRtinker @TheJaeger @davinux I have created a simple setup with a single PS Move Controller + Oculus Go see #201.