【问题标题】:Add renderable WebCamTexture in SpriteRender Unity2D在 SpriteRender Unity2D 中添加可渲染的 WebCamTexture
【发布时间】:2016-04-27 20:26:29
【问题描述】:

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

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

【问题讨论】:

  • 只是一种预感,但在调用 Play 之前,每一位文档都会分配纹理。你能试着把最后两行倒过来吗?

标签: c# unity3d


【解决方案1】:

我们在assetstore (https://www.assetstore.unity3d.com/en/#!/content/56673) 上使用名为Camera Capture Kit 的插件制作了一个项目,该插件采用WebCamTexture 并与之配合使用。有 sn-ps 的代码可用于您想要的。

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

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" );

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

干杯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    相关资源
    最近更新 更多