網頁

2018年4月29日 星期日

全像圖形與使用者的距離

以下這段微軟製作的短片,主要在介紹什麼是accommodation-convergent conflict
因為這種conflict會造成眼球疲勞(eye strain),所以他提出一個建議,
就是將全像圖形放在2公尺處會是最為舒服的距離,
太近或是太遠都會降低舒適感(comfort)。

什麼是accommodation-convergent conflict呢?
這牽涉到人眼判斷物體離自身距離時,經常使用到的兩種眼球運動線索。
所謂accommodation是透過調節水晶體的肌肉,以此做為線索來判斷物體離自身的距離。
而convergent則是透過兩眼的輻輳與平視,以此做為線索來判斷距離,若為輻輳則是近距離,若為平視則為遠距離。

倘若accommodation與convergent兩者所計算出來的距離並不相同,則會給視覺系統帶來混淆。
因為視覺系統會不知道要透過調節水晶體肌肉,來符合convergent所判斷出來的距離感,
抑或是透過眼球轉動的肌肉,來符合accommodation所做的判斷。
也有一種可能性,就是兩者一直在調整,而無法獲得協調感。
在這種衝突下,至終造成眼球疲勞。

據此,微軟建議,將全像圖形放置在離使用者1.25-5 公尺,便算是落在舒適區。
但也有人認為,0.85-2 公尺,都是可接受範圍。

以上數值提供給HoloLens開發者做為參考。


[* 觀賞Youtube影片內容時,請點擊字幕圖示]

全像圖形的面數

在全像圖形的世界裡,使用者從多重角度觀賞同一3D物件,
無疑是一項視覺享受,這更是全像圖形的一個主要特色。

模型的面數(polygon, face)多寡,不僅僅影響到模型所帶來的視覺效果,
也會影響到電腦處理的效能。

一個高面數(high-poly)模型,看起來會較為平滑,而且精美,
而低面數(low-poly)模型,則有崎嶇不平,坑坑疤疤的感覺。



                                                                  高面數(high-poly)


                                                                  低面數(low-poly)


面數過高,會使檔案容量過大,而會有執行效能過度負荷的問題。
面數太低,又無法滿足使用者對視覺享受的基本要求。
關於模型面數的多寡問題,以下是一些建議:

HoloLens 
       如果選到最佳的著色器(shader),最高可繪製出80,000個面數,並維持60fps。
       如果要畫200,000個面數,影格率就會降至30fps。
       大部分情況,保持在20,000至60,000個面數,便已是安全餘裕!

MAKAR
       官方說法是3000面至5000面,但實際上大於5000面以上,也是OK!
       基本上只要是在其容量限制內,即可。

所謂影格數,指的是3D動畫播放時,
每秒播放的影格數(frames per second)。
如果影格數下降,則動畫看起來就會卡卡的,
這也是執行效能過度負荷的展現。

為了提高效能,有人在討論如何透過使用表面圖像(texture)產生低面數高美感的模型。
這不失為一種能解決面數與效能間相互牽制的好方法。












2018年4月28日 星期六

[Unity] 如何讓.fbx 檔播放動畫?

假設您已經有事先製作好的3D動畫素材,
那麼就可以試著把它匯入Unity,並加以播放。

.fbx檔案是目前坊間常見的3D動畫檔案,
使用上較為廣泛,也較容易取得。

想要在Unity裡面播放3D動畫,
有幾個細緻的設定要點選。


1. 把.fbx檔拖曳入Assets,匯入檔案






2. 透過點擊該動畫檔,藉以選取它,然後到 Inspector做設定



    [step①] 透過滑鼠點擊該檔案,將其選取起來
    [step②] 點擊Inspector頁籤,至裡頭做設定




3. 在 Inspector → Rig
                         → Animation Type
                         → Legacy
                         → Apply



         [step①] 滑鼠點擊Rig
         [step②]  把Animation Type改為Legacy
         [step③]  按下Apply按鈕




4. 在 Inspector → Animation
                         → Wrap Mode
                         → Loop
                         → Apply



         [step①] 滑鼠點擊 Animation
         [step②]  把Wrap Mode 改為 Loop
         [step③]  按下Apply按鈕




5. 拖曳到場景,點擊播放 ▶️



          [step①]  把3D動畫檔拖曳進場景,或Hierarchy面板中
                         稍微調整一下位置,大小,直到攝影機清楚可見

          [step②]  點擊播放



6. 測試結果

[* 觀賞Youtube影片內容時,請點擊字幕圖示]



播放完一輪後,它會從頭重新播放。
如果你的fbx檔案很大,那麼匯入時間可能會很久,請耐心等待。

Enjoy!









2018年4月27日 星期五

[Unity] 如何切換場景?

場景(scene)是Unity開發環境中的一個基本單位,
一個結構完整的遊戲通常包含兩個或兩個以上場景,
例如:開始畫面、遊戲本身、結束或重玩畫面等。
那麼,我們該如何讓遊戲在多個場景間切換呢?


1. 首先,預備好您所需要的多個場景

    

    此範例有三個場景,分別是startScene、gameScene、gameComplete
    startScene 顯示的是一個立方體
    gameScene 顯示的是「第二個scene」
    gameComplete 顯示的是「第三個scene」
    分別存檔




2. 把會用到的場景加入build settings,獲得編碼


    按下File→Build settings會跳出上面視窗
 
    選擇你要build的場景 [step①]
         將你要build的scene拖曳進來 [step①]
         或者按下Add Open Scenes按鈕 [step①]
         勾選或取消勾選你所要使用的scene [step③]
    每個scene最右邊會產生數字 [step②]

    在這個例子裡
        startScene 場景,專屬編碼顯示0
        gameScene場景,專屬編碼顯示1
        gameComplete 場景專屬編碼顯示2

    選擇您想要建置的平台
        只要點選並按下Switch Platform,就可以切換平台[step④⑤]
        這個例子選擇在本機產生standalone的執行檔
 
    完成設定後,點擊build,即可執行 [step⑥]

    註:初始場景是編號為0的場景


3. 在你要切換場景的條件設定下,編寫程式碼



       如上圖所示
       切換場景所使用的是SceneManager.LoadScene(專屬編碼或場景名稱)這個指令 [step③]
               在這個例子裡   SceneManager.LoadScene(1)           
               也可以寫成       SceneManager.LoadScene("gameScene")
                                                              → 代表切換到1場景,也就是gameScene

       這個指令的使用必須事先宣告 using UnityEngine.SceneManagement;  [step①]

       在這個例子裡,所設定的條件是,假如按下鍵盤上的N,就執行以下程序 [step②]
     
       [註解] 以前版本的Unity,切換場景的指令是Application.LoadLevel( );
                   我所使用的Unity版本是2017.3.1f1 Personal (64bit) ,上述指令已不敷使用。


4. 測試結果
   
                                                                    [* 觀賞Youtube影片內容時,請點擊字幕圖示]

      這個例子中,是用按下鍵盤按鍵N來切換場景。
      從startScene切換到 gameScene,再切換到 gameComplete。
 


在Youtube裡面,還有一些關於切換場景的教學影片,
其中不乏場景切換的華麗特效,有興趣的可自行前往觀賞。
影片1:Simple Scene Transition for Unity [前往]




本文參考出處:羽毛的電玩新手村





2018年4月21日 星期六

HoloLens的環境辨識功能


HoloLens是一套混合實境(mixed reality)眼鏡,
其特別之處就是能對物理環境進行感知,
辨識後甚至能分辨出牆面、地板與可放置物體的平面等。

使用者能將虛擬生成的全像圖形(hologram)以符合環境條件的方式放置入環境中,
這種讓使用者同時感受到虛擬全像物體以及日常物理實景,
兩者共同塑造出來的環境,稱為混合實境。

以下介紹HoloLens的環境辨識功能,它不僅能分辨出環境中足以遮蔽阻擋的表面出來,
也可以分辨這些表面為牆面、地板或者是大到足以放置物體的平面等。