2016年9月28日 星期三

Daydream for Unity體驗版發佈

作者:SCOTT FLYNN 原文

原生支援Daydream平台的Unity體驗版已發佈!這個版本大大簡化了工作流程。它基於在Google I/O大會上發佈的Google VR SDK for Unity進行各種優化。不在需要拉Prefab或程式腳本,也不用手動更改設定檔,只需在Unity編輯器內啟用VR,並選擇Daydream,即可開始開發Daydream應用。

Unity為Daydream提供原生支持,幫助開發者解決難題。為了更優異的效能和更小的延遲度(Latency),我們針對Daydream SDK進行了深度整合,讓它能更好的利用平台的非同步重映射和VR效能模式。當然,也將更容易在VR與非VR模式之間切換,應用也能輕鬆發佈到Google VR平台。

如果您的目標平台不僅僅限於Daydream呢?您還可以選擇Unity原生支援的Google Cardboard平臺。以Cardboard為目標平台的應用,在較舊的設備上也能正常執行,所以您的產品可以針對盡可能廣泛的客群。目前Cardboard只支援Android平台,不久即將支援iOS平台。

你可以從這裡(英文)找到更多的資料與下載點,任何問題可以在論壇發問


Google同時也開發了Unity SDK,提供空間化音效、Daydream控制器支援及實用的範例。可以查看腳本參考下載頁面

使用指南


以下是一些基本的設定流程


準備事項

請確保安裝Unity Daydream體驗版。Download Assistant會安裝Unity編輯器、Android Player以及文件。可以這裡下載。

另外,Daydream還需要最新的Android Development platform和Android API SDK version 24(即Nougat)。您可以上Google Android開發者網站下載Nougat。您還需要一部啟用Daydream的手機。並請按照Google指南設定好開發套件。

設定步驟

1.啟動Unity
2.建立新專案
3.找到Edit -> Project Settings,將平台類型從Standalone切換為Android(圖1)
4.勾選‘Virtual Reality Supported’(圖2)



5.點VR Devices清單下方的"+"按鈕並選Daydream。要
注意的是如果這裡選擇"None"作為首選設備,Unity將會當成普通專案,但你仍可以透過程式腳本切換為VR。



6.[選擇性]點擊Daydream設備左側的三角按鈕展開Daydream選項。在此調整深度格式(Depth Format)、前景圖、背景圖以及是否啟用Sustained模式。對於時間較長的VR專案,可以啟用Sustained Performance Mode,這樣會犧牲一點效能來換取更長的電池使用時間。


7.Daydream需要使用最新的Nougat版本來打包APK。為確保Unity不會包錯APK版本,必須更改Player Settings中Identification下的Minimum API Level為最新版本。



8.設定好Android Player Settings後,就可以在Unity中開發Daydream平台專案了。打包並給支援Daydream的手機執行,其他和開發普通Android產品沒甚麼不同。

2016年9月24日 星期六

一起來感受Unity 5光照魔力

今年6月份,Unity、Enlighten和Polycount聯合舉辦了一場競賽,旨在利用Unity 5的光照技術創造出炫酷場景。競賽者利用由Alex Lovett製作的Courtyard場景,結合Unity 5的光照、光照貼圖、相機、合成、陰影及後處理等技術打造獨一無二的魔幻畫面。

Courtyard場景可在Asset Store免費下載

現在比賽結果已分曉,來看看這些把Unity當成Vray來用的網友們都有何等驚人的創造力吧!


1st Place: The Reveal by Wiktor Wąsowski
這件作品看上去很有日本建築設計師安藤忠雄的風格。作者表示,作為設計師希望每件作品都由自己親手打造,從未想過有一天會去“翻新”別人的作品,但這次競賽非常有趣,也從中感受到了“二次創作”的樂趣。







2nd Place: Clean Architecture by Eldon R. Tyrell
作者借助了建築設計的概念,更改部分材質並加入一些細碎的光照,讓整個場景看起來富有層次感。






3rd Place: Tomb of an Angel by Gabriel CoriiuGabriel Coriiu是一名程式師,最擅長幫助同事解決難題。隨著數位技術越來越成熟,3D資料格式也越來越趨於標準化,描述物體表面屬性的方式也有很多,如PBR等。Gabriel Coriiu用自己的方式為Courtyard場景帶來了全新的風貌!





4th Place: Delta Enclosure by Sam Santillo






5th Place: Lost in the Cold by Matthieu OstertagUnity的即時渲染功能讓設計師們能夠快速預覽光線在場景中的表現效果,從而加快反覆運算開發。這件作品的光線非常柔和,給人一種祥和的感覺。






其他酷作品

“Chromatic Dreams” - Jessica Sweeney相比預渲染的視頻來說,即時渲染對性能的要求更高,而在交互性更強的VR環境下這種要求就更高了。但為了VR帶來的交互與沉浸感,這點努力是必須的。你也來試試將Courtyard場景帶入VR環境吧!


“Future Courtyard” - Eric Kimberly來為Courtyard換個材質,這滿滿的金屬是不是充滿了科幻感呢?





想看更多作品可以連到比賽網站一一觀賞

2016年9月21日 星期三

Unity5 發佈iOS10注意事項

隨著iOS 10的發佈,不少開發者應該開始要忙升級了。本文為大家分享使用Unity結合Xcode發佈至iOS 10平台的一些注意事項

App Store送件相關注意事項


如果你仍要忙於移植專案,建議繼續使用Xcode7.3,因為這是目前最為順暢的版本

如果想使用Xcode8,下面一些建議或許對您有幫助:
  • 如果您的專案需要呼叫相機(WebCamTexture API),你必須在Unity所產生的Xcode專案Info.plist文件中說明使用該功能的理由。然後加入包含字串與簡介的NSCameraUsageDescription鍵值資料。大家可以在Unity 5.4.1p1中的Player Settings中找到該選項。
  • 如果您的專案沒呼叫WebCamTexture API,你必需關閉Unity產生的Xcode專案中camera部分的程式。當然這只是是臨時措施,我們會很快解決這個問題。關閉方式是:打開Xcode專案內的Classes/Unity/CameraCapture.mm,將第一行的"#if !UNITY_TVOS"手動替換成"#if 0"。這樣程式就會清除相機捕捉程式碼並通過自動送件檢查。

iOS 10.0與Xcode 8相容性的簡單總結

  • 最新的Unity 5.3及5.4補丁版本(例如 5.3.6p4 和 5.4.0p4)可以正常開發。
  • Unity更早的版本大部分也能運行正常,但可能會出現一些小問題。
  • 自7月中以來,Unity 5.3 和5.4的版本就可以正常Build & Run來產生Xcode專案了。但還有些問題,預設情況下Xcode專案一般不會指定你的Team,而這個會造成項目簽名失敗。請在Xcode中重新指定Team,並設定相關專案就可以解決。我們正在研究如何讓開發者在Player Setting中指定Team ID,9月15日發佈的補丁(5.3.6p5、5.4.1p1)已包含此項功能。未來還會讓它更加自動化。
  • 最新的5.3與5.4版本可以正常打包至Xcode 8模擬器,但更早的Unity版本可能會出現當機。
  • iOS 10.0現在要求所有呼叫相機,麥克風,以及定位功能都要說明使用理由。我們在Unity 5.4+的版本中加入了欄位。對於更早的Unity版本建議自行修改腳本更新Info.plist來解決。
  • 9月15日發佈的補丁版中增加了iPhone 7 和 7 Plus的設備項目。
  • 9月15日發佈的補丁版中還更新了目標OS版本清單以包含最新的iOS版本。
  • ReplayKit的broadcasting API還在開發中,我們將在Unity 5.5 或5.4未來的某個補丁版本中加入。
  • 使用Unity結合Xcode發佈專案至iOS 10的注意事項就總結到這裡。綜上所述,如果求專案穩定請繼續使用Xcode 7.3

2016年9月9日 星期五

即時運算短片Adam - 動畫製作

KRASIMIR NECHEVSKI 原文

大家好!我是負責Adam的動畫總監Krasimir Nechevski,本次將為大家介紹Adam中所有與動畫相關的內容。我曾作為一個軟體工程師製作角色動畫超過15年,加入Unity之前我在Crytek待了7年之久。


參與Adam的短片製作是一件令人興奮又難得的機會,我明白加入最棒的團隊參與最新進的技術研究肯定是一件不輕鬆的工作,因為我們每一步都得如履薄冰,但整個團隊都很有熱情和信心。

如果你錯過了之前我同事們的文章,可以從這裡連過去看:

2.Plamen Tamnev 即時運算短片Adam - 即時影片的資源建立

本篇文章會介紹所有和動畫相關的區塊,大部分都是我做的,有些則發給由我控管的外包,我主要負責的部分有:Previs預覽版本
、Adam的骨架、Adam大部分的動畫、環境動畫、攝影機動作及管理動作捕捉(Mocap)的工作。我同時也和我們的工程師Dominykas Klauleikis一起設計開發了人群系統(Crowd System)。最後在Unity正在開發中的工具Storyteller裡完成了整部電影的組裝。


預覽版本


專案最初的計畫就是保持所有內容隨時都能靈活使用,能夠按需求切換資源並重複利用,所以這個專案很多時候都處於半預覽階段。我們一開始先幫Adam做了個替代模型。

初版Adam


替代模型的目的是獲得正確的比例,並能對肩膀骨骼的運作方式進行反覆替換,因為雖然Adam的肩膀看起來是人形的,但它並非自由的球型關節而是單軸旋轉關節的組合。

早期版本的Adam肩膀骨架


另一件很重要的事情是要早點和演員一起工作。演員Ovanes Torosian有電影和戲劇方面的經驗,但沒有做過動作捕捉。在早期預覽階段,我們決定使用CP很高無需標記點的動作捕捉解決方案 - Perception Neuron。我們試了幾個不同的方法反覆拍攝Adam的姿勢、肢體語言和表現,給
演員一些時間來適應這種技術。還用手持搖臂來嘗試各種相機的移動。

不用標記點的方案 - Adam表演的排練



我們一開始在MotionBuilder裡測試其中一個代表場景的預覽,嘗試了一些鏡頭的切換,像是單一相機無縫切換到快節奏的切換。



MotionBuilder中預覽剪輯鏡頭

不久後我們決定將這個預覽移到Unity上。然後導演Vess就可以加上燈光與材質,並利用引擎的即時渲染功能讓預覽效果更接近想要的感覺。最終證明這種反覆運算方式以及提早將整部電影移到Unity的做法效率非常好,因為我們可以不斷的對不同鏡頭進行快速測試修改。

Adam在Unity裡運作的早期版本預覽

Adam的骨架



導演Vess希望實現一個真實紀錄片風格的電影,所以需要讓Adam的人體力學看起來有說服力。我不想用掩蓋或在任何部位做假,比如讓堅硬的表面能扭曲或從相機隱藏它們。此外我們在很多細節還沒定案的時候就開始製作了,所以整個製作過程初期Adam只有基本骨骼和部分手臂的功能。這個構造和比例一直保持到最後,很多部分都是後面才加的,一些是為了適應移動範圍做的修改。為了不影響角色自由移動做出一些改變是必要的,我和設計師Georgi和建模師Paco之間也來回反復進行修改直到最終完成作品。


不同階段的Adam模型



匯出到Unity中的骨架是在3D Studio Max中完成的,借助Character Studio 製作了主骨架。在這基礎上我按步驟加上了肩胛骨、鎖骨、上臂和前臂。對於腹部和脖子周圍的橡膠,我決定不使用混合外形(Blend shapes),而是烘焙關節動畫來模擬變形。

Adam的骨架
骨架另一個耗費大量精神的部位就是眼睛。我模擬鏡頭光圈為它們做了一個具有獨立旋轉葉片的功能。眼皮是分開並能單獨被角膜推動。

Adam眼睛的骨架


接下來動畫師在MotionBuilder內導入這個骨架,Character Studio 的骨架被作為雙足的Human IK。所有的動畫捕捉資料都在MotionBuilder內重定向、整理並修改。
除了眼睛之外,許多的手拉動作也是在這時完成的。

MotionBuilder中Adam的骨架


一個運鏡準備好後就匯出回到3DS Max,在3DS Max已經準備好所有的動畫程序和手拉的眼睛動畫。最終結果烘焙並匯出FBX格式到Unity中作為通用骨架(Generic rig)



Adam - 動作捕捉和動畫

整個動作捕捉的製作過程中有很多鏡頭都很有挑戰性,尤其是第一部分Adam從架子上掉落,用膝蓋爬行並試圖移除面具的鏡頭。挑戰主要在於角色與相機移動要保持完美同步,在動作捕捉預覽階段,演員要反覆表演並理解詮釋這個角色。同時導演對這些表演給予建議後進行微調,不斷反覆調整相機來保證所有要素完美融合。

最終在Cinemotion中查看動作捕捉的最後表演時,我們已經完全清楚想要的效果,所以在短短一天時間內就完成了所有的拍攝。來自保加利亞的Cinemotion公司提供了所有需要的設備,以便使用虛擬相機來同時捕捉Adam與相機行為。

另外,由於價格合理,我們也能用這種方案不斷反覆運算製作方式,重新拍攝,探索更多鏡頭可能性,必要時能實現突如其來的靈感。

在Cinemotion工作室進行最後的動作捕捉


拍攝完後,我挑選了不同的鏡頭資料並將演員動作資料和導演Vess最喜歡的相機運作模式進行組合。如果沒有花費額外的時間在工作室嘗試所有的部分,這是不可能完成的。
早期版本的動畫片段


在清除並重定位資料後,就要整合最終的表演並加入最後的潤色了。接下來就是填補那些不太能捕捉到適當動作或姿勢的動畫缺陷,比如Adam一開始是掛在架上。在製作出最終的融合和修補動作後,我在MotionBuilder 內部完成手指的動作並匯出到Max。

眼部行為


在動作捕捉階段時,我使用手持相機單獨捕捉了一些演員的眼睛畫面。最後在Max中使用這些鏡頭作為參考增加了眼睛的動畫。此時Adam就可以匯出備用了!

實現眼部運作概念

相機 - 動作捕捉及動畫



為了實現理想中的紀錄片效果,我們需要一部可識別動作的手持相機。為此用到了攝影師Mihail Moskov設定的虛擬相機。儘管用動作捕捉了相機的行為,但我們深知還是要繼續反覆計算剪輯,並且後面還要增加一些鏡頭。為了有盡可能多的選擇空間,我們也順便做了一些相機的一般移動,例如不同的旋轉角度等。然後使用MotionBuilder或Unity的Storyteller工具來整合這些動作並新建動捕階段沒有的相機。這讓導演Vess可以更加靈活地發揮想像而不必局限於已捕捉的內容。

Mihail和Ovanes在動作捕捉空間中



Sebastian和Lu

Sebastian和Lu是電影下半部分出現的兩個陌生人。錄製他們的動作又是另一個挑戰,因為他們是用可伸縮的高蹺來行走的。我們邀請了有踩高蹺經驗的Stanimir ‘Stunny’ Stamatov來扮演兩個角色。

特技演員Stanimir ‘Stunny’ Stamatov扮演的Sebastian和Lu


為這些角色拍攝動作捕捉時,導演對於他們的表演有幾個不同的想法,但並未決定採用哪一個。我們需要調整方法以便導演可以構建並嘗試大量不同的動作。所以更多地使用了製作遊戲的方式,捕捉不同的動作以方便後面進行整合。可以從不同版本的動作中挑選出最合適的一個。這兩個角色拍了一系列的循環動作如走路、空閒、停止、下降等,也拍了一些基礎動作。這個方法很靈活但也存在缺陷,一些動畫之間的轉換不夠流暢。

Sebastian循環走路動作


Sebastian和Lu的骨架與動作是交給兩家外包公司Bläck StudiosPixelgrinder完成。之前製作 The Blacksmith 時已與他們合作過。他們在Maya和MotionBuilder中完成了角色的骨架,並借助HIK實現了高蹺的自訂骨架。Adam的做法並不適用於Sebastian和Lu,因為Sebastian和Lu的全身都是穿著衣物的。
衣服和繩索的模擬由VFX設計師Zdravko Pavlov利用CaronteFX 製作,CaronteFX 是由Next Limit Technologies開發的Unity外掛程式,可以至Asset Store下載。後續我們將專門介紹Zdravko使用CaronteFX完成電影中的一系列特效。

Motionbuilder中Sebastian和Lu的骨架



守衛



守衛的骨架從某種程度上和Adam是一樣的。它有一個基於Character Studio的骨架並加了一個附加的骨架。額外加的骨架解決了盔甲滑動和彎曲的問題。腰部和彈藥袋的布料是Zdravko用CaronteFX來完成的。

守衛骨架


Ovanes和Stanimir兩位演員負責守衛的動作捕捉。最難的場景就是一個憤怒的守衛開始射擊人群的部分。那一幕只捕捉到很少到鏡頭,分鏡的表現都是後期再整合進去的。我們使用了Cinemotion動畫服務完成守衛的重定位和節點清理工作。

Ovanes, Stanimir 和Mihail在 Cinemotion動作捕捉中心




人群



製作人群最大的挑戰就是需要做許多事以保證足夠的多樣性。所以這些機械的、跌倒的、充滿疑惑的角色要盡可能看起來有感覺。我們的方法是製作擁有不同行為的人群(如難過的、精力充沛的、好奇的)。對於每種行為都有一個很簡單的狀態機來驅動各個機器人。

人群的Animation Controller


我們的理想目標是擁有8種不同的版本,每一種都擁有其所需的完整動畫。但隨著電影劇本漸漸定案,每種人群版本都需要90秒左右的動畫。這對我們來說太多了,所以最終只做了4種版本。

MotionBuilder中的人群模型及骨架


我們為Adam構建了3種LOD版本,分別帶有41、28和13根骨頭。最後採用了品質較高的2種LOD,因為由技術主管Torbjorn Laedre開發的GPU蒙皮技術完全可以處理需要的角色數量。人群的動作捕捉表演也由Ovanes和Stanimir完成,隨後在Cinemotion動畫師們的幫助下完成了動作的重定位和鍵值清理工作。



人群系統


人群系統是由技術主管Torbjorn Laedre,程式設計師Dominykas和我一起開發的。Torbjorn寫了所有的回播程式,幀插值功能,GPU蒙皮,人群實例化以及材質變化等功能。Dominykas編寫了所有向量環境(vector field)的程式和工具。

我們需要明確人群系統必須完成的任務:

  • 人群模擬需要100% 的確定性
  • 需要能與Unity的Storyteller工具配合以便於進行快速利用
  • 需要一個很好的方式來控制整個人群的動向
  • 還需要一種方式來調整自訂值用於分離人群
為了控制人群的走向,我們決定使用一個向量環境來實現,人群在向量環境中會受到經過的箭頭影響。Dominykas製作了一些簡單而強大的向量環境創作工具,以箭頭形式呈現。每條線的向量環境可以與其方向一致,朝向或者背離它移動。而且都有影響區域和力度的調整參數。

Unity中的視覺化向量環境



我們在其中一個區域加了用來隨機初始化機器人分佈的功能。用這種方式分配的機器人後續可以調整起始點的位置和角度,或者改變狀態機的初始狀態,以及通過延時觸發器來更改。還加了用於捕捉人群在時間軸上任意點的狀態,可以用作下一個鏡頭的起始點。

人群控制台




敘事系統工具


Unity Demo團隊的一個重要任務就是為引擎團隊提供使用者的回饋。對於 Adam,我們與開發Unity全新的敘事工具的團隊緊密合作。我們曾經用過原型和初期版本的工具,也不斷地在提供反饋並加強工具的設計和發展。使用這個工具製作Adam的過程非常舒服也很熟悉,因為它與電影工業中廣泛應用的其它工具很類似。

對於角色和鏡頭動畫使用標準的動畫軌跡,可以在世界空間中進行裁剪、混合及補間。

紅色區域是動畫軌跡


Storyteller工具提供了更高級的功能,我們使用了一種能讓演員執行自訂腳本Playables的方法,這個例子中包含了人群系統的場景管理器,用來顯示隱藏物件,改變光照和相機等等。

自訂腳本軌跡,Playables


Storyteller工具另外一個非常有用的功能就是可以記錄任意參數的變化。結合曲線編輯器就可以輕鬆製作鏡頭的位移,屬性,漸變等動畫。

曲線編輯器


這個專案的最終成果就是完成了第一階段的Demo,可以在Unity中直接打包出可執行檔展示。
為了提供一個可以預覽的電影給線上觀眾,我們製作了影片放在了YouTube上。影片製作借助了小腳本BeautyShot。Unity研發團隊正在研究是否能夠在引擎中直接實現影片錄製工具。

感謝您的閱讀!現在我們正準備發佈Adam的部分資源,後面還會繼續推出Adam製作相關的文章,請密切注意。

著作人