I’m currently having an issue with live streaming the Ricoh Theta Z1 onto unity. I’m using a wired USB A to USB C connection to connect the Z1 camera to my computer. I am using the Ricoh Theta UVC 3.0.0 driver. I am on Windows 10, and using Unity’s most recent 2023 version.
In Unity I am trying to connect the camera livestream as a material onto a sphere so I can view the 360 degree camera live video feed when connecting an oculus meta quest 2 to Unity. The current script I have running allows me to connect my laptop webcam to the sphere with no issues at all, but as soon as I change to the name of the device I want to use for live streaming to “RICOH THETA UVC” Unity crashes.
Saving the script with the changed name is fine, but as soon as I try to enter play mode with the name of the device I’m looking for being “RICOH THETA UVC”, the camera itself starts flashing live but unity crashes. I am able to get the live video running on OBS under the device name “RICOH THETA UVC” but for some reason on unity when I try to use it, it crashes. I have read just about every form and watched every video there is and still can’t find a fix to this issue. If anyone has any ideas please let me know.
as a test, does it work in OBS like this:
if so, then you can get it into Unity as a virtual cam
env
test script. Note that I am manually finding the THETA UVC in the list of cameras and then changing the value of devices[NUMBER]
You need to adjust devices[4]
to the value of UVC on your system.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
public Color color1 = Color.white;
void Start()
{
WebCamDevice[] devices = WebCamTexture.devices;
Debug.Log("number of web cams connected: " + devices.Length);
for ( int i = 0; i < devices.Length; i++) {
string camName = devices[i].name;
Debug.Log("webcam device " + i + " is " + camName);
}
Renderer rend = this.GetComponentInChildren<Renderer>();
WebCamTexture mycam = new WebCamTexture();
string thetaName = devices[4].name;
Debug.Log("The webcam name is " + thetaName);
mycam.deviceName = thetaName;
rend.material.mainTexture = mycam;
mycam.Play();
}
// Update is called once per frame
void Update()
{
}
}