I’m currently playing around with the Oculus Rift, and a plugin is ready, but there are issues.
Basically, a connection to the device is established, I get values and it reports that it’s connected, but I don’t get sensor values out of it.
I found a rather strange workaround which leads me to the conclusion that there is some bug in vvvv, as the code is coming from the Unity3D code provided by Oculus and I also tested it in a commandline C# application (both works without any problems).
Currently it only works if
some other application has a Rift connection open
I start vvvv
I close the other application
I load the Rift patch
If no other device has a connection open (just regularily starting vvvv), it does not work (connection gets established, but no sensor values reported).
The Rift SDK seems to not be able to report values to more than one process (it runs some kind of background thread, as it seems). Thus, for my Unity and Console applications, if I stop one, the other works again immediately; as long as vvvv is opened (without ever loading my patch or even the dll) neither works.
Can I somehow prevent vvvv from enumerating/doing whatever it does with the device? Or does any of you devvvs understand what I’m talking about and has an idea?
For me, it looks like vvvv does kind of “lock” the device on startup, preventing both itself as well as all other applications from properly accessing the sensors. Thus, if another application already did that, the vvvv code works properly by accessing the device on pressing the “Enable” pin.
any errors in tty/startup log? vvvv does enumerate your hid devices on startup. this oculus rift is a hid device too - reporting your head’s movement i guess. we use a library to do that device enumeration stuff. there’ve been issues in the past, so could be we hit one again. we moved to a newer version of it in a test branch but moved back to the old one for now as there’s no new stable release available yet. but you could try it with that build using the newer version. it should also report a little more to your startup log if an error occurs when enumerating the hid devices.
see daily/develop-jvcl-trunk/
No error is returned. Is there some way to see console outputs of embedded dlls? (I saw them in a c# test application I made, but they don’t end up in tty).
I will try this other version in the next days. For reference, here is my related thread on the Oculus forums asking whether the problem might be on their side (locking to the first application enumerating it, not the first one using it): https://developer.oculusvr.com/forums/viewtopic.php?f=34&t=1043.
Note that with this, the Oculus still not works (does not return sensor values). So the only way I’ve found to made it work is to start another application which accesses the device, then start vvvv, close the other application, then load the patch.
See also this contribution, where I uploaded the current state. http://goo.gl/pV33V (Shortened because forum messes up URL)
I’m trying to build an interactive game that tracks a user’s movements and uses them to recreate a sporting activity (100m sprint, for example).
I’m using an ASUS ProLive camera for the tracking - based on PrimeSense, very similar to Microsoft Kinect (it uses the Kinect (Devices OpenNI) node). One problem I’m having is that if I open the patch and the computer hasn’t detected the camera, or if I open it without the camera connected at all, my TTY Renderer gets flooded with errors - below is what seems to be repeatedly outputted:
00:00:33 ERR : OpenNI.StatusException in OpenNI.Net: Can't create any node of the requested type!
Stacktrace:
at OpenNI.UserGenerator.Create(Context context, Query query, EnumerationErrors errors)
at VVVV.Nodes.Skeleton2OpenNI.Evaluate(Int32 SpreadMax)
00:00:33 ERR : OpenNI.StatusException in OpenNI.Net: Can't create any node of the requested type!
Stacktrace:
at OpenNI.UserGenerator.Create(Context context, Query query, EnumerationErrors errors)
at VVVV.Nodes.Users.Evaluate(Int32 SpreadMax)
00:00:33 ERR : OpenNI.StatusException in OpenNI.Net: Can't create any node of the requested type!
Stacktrace:
at OpenNI.ImageGenerator.Create(Context context, Query query, EnumerationErrors errors)
at VVVV.Nodes.Texture_Image.Evaluate(Int32 SpreadMax)
If I delete the Kinect node the errors stop, but my problem is that the errors affect the rest of the program and seem to cause it to crash.
I have tried putting the context outlet through a Switch (Node Input) and that reduces the TTY Renderer to:
00:13:41 ERR : OpenNI.StatusException in OpenNI.Net: Can't create any node of the requested type!
Stacktrace:
at OpenNI.UserGenerator.Create(Context context, Query query, EnumerationErrors errors)
at VVVV.Nodes.Users.Evaluate(Int32 SpreadMax)
Does anyone know if there is a definitive way to stop all the Kinect information being passed through the patch if the device is not detected?