網頁

2018年8月6日 星期一

使用Unity播放透明背景的影片

考量到使用HoloLens做混合實境開發時,有時直接疊合上2D影片,
可能還比較能快速發展出想實做的點子來。
此時不僅是呆呆地貼上影片,而是將影片中除了主體以外的背景去背,
然後做播放,便是一個重要的功能。

2018年8月4日 星期六

解決Mixed Reality Capture的延遲問題

這個問題頗為重要又相當棘手,但實際上早在一兩年前,
有些程式高手已經解決,並且將解法免費分享在GitHub上。

想要看到戴HoloLens眼鏡的人看到些什麼,一般可以用電腦開啟網路瀏覽器,
並且以網路連線HoloLens,就可以開啟Device Portal,
觀看Hologram與環境疊合後的混合實境結果。

可是,這項功能所看到的畫面向來會延遲個4-5秒鐘,
這對於APP展示或Oral Presentation非常不便。

後來,找到了一個已經早早被分享出來的解法。
在GitHub上有人分享一套稱為MixedRealityCompanionKit的套件,
裏頭有許多好用的小東西,其中的MixedRemoteViewCompositor就可以解決延遲的問題。

2018年7月20日 星期五

HoloLens 的 Sharing 功能 (程式碼解說)

本文將仔細介紹微軟網站所提供的 MR Sharing 240: Multiple HoloLens devices [前往]。
我就不仔細翻譯網站所提供的文件,此處我只想做個紀錄,主要是關於程式碼的部分。

目標:我想要用聲控說「play」,讓animator開始執行動作。
            animator 已經事先寫好animator controller,並且指定好條件設定。
            我想讓兩台HoloLens之間,可以同步執行上述這件事情。

HoloLens 更新了!

這兩天繼續使用HoloLens開發軟體,
一台HoloLens突然一副有點當機快壞掉的感覺,
總覺得不知道他在做些什麼事。

2018年7月18日 星期三

如何抓到Camera 的 transform.rotation 在X,Y,Z軸的值

在Unity裏頭的rotation,是一個相當複雜的概念。
直覺來說,我們會想說在X軸上看旋轉個幾度,Y軸上看旋轉個幾度,Z軸上看旋轉個幾度。
但實際上似乎又無法這樣設定。

以下有個特別的方式,既可以保持變數型態是 Quaternion,又可以從我們直覺的方式來做旋轉角度的設定。

2018年7月14日 星期六

將 Unity 專案部署到 Android 平台

這件事情比我想像中還要容易許多,尤其是放暑假後,
因為能專心地改寫程式,所以就一鼓作氣的把Android專案寫完。

我原本寫來部署到HoloLens用的Unity專案,也因為已經將程式架構定下來了,
所以將它改成部署給手機(Sony, Androida)使用,就變地快速許多。

以下整理一下,改寫過程使用到的關鍵網頁資源:

2018年7月3日 星期二

HoloLens 專案的快速測試與開發

誠如我在這篇文章「HoloLens建置(build)與部署(public)」(連結) 所討論的,
一個APP的完整部署流程,大約需要20分鐘,其流程相當耗時,這是不利於程式開發的。


因此,以下介紹四種測試方式,從簡易到完整流程,開發者可依現有軟硬體情況與需求交叉使用。

2018年7月2日 星期一

場景切換後燈光變暗

這似乎是從Unity 5就一直有的問題,
譬如:遊戲結束後要重新開啟場景,但燈光突然變暗。
並不是HoloLens專案特有的問題。

2018年7月1日 星期日

HoloLens 建置(build)與部署(publish)

開始談如何建置與發佈之前,先跟各位介紹一下開發HoloLens時硬體與軟體的邏輯關係。

想要自撰一個HoloLens APP,你的電腦需要先安裝好
1. Unity
2. Visual Studio

Unity是一個可供對3D模型作互動並且撰寫C#語法(或Java語法)的平台,
開發者可在Unity上匯入3D模型,也可以透過Visual Studio撰寫C#語法,
而且Unity與Visual studio所撰寫的C# script之間會有所連動,
藉此就可以依著開發者需求,寫出您所想要執行的功能。

寫好的Unity專案,必須建置(build)出C#的Visual studio專案。
這個步驟對HoloLens app佈署來說是必須的。

最後,再由Visual studio專案進行佈署(deploy),
把寫好的專案佈署到HoloLens眼鏡上。

總結來說,佈署順序是:
Unity → Visual Studio → HoloLens
           ①                      ②

2018年6月29日 星期五

場景切換時等待個幾秒鐘才切換過去

這是書上普遍都會用的方法
我參考Loading new scene after time [連結] 的寫法
改成適合我的專案的code。

解釋一下:
事先寫了名為LoadLevelAfterDelay的IEmumerator
要用的時候,使用StartCoroutine呼叫LoadLevelAfterDelay。

IEmumerator也可以寫一些參數進去,以下的例子是寫sceneName這個參數,決定要切換去哪個場景。


  1. IEnumerator LoadSceneAfterDelay (string sceneName) { yield return new WaitForSeconds(0); SceneManager.LoadScene(sceneName, LoadSceneMode.Single); }
這個指令另外寫到其他function裡面
StartCoroutine(LoadSceneAfterDelay("BaseballMain"));


你也可以寫delay參數,決定要等待幾秒鐘。

  1. IEnumerator LoadSceneAfterDelay (string sceneName, float delay) { yield return new WaitForSeconds(delay); SceneManager.LoadScene(sceneName, LoadSceneMode.Single); }

  2. 這個指令另外寫到其他function裡面
StartCoroutine(LoadSceneAfterDelay("BaseballMain",2));


參考資料 [連結1]  [連結2]