一个虚拟人展示到屏幕上,大致有四个步骤:
1、初始化底层渲染库(FURenderKit)及其他必要模块。
2、创建场景(FUScene)。
3、创建虚拟人(FUAvatar)。
4、将虚拟人放到场景中展示。
------------------------------------- FURenderKit初始化 ---------------------------------------
使用 FURenderKitManager 的如下接口初始化 FURenderKit
/// 根据配置信息初始化 FURenderKit
/// @param config 配置信息
+ (void)setupWithConfig:(FURenderKitManagerConfig *)config;
FURenderKitManagerConfig 是一个配置类,里面配置底层库初始化时需要用到内容,FURenderKitManager 使用这个 config 对 FURenderKit进行了初始化,并且加载了人脸驱动、身体驱动相关的资源。这是后续所有操作的前提条件。
----------------------------------- FUResourceManager初始化 ----------------------------------
云服务的初始化是通过 FUResourceManager的初始化完成的,如果需要用到云服务就需要初始化FUResourceManager
/// 根据配置信息初始化云平台能力 【⚠️所有云平台接口调用前需配置】
/// @param config 配置对象
/// @param downloadRootPath 下载文件的保存根路径
- (void)setupWithConfig:(FUCloudServiceConfig *)config downloadRootPath:(NSString *)downloadRootPath
------------------------------------- FUPathsHelper初始化--------------------------------------
FUPathsHelper 是路径管理者,属于必须初始化的类,调用如下接口即可完成初始化
+ (void)setupWithAssetsRootPath:(NSString *)assetsRootPath
sceneListJsonPath:(NSString *)sceneListJsonPath
defaultJsonPath:(NSString *)defaultJsonPath
animationGraphPath:(NSString *)animationGraphPath
animationLogicPath:(NSString *)animationLogicPath;
-------------------------------------- FUDataCenter初始化 --------------------------------------
FUDataCenter是数据管理中心,负责解析组装用户配置的场景数据(scene_list.json)和虚拟人数据(customAvatarRootPath、buildInAvatarsPath),调用如下接口即可完成初始化设置
/// 设置配置信息【⚠️使用前需先设置】
/// @param config 配置信息
- (void)setupWithConfig:(FUDataCenterConfig *)config;
FUScene 是场景模型包含灯光(FULight)、背景(FUBackground)、虚拟形象(FUAvatar)、机位(FUSceneCamera)等;
// 创建场景
self.scene = [[FUScene alloc] init];
-------------------------------------- 手动创建 --------------------------------------
FUAvatarModel *avatarModel = [[FUAvatarModel alloc] initWithName:@"newAvatar" avatarPath:avatarPath];
参数解释:
1、Name 为 FUAvatarModel的名称
2、avatarPath 为 avatar.json的根路径,需要有一个标准的 avtar.json 在这个avatarPath下,才能生成一个 FUAvatar对象。
------------------------------- 使用 FUDataCenter进行创建 ------------------------------
FUDataCenter初始化后,使用下面的接口即可完成 FUAvatarModel 的创建
[[FUDataCenter shareCenter] loadAvatarsWithCompletion:^{}];
//加载兜底道具
NSArray *defaultPaths = [FUPathsHelper shareHelper].defaultPaths;
NSMutableArray *temp = [NSMutableArray array];
for (NSString *path in defaultPaths) {[temp addObject:[[FUPathsHelper shareHelper].assetsRootPath stringByAppendingPathComponent:path]];
}
[FUPathsHelper loadDefaultBundleWithPaths:[temp copy]];
// 把创建的场景添加到渲染中
[[FURenderKit shareRenderKit] addScene:self.scene completion:^(BOOL success) { if (success) {[FURenderKit shareRenderKit].currentScene = self.scene;
// 加载 Avatar的道具
[[FUResourceManager sharedManager] loadAvatarBaseItemsWithAvatarModel:self.avatarModel progress:^(NSString * _Nonnull progress) {} completion:^(NSError * _Nullable error) { if (!error) {// 添加 Avatar到场景中
[self.scene addAvatar:self.avatarModel.avatar];
}
}];
}];