網頁

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的環境辨識功能,它不僅能分辨出環境中足以遮蔽阻擋的表面出來,
也可以分辨這些表面為牆面、地板或者是大到足以放置物體的平面等。


2018年1月14日 星期日

如何將高面數的iClone v7.02人物動畫減為低面數動畫?

將高面數動畫降面為低面數動畫,對於講究輕便、訴求傳輸快速、
以及追求低硬碟容量的人來說,無疑是一項重要課題。

3D模型的減面方法 (blender)

3D模型除了能使用MeshLab做減面之外,也可以使用blender做減面。
尤其是當您的模型具有動畫時,blender (免費軟體)便是一個很好的選擇!

以下是 Blender 支援的檔案格式


(ps. 我已經試過.fbx, .ply, .obj, .stl, .svg等格式,減面效果很不錯!)

3D模型的減面方法 (MeshLab)

網路上免費或是付費的3D模型非常多,
但有時候下載下來的模型,
面數過多,以致容量過大而不敷使用。
這時候可以使用MeshLab或者是blender來降低面數。

如果您的3D模型屬靜態,格式上是 .obj, .ply, .stl 檔,
則可以考慮使用 MeshLab (免費軟體)
以下是MeshLab支援的檔案格式




杏仁核(amygdala)


杏仁核(amygdala)是個體在遇到威脅(threat)或是危險(danger)時
,與「攻擊或是逃跑(fight-or-flight)」有關的大腦區域。

expressive posture