GreenScreen
GreenScreen 是 3D 场景中的一个可交互部件,可在上面设置绿幕视频资源,也是继承自 actor
GreenScreen 由两个部分组成,一个是模型,一个是媒体资源。通过特定接口,可以给模型设定任意符合规范的视频资源。
模型部分
实例化 GreenScreen 和普通类 一致。
import { GreenScreen } from '@xverse/core'
const greenScreen = new GreenScreen()
给模型设置媒体资源
使用 create(option: IGreenScreenOptions)
接口中设置 videoSrc
和 MeshURL
.
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
参数