3D 轻量数字人
快速创建基于3D技术的数字人,并应用到WebGL、Unity、Unreal Engine等引擎中
创建形象
标题部分 创建形象- 在浏览器中访问
数字人工作台
- 获取形象的唯一
uuid
- 通过对应的 URL
https://meta-asset.shuwen.com/avatar/v1/model/{uuid}.glb
可以获取该虚拟形象的 GLB 模型 - 将获取到的 GLB 模型文件在你的代码中运行起来吧
使用 HTTP API 获取 GLB
标题部分 使用 HTTP API 获取 GLB基础 HTTP 路径
标题部分 基础 HTTP 路径https://meta-asset.shuwen.com/model/v1/
使用方在自己的数据库中存放用户 ID 和 Avatar UUID 的映射关系。
1. 根据 uuid 获取 glb
标题部分 1. 根据 uuid 获取 glb/avatar/{uuid}.glb
2. 默认贴图 1K,支持 256、512、1K、2K
标题部分 2. 默认贴图 1K,支持 256、512、1K、2K/avatar/{uuid}.glb?texture_size=512
3. 默认合并 Mesh,可以选择不合并
标题部分 3. 默认合并 Mesh,可以选择不合并/avatar/{uuid}.glb?join_mesh=no
4. 默认贴图合并为一张大贴图,可以选择不合并(不合并贴图时,mesh 也必须分离)
标题部分 4. 默认贴图合并为一张大贴图,可以选择不合并(不合并贴图时,mesh 也必须分离)/avatar/{uuid}.glb?texture_size=512
5. 默认带有 ARKit 和 Lipsync 扩展的 BlendShapes,可以关闭 BS 功能,或者选择只有部分 BS 的模型
标题部分 5. 默认带有 ARKit 和 Lipsync 扩展的 BlendShapes,可以关闭 BS 功能,或者选择只有部分 BS 的模型/avatar/{uuid}.glb?morph_targets=no # 去除 BS
/avatar/{uuid}.glb?morph_targets=arkit # 只有 ARKit 规范的 BS
6. 默认带有动画,可以选择生成不带动画的模型,或者指定带哪些动画
标题部分 6. 默认带有动画,可以选择生成不带动画的模型,或者指定带哪些动画/avatar/{uuid}.glb?animation=no
/avatar/{uuid}.glb?animation=idle,walk
7. 获取 draco 压缩算法压缩后的 glb
标题部分 7. 获取 draco 压缩算法压缩后的 glb/avatar/{uuid}.glb?compress=draco
第三方使用 SDK 让用户自定义创建形象
标题部分 第三方使用 SDK 让用户自定义创建形象-
- 第三方在 metaavatar 系统中创建应用,填写应用的名称、用途、所在域名,分配 appkey 和 appsecret。
-
- 服务端通过 appkey 和 appsecret 获取 access_token。
-
- 在自己的页面中引入 JavaScript SDK,使用 access_token 初始化自定义捏脸页面。
import { AvatarCreator, AvatarError } from '@shuwen/avatarsdk';
const avatarCreator = new AvatarCreator ({
access_token: "<>",
// 可通过 CSS Variables 实现
themes? : {
primaryColor: "#",
secondaryColor: "#",
}
// 如果 uuid 不为空,则是编辑模式
uuid?: "<>",
// 高级捏脸配置,对有 IP 自定义,服装自定义需求的客户提供扩展支持
config?: {
}
});
// 用户编辑完成
avatarCreator.on("complete", (event) => {
// 获取模型 uuid
console.log(event.uuid);
});
// 编辑过程发生错误
avatarCreator.on("error", (error) => {
switch (event.type) {
// 非法的 appkey 或 appsecret
case AvatarError.ILLEGEL_APP:
break;
// uuid 不存在或者无权限
case AvatarError.INVALID_UUID:
break;
// userdata 格式有错
case AvatarError.INVALID_USERDATA:
break;
// 服务器异常
case AvatarError.SERVER_ERROR:
break;
}
});
// 渲染到 HTML DOM 结构中
avatarCreator.render(document.getElementById("avatarEl"));
照片识别服务化
标题部分 照片识别服务化-
- 将照片转模型的算法能力服务化
POST /face/generate
入参
标题部分 入参可以主动传递一些 Query 参数,让生成的结构更符合需求
标题部分 可以主动传递一些 Query 参数,让生成的结构更符合需求- age - 年龄
- gender - 性别
- skinColor- 皮肤颜色
响应
标题部分 响应{
"gender": "<>", // 算法识别到的性别
"age": "<>" // 算法识别到的年龄
"mesh": [], // 网格体
"texture": "<>", // 贴图
}