Unity3D使用透明视频,解决Pr导出WebM毛边问题

Unity3D使用透明视频,解决Pr导出WebM毛边问题,第1张

在Pr中安装导出WebM格式所需的Pr插件

https://www.fnordware.com/WebM/

本文使用插件版本。

安装步骤比较简单。安装结束需要重启PR。

打开PR,导入带透明通道格式的MOV文件。如果视频文件有音频合成的需要可以一并导入。

处理内容完成后,得到以下画面。

选中轨道 *** 作区域,点击【文件】->【导出】->【媒体】,打开导出设置界面。

1) 推荐匹配源。

2) Unity格式播放,需选中VP8;Constant Quality模式99质量。

3) 不扣选2-Pass Encoding。

4) 勾选Include Alpha Channel,透明通道

1) Codec模型选择Vorbis格式

1) 使用最高渲染质量

1) 新建RawImage,添加以下三种组件

2) 新建New Render Texture组件,并分别给RawImage和VideoPlayer组件赋值。其余按下图设置。

3) 对New Render Texture组件进行尺寸设置,大小匹配素材,避免尺寸不适配造成的模糊。

下面是效果:

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "ChromaKeyKit/ChromaKey/ChromaKey_Alpha_General" {

Properties{

_MainTex("MainTex", 2D) = "white" {}

_KeyColor("KeyColor", Color) = (1,1,1,1)

_DChroma("D Chroma", range(0.0, 1.0)) = 0.5

_DChromaT("D ChromaT", range(0.0, 1.0)) = 0.05

_DLuma("D Luma", range(0.0, 1.0)) = 0.5

_DLumaT("D LumaT", range(0.0, 1.0)) = 0.05

}

CGINCLUDE

#include "UnityCG.cginc"

struct VS_OUT {

float4 position:POSITION

half2 texcoord0:TEXCOORD0

}

sampler2D _MainTex

half4 _MainTex_ST

half4 _KeyColor

half _DChroma

half _DLuma

half _DLumaT

half _DChromaT

VS_OUT vert(appdata_base input) {

VS_OUT o

o.position = UnityObjectToClipPos(input.vertex)

o.texcoord0 = TRANSFORM_TEX(input.texcoord, _MainTex)

return o

}

half3 RGB_To_YCbCr(half3 rgb) {

half Y = 0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b

half Cb = 0.564 * (rgb.b - Y)

half Cr = 0.713 * (rgb.r - Y)

return half3(Cb, Cr, Y)

}

half4 frag(VS_OUT input) : SV_Target {

half4 c = tex2D(_MainTex, input.texcoord0)

half3 src_YCbCr = RGB_To_YCbCr(c.rgb)

half3 key_YCbCr = RGB_To_YCbCr(_KeyColor)

half dChroma = distance(src_YCbCr.xy, key_YCbCr.xy)

half dLuma = distance(src_YCbCr.z, key_YCbCr.z)

if (dLuma <_DLuma &&dChroma <_DChroma) {

half a = 0

if (dChroma >_DChroma - _DChromaT) {

a = (dChroma -_DChroma + _DChromaT) / _DChromaT

}

if (dLuma >_DLuma - _DLumaT) {

a = max(a, (dLuma - _DLuma + _DLumaT) / _DLumaT)

}

c.a = a

}

return c

}

ENDCG

SubShader {

//Cull back

Tags{ "Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True" }

Lighting Off

ZWrite Off

AlphaTest Off

Blend SrcAlpha OneMinusSrcAlpha

Pass {

CGPROGRAM

  #pragma vertex vert

  #pragma fragment frag

ENDCG

}

}

Fallback Off


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11744424.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存