美文网首页
Vuforia iOS VideoPlayback 播放带有透明

Vuforia iOS VideoPlayback 播放带有透明

作者: KouKuma | 来源:发表于2018-03-28 17:18 被阅读68次

    在通过vuforiaAR扫描播放视频时,有时会需要播放一些带有绿屏的视频,播放时绿屏部分可以扣掉,就会出现透明视频效果.
    效果展示:


    oldVideo.gif newVideo.gif

    首先在 Simple.fragsh 文件中找到Main函数,修改为如下代码:

    vec3 keying_color = vec3(0.0, 1.0, 0.0);
    float thresh = 0.9;
    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.

    相关文章

      网友评论

          本文标题:Vuforia iOS VideoPlayback 播放带有透明

          本文链接:https://www.haomeiwen.com/subject/vnkucftx.html