3D主动立体播放器开发
主動立體播放的原理很簡單:產生左右眼畫面,配合晶閘眼鏡開閉左右眼,使左眼看到左眼畫面,右眼看到右眼畫面,通過人眼視覺差產生立體畫面。
這里面有一個重要的技術兼容點:主動立體眼鏡的同步信號與左右眼畫面產生機制之間的匹配。這就需要顯卡和顯示設備(顯示器或者投影儀等)廠家之間要協調兼容同步信號,可惜目前市場上的3D立體技術名目繁多,顯卡廠商和顯示設備廠商均推出自己的3D立體格式,導致市場混亂,限制了3D立體技術的發展。
在工程展示和3D仿真演示等領域通常需要使用多臺顯示設備進行融合播放、以及實時引擎渲染3D畫面的需求,市面上的顯卡和投影廠商配套的3D播放器均無法滿足要求,需要開發自己的立體播放器。
開發3D立體播放器,最主要的技術問題是如何產生左右眼畫面,且左右眼畫面的序列與3D眼鏡的左右眼畫面切換頻率完全一致,任何一幀畫面的缺失均會導致左右眼反轉,出現畫面跳躍和立體畫面反向問題。
為了避免左右畫面序列的延遲缺失,理想的狀態是由播放軟件同時制作左右眼畫面,輸出給顯卡或者顯示設備,由顯卡或者顯示設備硬件根據時鐘序列自主選擇顯示左右眼畫面。
查閱相關資料,NVIDIA 3D Vision和Quad Buffered OpenGL技術可以支持這種理想模式,而支持3D的顯示器和投影儀,不管3D菜單如何設置,均不會自主產生3D交錯畫面。
NVidia 3D Vision,按照資料介紹可以支持輸入顯卡左右眼畫面,通過特殊標記,顯卡可以自動產生左右眼序列幀。
但經過實際測試,NV RTX 系列和NV Quadro RTX系列顯卡無論在DirectX 9還是DirectX 10下均不支持這種3D播放模式。實際測試了一些3D播放器,其菜單中有NVIDIA 3D Vision選項,但實際選擇并沒有效果。而一些眼鏡廠家會說顯卡驅動需要安裝418版本,且顯示設備需要使用NVidia認證3D顯示器。實際問題可能是NVIDIA已經取消了對3D Vision的支持,最新的QUADRO系列顯卡也僅保留了3D SYNC信號接口,沒有完整的3D Vision支持了。
https://3g.163.com/digi/article/EAECSP4S001680P9.html
Quad Buffered OpenGL,該技術利用OpenGL立體后備緩存來支持左右眼立體畫面切換顯示。
OpenGL提供了GL_LEFT_BACK、GL_RIGHT_BACK、GL_LEFT_FRONT和GL_RIGHT_FRONT四個緩沖區,內建了對立體顯示的支持,但目前主流3D引擎對DirectX支持更好,而OpenGL的Quad Buffer也僅在高端型號才有提供。其應用前景并不是很好。
經測試,該播放技術在NVidia Quadro RTX 4000和RTX 8000顯卡上可以使用。
硬件采集卡方案選擇
排除以上顯卡產生立體畫面的方案,能選擇的只能通過軟件產生120Hz左右眼交錯序列幀畫面。軟件實現方式也比較簡單:1、打開顯示垂直同步功能;2、保證軟件產生120FPS的穩定幀率,每幀渲染后增加計數器,根據計數器奇偶選擇顯示左或右畫面。
如果不采用采集卡方案,需要3D渲染軟件直接產生120FPS穩定幀率,對于復雜場景演示來說,很難達到要求。實際使用時,可以配置兩臺電腦,一臺電腦同時渲染左右眼畫面,另一臺電腦通過采集卡采集左右畫面,通過軟件方式產生120FPS穩定的左右眼畫面序列幀。
3D SYNC信號
3D SYNC信號是通知主動立體眼鏡切換左右眼的一個信號,該信號與顯卡的刷新率一致,配合軟件產生的左右眼序列畫面,實現3D立體播放。(這里我們不講DLP Link技術,這是另一種光學切換3D畫面的信號,與3D SYNC信號功能類似)
3D SYNC信號可以由兩種設備產生:顯卡或者顯示設備(3D顯示器和3D投影儀)。
3D SYNC顯卡支持
由于NVIDIA已經取消對3D Vision支持,3D SYNC也已經在大部分顯卡上取消了,僅在Quadro系列專業顯卡上保留了一個3D SYNC引腳,需要配合一個3D SYNC子卡使用;在支持3D SYNC的顯卡驅動中(需要安裝特定版本),有一個3D顯示支持的選項需要打開,對于有些顯示設備,還需要選擇匹配的3D格式等等,另外,顯示器刷新率一定要設置為120Hz以上(120Hz刷新率并不是立體顯示的強制要求,但是是NVIDIA 3D Vision的強制要求),否則即使設置正確,也不會輸出3D SYNC信號,如果有多個顯示器,只要有一個不是120Hz刷新率的也會不輸出3D SYNC信號*(注意,實際工程環境中通常使用vnc類軟件遠程控制計算機,而有些vnc軟件是通過虛擬顯示設備實現遠程桌面的,會導致顯卡認為虛擬顯示設備不是120Hz刷新率)*。總之,用NVidia Quadro + 3D SYNC子卡的方式產生3D同步信號有很多坑,需要一個個測試。
3D SYNC投影支持
在一些支持3D顯示的投影機和顯示器上,有一個3D SYNC輸出接口,可以輸出3D SYNC信號。支持3D的顯示設備菜單里面通常有3D顯示支持的開關,需要打開,而菜單中的3D制式和格式選項,通常沒有什么作用。支持3D顯示的投影機和顯示器,輸出3D SYNC信號時并不強制要求120Hz刷新率,通常僅需打開3D選項即可,這是比顯卡產生3D SYNC靈活很多。
3D SYNC信號接口是一個3針的類似PS鼠標的圓形接口,可以提供給配套的主動立體眼鏡使用。通常,主動立體眼鏡系統配有一個無線信號發射器,可以發射紅外信號、無線射頻信號、或者藍牙信號等,用于眼鏡左右眼切換同步信號。無線信號發射器自身不會產生左右眼交換信號,只是接收顯卡或者3D顯示設備的3D SYNC信號進行廣播轉發。
至此,總結一些,一個完整的3D立體顯示系統需要以下技術支持:
1、一個產生3D SYNC信號的信號源,可以選擇顯卡,也可以選擇支持3D SYNC接口的立體顯示設備
2、一個廣播3D SYNC信號的無線發射器,可以選擇紅外信號,也可以選擇射頻或者藍牙等不易干擾的信號發射方式
3、配套無線信號發射器的主動立體眼鏡,通常無線信號發射器和立體眼鏡是配套一起銷售的,信號發射和接收通常有一套自己的私有協議,并沒有通用標準
4、一個產生左右交錯畫面序列的立體播放器
總結
以上是生活随笔為你收集整理的3D主动立体播放器开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【项目实战】Python基于Django
- 下一篇: 一堆密密麻麻的字,word怎么看字数?