Vuforia iOS VideoPlayback 播放帶有透明通道(alpha)視頻

在通過vuforiaAR掃描播放視頻時,有時會需要播放一些帶有綠屏的視頻,播放時綠屏部分可以扣掉,就會出現透明視頻效果.
效果展示:


oldVideo.gif
newVideo.gif

首先在 Simple.fragsh 文件中找到Main函數,修改為如下代碼:

vec3 keying_color = vec3(0.0, 1.0, 0.0);
float thresh = 0.45;
float slope = 0.1;
vec3 input_color = texture2D(texSampler2D, texCoord).rgb;
float d = abs(length(abs(keying_color.rgb - input_color.rgb)));
float edge0 = thresh * (1.0 - slope);
float alpha = smoothstep(edge0, thresh, d);
gl_FragColor = vec4(input_color,alpha);

然后在 VideoPlaybackEAGLView.mm 類中找到 renderFrameVuforia 函數,在 glUseProgram(shaderProgramID) 后面添加如下代碼:

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

最后找到類里所有的 glUseProgram(0) (應該有兩處),在后面加一句代碼:

glDisable(GL_BLEND);

keying_color 中保存了需要替換的實際顏色,(0.0, 1.0, 0.0)代表綠色,綠色RBG顏色是(0,255,0),但是這里不能使用255,它是使用0~1的浮點數表示,所以可知255=1,122=0.478如此類推,如果想替換其他顏色,可以修改 keying_color.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容