1、如何查看图形库及业务库版本


2022-03-24 16:51:30.515351+0800 FUPTAG[2005:770154] FUAvatarFactory 的版本为:1.2.0
[2022-03-24 16:51:30.531] [faceunity] [info] [CNamaSDK.cpp:267] fuSetup_Impl: sdk version 8.1.0_phy_3efcb51cb_84c733281
FaceUnity-Auth: [2022-01-15 14:57:53 +0800][f550dc6] fix memory leak in fuauth_setup_internal_check_package_bind
FaceUnity-Auth: dde real thread setup
FaceUnity-Auth: xnr0314_test_MOD2126479231-1048575_With_Avatar
2022-03-24 16:51:30.552840+0800 FUPTAG[2005:770154] Nama version : 8.1.0_phy_3efcb51cb_84c733281
2022-03-24 16:51:30.555068+0800 FUPTAG[2005:770352] <FURenderKit-info: FURenderKit 130>-: FURenderKit Version: 8.0.2, GitCommitId: (null)
[2022-03-24 16:51:30.605] [faceunity] [info] [ControllerManager.cpp:370] Init: called
[2022-03-24 16:51:30.605] [faceunity] [info] [ControllerGlobalParams.cpp:43] ControllerGlobalParams: controller version = 3efcb51cb

搜索控制台日志,即可看到。搜索关键字:

FUAvatarFactory 的版本为:

Nama version :

2、如何截出透明图片


1、当前渲染的 FUGLDisplayView 如下设置
glDisplayView.alphaEnable = YES;
 
2、实现下面这个代理方法
- (void)renderKitWillRenderFromRenderInput:(FURenderInput *)renderInput {
    renderInput.renderConfig.keepAlpha = YES;
}
3、当前的场景如下设置
 self.scene.background = nil;              // 清空背景道具
 self.scene.backgroundColor = nil; // 清空背景颜色
 self.scene.enableReflection = NO; // 关掉地面反射

3、遇到崩溃或者异常时

1、截图保存事发Xcode调用堆栈。

2、保存整个控制台输出的日志。

3、记录崩溃或者异常发生的场景或者操作流程。

后续我们分析问题的时候,需要上述三个线索。

4、关于是否可以先加载虚拟人后更新下载资源

当展示虚拟人需要的道具都存在时,此时可以先加载显示虚拟人,然后再走资源更新下载。


- (void)setupResourceCheck {
    __weak typeof(self) weakSelf = self;
    [[FUResourceManager sharedManager] checkIsEnableShowAvatarDirectlyWithSceneName:SceneName avatarId:AvatarId completion:^(NSError * _Nullable error, NSArray * _Nullable needDownloadItemPaths) {
        weakSelf.isShowAvatarDirectly = !error && !needDownloadItemPaths;
        if (weakSelf.isShowAvatarDirectly) {
            [weakSelf setupAvatarData];
        }
        
        [weakSelf setupAppResource];
    }];
}
 
当回调中没有错误 【!error】,且没有需要下载的道具【!needDownloadItemPaths】那么可以直接加载显示虚拟人。否则需要把要下载的道具下载完成后才能加载显示虚拟人。

5、不使用云平台资源管理模块,如何给Avatar加基础道具


FUResourceManager
/// 加载Avatar 的基础道具
/// @param avatarModel avatar模型
/// @param completion 结果回调
- (void)loadAvatarBaseItemsWithAvatarModel:(FUAvatarModel *)avatarModel completion:(FUResourceManageCompletion)completion;
- (void)loadAvatarBaseItemsWithAvatarModel:(FUAvatarModel *)avatarModel
                                  progress:(nullable FUResourceManageProgressBlock)progress
                                completion:(FUResourceManageCompletion)completion;
使用上面的接口就可以给Avatar加基础道具;
  
  
如果没有使用相芯云平台的,且所有道具都已在本地的,可以使用下面的方式给Avatar加基础道具:
  
------------------------------------------ 有兜底逻辑 --------------------------------------
1、配置 FUPathsHelper 的 defaultJsonPath;【defaultJsonPath 中的道具需要在本地存在】
 
2、加载兜底道具
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]];
 
3、Avatar 加载道具
if (!avatarModel.addedBaseComponents) {
  avatarModel loadWhenItemsAvailable];
}
 
------------------------------------------ 没有兜底逻辑 --------------------------------------
if (!avatarModel.addedBaseComponents) {
  NSArray *surfacePaths = [avatarModel avatarJsonItemPaths];
  FUEAResultModel *resultModel = [FUEAResultModel new];
  resultModel.addFileIds = surfacePaths;
  [avatarModel updateComponentsWithExcludeAssociateResultModel:resultModel];
  avatarModel.addedBaseComponents = YES;
}

6、增加动漫滤镜


FUComicFilter *filter = [FUComicFilter itemWithPath:[[NSBundle mainBundle].bundlePath stringByAppendingPathComponent:@"fuzzytoonfilter.bundle"] name:@"fuzzytoonfilter"];
[FURenderKit shareRenderKit].comicFilter = filter;

7、使用UV动画

在渲染的每帧中给 FUAvatar对象设置uvAnimationDatas即可。


FUAvatar
 
/// UV 动画数据【数据需要为 int 类型】
@property (nonatomic, strong) NSArray <NSNumber *> *uvAnimationDatas;

 


< 上一页: 快速集成