WebCamTexture没有在Unity3D中显示?

时间:2014-08-16 12:09:00

标签: c# camera unity3d

我正在尝试使用WebCamTexture在场景中显示网络摄像头输入。我创建了一个带有一些默认纹理的Sprite并附加了以下脚本:

public class CameraTexture : MonoBehaviour {

    void Start () {
        WebCamTexture webcamTexture = new WebCamTexture();
        renderer.material.mainTexture = webcamTexture;
        webcamTexture.Play();
    }
}

但是,当我运行场景(在PC上)时,不会显示相机输入,只显示默认纹理。 这就是我所知道的:

  • webcamTexture不为空,设备已正确找到
  • 相机设备正常工作
  • 其他应用没有阻止相机

为什么没有显示相机输入?

3 个答案:

答案 0 :(得分:2)

我自己找到了解决方案。

{1}}无法在Sprite上显示。 我不得不创建一个GUITexture,然后我附加了相同的脚本,一切正常。

答案 1 :(得分:1)

它实际上并不完全正确,我创建了一个基于Camera Capture Kit的小例子,它是渲染Native Camera feed(iOS / Android)并将快照/照片拍摄到纹理的资产 - 这使得它成为可能渲染到雪碧。

以下是如何渲染精灵的示例

http://stackoverflow.com/questions/30190333/add-renderable-webcamtexture-in-spriterender-unity2d/36889806#36889806

基本上你要做的就是确保在自定义着色器中的辅助材质纹理单元上设置摄像机的输入,然后创建一个带有空白色纹理的精灵,并为精灵渲染器提供参考到纹理。

答案 2 :(得分:0)

Texture2D texty = new Texture2D (webcamTextures.width, webcamTextures.height, TextureFormat.RGB24, false);
texty.SetPixels (webcamTextures.GetPixels());
texty.Apply ();

Rect newRect = new Rect (0f, 0f, texty.width, texty.height);
Vector2 pivot = new Vector2 (0.5f, 0.5f);
imageUI.sprite = Sprite.Create (texty, newRect, pivot, 100f);