Photo Sphere Viewer 構建720VR的技術實現(二)
繼上一篇《如何基于開源的Photo Sphere Viewer 框架開發360/720全景VR☈⊙☉℃℉❅?》介紹了基于Phone Sphere Viewer來實現720VR的開發☾☽❄☃,本文就整體的架構再做深入的解析⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ。
我們的實現主要是根據Phot Sphere Viewer的源碼和官方文檔實現ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,大家也可以參考官網的文檔☧☬☸✡♁✙♆。,、':∶;。
https://photo-sphere-viewer.js.org/api/classes/core.viewer
我們整體的720VR架構包括:一個后端編輯器①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,一個前端播放器⑰⑱⑲⑳⓪⓿❶❷❸❹❺,數據存儲的CMS系統⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ。
共三個大塊✵✶✷✸✹✺✻✼❄❅,實現了從后端的編輯到前端VR的播放功能♀☿☼☀☁☂☄。
VR后端編輯器
基于photo sphere viewer構建⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾,可以實現用戶自定的一些操作♦☜☞☝✍☚☛☟✌✽✾✿❁❃,允許用戶創建全景照片웃유ღ♋♂。
用戶可以上傳現有的全景照片或使用相機拍攝全景照片①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,并通過編輯器將它們轉換成符合 Photo Sphere Viewer 要求的格式㈠㈡㈢㈣㈤㈥㈦。編輯器通常包括一些工具㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,如全景拼接✵✶✷✸✹✺✻✼❄❅、圖像修復等❣❦❧♡۵,以確保生成的全景照片能夠在播放器中良好地顯示㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂。
在開發vr編輯工具中⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,由于我們的使在typescript項目中使用的Photo Sphere ViewerⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,因此在渲染以及雙向數據綁定方面沒有vue框架項目那么的方便㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,所以我們引入了lit-html庫來幫助構建Web組件和程序的模板渲染引擎♀☿☼☀☁☂☄。它采用了基于標記模板字符串的模板語法☈⊙☉℃℉❅,將動態數據和HTML標記無縫結合⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,實現了高性能的反應式更新⒜⒝⒞⒟⒠⒡⒢⒣⒤。lit-html 的核心理念是將模板和JavaScript代碼分開ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,使得開發者能夠更直觀地編寫模板⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,同時又能夠獲得高效的渲染性能☾☽❄☃。lit-html的語法簡單且直觀웃유ღ♋♂,易于學習ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,使可以更自由地使用JavaScript和HTML構建現代Web應用程序㈠㈡㈢㈣㈤㈥㈦。它作為Web組件的渲染引擎♦☜☞☝✍☚☛☟✌✽✾✿❁❃,為我們提供了一種靈活而高效的方式來創建可維護⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾、可擴展的前端應用㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂。

VR播放器
播放器是用于在網頁和手機上展示全景照片的 JavaScript 庫✺ϟ☇♤♧♡♢♠♣♥,通過將播放器嵌入到網頁中㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,用戶可以與全景照片進行交互㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,例如拖拽✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴、縮放❻❼❽❾❿⓫⓬⓭⓮⓯⓰、全屏顯示等✺ϟ☇♤♧♡♢♠♣♥。
播放器提供了一個交互式的全景瀏覽體驗㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,并通常支持在不同設備和瀏覽器上進行流暢的展示⒜⒝⒞⒟⒠⒡⒢⒣⒤。 通過將編輯器和播放器的分離允許用戶在不同的環境中使用編輯器來準備全景照片❣❦❧♡۵,然后使用播放器將其集成到網頁中以供觀眾查看①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯。這樣的分層設計提供了更大的靈活性☾☽❄☃,使用戶能夠更容易地定制和部署全景照片ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ。
此外ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,播放器可以實現離線播放ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,將VR的數據導出成JSON+圖片的格式ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,就是可以實現獨立部署ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,離線播放的功能ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,從而不依賴于網絡和在線服務器♦☜☞☝✍☚☛☟✌✽✾✿❁❃。
VR編輯器組件
后端的編輯器其實是基于組件的ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,不同的組件可以實現不同的功能⒜⒝⒞⒟⒠⒡⒢⒣⒤,比如嵌入熱點㈠㈡㈢㈣㈤㈥㈦、視頻웃유ღ♋♂、iframe等功能⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾。
我們主要實現很多組件功能ⓣⓤⓥⓦⓧⓨⓩ,組件主要是場景內和場景外웃유ღ♋♂,場景內的可以實現VR的透視角度㈠㈡㈢㈣㈤㈥㈦,場景外的主要是整個頁面的彈出⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾,不能實現透視角度㈠㈡㈢㈣㈤㈥㈦,主要的組件包括如下:
1. 場景切換❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,可以切換下一個場景
2. 場景內熱點:熱點圖片✵✶✷✸✹✺✻✼❄❅、熱點彈出文字
3. 場景內視頻:可以將視頻嵌入場景內⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,實現VR融合的效果
4. 場景內容圖片:可以將圖片貼入場景內☧☬☸✡♁✙♆。,、':∶;,實現VR融合效果
5. 場景內Iframe:通過可以將url嵌入場景內
6. 場景外彈出:彈出一個圖片㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉、文字等
7. 場景外Iframe:彈出一個場景外的Iframe頁面
CMS部分
我們可以將這些全景圖片ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ、配置信息①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯、場景信息都存儲到CMS中☧☬☸✡♁✙♆。,、':∶;,圖片存儲到Drupal的media中ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,配置信息等等全部存儲到Drupal的JSON字段里面ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,然后前端的Sphere Viewer去讀取這些配置信息☾☽❄☃,進行渲染❻❼❽❾❿⓫⓬⓭⓮⓯⓰,后臺可以通過Drupal的Media管理☈⊙☉℃℉❅,進行圖片更新⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,以及JSON信息的修改♀☿☼☀☁☂☄,對全景信息進行更新ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,就可以實現動態的全景VR功能ⓚⓛⓜⓝⓞⓟⓠⓡⓢ。
具體的CMS存儲圖片☈⊙☉℃℉❅,可以參考這篇文章 CMS如何存儲和管理大量圖片/海量圖片♀☿☼☀☁☂☄?
整體的架構☾☽❄☃,可以參考下圖


結論
如果要定制Photo Sphere Viewer❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,那么就需要參考Photo Sphere Viewer的詳細文檔✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,以及相關的插件應用❣❦❧♡۵。
如果要快速實現一個簡單的VR場景✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,可以直接使用我們的VR構建工具⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾,生成在線的VR工具㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,也可以導出VR內容到本地❣❦❧♡۵,放到本地的服務器或者硬盤查閱☾☽❄☃。
歡迎訪問我們的全景VR工具 全景VR制作工具>>
原創不易웃유ღ♋♂,轉載請注明出處⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ!
更多資料♦☜☞☝✍☚☛☟✌✽✾✿❁❃,請參考我們之前的文章:
2. 如何基于開源的Photo Sphere Viewer 框架開發360/720全景VR(一)⒜⒝⒞⒟⒠⒡⒢⒣⒤?
3. 全景沉浸式Web VR制作中如何選擇全景相機 (2023版本)
5. WebVR哪個框架好ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ?WebVR開發框架的技術選型❣❦❧♡۵,360VR技術框架㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂。
7. CMS如何存儲和管理大量圖片/海量圖片⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓?
8⑰⑱⑲⑳⓪⓿❶❷❸❹❺、CMS+AI 落地應用之 Drupal CMS的RAG應用
9☈⊙☉℃℉❅、PHP開源 CMS Drupal 對接國產數據庫之達夢數據庫