下面的教程是我今天整理的資料,教你們一步步完成本身的3D立體遊戲,並向你們介紹一些3D成像的原理。
    理論上,每一個普通的非立體3d遊戲,均可以改成3D立體遊戲,看完這篇帖子,大家均可以把本身以前作過的3D遊戲改成立體遊戲,那效果。。。
   一直想嘗試用unity作3D立體遊戲,昨天終於入手了一臺3D顯示器,併成功模擬出3D信號,出現了3D效果:
    帶上眼鏡後的觀看效果不錯,我的感受比通常的3D電影的立體效果還要強。

    第一步:瞭解偏振式3D成像原理
    偏振式3D成像是根據人眼成像原理髮明的,人眼看到的景象呈現立體感,是因爲雙眼所觀察到的景象有略微的差異,由於瞳距(兩眼球之間的距離)致使觀察的物體的角度不一樣。
    所謂偏振成像就是將兩幅不一樣偏振態的圖像送到雙眼,每隻眼睛只容許看到其中一幅,咱們用unity製做3D遊戲,其實就是製做這兩幅圖像。或者說模擬3D信號。
 
    第二步:瞭解如今的硬件技術能幫咱們作什麼,咱們須要作什麼
    在3D顯示器出現以前,咱們要作3D立體遊戲,估計只能用兩臺投影儀來實現3D效果了,不過如今的3D液晶顯示器大多都是集成好一鍵轉3D功能,在這裏這個轉3D功能指的是自動識別左右半寬的信號(上下的就不考慮了,通常都是左右),並將其融合,轉換爲偏振的3D信號,並經過3D眼鏡觀看到3D效果。固然如今的3D顯示器常常會宣傳說一鍵2D轉3D功能,這個功能不是我剛纔說的融合,而是顯示器根據2D影像自動給加上景深,生成左右兩幅圖像,實際上是僞3D,試了一下,的確略微有些效果,不過效果然的不怎麼樣。。。咱們這裏仍是作真的3D立體吧。
    知道了顯示器可以幫咱們自動融合左右圖像後,咱們就只須要模擬出左右半寬的圖像就OK了
 
    第三步:如何用Unity3D模擬出3D信號
    這步纔是咱們要作的重點。要模擬出真實的3D立體影像,首先要知道人眼成像原理,上面第一步說了,由於咱們有兩隻眼睛,並分開必定距離(大約150px),這樣就出現了距離感。咱們都知道unity中的攝像機是模擬人的眼睛的,通常咱們在unity中觀察場景都是建立一個攝像機,固然就沒有立體感了,要模擬人的眼睛,就要建立兩個攝像機(好吧,廢話一大堆,其實我就是想說,請先建立兩個攝像機。。。)。
    把場景原本存在的主相機刪掉,把建立的兩個攝像機放在同一平面,分開很小的距離,角度調成同樣,注意不是往中間看,而是平視,人的雙眼也都是平視向前的,這個和焦距是兩個概念,別弄混了,相似於下面這樣:

    至於相距多少,這個視環境而定,兩個攝像機之間的距離相似於人眼之間的距離。咱們用自帶的第一人稱控制器來解釋這個距離。導入第一人稱控制,把這兩個攝像機拖到第一人稱控制器的攝像機下,做爲子物體,把第一人稱控制自帶的相機關掉(enabled=false),就是把camera組件對號去掉。把左右相機的位置改成這樣:
    左相機:

    右相機:

    對於第一人稱控制器的大小來講,這個0.06的距離夠用了,爲何說是夠用了,不是正好,是由於距離大點小點都是能夠的,距離越大,景深越大,看起來更清晰,好像是距離拉近了,不過給人觀看的感受更累了,這個很好理解,人的眼睛距離變大,就至關於人變成了巨人,或者眼前的景象拉近,也就是你把手指從遠處拉到眼前的感受,當近到必定程度是,你要看你的手指就會很吃力,要不就重影~~再近,就是鬥雞眼了,鬥雞眼的感受,你懂的。。。
    若是距離拉近的話,3D感會漸漸變弱,最近就是兩個相機重合,重合後就沒有立體感了。因此這個距離要根據你看的場景而定,對於自帶的第一人稱控制器,它的大小做爲人的大小的話,它所存在的場景比例就是固定的,此時的瞳距根據你想要的效果而定,具體能夠在顯示器上測試。
    當兩個攝像機的距離固定後,怎麼把影像分開呢?由於咱們用3d顯示器來融合,就不須要考慮unity的融合圖像部分,只須要把兩個相機的影像分爲左右半寬同時輸出便可。要達到這樣的效果,用RenderTexture是個很好的解決方案,咱們新建兩個RenderTexture,分別用來顯示左右兩個相機的視野:

    把新建的兩個RenderTexture放到plane上,並排放到一塊兒,並新建一個垂直攝像機來單獨顯示這兩個RenderTexture,這個攝像機也是咱們最後看到的畫面所使用的相機。因此它的depth要設置的高一點。

    關於RenderTexture,咱們須要稍微調整一下,size改成2048*1024,注意不要改成2048*2048,即便這樣會更加清晰,可是會出現顯示不全的狀況。注意,此時這兩個plane的scale大小隻有設爲2:1的比例纔不會出現圖像變形,也就是說plane的大小要和RenderTexture的比例同樣纔會顯示正常比例內容,可是咱們須要的並非正常比例,只要融合後是正常比例既可,顯示器的融合功能是將左右部分先放大到整個屏幕,再進行偏振融合,因此咱們要的3d信號是壓縮一半以後的兩個影像,因此降2:1的比例壓縮後就成了1:1.也就是plane的大小仍是1:1的方形,這樣在融合後纔不會出現比例失真的狀況。
    大多數的3D顯示器的屏幕比例都是1920*1080,也就是16:9,如今的3D視頻分辨率大多也是這個比例,這樣在全屏的時候就不會變形或者出現黑邊,咱們玩遊戲全屏不失真的話,也要按這個比例(16:9),固然不全屏的話也是看不了3D的,由於左右半寬的窗體沒法融合,3D顯示器也不認識這樣的3D信號。
    再回到上面說的RenderTexture的大小(分辨率)問題上來,假如選擇了2048*2048,而game窗口比例又是16:9,unity的RenderTexture爲了顯示1:1的比例,就把攝像機中間部分顯示出來,兩側內容裁減掉了,形成視野缺失,因此要選擇size爲2048*1024,不過這樣又出新的問題,Game窗口是16:9,也就是攝像機視野比例是16:9,比2048*1024,也就是2:1的比例要小,形成RenderTexture兩側多顯示了一部分,這部分是左右相機視野中沒有的部分,必需要去掉的。去掉的方法其實很簡單,經過更改材質的UV值便可,也就是讓這兩個RenderTexture,顯示的影像往中間偏移,偏移的量,經過計算能夠算出爲0.05555…,咱們改變UV偏移:

    

    因爲咱們的攝像機視野時16:9,因此附有RenderTexture的plane的兩側內容並不在咱們的視野內,這樣主相機的顯示影像只有左右相機的視野影像,不會有其餘的內容.

    到這裏,咱們在unity中要作的3D方面的操做已經差很少了,剩下的內容就是咱們作普通遊戲的流程,只要把咱們曾經用的相機改成上面作的兩個相機便可,咱們能夠把這兩個相機連它們的父物體導出一個預製體,看向RenderTexture主相機和兩個附有RenderTexture的plane導出另外一個預製體,這兩個預製體導出包package,這個package包就是一個轉3D立體遊戲的插件了,要轉化哪一個遊戲爲立體遊戲,就把這個包導入,把兩個預製體拖進場景,把相機替換爲左右兩個相機,而後導出遊戲就是3d立體遊戲了。
    將導出的遊戲(exe)打開,電腦要連好3D顯示器,這樣在選擇比例的時候纔有1920*1080, Windowed的對號去掉,保證是全屏,導出設置裏面也有默認全屏,

    打開後,將顯示器改成3D模式,3D顯示器通常都有按鍵在下面或者側面,有轉換3D的功能鍵,打開後,帶上眼鏡就能夠體驗3D立體效果了!

    最終搞出來的效果:

    注:假如感受立體效果不明顯,就把兩個相機的距離拉開一點.