如何在SpriteRender Unity2D中添加可渲染的WebCamTexture?
WebCamTexture webcamTexture = new WebCamTexture();
webcamTexture.Play();
renderer.material.mainTexture = webcamTexture; //not displayed
答案 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提要。
干杯