亚洲中文字幕无码日韩精品,亚洲一区制服无码中字,亚洲精品第一国产综合精品99 ,一本大道中文日本香蕉

微立頂科技

新聞資訊

創(chuàng)新 服務 價值

  元宇宙場景技術實踐|實現(xiàn)“虛擬人”自由

發(fā)布日期:2023/1/29 16:11:37      瀏覽量:

元宇宙場景技術實踐|實現(xiàn)“虛擬人”自由

虛擬形象是虛擬世界的核心資產(chǎn),也是打造元宇宙社交的數(shù)字名片,從虛擬形象為切入點,ZEGO Avatar 基于強大的 AI 算法能力,可以為企業(yè)提供多元化風格虛擬形象制作及智能互動服務,助力企業(yè)打造虛擬形象數(shù)字資產(chǎn),創(chuàng)造多樣的玩法體驗,支持客戶以相對較低的門檻快速進入元宇宙賽道。

上期內容中我們介紹了元宇宙場景下的虛擬直播實踐流程,本期內容我們以 iOS 版本為例來講一講如何捏出千人千面的虛擬形象,助力開發(fā)者快速實現(xiàn)虛擬形象!

前提條件
在實現(xiàn)基本的 Avatar 功能之前,請確保:

已在項目中集成了 Avatar SDK,詳情請參考 集成 SDK;

已開啟攝像頭權限。

使用步驟
本節(jié)介紹如何使用 ZegoAvatar SDK 實現(xiàn)基本的圖像處理功能,API 調用時序如下圖:



1 申請鑒權
ZEGO Avatar 目前使用 在線鑒權 的方式獲取 License 授權文件。

1.1 開通 ZegoAvatar 權限

請先在 ZEGO 控制臺 創(chuàng)建項目,并申請有效的 AppID 和 AppSign,詳情請參考 控制臺 - 項目管理 中的“項目信息”。

請聯(lián)系 ZEGO 商務人員,提供自己項目的 Bundle Id,開通相關權限。

1.2 獲取參考代碼

請將從 下載 獲取到的示例源碼中的 LicenseHelper 文件夾中的代碼,拷貝到自己的項目下。



修改 ZegoAvatarConfig.h 文件,請使用已獲取的 AppID 和 AppSign 正確填寫,否則示例源碼無法正常運行。


在項目中,選擇 “TARGETS > Signing & Capabilities” 菜單,將 “Bundle Identifier” 設置為申請權限時所提供的 Bundle Id。



1.3 安裝依賴庫

打開終端,進入項目根目錄,執(zhí)行 pod ’YTKNetwork’引入依賴庫;

執(zhí)行 pod install 命令安裝依賴庫。

1.4 獲取 License

通過 ZGAvatarLicenseHelper 中的 requestLicense 接口,發(fā)起網(wǎng)絡請求,獲取鑒權 License 字符串。


2 初始化 AvatarService
2.1 初始化 AvatarService 之前,請先導入以下相關的頭文件,準備基礎工作。


2.2 導入頭文件后,調用 initWithConfig 接口,傳入之前獲取到的鑒權 License 字符串,初始化 AvatarService。


2.3 注冊 onStateChange 回調,接收初始化狀態(tài)的相關回調通知。


3 創(chuàng)建虛擬形象
注意:在創(chuàng)建虛擬人物形象時,為了簡化 Character(虛擬人物形象)的初始化、序列化、數(shù)據(jù)緩存、路徑拼接等功能的接入流程,ZEGO Avatar SDK 提供了 ZegoCharacterHelper 類(開源),幫助開發(fā)者快速創(chuàng)建人物虛擬形象,詳情請參考 ZegoCharacterHelper 使用說明。

初始化 AvatarService 后,通過創(chuàng)建 ZegoCharacterHelper 對象,傳入虛擬人物形象的外觀數(shù)據(jù)(捏臉、換裝、妝容等),設置視圖參數(shù)(寬、高、位置等),創(chuàng)建一個虛擬形象。


說明:如果用戶不使用默認形象,想要根據(jù)圖片自動生成定制化的虛擬形象,請參考 AI 捏臉。

Avatar 功能拓展
我們已經(jīng)知道,圖像由像素組成,而像素通過記錄色彩空間各分量呈現(xiàn)各種各樣的色彩。對于 RGB 色彩空間,其三個分量 R(紅)、G(綠)、B(藍),它們之間具有相關性,對于色彩的表示來說缺一不可。

虛擬形象創(chuàng)建完成后,可體驗 Avatar 相關功能:

1 表情隨動
ZEGO Avatar SDK 提供了表情隨動功能,基于領先的人臉關鍵點精準識別,結合面部、舌頭、眼球在內的 52 種基礎面部表情維度,實時捕獲用戶臉部的表情動作,在虛擬形象上進行實時的還原渲染??蓮V泛應用于社交互動、語聊直播等場景中。

開發(fā)者請參考以下步驟,實現(xiàn) “表情隨動” 功能:

1.1 開始表情檢測

開啟表情檢測前,請確認已開啟攝像頭權限;

開發(fā)者如果使用了 ZegoCharacterHelper,則無需再調用 IZegoCharacter 的任何相關接口。

搭建出基本的虛擬人物形象后,調用 startDetectExpression 接口,設置驅動模式為 ZegoExpressionDetectModeCamera,通過前置攝像頭,開始檢測表情;然后可以直接通過 ZegoCharacterHelper的 setExpression 接口設置表情,驅動當前虛擬人物的面部表情變化。

// 開始表情檢測
___weak typeof(self) weakSelf = self;
BOOL ret = [[[ZegoAvatarService sharedInstance] getInteractEngine] startDetectExpression:ZegoExpressionDetectModeCamera callback:^(ZegoExpression *expression) {
    // 驅動虛擬人物的臉部變化
    __strong typeof(self) strongSelf = weakSelf;
    [strongSelf.characterHelper setExpression: expression];
}];
1.2 停止表情檢測

將應用切換到后臺運行、或退出當前頁面時,需要調用 stopDetectExpression 接口,停止表情檢測。


2 語音驅動
ZEGO Avatar SDK 提供了語音驅動功能,通過聲音的聲波信息,實時驅動當前虛擬人物的嘴形變化,使得虛擬形象能夠和真人一樣進行自然的情緒表達。

可廣泛應用于社交互動、語聊直播等場景中。

開發(fā)者請參考以下步驟,實現(xiàn) “語音驅動” 功能:

2.1 開始語音檢測

開始語音檢測前,請確認已開啟麥克風權限;

開發(fā)者如果使用了 ZegoCharacterHelper,則無需再調用 IZegoCharacter 的任何相關接口。

搭建出基本的虛擬人物形象后,調用 startDetectExpression 接口,設置驅動模式為 ZegoExpressionDetectModeAudio,通過麥克風,開始檢測聲音波動;然后可以直接通過 ZegoCharacterHelper 的 setExpression 接口設置表情,驅動當前虛擬人物的嘴形變化。

// 開始語音檢測
___weak typeof(self) weakSelf = self;
BOOL ret = [[[ZegoAvatarService sharedInstance] getInteractEngine] startDetectExpression:ZegoExpressionDetectModeAudio callback:^(ZegoExpression *expression) {
    // 驅動虛擬人物的嘴形變化
    __strong typeof(self) strongSelf = weakSelf;
    [strongSelf.characterHelper setExpression: expression];
}];
2.2 自定義音頻采集

開發(fā)者可以調用 setCustomAudioDelegate 接口,設置自定義的音頻數(shù)據(jù)采集代理(需要繼承 AudioDataDelegate 實現(xiàn) onStart 和 onStop 方法)。采集到音頻數(shù)據(jù)后,調用 sendAudioData 接口,發(fā)送數(shù)據(jù)。

@interface ExpressAudioCaptureDelegate()
{
    BOOL _isRunning;
}
@end
 
@implementation ExpressAudioCaptureDelegate
 
- (void)onStart{
    // 啟動音頻采集
    _isRunning = YES;
}
 
- (void)onStop{
    // 停止音頻采集
    _isRunning = NO;
}
 
// 這是 Express 的自定義聲音的前處理回調, 把數(shù)據(jù)發(fā)送給 Avatar SDK
- (void)onProcessCapturedAudioData:(unsigned char * _Nonnull)data dataLength:(unsigned int)dataLength param:(ZegoAudioFrameParam *)param timestamp:(double)timestamp; {
    if(_isRunning){
        // data: pcm的原始數(shù)據(jù)
        // length: data的長度
        // dataType: data采集的位數(shù)  0表示16位,1表示8位
        // timeStamp: 時間戳, 從啟動采集到現(xiàn)在經(jīng)過的時間
        // sendAudioData 是父類方法, 數(shù)據(jù)透傳給 Avatar SDK, RTC 的數(shù)據(jù)是 8位的, dataType 是 1
        [super sendAudioData: (void*)data  size:dataLength dataType: 1 /* RTC 給的 8bit*/ timeStamp: [super getDurationMs]/*這個方法是父類的,直接調用*/];
    }
}
@end
2.3 停止語音檢測

將應用切換到后臺運行、或退出當前頁面時,需要調用 stopDetectExpression 接口,停止語音檢測。


3 手動捏臉
ZEGO Avatar SDK 提供了手動捏臉功能,支持用戶根據(jù)自己的審美偏好,對虛擬人物形象臉部的各個部位進行細微調節(jié)(如眼睛大小、鼻子寬窄、嘴巴大小等),融合成自定義的虛擬人物形象人臉,自由定義,打造獨一無二的專屬形象,可廣泛應用于各類游戲場景中。

開發(fā)者請參考以下步驟,實現(xiàn) “手動捏臉” 功能:

搭建出基本的虛擬人物形象后調用 setFaceShape 接口,傳入 faceshapeID(可調整的臉部維度,請參考下表)和 value(捏臉系數(shù))等參數(shù),設置或修改臉部相關位置的形狀。我們在 helper/ZegoCharacterHelper.h 中,同樣聲明了所有可支持調整的臉部維度 faceshapeID。


目前,支持調整的臉部維度可以點擊鏈接查看詳情:https://doc-zh.zego.im/article/14959

4 AI 捏臉
ZEGO Avatar SDK 提供了AI 捏臉功能,支持通過“攝像頭”或者“上傳圖像”的方式,結合對人臉進行海量分析和訓練后的 AI 算法,識別人臉特征,再以美術設計提供的虛擬形象人模為基礎,生成與真人高度還原的虛擬形象??蓮V泛應用于各類游戲場景中。

開發(fā)者請參考以下步驟,實現(xiàn) “AI 捏臉” 功能。

4.1 初始化 AvatarService

請參考 創(chuàng)建虛擬形象 文檔,獲取鑒權 License 文件;并傳入正確的 AIPath,初始化 AvatarService。

4.2 創(chuàng)建虛擬人物形象

準備需要用來創(chuàng)建虛擬人物形象的 UIImage 圖片。

推薦使用攝像頭拍攝圖片。
準備好圖片后,調用 detectFaceFeature 接口,傳入 UIImage,即可生成該圖片對應的虛擬人物形象。


如果 UIImage 中檢測不到人臉,調用 detectFaceFeature 接口會直接返回 nil。
4.3 設置捏臉數(shù)據(jù)

創(chuàng)建出虛擬人物形象后,調用 ZegoCharacterHelper 的 applyFaceFeature 接口,傳入 feature(設置的臉部維度,可設置的維度請參考下表),設置臉部相關位置的形狀。


目前,支持調整的臉部維度可以點擊鏈接查看詳情:https://doc-zh.zego.im/article/14972

5 妝容換裝
ZEGO Avatar SDK 提供了多種妝容配飾(如美瞳、口紅、眼鏡、胡子、服裝等)等美術素材,支持在虛擬形象上實時渲染、自然替換,打造符合自己品味的專屬形象。

開發(fā)者請參考以下步驟,實現(xiàn) “換妝容、換服裝” 功能。

目前,支持調整的維度有:眉毛、刺青、嘴唇、胡子、美瞳、眼鏡、耳機、耳飾、頭發(fā)、服裝等。具體的支持維度和資源類型,請咨詢 ZEGO 商務人員。

開發(fā)者如果使用了 ZegoCharacterHelper,則無需再調用 IZegoCharacter 的任何相關接口。雖然 IZegoCharacter 也有同名的 setPackage 接口,但請不要直接調用。如果跳過 ZegoCharacterHelper 直接調用 IZegoCharacter 的接口,ZegoCharacterHelper 層的緩存將不再可信。

搭建出基本的虛擬人物形象后:

如果開發(fā)者把 Packages 資源包做成動態(tài)下載,則需要在使用 Packages 前,調用 ZegoCharacterHelper 的 setExtendPackagesPath 接口設置 Packages 的下載目錄到參數(shù) downloadPath,以便資源索引。
downloadPath 需指到 Packages 文件夾,例如:/Documents/downloads/Package/。

調用 setPackage 接口,傳入 packageID,調整虛擬人物相關位置的外觀。
//確保換裝調用前已經(jīng)設置的外部 Packages 的目錄
[_characterHelper setExtendPackagesPath:downloadPath]
/** 調用換裝接口*/
NSString *packageID = @"earphone7";  //earphone7 是一款耳機資源的目錄名稱,使用 Zego 提供的 Pacakges 下的目錄名稱即可。
[_characterHelper setPackage:packageID];
demo 展示
元宇宙是人類對于未來社會的美好想象,而虛擬人則是人類對于未來“Better me”的美好寄托。ZEGO 即構科技為用戶定制個性化的虛擬形象,從技術底層為開發(fā)者賦能,與元宇宙生態(tài)里的所有成員一起,讓元宇宙的理想進程推進得再快、再穩(wěn)一些。

下方是ZEGO即構科技的 Avatar 展示!



ZEGOAvatar demo展示


  業(yè)務實施流程

需求調研 →

團隊組建和動員 →

數(shù)據(jù)初始化 →

調試完善 →

解決方案和選型 →

硬件網(wǎng)絡部署 →

系統(tǒng)部署試運行 →

系統(tǒng)正式上線 →

合作協(xié)議

系統(tǒng)開發(fā)/整合

制作文檔和員工培訓

售后服務

馬上咨詢: 如果您有業(yè)務方面的問題或者需求,歡迎您咨詢!我們帶來的不僅僅是技術,還有行業(yè)經(jīng)驗積累。
QQ: 39764417/308460098     Phone: 13 9800 1 9844 / 135 6887 9550     聯(lián)系人:石先生/雷先生