Page 2 of 4

Re: Oculus Rift Support?

PostPosted: Tue Aug 13, 2013 7:16 am
by rodberry
There's an Oculus unit at our local hackerspace and I've just installed 77FTE on the machine there ready to have a mess with it. not sure how much help I can be though, apart from testing. I am a bit clueless with GLSL etc. and struggling along with Python (although I know Touch well in general so might be helpful after all)
rod.

Re: Oculus Rift Support?

PostPosted: Tue Aug 13, 2013 10:03 am
by Ennui
rodberry wrote:There's an Oculus unit at our local hackerspace and I've just installed 77FTE on the machine there ready to have a mess with it. not sure how much help I can be though, apart from testing. I am a bit clueless with GLSL etc. and struggling along with Python (although I know Touch well in general so might be helpful after all)
rod.


I want a local hackerspace :P

Re: Oculus Rift Support?

PostPosted: Fri Aug 16, 2013 3:39 pm
by momothemonster
rift-touchdesigner.jpg
rift-touchdesigner.jpg (79.23 KiB) Viewed 4129 times

I've created a GitHub repository in the interest of fixing / improving my attempt at Oculus Rift Support in Touch Designer.

https://github.com/momo-the-monster/MMMRiftChop

The repository includes:
  • A Visual Studio 2012 project for modifying/compiling the DLL
  • A TD 088 Composition with my attempt at implementing proper rendering
  • A compiled DLL if you want to get straight to the action (it's in the TD folder with the Comp)

It's so close - the head tracking is fine, the 3D effect is there, but something's not right. I think it has to do with the offset for each eye (ie the ViewAdjust matrix to be applied after the projection matrix and barrel distortion). I've tried the values that make sense that are coming out of the Rift Sensor: 0.0395 offset for each eye, in my case - but I still see some sort of de-convergence in my periphery. I don't see it in the pre-compiled demos or when I render a scene in Cinder, so it must be a step I'm missing, or some parameters I'm not applying right.

The basic flow I'm using is:
  • Extract a 4x4 Projection Matrix from the Sensor for the Left Eye
  • Flip coordinate at M[2][0] to make Matrix for the Right Eye
  • Create one camera for each eye, use custom matrices generated above
  • Use Render TOP to render each eye separately at 640x800
  • Feed output of Render TOPs into GLSL Shaders created from example code
  • Shaders are fed incoming Uniform parameters from Rift sensor
  • Feed output of each shader into a Crop TOP, extending the left eye to the right and the right eye to the left
  • Composite the Crop TOPs using Additive Blending
  • Send final output to Window set to 2nd monitor, fullscreen

I've tried adding a Transform Top after the Crops in order to change the eye separation but none of the values from the sensor fix the problem I see.

We're so close! Looking forward to some input on this, hope someone else has a Rift they can test with!

Re: Oculus Rift Support?

PostPosted: Fri Aug 16, 2013 11:54 pm
by manoeuvre
Excellent news! I'm expecting my rift to arrive in a couple weeks so I will test then.

Rob, delivery times have improved, I ordered mine on the 30th of July it went through processing for shipment this week, so I might see it before the end of the month. I hit it lucky with ordering though, slipped in on a Non-EU/US country shipment, my order is about 2000 units ahead of the current US orders.

Re: Oculus Rift Support?

PostPosted: Sat Aug 17, 2013 4:20 am
by mlantin
I might know what's wrong. I have a Rift and will look at your example tomorrow. Totally stoked. Thanks for doing this work. I have stereo camera component for TD and it works well. From what you describe you might be missing the horizontal shift necessary for an asymmetrical viewing volume.

Re: Oculus Rift Support?

PostPosted: Sat Aug 17, 2013 10:32 pm
by mlantin
hmmm. I was wrong. In reading the SDK documentation, it seems the rift does not need anasymmetrical frustum. I'll keep testing.

Re: Oculus Rift Support?

PostPosted: Sun Aug 18, 2013 1:01 am
by mlantin
The only thing I found is that the cameras weren't being translated. So I changed the camera parameters to use the Interpupillary_distance in the riftData (+-ipd/2) and that I think made things more comfortable. Not sure if solves everything. I have to test with some different geometry.

Re: Oculus Rift Support?

PostPosted: Sun Aug 18, 2013 4:07 am
by mlantin
Looks like there's something not quite right with the shader. I'll take another look tomorrow after I digest the documentation for the SDK.

Re: Oculus Rift Support?

PostPosted: Sun Aug 18, 2013 11:20 pm
by mlantin
I modified the shader and changed the parameter values. Seems to work now. But still hangs TD every time I tried to exit. Next thing to fix :)

Also no chromatic aberration fix in the shader.

I'm attaching the modified .toe

Re: Oculus Rift Support?

PostPosted: Mon Aug 19, 2013 12:17 am
by mlantin
I put the System::Destroy() call after the delete instance call and now I can exit TD without a hang.