행복한 연어의 이야기

(Unity) 유니티 웹캠 화면을 가져오는 방법 본문

IT/Unity

(Unity) 유니티 웹캠 화면을 가져오는 방법

해피살몬 2020. 2. 24. 20:45

안녕하세요.

오늘은 웹캠을 사용해서 그 화면을 유니티 내로 띄우는 방법을 알아보겠습니다.

WebcamTexture 를 사용할 건데요

https://docs.unity3d.com/kr/530/ScriptReference/WebCamTexture.html

위 내용이 유니티에서 제공하는 내용입니다.

아래 내용은 2019.2.8f1 버전을 사용하여 테스트 하였습니다.

UI 화면에 띄우는 방법, 3d 오브젝트에 띄우는 방법을 소개 해드리겠습니다.

1. 웹캠 연결되어있는지 확인하기

private void Start()
 {
     WebCamDevice[] devices = WebCamTexture.devices;
     for (int i = 0; i < devices.Length; i++)
     {
         Debug.Log(devices[i].name);
     }
 }

를 사용해 보시면 현재 연결되어있는 Webcam 목록이 로그창에 뜹니다.

연결이 되지 않으신다면... Window 에서 웹캠을 인식하고 있는지 확인해 보세요.

2. UI 에 웹캠 화면 띄우기

public class WebcamSample : MonoBehaviour
{
    public RawImage display;
    WebCamTexture camTexture;
    private int currentIndex = 0;

    private void Start() 
    {
        if (camTexture != null)
        {
            display.texture = null;
            camTexture.Stop();
            camTexture = null;
        }
        WebCamDevice device = WebCamTexture.devices[currentIndex];
        camTexture = new WebCamTexture(device.name);
        display.texture = camTexture;
        camTexture.Play();
    }
}

만약 여러개의 웹캠을 사용한다면 Start 안에 내용을 하나의 함수로 빼신다음
currentIndex 의 번호를 바꾼뒤 위 내용의 함수를 호출하시면 됩니다.

3. 3D 오브젝트에 웹캠 화면 띄우기

위 내용과 같습니다.
RawImage 가 Renderer로 바뀌었을 뿐입니다.

public class WebcamSample : MonoBehaviour  
{  
public Renderer display;  
WebCamTexture camTexture;  
private int currentIndex = 0;

 private void Start() 
 {
     if (camTexture != null)
     {
         display.material.mainTexture = null;
         camTexture.Stop();
         camTexture = null;
     }
     WebCamDevice device = WebCamTexture.devices[currentIndex];
     camTexture = new WebCamTexture(device.name);
     display.material.mainTexture = camTexture;
     camTexture.Play();
 }
}

 

이상입니다.

감사합니다! 

Comments