Getting Unity to recognize THETA UVC FullHD Blender Camera

After a long search and hack, I can finally use the UV Full HD Blender for Unity :slight_smile:

The advantage is that if you use the Full HD Blender, it will output rectangle image, and you can directly map it onto a sphere, no need for handmaking meshes(in dual fish eye case, where holes always exist) !!!

It is because though Unity can detect the blender, it wont see it as a ā€œtrueā€ camera. For more information, please visit these site:
http://answers.unity3d.com/questions/240796/what-is-required-from-a-device-to-be-read-in-a-web.html

and for the solution, please visit:
http://alax.info/blog/1433

Happy thetaSing! :stuck_out_tongue:

3 Likes

Wow, thanks for this! I configured the THETA UVC FullHD Blender registry as follows:

Iā€™m about to test it in Unity.

If you use your Unity application on another computer, do you need to configure the registry for each computer? Iā€™m just wondering if we can build an application for distribution to other people or if this is for in-lab use. Cool in both scenarios and a great find. Nice work.

So cool. It works with no gaps on the sphere with no other adjustments. nice hack.

Iā€™ll write this up for the community

1 Like

This is a followup to the great @DrustZ post to get THETA UVC FullHD Blender to work in Unity. By using THETA UVC FullHD Blender as the WebCamTexture, youā€™ll be able to render the THETA live stream as a perfect sphere with no adjustment.

Preparation

Register THETA UVC FullHD Blender in Windows.

If youā€™ve got streaming working in equirectangular, youā€™ve probably registered it. Refer to the THETA Live Streaming Guide if you have not used live streaming before.

Edit Windows Registry

Open regedit on Windows. You will need to open the folders for HKEY_LOCAL_MACHINE ā†’ SOFTWARE ā†’ Classes.

Open CLSID

Go to:

{860BB310-5D01-11d0-BD3B-00A0C911CE86}/Instance

On my computer, THETA UVC FullHD Blender is {2219F8F0-38CB-4B19-9DC1-3F1A5C324545}

Hereā€™s a summary from this blog post that is the source of the regedit info.

The registry key is located under HKLM, SOFTWARE\Classes\CLSID{860BB310-5D01-11d0-BD3B-00A0C911CE86}\Instance (note itā€™s SOFTWARE\Classes\Wow6432Node\CLSIDā€¦ in 64-bit OS for 32-bit app space), where every subkey corresponds to a registered device (find yours there). Note that CLSID above is actually CLSID_VideoInputDeviceCategory.

Test on Unity

Create a sphere in Unity.

Create a test C# script and attach to the sphere.

I used Visual Studio to make a test script.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class WebCamDetect : MonoBehaviour
{

    void Start()
    {
        WebCamDevice[] devices = WebCamTexture.devices;
        Debug.Log("Number of web cams connected: " + devices.Length);

        for (int i=0; i < devices.Length; i++)
        {
            Debug.Log(i + " " + devices[i].name);
        }

        Renderer rend = this.GetComponentInChildren<Renderer>();

        WebCamTexture mycam = new WebCamTexture();
        string camName = devices[2].name;
        Debug.Log("The webcam name is " + camName);
        mycam.deviceName = camName;
        rend.material.mainTexture = mycam;

        mycam.Play();
    }
}

On my console, Iā€™m getting an error, but as the test is working, I havenā€™t tried to fix it.

Everything just works!

Hereā€™s a video clip of my desktop so you can see that the sphere has no gaps in it. No adjustment done.

1 Like

Video Tutorial of process of testing THETA UVC FullHD Blender inside of Unity.

1 Like

I gave this a try and UVC FullHD Blender still doesnā€™t work. I get the ā€œCould not find specific video deviceā€ error . Any chance that a recent upgrade broke this hack?

The only different I see from my setup is that Iā€™m using a slightly older version of unity (5.5 series). And my registry information is in a different location (ā€˜Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WOW6432Node\CLSID{860BB310-5D01-11d0-BD3B-00A0C911CE86}\Instance{23412D5B-EAB6-43AE-8A3D-FB4530576914}ā€™)

Perhaps this makes a difference?

Youā€™re in the wrong place. search for CLSID under Classes

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID

Full Path

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{860BB310-5D01-11D0-BD3B-00A0C911CE86}\Instance\{2219F8F0-38CB-4B19-9DC1-3F1A5C324545}

I didnā€™t have an entry in the registry where you mentioned. I realized that was because I installed the 32 bit version by mistake. I installed the 64 bit version and now it works.

Thanks for your help!

2 Likes

I love a happy ending

Rock on! Share your application. Would love to see what people are doing.

Thanks for the report on the 32 bit version. Every bit added to the knowledge pool helps others.

Did you need to install the 64bit version of Unity or the 64bit version of Windows?

Iā€™d love to share it, but itā€™s for a client. Right now it doesnā€™t look that different from yours anyway.

I had the 64 bit of Unity and Windows 10 before. My mistake was installing the 32 bit version of the Theta drivers. I mustā€™ve clicked the wrong link somehow.

Thanks for all your help. This will make my client very happy!

1 Like

Hello all,

I am trying to get a live stream from a RICOH Theta S (1080i/30fps) HDMI signal on a Dell IntelĀ® Coreā„¢ i7-7700K CPU @ 4.20GHz, which has no HDMI-in port, so I can display 360 livestream videos from the camera to Unity, and then get it on an Oculus Rift. I managed to get the stream via the USB cable, but well, I need some range, so I aim to use a video transmitter.

To sum up, Iā€™m trying to find a PCIe card to send this stream from a RICOH Theta S camera to an Oculus rift via HDMI with Unity.

The goal would be to get images from a race car on a circuit to send it into a VR headset.

Is there any already existing hardware/software solution that allows me to send this stream to Unity ?

I am looking forward to finding a solution with you.
Regards, Lucas BLANC-GARIN

The solution above is probably too expensive. Maybe itā€™s possible to rent it?

https://www.youtube.com/watch?v=wSHW30iokpw

If youā€™ve got the stream on your laptop already, you might be able to stream the entire desktop to a mobile phone.

See this article

This is as far as I got. Iā€™m still trying to figure out what type of application to build with this. Itā€™s cool to play with. :slight_smile:

Hello,

The Streambox would allow me to send a 360 live stream to YouTube or Periscope.
Would it allow me to get the stream to Unity ?

Iā€™m currently looking for a card like that to succeed in doing it :
https://www.blackmagicdesign.com/uk/products/decklink/techspecs/W-DLK-33

Iā€™m trying to get it right talking with Blackmagic Design Sales, who asks me :
"It would be worth confirming with RICOH that it does output a progressive signal and not a 1080 60I with a frame conversion.

I would also point out that the RICOH could output a coded signal over the HDMI so that may also cause you an issue. That would be a question for Unity.

With regards to Unity Iā€™ve had a look at their site but cannot find the machine configuration guide so it would be worth giving them a shout. Unfortunately Iā€™ve not used their software so cannot state if it works with our cards."

Iā€™m still waiting for an answer from Unity though.

Regards,
Lucas BLANC-GARIN

There is specifications on the camera here:

HDMI Live Streaming Specifications (RICOH THETA S only)
Dual-Fisheye data in uncompressed YCbCr format is output.

Image size: 1920x1080 / 1280x720 / 720x480

Frame rate: 30fps

Note that the output of the HDMI is dual-fisheye. Youā€™ll still need a way to stitch it into a sphere.

Megan Zimmer wrote a tutorial on using SteamVR. Sheā€™s using an HTC Vive, not a Oculus Rift.

I donā€™t quite understand your setup. Is the headset directly connected to the laptop with HDMI and USB cables? If not, how are you transmitting the signal from the laptop to the headset?

Most people I know are using the USB output of the THETA to get the video into Unity.

Ricoh used LiveShell with their live streaming demo at CES using the Ricoh R Dev Kit.

The headset is connected to the computer using HDMI and USB cables.

I am able to get the video into Unity via the USB output of the Theta.
The thing is that I want to get the stream from the camera that Iā€™d put in a car, so I canā€™t really use the USB port to link the camera to the computer.
As a consequence, Iā€™d like to use a video transmitter (that I already own), which sends me the HDMI output from afar. The point is that I donā€™t really know if I could get the stream on Unity using this system.

From the video transmitter that is inside the race car, is there some type of receiver on the computer that is connected to the headset? The video stream that the computer is receiving would need to look like a USB webcam to Unity.

This seems like a difficult application. I donā€™t know much about streaming videos between two computers, but, youā€™d need to verify that the receiving computer an take an incoming signal and then make it appear like a normal webcam.

Youā€™d need to run through a script and verify that the stream is detected as a camera.

There may be other techniques to stream to a headset that Iā€™m not aware of.

Hi, Iā€™ve discovered another issue. While Iā€™m getting the UVC FullHD Blender to work within Unity, when I build my application and run it externally, Iā€™m getting the 'Canā€™t load video device" error again.

Iā€™ve tried my app in admin mode as well, still an issue. If I use the raw video feed, however, it works. The virtual cams appear to fail when running an app outside of Unity.

Has anyone else had this issue?