Используйте одну веб-камеру на нескольких игровых объектах

Я пытался эту страницу, чтобы отобразить камеру Theta S на сферу.

Таким образом, есть две полусферы. Отображение выполняется шейдерами, поэтому мне не нужно об этом заботиться. Обе части сферы имеют одинаковый код: public int cameraNumber = 0; частная веб-камера

void Start() 
 {
     WebCamDevice[] devices = WebCamTexture.devices;
     if (devices.Length > cameraNumber) {
         webcamTexture = new WebCamTexture(devices[0].name, 1280, 720);
         GetComponent<Renderer>().material.mainTexture = webcamTexture;
         webcamTexture.Play();
     } else {
         Debug.Log("no camera");
     }
 }

В чем проблема, только "сфера1" рендерит WebCamTexture. Я тестировал с дополнительной тестовой плоскостью, и только плоскость визуализировала WebCamTexture. (Обе сферы не сделали).
Кажется, только один игровой объект может отрисовать одну текстуру WebCam. Как я могу отрендерить одну WebCamTexture для нескольких игровых объектов?

Я уже пробовал это и это, но оба не работали.
На этой странице было предложено решение в одну строку: Что я не мог понять. Может кто-нибудь помочь мне?

0 ответов

Если я правильно понимаю ваш код, вы создаете дважды WebcamTexture (по одному для каждого объекта Sphere). Как правило, веб-камеры можно использовать только как единичный экземпляр.

Я бы попытался создать объект WebCamTexture в другом скрипте, чтобы вы получили одну текстуру. Затем вы можете попробовать присвоить это материалам вашей сферы.

Я не уверен, почему одна из приведенных вами ссылок использует Resources.Load для получения ссылки на материал; который также мог быть назначен через инспектора. (Но сейчас вы этим не пользуетесь).

Вы также можете попробовать isPlaying в WebCamTextures, чтобы проверить, вернут ли оба значения true.

Другие вопросы по тегам