Skip to main content

GreenScreen

GreenScreen 是 3D 场景中的一个可交互部件,可在上面设置绿幕视频资源,也是继承自 actor

GreenScreen 由两个部分组成,一个是模型,一个是媒体资源。通过特定接口,可以给模型设定任意符合规范的视频资源。

模型部分

实例化 GreenScreen 和普通类 一致。

import { GreenScreen } from '@xverse/core'
const greenScreen = new GreenScreen()

给模型设置媒体资源

使用 create(option: IGreenScreenOptions) 接口中设置 videoSrcMeshURL.

create方法内部会默认创建一个 GreenScreenState 实例对象 gsState,通过修改gsState.mask_on_the_right 可以设置绿幕视频的类型,目前支持传入0 / 1 ,分别代表普通绿幕视频与双通道绿幕视频。

默认创建的 gsState 对象 mask_on_the_right 值为1,如果需要使用其他类型的绿幕视频,则需要手动创建 GreenScreenState 实例对象,并传入 create 方法内

注意:sdk内部封装了在 canplay 事件之后调用 show() 方法的逻辑,业务不需要对初始化时序问题额外处理


const option = {
videoSrc: string | string[] | HTMLVideoElement
MeshURL: string
autoPlay?: boolean
billboardMode?: EBillboardMode
gsState?: GreenScreenState
}

// 若 gsState.mask_on_the_right 值为1,则不需传入gsState实例
const gs = new GreenScreenState()

// 以下参数在美术和引擎同学指导下使用,一般不用特意设置
gs.mask_on_the_right=1 ; //输入哪种绿幕视频格式,0是标准绿幕,1是alpha在右侧的绿幕
gs.ignoreDepthTest=true//是否忽略深度测试,为true则忽略,此时一定会渲染在最顶层

//用于美术后期调节画面颜色
gs.bias_color_scale_r = 1.0;
gs.bias_color_scale_g = 1.0;
gs.bias_color_scale_b = 1.0;
gs.bias_color_scale_a = 1.0;

//建议使用await调用create方法,并捕获内部错误
try {
await greenScreen.create({
videoElement: videoEle,
MeshURL: 'https://appasset.xverse.cn/1/tv/d14ce73dfd9741e69e852ac3c1752cf4/NewYorkCity_2_gxtpioan1_web.glb',
autoPlay: true,
billboardMode: EBillboardMode.All,
gsState: gs,
})
}catch(e){
// do something
}


Billboard 模式

目前提供了 5 种模式,具体见文档中关于 EBillboardMode 的描述;

通过create()方法创建的 greenScreen ,可以自行设置 EBillboardMode 参数