精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

基于 Three.js 的 3D 模型加載優化

開發
作為一個3D的項目,從用戶打開頁面到最終模型的渲染需要經過多個流程,加載的時間也會比普通的H5項目要更長一些,從而造成大量的用戶流失。為了提升首屏加載的轉化率,需要盡可能的降低loading的時間。這里就分享一些我們在模型加載優化方面的心得。

一、前言

近段時間,我們使用three.js完成了vivo擬我形象的開發工作,大家可以在vivo賬號中擬制屬于自己的3D形象,也可以保存作為自己的頭像名片。


圖片

作為一個3D的項目,從用戶打開頁面到最終模型的渲染需要經過多個流程,加載的時間也會比普通的H5項目要更長一些。然而過長的等待時間會造成大量的用戶流失,這部分用戶沒有體驗到具體的功能就退出了頁面非常的遺憾,為了提升首屏加載的轉化率,需要盡可能的降低loading的時間。這里就分享一些我們在模型加載優化方面的心得。

二、模型加載的優化思路

想對加載進行優化,首先需要了解Three.js加載模型時的工作流程,并分析出其中耗時的部分進行針對性的處理。

在Three.js中,模型從加載到渲染需要經過模型下載、序列化模型、網格解析、寫入緩存和渲染模型幾個步驟,經過分析發現主要的瓶頸在網絡請求和網格解析兩個部分,所以整體的優化思路就是減少網絡請求資源的體積和提升網格的解析速度。


圖片

三、縮小模型的體積

3.1 常見的解決方案

目前主流的壓縮方案是使用google的draco庫對模型進行壓縮。draco的原理類似降低圖片的分辨率,通過減少模型的頂點數起到壓縮體積的效果。

也就是說draco是一種有損的壓縮方式,這樣就會帶來諸多的問題

  • 可能在網格連接處存在畫面模型撕裂。
  • 僅僅壓縮頂點只能將50.7mb的人物模型壓縮到49.5,壓縮效果有限。
  • draco前臺decoder在h5中的解算效率不理想,可能節省下來的網絡請求時間還沒有增加的數據解算的時間長。

基于以上幾點,最終我們放棄了draco的壓縮方案。

圖片

使用draco壓縮之后導致的模型撕裂

3.2 進階方案

高端的食材,往往只需要采用最樸素的烹飪方式。經過一些嘗試,我們發現將glb模型直接打成zip包可以明顯的提升模型的壓縮效率。50.7mb的人物模型可以壓縮到11.6mb。

圖片

圖片

但是Three.js提供的gltfloader是不能直接加載zip文件的,于是我們需要對其進行功能擴展。

Three.js加載gltf模型是首先通過fetch請求獲取到模型的arraybuffer,再對arraybuffer進行格式化。所以我們只需要在模型格式化之前攔截zip文件進行解壓縮即可。

圖片

于是我們使用jszip,資源加載完成后判斷資源的后綴,如果是zip文件就使用jszip進行解壓縮。

圖片

看起來還不錯,在保證視覺效果的同時又可以大幅壓縮模型的體積,那么有沒有可能做的再極致一些呢?

既然是針對性的場景,我們就可以從解壓縮的解算開始入手,于是我們使用rust寫了一個解壓工具,將其轉換成wasm包代替jszip,可以發現wasm的冷啟動性能確實要比js好很多,可以將解壓的時長從幾十到100毫秒降低到1毫秒左右,適合體積比較小的解壓縮場景。

圖片

圖片

四、文件的加解密

作為一個h5項目,獲取到靜態資源的鏈接并不困難,所以需要對模型文件進行一點點加密,讓破解起來沒有那么容易。同時解密的過程不能顯著延長資源加載的時間,影響用戶體驗。

基于數據解密的效率,我們可以截取文件buffer的一部分進行加密,而不對全文進行加密,同時將數據解密的過程也放到wasm中,提升解算效率的同時也增強了安全性。采用對稱加密的算法,同一個方法既可以用于加密,也可以用于解密。

按照模型加載的流程,解密的操作應該放在解壓縮之后,序列化之前,那么如何判斷數據是否進行了加密呢,可以通過判斷解壓數據decode以后是否有glTF的標記來確定。

圖片

如下圖,數據解密的耗時幾乎可以忽略不計,可以放心使用。

圖片


五、如何優化首幀的渲染體驗

優化完模型的加載,繼續來優化模型的渲染,在加載一個體積比較大的模型的時候經常會有頁面的卡死的情況出現,需要從兩方面治標也治本的進行優化:

  1. 通過減少頁面的卡停來優化用戶的感官體驗。
  2. 通過縮短首屏渲染的時長來解決根本問題。

5.1 減少頁面的卡停

在模型加載的時候通常會設置一個loading頁面來展示當前的加載進度,同時loading頁也可以播放一些動效或者互動來讓用戶等待的過程中不那么無聊。但是由于js單線程的特性,在進行首幀渲染的時候任何事件都不無法響應,會讓用戶誤以為頁面卡死,造成流失。

為了解決這個問題我們可以使用分步加載的方案,在模型加載的時候先遍歷第一層網格,將所有的網格隱藏起來,然后循環這些網格,每展示一個就執行一次render方法,這樣就可以把一個大的卡頓分散成多個小的,不至于影響前臺的體驗。

圖片

但是這樣的方法只能讓用戶感受起來沒那么卡頓,該等的時間一點沒少,過長的等待時間還是會讓用戶等的不耐煩,有沒有其他解決卡頓的方式呢?這就要從Three.js的渲染邏輯來進行分析了。

5.2 縮短首幀渲染的時間

由于我們做的是一個捏臉的項目,通過形態鍵來實現不同的臉型,表情等表現。在Three.js中存儲形態鍵信息的屬性在geometry.morphAttributes中,形態鍵存放的頂點信息總數與網格的頂點數相同,這就意味著同一個模型有多少個形態鍵,就額外需要加載多少套網格的頂點信息。在首次渲染的時候Three.js會遍歷每一個形態鍵的頂點信息,生成一個float32array,而這個巨量的遍歷操作就是造成卡頓的根本原因。

圖片

如何解決這個循環黑洞呢,我想到了steamdeck上的著色器預緩存,通過將著色器編譯的結果進行持久化,縮短頁面加載的時間。那么我們只要將每一個網格的形態鍵編譯的結果儲存起來就行了。

/three/src/renderers/webgl/WebGLMorphtargets.js

圖片

通過這種方式成功的將首幀渲染的時間從7秒縮短到0.6秒,大幅的提升了用戶的體驗。

講到這里,大家可能發現了,雖然首幀渲染的時長縮短了,但是形態鍵緩存的資源有80mb,壓縮后也有15mb,這塊的時長可不可以繼續壓榨呢,先看一下資源的處理流程,處理解壓后的文件需要將文件解析成JSON字符串,然后在轉換成float32array,這里耗時最大的點就是JSON.parse的操作,有沒有更好的方式處理呢,可以將這部分內容丟到rust里面,平均可以減少0.5s的時間。

圖片

圖片

六、總結與規劃

以上就是我們的優化流程,將glb模型文件壓縮成zip包,配合前臺wasm解壓工具降低模型的加載時間。通過增加形態鍵緩存的方式來降低首幀渲染的時長。

圖片

經過這一系列的操作,成功的將模型的體積從50mb壓縮到11mb,增加了額外80mb的形態鍵緩存也可以使用zip壓縮到15mb,處理后頁面的首次加載時長從15秒縮短到5秒,算是一個不小的提升。

然而,我們也意識到還有進一步的優化空間,譬如目前雖然有了形態鍵緩存,但是原模型中的形態鍵信息還存儲在模型中,這一部分的信息不需要被threejs讀取,卻很大的占用了模型的體積,后續可以開發一個gltf-pipeline類似的處理工具,將形態鍵緩存直接整合進gltf模型中,同時把整個模型的序列化工作放到wasm中處理,降低模型的尺寸的同時也可以減少模型解析的時長。期待為大家帶來更好的使用體驗。


責任編輯:龐桂玉 來源: vivo互聯網技術
相關推薦

2019-11-29 09:30:37

Three.js3D前端

2022-01-16 19:23:25

Three.js粒子動畫群星送福

2016-06-01 09:19:08

開發3D游戲

2021-11-27 10:42:01

Three.js3D可視化AudioContex

2021-11-23 22:50:14

.js 3D幾何體

2025-03-13 10:54:18

2023-07-13 10:48:22

web 3DThree.jsBlender

2025-06-30 09:15:47

2023-08-04 09:56:15

2021-04-21 09:20:15

three.js3d前端

2025-09-19 09:29:53

Web 3D引擎Three.jsGalacean

2023-08-18 08:00:00

游戲開發3D模型

2024-02-26 00:00:00

前端工具Space.js

2022-07-15 13:09:33

Three.js前端

2017-05-08 11:41:37

WebGLThree.js

2021-11-22 06:14:45

Three.js3D 渲染花瓣雨

2023-09-01 09:30:22

Three.js3D 圖形庫

2010-01-04 15:17:52

Ubuntu啟動

2024-12-10 09:40:00

AI3D模型

2021-04-23 16:40:49

Three.js前端代碼
點贊
收藏

51CTO技術棧公眾號

一区二区三区在线视频111| 亚洲一区视频| 激情五月激情综合网| 欧美一级夜夜爽| 国产不卡av在线免费观看| 男女视频在线看| 中文字幕av久久爽| 牛牛影视久久网| 中文字幕一区在线| 国产精品99导航| 又嫩又硬又黄又爽的视频| 色吧亚洲日本| 国产不卡在线一区| 久久久精品免费视频| www.涩涩涩| 欧美日韩经典丝袜| 色偷偷综合网| 欧洲人成人精品| 欧美一进一出视频| 五月天综合激情| 亚洲一区二区电影| 亚洲另类一区二区| 成人免费激情视频| 日本爱爱小视频| 成人国产一区| 国产偷国产偷亚洲高清人白洁| 97久久精品人人澡人人爽缅北| 韩国三级在线播放| 四虎亚洲成人| 国产高清精品在线| 欧美成人sm免费视频| 亚洲天堂av一区二区三区| 欧美日韩在线看片| 激情深爱一区二区| 国产精品444| 国产在线视频99| 国产欧美三级电影| 五月天视频一区| 精品欧美日韩在线| 亚洲自拍一区在线观看| 国产成人久久| 欧美私模裸体表演在线观看| 亚洲欧美日韩精品综合在线观看| 亚洲午夜无码久久久久| 日本道不卡免费一区| 欧美精品 日韩| 日本精品福利视频| 欧美一级性视频| 欧美资源在线| 最近2019年中文视频免费在线观看| 中文字幕免费高清在线| 在线观看午夜av| eeuss国产一区二区三区| 国产91精品青草社区| www..com.cn蕾丝视频在线观看免费版| 91成人在线| 欧美日韩一区二区三区| 色一情一乱一伦一区二区三区丨| 91久久精品国产91性色69| 欧美黄在线观看| 日韩电视剧免费观看网站| 国产欧美高清在线| 美女隐私在线观看| 国产精品欧美一级免费| 亚洲一区二区三区毛片| 精品国产乱码一区二区| 最新日韩av| 最近中文字幕mv在线一区二区三区四区| 久久精品综合视频| 曰本一区二区| 亚洲高清免费视频| 日韩免费电影一区二区| www.爱爱.com| 久久久成人网| 国产精品99久久久久久人| 日本中文字幕久久| 日本成人中文字幕在线视频| 九色91av视频| 91在线无精精品白丝| 精品国产91久久久久久浪潮蜜月| 51精品久久久久久久蜜臀| 成人免费毛片网| 在线视频中文字幕第一页| 夜夜嗨av一区二区三区网页 | 成年人在线观看| 精品亚洲porn| 91香蕉视频在线下载| 狠狠人妻久久久久久| 久久精品日产第一区二区| 国产精品私拍pans大尺度在线| 久久久久久久久久久久久久久久久| 欧美人与物videos另类xxxxx| 欧美成人一区二区| 天天色天天综合网| 成人自拍视频网| 欧美日韩日本国产| 亚洲免费一级视频| 97久久综合区小说区图片区 | 日b视频免费观看| 国产高清一区在线观看| 99视频有精品| 亚洲精品一区二区三区四区五区 | 久久成人在线视频| 在线视频第一页| 永久亚洲成a人片777777| 国产一区二区激情| 影音先锋人妻啪啪av资源网站| 国产精品日韩精品在线播放| 欧美色成人综合| 成人亚洲视频在线观看| 乡村艳史在线观看| 亚洲国产视频网站| 国产精品亚洲二区在线观看| 91麻豆精品| 日韩精品极品视频| 国产高潮国产高潮久久久91| 91精品国产调教在线观看| 中文字幕精品一区久久久久| 熟女俱乐部一区二区| 亚洲人成亚洲精品| 精品亚洲一区二区三区在线播放| 少妇伦子伦精品无吗| 日本少妇精品亚洲第一区| 欧美一区二区三区免费在线看| 国产精品久久不卡| 一区二区三区中文| 国产精品高潮在线| 中文字幕在线观看免费| 成人深夜福利app| 国产欧美在线一区二区| 深爱五月激情五月| 不卡的av在线播放| 精品国产电影| 在线欧美三级| 欧美日韩一级大片网址| 37p粉嫩大胆色噜噜噜| 神马影视一区二区| 午夜精品久久久久久久久久久久| 99国产精品99| 成人动漫一区二区| 9色视频在线观看| 福利在线导航136| 欧美日韩精品国产| 91人妻一区二区| 一区二区美女| 亚洲91精品在线| 亚洲美女性生活| 久久综合视频网| 亚洲视频欧美在线| 色呦呦在线视频| 91.com视频| www.4hu95.com四虎| 日本高清免费电影一区| 欧美在线视频一区二区| 国产一区二区视频免费| 免费成人在线视频观看| 91在线视频精品| 亚州视频一区二区三区| 一区免费观看视频| 国产精品va无码一区二区| 超碰97久久国产精品牛牛| 欧美激情xxxx性bbbb| 国产农村妇女aaaaa视频| 蜜桃av一区二区在线观看| 涩涩涩999| 国产精品久久久久久吹潮| 在线观看精品自拍私拍| 婷婷在线精品视频| 国产精品一二三四五| 精品国产乱码久久久久久丨区2区 精品国产乱码久久久久久蜜柚 | 手机福利小视频在线播放| 国产日韩欧美电影| 欧美日韩亚洲自拍| 婷婷精品进入| 97久久国产精品| 日本a一级在线免费播放| 亚洲青青青在线视频| 国产日产欧美视频| 国产亚洲一区二区三区啪| 国产精品久久久av久久久| 91社区在线观看| 天天色天天爱天天射综合| 在线观看国产网站| 美国一区二区三区在线播放 | 色综合久久久久无码专区| 久草综合在线| 日韩av一卡二卡| 日本中文字幕久久| 国产精品久久久久久妇女6080| 天堂av手机在线| 亚洲国产精品第一区二区三区| 欧美黄色直播| 成人性生交大片免费看在线播放| 亚洲精品短视频| 黄色录像免费观看| 丁香天五香天堂综合| av免费在线播放网站| 天天色综合色| 久久久久久久久久久久久9999| 色黄网站在线观看| 日韩精品在线影院| 国产毛片在线视频| 狠狠干狠狠久久| 黄色片子在线观看| 精品一区二区三区免费毛片爱 | 亚洲一区二区三区四区五区xx| 激情av综合| 色与欲影视天天看综合网| 少妇精品视频一区二区| 欧美日韩的一区二区| 亚洲天堂最新地址| 久久精品久久久精品美女| 老子影院午夜伦不卡大全| 亚洲日本va午夜在线电影| 日韩美女视频在线观看| 男人的天堂在线| 日韩欧美中文在线| 国产精品高清无码在线观看| 老汉av免费一区二区三区| 久久久久久久久久久99| 牛牛精品成人免费视频| 亚洲va欧美va国产综合久久| 欧美三级网址| 中文字幕国产亚洲2019| 亚洲av成人无码久久精品老人| 777精品伊人久久久久大香线蕉| 日韩在线视频免费播放| 一区二区三区四区视频精品免费 | 欧美成人bangbros| 伊人精品一区二区三区| 福利微拍一区二区| 国产在线视频卡一卡二| 一区二区在线观看免费视频播放| 貂蝉被到爽流白浆在线观看| 久久久久久久久一| 天堂中文视频在线| 亚洲免费中文| 妞干网在线观看视频| 亚洲黄页网站| 国产美女在线精品免费观看| 日本免费精品| 91pron在线| 国产999精品在线观看| 国产欧美一区二区| 18av在线视频| 久久九九精品99国产精品| 午夜看片在线免费| 日韩欧美激情四射| 97久久久久久久| 亚洲成av人片www| 久久精品无码一区| 国内欧美视频一区二区| 国产精品区在线| 蜜臀av性久久久久av蜜臀妖精 | 精品极品在线| 亚洲精品永久免费精品| 色窝窝无码一区二区三区成人网站| 精品嫩草影院久久| 黄色av免费观看| 亚洲精品一线二线三线| 国内av在线播放| 欧美亚洲丝袜传媒另类| 伊人免费在线观看| 欧美日韩国产精品成人| 国产高清免费av| 日韩人在线观看| 视频这里只有精品| 亚洲精品美腿丝袜| 久草视频手机在线观看| 久久精品亚洲精品国产欧美| xxx在线播放| 欧美激情一二三区| 荫蒂被男人添免费视频| 久久99国产精品免费网站| 午夜一区二区视频| 国产一区二区免费在线| 能看的毛片网站| 日韩高清电影一区| 成人在线播放网址| 一区二区三区国产在线| 可以在线看黄的网站| 国内精品久久久久久久97牛牛| 午夜精品一区二区三区在线观看 | 欧美日韩久久久| 999久久久久| 亚洲成av人影院在线观看| 国产一区二区三区中文字幕| 欧美一区二区三区免费在线看| 少妇精品视频一区二区| 在线播放日韩av| 亚洲卡一卡二| 日韩美女在线看| 国产精品99久久免费| 九九九九久久久久| 色综合咪咪久久网| xxxx18hd亚洲hd捆绑| 日韩成人av影视| 精品人妻人人做人人爽夜夜爽| 91免费观看国产| 在线天堂www在线国语对白| 久久精品视频免费| www.97视频| 欧美日韩一区二区在线| 国产男男gay网站| 精品国产成人在线影院| lutube成人福利在线观看| 欧美超级免费视 在线| 欧美自拍电影| av免费观看久久| 中文字幕av一区二区三区四区| 欧美日韩一区二区视频在线| 综合久久精品| 日本美女高潮视频| 成人国产精品免费| 麻豆精品国产免费| 91精品1区2区| 国产女优在线播放| 精品成人一区二区三区| 在线观看av黄网站永久| 欧美怡春院一区二区三区| 国产电影一区| 天堂社区 天堂综合网 天堂资源最新版 | 超碰公开在线| 欧美成人sm免费视频| 精品亚洲美女网站| 国产精品白嫩初高中害羞小美女| 成人免费直播在线| av不卡在线免费观看| 羞羞答答成人影院www| 人妻无码视频一区二区三区| 成人毛片在线观看| 538精品在线观看| 亚洲一区二区三区中文字幕在线 | 亚洲在线视频一区| 夜夜爽8888| 欧美高清激情brazzers| 蜜桃视频在线免费| 91成人精品网站| 欧美123区| 欧美第一黄网| 夜夜夜久久久| 精品一区二区三区四区五区六区| 91原创在线视频| 丁香激情五月少妇| 日韩欧美中文在线| 精品av中文字幕在线毛片| 日韩中文字幕视频在线| 青青草原av在线| 亚洲伊人久久综合| 女生裸体视频一区二区三区| 911福利视频| 中文字幕永久在线不卡| 11024精品一区二区三区日韩| 色偷偷噜噜噜亚洲男人| 欧美一级做a| 国产精品久久久久免费| 国产成人调教视频在线观看| 欧美亚洲另类色图| 久久这里只有精品首页| 91午夜精品亚洲一区二区三区| 亚洲精品一二区| 666av成人影院在线观看| 亚洲二区自拍| 久久99久久99| 免费在线观看黄视频| 亚洲精品一区二区三区香蕉| 日韩激情电影免费看| 日本不卡一区| 麻豆成人免费电影| 印度午夜性春猛xxx交| 欧美xxxxxxxxx| 女厕盗摄一区二区三区| 欧美在线播放一区| 麻豆91在线播放免费| 欧美老熟妇一区二区三区| 精品第一国产综合精品aⅴ| 日本免费一区二区六区| 日韩影视精品| 国产一区二区免费看| 亚洲欧美在线观看视频| 欧美一区二区日韩| 91桃色在线观看| 91中文字幕一区| 一区在线播放| 国产又粗又长又爽又黄的视频| 亚洲精品一二三| 午夜一区在线观看| 国产精品丝袜白浆摸在线| 牛牛国产精品| 中国美女乱淫免费看视频| 欧美日韩美少妇| 国产蜜臀一区二区打屁股调教| 欧美成人在线免费观看| 亚洲美女啪啪| 日本成人午夜影院| 日韩一本二本av| 精品欧美色视频网站在线观看| 国产精品大陆在线观看| 欧美一区二区三区免费看| 国产精品三级在线观看无码|