在SpriteRender Unity2D中添加可渲染的WebCamTexture

时间:2015-05-12 12:03:46

标签: c# unity3d

如何在SpriteRender Unity2D中添加可渲染的WebCamTexture?

WebCamTexture webcamTexture = new WebCamTexture();
webcamTexture.Play();
renderer.material.mainTexture = webcamTexture; //not displayed

1 个答案:

答案 0 :(得分:0)

我们在资产商店(https://www.assetstore.unity3d.com/en/#!/content/56673)上创建了一个名为Camera Capture Kit的插件项目,它接受WebCamTexture并使用它。有一些代码片段可用于您想要的内容。

您无法直接更改纹理,但可以使用带有第二个纹理的着色器创建材质。

Shader "Unlit/SpriteWebCamTexture"
{
 Properties 
 {
    _Color ("Main Color", Color) = (1,1,1,1)
    _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {} 
    _BlendTex ("Blend (RGB)", 2D) = "white"
 }
 SubShader {
    Tags {"Queue"="Transparent"}
    ZWrite Off
    Blend SrcAlpha OneMinusSrcAlpha
    Pass {
        SetTexture[_BlendTex] {
            ConstantColor[_Color]
            Combine texture * constant, constant
        }
    }
 }

 Fallback "Transparent/VertexLit"
 }

在脚本中,将_BlendTex属性设置为webCamTexture,如下所示。

spriteMaterial.SetTexture("_BlendTex", cameraCaptureKitController.GetWebCamTexture() );

这可以在Update方法中完成,以确保其设置。

Sprite渲染器的材质设置在这样的Awake函数中。

cameraPreviewSpriteRenderer.material = webCamMat;
webCamMat.EnableKeyword( "_BlendTex" );

现在,为了让精灵渲染器渲染任何东西,你还必须确保它有一个精灵来定义它的大小,所以可以做的是创建一个带有你想要的尺寸的空白色纹理渲染in和,中提琴,你现在有一个SpriteRenderer显示你的WebCamTexture提要。

干杯