key-value 说明
通过声网 SDK v4.x 提供的 setExtensionPropertyWithVendor 方法,传入指定的 key 和 value,即可快速实现 MetaKit 插件的能力。其中:
key对应 MetaKit 插件的不同接口。value以 JSON 格式包装接口的部分或全部参数。
本文介绍如何通过配置不同的 key-value 键值对实现 MetaKit 插件的虚拟人、Animoji、Sticker、灯光特效、360 背景功能模块。
基础功能
该小节介绍如何实现 MetaKit 插件的基础功能,如初始化引擎、加载场景资源、卸载场景资源、销毁引擎等,帮助你快速加载并体验 MetaKit 插件的效果。
初始化引擎
key:initializevalue:{}
加载场景资源
加载场景资源后,引擎会自动添加场景视图。
key:loadMaterialvalue:Object。包含以下字段:path:String。场景资源素材包的路径,如"/sdcard/metaAssets/material_avatar_girl/"。
view:Int64。场景视图的地址句柄,指定为 SceneView 的地址句柄。
开启场景视图的画面捕获
使用该接口开启场景视图的画面捕获后,调用 joinChannelByToken[2/4] 加入频道,即可将场景视图的视频流发布到频道中。
key:enableSceneVideovalue:Object。包含以下字段:view:Int64。视图的地址句柄。enable:(可选)Boolean。是否开启场景视图的画面捕获。true:开启;false:(默认)不开启。
卸载场景资源
key:unloadMaterialvalue:Object。包含以下字段:path:(可选)String。当前场景资源素材包的路径,如"/sdcard/metaAssets/material_avatar_girl/"。
销毁引擎
key:destroyvalue:{}
进阶用法
在实现基础功能后,你可以参考本小节进一步体验添加场景视图、切换视图的场景模式和虚拟形象等进阶用法。
加载场景
key:loadScenevalue:Object。包含以下字段:sceneInfo:Object。包含以下字段:scenePath:String。场景资源包的路径,如"/sdcard/metaAssets/15"。
extraCustomInfo:Object。包含以下字段:sceneIndex:Int。场景的索引,当前仅支持设置为0。
添加场景视图
在一个原生 view 上添加 MetaKit 场景,并渲染指定的场景内容。场景内容包括虚拟人、Animoji、Sticker、灯光特效和 360 背景。
- 最多支持添加 7 个场景视图。
- 目前仅支持对视频采集画面开启灯光和背景效果。如需指定
backgroundEffect为true,则avatarMode需设置为2。
key:addSceneViewvalue:Object。包含以下字段:view:Int64。视图的地址句柄。config:Object。包含以下字段:width:(可选)Int。视图的宽度 (px)。如不指定,则默认全屏。height:(可选)Int。视图的高度 (px)。如不指定,则默认全屏。extraInfo:Object。包含以下字段:sceneIndex:Int。场景索引,当前仅支持设置为0。avatarMode:(可选)Int。场景模式。0:(默认)虚拟人;1:Animoji、Sticker;2:视频采集画面。avatar:(可选)String。虚拟人形象、Animoji 形象或 Sticker 挂件贴纸。avatarMode为0(虚拟人),则avatar可以设置为girl和huamulan,默认为girl;avatarMode为1(Animoji、Sticker) ,则avatar可以设置为dog、girlhead、arkit、ahhat01(龙头帽)、sm_facemask(口罩)、sm_3dglasses01(眼镜)和sm_veil(面纱),默认为dog。backgroundEffect:(可选)Boolean。是否启用灯光特效和 360 背景功能。true:开启;false:(默认)不开启。
切换视图场景
添加场景视图后,你可以切换指定视图的场景模式或场景中的虚拟人、Animoji 形象和 Sticker 挂件贴纸。
key:switchAvatarModevalue:Object。包含以下字段:viewAddress:Int64。视图的地址句柄。mode:(可选)Int。指定你想切换的场景模式。0:虚拟人;1:Animoji、Sticker;2:视频采集画面。avatar:(可选)String。指定你想切换的虚拟人形象、Animoji 形象或 Sticker 挂件贴纸。avatarMode为0(虚拟人),则avatar可以设置为girl和huamulan;avatarMode为1(Animoji、Sticker) ,则avatar可以设置为dog、girlhead、arkit、ahhat01(龙头帽)、sm_facemask(口罩)、sm_3dglasses01(眼镜)和sm_veil(面纱)。
移除场景视图
从 view 上移除 MetaKit 场景视图。
key:removeSceneViewvalue:Object。包含以下字段:view:Int64。视图的地址句柄。
卸载场景
key:unloadScenevalue:{}
虚拟人
MetaKit 插件支持你对虚拟人进行形象切换、视角切换、捏脸和换装操作。体验虚拟人相关功能,需要在添加场景视图时将 avatarMode 设置为 0。
除 girl、boy 和 huamulan 三个插件中已有的虚拟形象外,声网 MetaKit 插件提供开放的美术生态,支持一键导入按声网的美术标准制作的虚拟人模型,为用户提供更灵活的创作和集成选项。联系声网技术支持使用该功能。
切换虚拟人视角
key:setCameravalue:Object。包含以下字段:viewMode:Int。虚拟人相机视角。0:显示虚拟形象全身;1:(默认)聚焦虚拟形象的上半身;2:聚焦虚拟形象的面部。
虚拟人捏脸
MetaKit 插件为虚拟形象提供了一套捏脸资源。
当前仅 girl 和 boy 虚拟人形象支持捏脸操作。
key:updateFacevalue:Object。包含以下字段:-
key:String。资源 ID,例如MC_updown_1(嘴角上弯曲)和MC_updown_2(嘴角下弯曲)。详见捏脸资源。 -
value:Int。调节幅度,范围为 [0,100],默认值为 50。支持传入多组捏脸部位的资源 ID (key) 及对应的调节幅度 (value),以实现最终的捏脸效果。将MC_updown_1和MC_updown_2分别设为 100 的示例图如下:
-
虚拟人换装
MetaKit 插件为虚拟形象提供了一套换装资源。
当前仅 girl 虚拟人形象支持换装操作。
-
key:updateDress -
value:Object。包含以下字段:id:Int[]。由多个换装部位的资源 ID 组成的 Int 数组。支持对头发、上衣外套、裤子等多个部位进行换装操作,且每个部位提供了多种换装资源可供选择,即每个部位对应多个换装资源 ID。需要注意的是每个部位每次只能指定一个资源。详见换装资源。
推荐的套装搭配如下:
- 套装一
- 套装二
JSON{
// 以下资源 ID 依次对应换装部位 [头发, 眉毛, 腮红, 头饰, 上衣外套, 裤子, 鞋子]
"id": [10001, 10101, 10401, 10801, 12101, 14101, 15001]
}
JSON{
// 以下资源 ID 依次对应换装部位 [头发, 眉毛, 腮红, 上衣外套, 手套, 裤子, 鞋子]
"id": [10002, 10102, 10402, 12102, 12501, 14102, 15002]
}
Animoji 和 Sticker
MetaKit 插件支持你对 Animoji、Sticker 进行形象切换。体验 Animoji 和 Sticker 相关功能,需要在添加场景视图时将 avatarMode 设置为 1。
调节渲染等级
MetaKit 插件提供低配、中配和高配三种渲染等级,你可以根据设备性能选择相应的渲染等级,以实现设备性能和渲染效果的最佳匹配。
目前仅 dog 的 Animoji 形象支持调节渲染等级。
key:setRenderQualityvalue:Object。包含以下字段:general:Int。0:低配;1:(默认)中配;2:高配。
灯光特效
MetaKit 插件提供 3D 打光、屏幕波纹、极光特效、人像边缘火焰等灯光特效,并支持对灯光效果的颜色、强度、范围等参数进行精细化配置。体验灯光特效相关功能,需要在添加场景视图时将 backgroundEffect 设置为 true。
设置特效素材
key:setEffectVideovalue:Object。包含以下字段:id:Int。特效素材 ID。enable:Boolean。是否启用特效。true:启用;false:不启用。param:(可选)Object。每个特效素材 ID 对应一组配置参数,支持你对灯光效果的颜色、强度、范围等进行精细化配置。如不填用参数,则使用默认的参数配置。
特效素材 ID 和配置参数的映射关系如下:
| 特效素材 ID (id) | 特效名称 | 配置参数 (param) |
|---|---|---|
1001 | 3D 打光 |
|
1002 | 屏幕波纹 |
|
1003 | 极光 |
|
2001 | 人像边缘火焰 |
|
2002 | 人像边缘光线 | N/A |
3001 | 氛围灯光组 | N/A |
3002 | 广告灯 |
|
背景特效
MetaKit 插件支持你开启 360 度全景背景模式、自定义背景替换资源,并开启陀螺仪功能,增强场景背景的互动性和沉浸感。体验 360 背景相关功能,需要在添加场景视图时将 backgroundEffect 设置为 true。
设置 360 背景的替换资源
成功设置后,可以观察到视频画面背景被替换为指定资源,且转动手机能体验到全景效果。
key:setBGVideovalue:Object。包含以下字段:mode:String。设置为tex360,即 360 度全景背景。param:path:String。指定背景资源的 URL 或本地路径。rotation:(可选)Int。旋转角度,默认值为 0。
开启背景陀螺仪
仅在成功设置 360 度全景背景后,才支持开启陀螺仪功能。开启陀螺仪功能可以进一步增强背景的互动性和沉浸感。
key:setCameraGyrovalue:Object。包含以下字段:state:Boolean。背景陀螺仪功能状态。on:开启;off:(默认)关闭。