首页
/
每日頭條
/
生活
/
騰訊什麼部門研發遊戲軟件
騰訊什麼部門研發遊戲軟件
更新时间:2024-05-01 17:51:11

2020年開始,突如其來的疫情讓線上生活形式飛速發展,短視頻平台成了廣大網民休閑娛樂、學習技能、分享生活的重要途徑。

根據CNNIC發布第48次《中國互聯網絡發展狀況統計報告》顯示,截至 2021 年 6 月,我國網絡視頻用戶規模達 9.44 億,其中短視頻用戶規模為 8.88 億,占網民整體的 87.8%,人均單日使用時長為 125 分鐘。

騰訊什麼部門研發遊戲軟件(騰訊研發出新招)1

在日益壯大的短視頻用戶基數下,短視頻平台為了吸引更多流量,動畫設計師和開發需要不斷高效各類創意的特效,以滿足用戶多元的内容需求。

動畫是影響用戶交互很重要的一環,現在各平台實現動畫很少會采用原生代碼實現,那樣開發成本太高,周期太長。目前業界常用的動畫工作流解決方案有Lottie和SVGA,都可以将Adobe After Effects(簡稱AE)制作的動畫導出成一個文件,在終端APP中加載渲染使用,在一定程度上提升了動畫開發上線的效率。

基于以上背景,再給大家推薦一款騰訊研發的優秀動畫制作組件:開源動畫渲染庫PAG。

l 一、什麼是PAG

官方定義:PAG(Portable Animated Graphics) 是一套完整的動畫工作流。提供從AE導出插件,到桌面預覽工具PAGViewer,再到各端的跨平台渲染 SDK。

下圖為PAG工作流示意,流程類似Lottie,設計師使用AE設計好動畫以後,通過PAGExporter插件讀取AE工程文件,根據具體需求選擇矢量導出、BMP預合成、混合導出方式中的一種導出一個PAG二進制文件,客戶端對該PAG二進制文件進行解碼、渲染,各端共享一套C 實現,平台端隻做接口封裝。

騰訊什麼部門研發遊戲軟件(騰訊研發出新招)2

l 二、PAG的優勢

對比市面上動畫組件SVGA和Lottie,PAG具有以下幾個特性:

l 動畫文件小,解碼速度快

l 可實現所有的AE效果

l 配套工具完善,支持實時預覽效果

l 運行時可保留動畫效果并實時編輯文字或内容

1、動畫文件小,解碼速度快

PAG 方案從設計之初就把文件格式擺在了最重要的位置,目标是打造成為 AE 動畫内容的标準承載格式。

相比 Lottie 方案采用的 JSON 數據結構,PAG 借鑒了經曆數十年行業考驗的 SWF 開源文件格式,采用了更加嚴謹的二進制數據結構。天然的具有壓縮率更高, 解碼速度更快,以及可單文件交付(不外挂圖片)的優勢。

另外在文件大小上,PAG 通過利用動畫文件本身的特點,獲得了極高的壓縮率。通過跳過大量默認值的存儲,使用比特位來緊湊存儲,相同動畫内容可以比同類型方案平均減少50%左右的文件大小。在性能方面,PAG 的實時渲染性能平均可以達到 Lottie 的 1.5 到 2.5 倍左右。

騰訊什麼部門研發遊戲軟件(騰訊研發出新招)3

2、全AE特性支持

Lottie 僅支持矢量的導出方式,但矢量方式主動隻能實現 AE 特性的一個較小子集。PAG

不僅在矢量導出方式上支持更多的 AE 特性,還引入了視頻序列幀結合矢量的混合導出能

,實現支持所有 AE 特性的同時,又能保持動畫運行時的可編輯性

3、配套工具完善,支持實時預覽效果

不同于Lottie、SVGA,PAG關于動畫的渲染繪制是在C 層實現的,通過自研的2D圖形渲染庫,不依賴平台端渲染接口,可以實現各平台的渲染一緻性

桌面預覽工具PAGViewer确保了渲染結果跟移動端完全一緻,這樣設計師可以直觀地看到移動端的展示效果,而不需要上線來回确認。同時提供性能檢測面闆,幫助開發工程師根據素材量化的性能指标進行優化。

騰訊什麼部門研發遊戲軟件(騰訊研發出新招)4

l 三、PAG的技術能力詳解

接着介紹下PAG優勢對應的技術解決方案:

1、 BMP預合成

為了實現AE特性的全面支持,PAG采用了 AE的SDK 截圖文件導出的形式,這樣可以導出任意AE效果,但也有兩個顯著缺點:1、導出文件過大;2、圖片不可編輯

Ø 文件大問題解決方案

針對截圖後文件過大的問題,PAG組件通過擴展視頻格式,将原圖片序列幀壓縮到近百分之一的大小,再通過支持透明通道,如下圖所示,左邊為RGAB的視頻内容,右邊為Alpha通道的灰度圖,最終渲染的時候再合并回RGBA的圖片,從而實現對透明通道的支持。渲染的過程中,由于啟用了硬件加速解碼,可以直接得到一個YUV的紋理。而且為了避免紋理在CPU和GPU之間來回拷貝,自定義了Shader腳本,利用硬件加速在一次繪制過程中,同時完成YUV轉換和Alpha通道合并。平均提高了10%的渲染性能。

騰訊什麼部門研發遊戲軟件(騰訊研發出新招)5

Ø 圖片編輯問題解決方案

針對BMP預合成無法編輯的特點,PAG将BMP預合成支持的粒度由文件延伸到合成,支持矢量和BMP預合成混合導出,從而實現了支持所有的AE特性又能保持運行時的可編輯性。

2、 圖層編輯

在智能模闆時代,如一鍵出片、王者戰報,模闆不再是單個PAG文件,而是由多個PAG文件随機組合而成,根據業務需求去控制組合的規則。由此PAG引入了圖層渲染數的編輯架構,不僅支持文本和占位圖比編輯,還支持圖層級别的編輯。

如下圖,一個文件就是一棵渲染樹,支持圖層級别的任意修改位置甚至增删圖層,也支持将其他PAG文件添加到這棵渲染樹中作為子樹。在時間軸的組合上,PAG具有時間伸縮的能力,包含循環,變速,定格等多種自适應模式。每個圖層又提供了起始時間的調整能力,能夠自由設置在時間軸上的相對位置。

騰訊什麼部門研發遊戲軟件(騰訊研發出新招)6

3、 整體視頻渲染

Lottie的動畫方案之所以無法應用在視頻合成中,主要是因為依賴了平台相關的UI框架,開發成本低,,但也導緻了它隻能渲染到UI視圖上,并且無法在子線程中使用。

騰訊什麼部門研發遊戲軟件(騰訊研發出新招)7

為了支持離屏渲染繪制、子線程渲染,PAG直接基于C 跨平台架構研發,一直從最底層的動畫插值器,還原到上層的時間軸和圖層渲染樹系統,雖然開發成本較高,但是所有端共享同一套代碼,天然的能保障跨端渲染一緻性。最重要的是能直接渲染到離屏紋理上,并完美支持子線程動畫渲染。

4、 服務端渲染

前面提到,PAG的渲染是基于C 層實現,平台側僅提供渲染環境和接口的封裝。在實際使用中,出于成本的考慮,大部分的服務器仍然是CPU的服務器,GPU的服務器大多應用于AI計算等場景。

AE中的部分特效如高斯模糊、邊角定位等都是通過OpenGL實現的,使用skia的CPU渲染模式無法渲染;除了Linux端,其它平台都可以很好的使用GPU渲染進行加速,如果服務端采用CPU渲染模式,在代碼層面需要做一系列的兼容處理。為了能兼顧渲染性能和使用成本,PAG通過CPU模拟GPU的方式來提供OpenGL渲染環境,并且通過主流Mesa和Swiftshader兩種方案的性能對比,采用了Swiftshader的渲染方案。

文件名

總幀數

CPU渲染

Mesa

swiftshader

單幀平均耗時(us)

單幀平均耗時(us)

Mesa/CPU

單幀平均耗時(us)

swiftshader/CPU

replacement.pag

60

2585

27630

10.689

13702

5.301

particle_video.pag

240

9867

47833

4.848

17622

1.786

template.pag

298

50432

300672

5.962

64142

1.272

shanzi_video.pag

399

63150

388089

6.146

78097

1.237

audio_pre.pag

500

30296

489803

16.167

37075

1.224

GPU渲染方面,外部隻需要提供EGL環境,就可以完成GPU渲染。

l 四、總結

PAG提供了一套簡化并完善的動畫工作流,在縮小文件體積的情況下,仍然支持所有 AE 特性,并保留了動畫運行可編輯的靈活性。僅需接入一次,設計師就可以快速上手使用所有高效組件,不再因研發成本削弱呈現效果。

目前,PAG方案已經廣泛應用于騰訊公司内外幾十款産品中,涵蓋了衆多的國民級應用,如微信、QQ、騰訊視頻、QQ音樂、王者榮耀、QQ空間等。

騰訊什麼部門研發遊戲軟件(騰訊研發出新招)8

并且騰訊PAG在1月14日正式開源,現在可以介入SDK使用,設計師和開發小哥哥們可以妥妥的用起來了!

在官網就可以下載體驗,附上官網鍊接:https://pag.io

附錄——簡要使用介紹

l 如何安裝PAG :

目前PAG支持mac(macOS 10.9以上)和windows操作系統,安裝和使用都很簡單,以mac系統為例,首先需要安裝PAGViewer,選擇圖形化安裝即可;然後打開 PAGViewer,PAGViewer 将自動檢測是否需要安裝/更新 AE 導出插件,按提示安裝即可。也可查看使用鍊接:https://pag.io/docs/install.html

騰訊什麼部門研發遊戲軟件(騰訊研發出新招)9

接着就可以安裝AE導出插件

騰訊什麼部門研發遊戲軟件(騰訊研發出新招)10

l 如何導出PAG文件?

a.導出全矢量預合成的PAG文件

點擊選中需要導出的合成(Composition),然後點擊菜單“文件” -> “導出” -> “PAG File...”,選擇要保存的路徑即可導出。導出成功後雙擊導出的PAG文件可以直接預覽動畫。

騰訊什麼部門研發遊戲軟件(騰訊研發出新招)11

b.導出全BMP預合成的PAG文件

将需要導出的合成(Compostion)修改為後綴為"_bmp"或"_BMP"的名字,标記總合成為「BMP預合成」,其他操作同上矢量導出模式。(注:BMP預合成後綴可以更改,詳見《插件選項配置面闆)》

c.導出矢量和BMP預合成混合的PAG文件

可将總合成(Composition)命名為不帶"_bmp"或"_BMP"後綴的名字,它所引用的部分子合成命名為帶"_bmp"或"_BMP"後綴的名字,然後按正常流程導出PAG文件即可。

總體來說,PAG的安裝和操作都十分簡單,無論是設計師和開發工程師都能快速上手。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
Copyright 2023-2024 - www.tftnews.com All Rights Reserved