2010/12/26

Autodesk 3dsmax 2012與Kynapse 群體功能


People Power群體動畫功能, 是否會加到3ds max 2012中?

今年就要接近尾聲,新的一年即將到來。這也意味著新版的3ds max問世倒數計時! Autodesk的M&E視覺溝通方案總監---Ken Pimentel最近在他的部落格透露了一些關於3ds max 2012『可能』會出現的新增功能。在經歷了3dsmax 20103dsmax 2011的新增功能預告宣傳文的洗禮後,相信有許多人對官方的宣傳文章有不錯的免疫能力:

2010/12/19

UDK十二月份新增功能

Epic鴨子滑水了幾個月後, 終於在這個月正式發表支援iOS的功能. 不愧是大公司會預先布局未來局勢所需要的功能, 畢竟高科技產業是瞬息萬變, 誰能料到今天最流行的作業系統, 明天會不會被另外一套作業系統取代. 而且像Unity這類的競爭對手已經在步步進逼囉!

----以下為翻譯----
UDK十二月份新增功能

全新,支援iOS
全新的功能與內容,包含以下:
  • 新的場景,視覺化的腳本遊戲玩法事件編輯,專為手機設計的視覺特效,使用Unreal Editor與主要工具。包含了Unreal Kismet, Unreal Cascade 與 Unreal Matinee。
  • 針對手機遊戲開發的強大的渲染功能,包含了Unreal Lightmass的GI透過Unreal Swarm分散式算圖加速計算。Epic Citadel的完整遊戲原始碼與內容,外加展示地圖。
  • UDK Remote:這是一個很方便的工具,用來利用iOS的硬體作為無線控制器,完整支援觸控與傾斜感測功能,讓你在電腦就能測試遊戲。
  • 新的Unreal Frontend,讓你只要按下按鈕,就可以對多平台進行可以編譯腳本與佈署版本(deploys builds)。
  • 手機模擬預覽(Mobile Previewer),讓你可以透過OpenGL ES 2.0 renderer完全地預覽應用程式,模擬手機的輸入功能。
  • 單鍵佈署功能(One-click Deployment):很容易地透過Unreal Editor將遊戲佈署到iOS的硬體,只需要點擊一下即可。
  • 次世代手機畫面, 有了UDK高度優化的手機渲染器,能支援per-pixel光照、環境貼圖、預先計算的可視性。當然囉,更不可不提的是Unreal Lightmass能計算出驚人的光照與陰影,讓你的遊戲場景非常寫實!
  • Unreal Kismet視覺化的腳本編寫,美術與場景設計,可以利用Unreal Kismet把動作、輸入與事件串接出來,讓玩家跟場景有互動的設計,完全可以不需要寫一段程式碼。
iOS功能列表:

基本的UE3功能
  • 能夠上市推出,認可的遊戲引擎核心。
  • Unreal Editor 幾乎所有UDK的功能都能支援。
  • Unreal Lightmas,全局照明、AO等。
  • Unreal Swarm可進行分布式算圖。
  • UnrealScript動態腳本語言。
  • 尋路功能(Pathfinding)與導覽網格(navigation meshes)。
  • Unreal Matinee過場動畫編輯工具。
  • Unreal Cascade粒子特效編輯器。
  • Mesh繪製工具
  • Canvas-based UI算圖
  • Unreal Content Browser遊戲資產瀏覽器
  • 完全支援Autodesk FBX檔案格式
  • Unreal動畫系統(AnimTrees, additive animations, blending)
  • 直接在編輯器裡面就能玩遊戲,單鍵預覽遊戲
  • 即時的IK
  • BSP場景工具
  • 群體系統
  • LOD系統,包含了Massive LOD
  • 效能與記憶體損耗統計工具
  • 模型簡化工具
  • 材質拆貼圖與LOD產生工具
  • 支援Perforce版本控制工具
  • 物理與碰撞系統
  • Unreal Frontend tool可用來啟動、包裹您的遊戲
  • Unreal Console讓你可以連結手機應用程式,輸入指令與觀看log資料
  • 64-bit的工具,讓你處理巨量的資料
手機
  • 完全支援Portrait 與landscape模式
  • 多點觸控,並支援傾斜和陀螺儀
  • 用觸控來控制玩家觀看視角,也支援手勢輸入
  • 新的手機輸入區域(input zone)的系統
  • Unreal Kismet 與UnrealScript都支援手機的輸入功能
  • 你也可以在PC上模擬手機的輸入
  • 基本的UI系統,基於畫面,利用簡單的按鈕與滑桿控制
  • 電影播放模式
引擎
  • 效能急速的iOS遊戲引擎
  • 關卡串流與非同步載入
  • 多平台共享遊戲資產
  • 手機shader預先快取/警告,讓你有平順的遊戲播放
  • Unreal Lightmass normal map baking
  • 預先計算顯示度系統,且支援Unreal Matinee path
  • Cooker能夠產生最佳化的shader,根據不同遊戲需求
  • 音效與音樂播放支援OpenAL
  • 3D聲音定位(立體輸出)
  • 非同步的音樂串流
工具
  • 可以用PC 幾乎可以有1:1的預覽效果
  • UDK Remote讓你可以在PC上接iOS裝置,預覽手機輸入的效果
  • 影片產生工具讓你可以模擬出真實的手機觀看效果
  • 從裝置上抓取畫面與電影
  • 預覽裝置解析度,編輯器可以預覽系統設定landscape/portrait
畫質
  • 手機上的先進遊戲畫質
  • 彈性的材質系統產生器,針對OpenGL ES2 shaders最佳化
  • 即時的陰影(planar)
  • 粒子系統
  • Bump offset mapping
  • 骨架系統
  • Shading
  • 即時的per-pixel照明
  • 法線貼圖
  • Specular照明 包含per-pixel specular
  • 動態照明 (可移動的、動態照明)
  • 動態的材質
  • 透明度、不透明遮照
  • 輪廓光效果 (Rim lighting)
  • Fresnel效果
  • 材質混合
  • Vertex coloring 可上色的模型
  • 發光的照明
  • Vertex變形 (植物或是布料)
  • 環境貼圖
  • 烘焙AO (skeletal meshes)
  • 水表面效果
  • 照明遮照、環境貼圖、輪廓光
  • 貼花
  • 靜態網格算圖
  • 非均向性物件縮放
  • 自動材質壓平工具
  • 環境霧
工具
新的Unreal Frontend UI
UFE現在支援多個參數(profiles). Profiles就是一組烘陪時的設定組合,讓你可以輕易地切換專案
http://udn.epicgames.com/Three/UnrealFrontend

虛幻編輯器
在Mesh Paint介面多了一個Fix的按鈕

添加了新的vertex color比對工具,這讓你重新輸入模型時,可以再載入之前繪製的vertex color
http://udn.epicgames.com/Three/ContentBlog#Vertex color matching tool

高解析度模型 帶有Vertex Color資訊

低解析度模型 要吃高解析度的vertex color資料 那就會需要這個新增功能了!

Unreal Kismet
新的Kismet action--- ProjectileFactory,這個東西讓你可以自skeletal mesh socket或是bone產生粒子發射與槍口閃光效果。這版對手機遊戲只支援每個vertex兩個bone。下一版就不會有這樣的限制了。

ProjectileFactory的應用畫面

[相關文章]

2010/12/09

Virtual Partitioning Krakatoa 虛擬分區的觀念

篇的是翻譯自maxscript大師Bobo在他的部落格發表的文章, 原標題為"Virtual Partitioning in Krakatoa 1.6.0" . 裡面提到他想到一個方法, 可以用較少的硬碟空間就可算出粒子隨機排列的效果, 他用了epiphany這個字來形容他的發現, 可見這個發現讓他很高興, 很重要. 可惜的是, 原文已經被刪除了, 或許是怕影響到Krakatoa 1.6.0的銷售吧?! 原因不得而知.


----以下為翻譯----
現在是十一月十三日早上五點

這是值得紀念的一刻,因為我剛剛頓悟了某個觀念!

讓我們先回顧一下歷史
如果你是Krakatoa的用戶,你應該知道,分區(partition)是粒子根據來源進行位置與速度隨機變化儲存到硬碟的一種資料。先前的版本把這樣的動態系統套用到Particle Flow、TP與傳統的粒子系統當中,之後的版本則是添加了對不可分區的粒子進行分區(partitioning the unpartitionable)的功能,採用的是高頻雜訊修改器,以此來隨機化粒子,例如茶壺的點,或是由RealFlow模擬而來的PRT Loader,或是任何一種類型的點雲。

後來,就在v1.6.0推出之前,一種全新的,帶有實驗性質的PRT Source出現了! 很少人知道這個東西 (誰要求寫這個東西的,還有誰寫這個東西的就會知道了) 。簡單說,PRT Source物件讓你可以對第三方的粒子來源進行載入、形變 、修改、算圖。假設你寫了一套程序性粒子產生器,你當然不會希望所有的跟變形 KCMs有關的程式碼都要自己來寫。

利用PRT Source,你可以用所有的功能,只要指定幾何體,輸出成Krakatoa particle stream檔案格式,這樣你就會有自己的粒子來源與PRT Source,選中你的粒子來源,你就可以在螢幕上看到粒子,以Krakatoa算圖,而且還可進行變形、選取、刪除等modifier的套用,還有KCMs。

說到這裡你能猜到我的想法嗎?

我頓悟是這樣的:
一般的分區會取用PRT Loader,然後套用Noise modifier,接著儲存。例如10個分區把隨機化的粒子位置儲存在硬碟裡,然後你建立新的PRT Loader,拾取那10個分區,接著算圖,你會看到十倍密的粒子,跟原本的粒子相比位置是分散隨機的,因此可產生好看的隨機效果。

而我所謂的虛擬分區粒子(Virtual Partitioning),只需要一個不帶有Noise modifier的PRT sequence。步驟是,建立一個PRT Source,選取PRT Loader作為資料來源,接著套用Noise modifier,然後呢,你就把這個PRT Source複製九個,總共有十個PRT Source。如果你螢幕顯示變慢的話你可以把粒子顯示關閉。最後,改變這十個PRT Source的Noise modifiers的隨機屬性(Seed),例如0,1,2,3等等。

算圖
所得到的結果跟一般的分區沒有不同!但是佔用的硬碟資料量就沒有那麼多, 通常會更少,

例如,我用茶壺,以半徑22.695作為測試,轉換成PRT Volume,把抖動關閉(Jitter OFF),距離設為1.0,細分設定為1,這樣能產生292,307個粒子。而把這個PRT存到硬碟會占用2,063KB硬碟空間;那若是我們用一般的分區方式,套用Noise Modifier Scale設為0.01,強度設為2.0,三軸都這樣,會產生20個檔案,每個檔案占用4,780KB的硬碟空間。(為何是20呢?因為Krakatoa必須要儲存第零個frame與第一個frame,這樣可以避免PFlow對-1的frame進行分區,但是這件事說來話長…) 而一般的grid檔案與diffused position的檔案的主要不同在於壓縮的方式,regular grid具有比較好的壓縮。

這兩種粒子點雲算圖出來會得到一樣的結果。一個PRT Loader,用了10個分區, 用一盞聚光燈照明,總共花了4.052秒算圖;而如果是複製了10個PRT Sources,並且對這十個PRT Sources進行隨機化處理,用了單一regular grid檔案,算圖時間花了5.349秒,跟傳統作法多花了1.297秒,或是慢了1.3倍。

因此這用了這個方法,你僅僅損失30%的算圖時間,這是因為在算圖時間進行的Noise modifiers計算。因此,我只要花2,063KB的硬碟空間就可以產生跟花費47,800KB硬碟空間一樣的效果!這樣可以節省23.17倍的硬碟空間耶!

當然囉,多個PRT Source的產生可以寫成script。所以今天晚點我會寫一個『Create Virtual Partition from PRT Loader』的腳本!

要來睡囉。

----翻譯完畢----

[相關文章]

2010/12/06

UDK十一月新增功能


個月的UDK更新又來了, 期待的全新地形系統(landscape)並沒有如期出現. 不知是為了參加哪個展覽, 這次新增功能還搭配了這個影片, 在影片的後面說明了主要功能, 但是這個兩年後的硬體配備才可能跑的順的展示, 並不是全都展示全新功能, 絕大部分是舊功能.

Directional Light Shafts方向光的耶穌光效果

Color Grading調色功能, 做出更有氣氛的色調

Cascaded Shadow Maps 根據物件距離改變陰影解析度

Seamless Time of Day Transition 無縫的日夜變化轉換

Weather Effects 氣候效果

Improved Foliage Rendering改善的植物渲染功能

Material Layer Blending材質圖層混合效果 (由乾燥轉潮溼材質)

Point Light Shafts點光源的耶穌光效果

High Quality DOF For Filmmakers 針對電影製作的高品質景深效果. 看起來有做出Bokeh散景, 但實際上在十一月版的新增功能清單裡, 並沒有說明這個重要功能. 開啟11月份範例檔的確可以即時展示散景效果, 實際要開啟哪的選項或是純粹是透過舊功能的調校, 這還要再研究

以上展示功能似乎很令人期待, 但實際開啟場景的Kismet, 兩個字可以形容實際狀況--『硬幹!』

日夜變化, 天氣系統, 材質變化...等是透過Kismet串出來的. 沒有寫成美術能實際使用的功能, 嚴格說出來只能說是Epic公司自的對這些功能的prototype吧!

----以下為翻譯----
這次UDK新增了一個地圖,另外編輯功能也很有多改進

新的日夜變化地圖,你可以在以上Youtube影片看到。這張地圖也附在新版的UDK影片。

新的啟動畫面。增加一些功能。

新的絕對移動模式,方便你用滑鼠來操控移動,這是預設的移動方式。

新的功能改善了移動與旋轉的操作。
這是一個很方便的設計,方便你進行 prototype前期設計。因此。這個工具被定成預設值。

幾個旋轉功能也改善了,但是這幾個功能預設是關閉的。

現在在透視圖也可以進行框選了
\UnrealEngine3\Binaries\MemLeakCheckDiffer.exe.
新的記憶體露出檢查MemLeakCheckDiffer工具,可以在這裡找到。
\UnrealEngine3\Binaries\MemLeakCheckDiffer.exe.

在Matinee裡面,多了一個的針對眼部與頭部的,頭部追蹤的軌道
當你儲存關卡時,你可以對每個子關卡重新命名,甚至可以做前綴命名。

增加新的移動重新命名(“move/rename”)控制指令
當你進行多個soundcues複製到另外一個資產包時, “Name Suffix”這個參數會設設定為關閉。


在畫面中,添加了當游標滑過物件會高亮顯示的功能。

AnimSet編輯器現在允許你搜尋AnimSequence名稱。

材質觀看器現在背景為棋盤格,方便你觀看透明材質。

在屬性窗(PropertyWindows)內多了一個叫做水平網格的開關。

雙擊序列,會讓你開啟該序列的母序列。

當你輸出FBX檔案時再也不會得到三角化的網格了。

對rebuild與檢查關卡多了新的指令。

自動build與提交工具已經不需要了,請看這裡的說明
http://udn.epicgames.com/Three/AutomatedMapBuild.html

雜項
在socket管理員裡面的Sockets現在按字母排列了。

以下的Kismet快捷鍵更新了
C +滑鼠左鍵,添加『console event』

移除了添加註解,快捷鍵C

開啟水平分割線這個功能在不同session都會被記憶下來。

在static meshes與fractured static meshes縮圖上都會再次顯示沒有碰撞『NO COLLISION』的警告。

nFringe script debugging現在可以在64-bit UE3上執行
FBX SDK更新至FBX SDK 2011.3.1
有了這項功能,你不需要先進行三角化就可把模型導入至UE3。

----翻譯完畢----

2010/11/14

建築物爆破:真實與CG之間的鴻溝



3DCG裡面要製作爆破牽涉到幾個幾個基本流程:首先,要把完整的模型弄破碎 (碎裂),再來就是控制這些碎裂的動態移動,還有就是隨之產生的煙塵。碎裂有很多方法,免費的有FractureVoronoi、付費的有Rayfire以及Cebas VolumeBreaker。動態的話則是可以用Particle Flow或是Thinking Particles,強調物理模擬的話可使用內建的Reactor或是付費的Rayfire。煙霧的話可使用FumeFX或是最新的Phoenix FD

這樣看起來似乎一切工具都具備,要做出寫實的建築物爆破沒有太大問題。然而, 實際上真的是這樣嗎?這篇文章裡面,我們講舉幾個實際建築物爆破的例子,分析它的爆破特徵,接著,跟CG做出來的爆破效果比較,看看問題的癥結點在哪邊!

真實的建築物, 是如何爆破的?
我們收集了幾個真實的建築物爆破影片 (截圖取自http://implosionworld.com/網站),分析的重點是碎裂的分佈方式、大小、還有它移動的方式: 我們可在這幾個建築物爆破裡面看到,其實,碎裂是很局部的。一棟建築物甚至可能是一整塊像自由落體般落下,建築體本身只有扭曲的效果卻沒有真正的碎片。有些是因為埋炸藥的方式,建築物變成三大塊落下。小碎片的產生也不是沒有,它會在大塊的建築體之間有很細小的碎片,這之間伴隨著煙塵。除了一開始的炸藥小爆炸外,幾乎都會在很短的時間內,由上往下產生地面煙塵,這些煙塵也會把那些小碎片的細節遮蔽著。

從格子狀的窗戶可看出來 除了建築物本身自屋頂有扭曲之外, 沒有明顯的大塊碎裂. 真正的小碎片反而被煙塵遮蔽

碎裂成三大塊的建築物, 斷點切面間產生了小碎片 夾帶著煙塵. 三大塊幾乎原封不動地沈入地面.

這個例子有比較多的碎片 但也是很局部, 帶有一點扭曲.

建築物只有一點扭曲, 自由落體, 然後就消失在厚重的煙霧當中

我們可以說,真實的建築物爆破,它的大塊碎片幾乎是很完好地落下!如果建築物斷裂成三段,它在落下的過程並不會被切成很平均的碎片,而是頂多帶點扭曲的方式掉在底下的大塊煙塵裡面。之前的知本金帥大飯店也是很好的例子,建築物沒有分裂成小碎片,表現的重點反而是一塊大的建築體往河的方向傾斜,掉落在河流裡激起似煙塵的大水花,把倒下所隨之產生的小碎片都遮蔽著了!

若是以此為參考, 倒塌的建築物可以沒有明顯碎裂, 也能有很好的擬真效果.

電腦動畫的爆破
接下來,我們看看電腦動畫處理的大樓倒塌,效果是如何。我們先看Rayfire的幾個範例,首先,這個例子建築物被預先切割成很細的碎片。當大樓倒塌時,這些碎片很平均的擴散開來,往地面塌陷。雖然Rayfire具有根據撞擊點來產生更係小的碎片的功能,但是跟真實的大樓爆破影片想比,你就會馬上發現到問題點: 碎片根本就沒有想像的多,而就算弄了超多的碎片,也不保證模擬效果能夠很擬真。原因就是碎片本來就沒有那麼多,大樓也不會像切碎機那樣被切的那樣平均!Rayfire影片的另外一個例子是天外飛來一個隕石,把大樓打成碎片,這跟實際的大樓爆破影片也有很大差距。可以跟911的世貿大樓相比,就知道在撞擊瞬間,根本就不會把大樓切成那樣多的小碎片。因此我們知道,就算是你設定Rayfire把你的建築3D模型切碎成三萬個碎片,也不能保證做出寫實的爆破感! 況且,切的越細會讓電腦效能急速下降。

Rayfire的問題是, 碎的太平均了!

天外飛來的隕石, 讓大樓整個脆掉! 好假!

真正的狀況應該是, 撞擊點很局部的碎裂 夾帶煙塵; 其餘部分幾乎是完整的.

另外一個例子是利用VolumeBreaker與ThinkingParticle製作的電影2012特效片段。在這個例子裡很顯然製作人員比較有概念,他們知道完全用物理模擬的爆破特效反而不能做出真實的效果。所以用的是混合的表現方式:一方面用物理來計算大面積的建築物塊;一方面當右邊的建築物倒塌到左邊時,用程序性的方式產生撞擊點的細小碎片。這樣,整體而言,建築物本身並沒有太過平均的被切割成片段,而撞擊點本身就能夠提供夠細緻的碎裂片段,這的確是比較高明的作法!

電影2012的特效算圖效果

電影2012特效, 可看出Thinking Particles在撞擊點局部產生碎裂與許多微小粒子. 這粒子可以不是物理的幾何體.

話說回來,Rayfire的策略也並非完全無用武之地。對於那種本身是凸面體(convex) 而不是像建築物那樣有複雜的凹面(concave)幾何構造,例如一座雕像、或是高速公路這類的物體,用Rayfire就能產生相當不錯的效果。尤其Rayfire可以讓碎片碎了再碎,因此對於局部的爆破表現,效果仍然可圈可點。

Rayfire用在雕像的爆破相當適合.

高速公路的模型通常是凸面體, 因此效果通常可以很逼真.

筆者曾經嘗試了幾種方法想要做出寫實的建築物爆破效果,但效果總是不滿意。 後來才發現原來問題根本就不是碎片的數量問題,而是它實際的爆破方式不是像現有的破碎軟體那樣是可以『按個紐』就能模擬出來的,中間是需要一些微調、一些程序性控制、一些粒子特效(而非幾何碎片的物理碰撞模擬)、甚至一些人為的keyframing的動作,才有可能做出令人信服的特效。而這中間煙霧對細節遮蔽,也會有大大加分的效果。提供給讀者分享。


筆者利用Rayfire製作的大樓倒塌效果. 效果不是很理想.

----本文完----

[相關文章]



2010/11/07

次世代場景設計---模組化(Modular Level)的觀念


古早時代的瑪莉兄弟, 模組化的設計隨處可見!
世代的遊戲角色設計, 這個名詞常常聽到. 次世代場景設計卻少被提及. 如果讀者有開過UDK的場景地圖 就會發現即便是像Unreal這樣的第一人稱射擊遊戲的場景 並不是多人玩家的MMO遊戲, 場景卻都還是大量使用模組化的設計概念 把場景模型對記憶體的損耗減小到最低!

Unreal Engine 3關卡的模組化設計與遊戲資產

模組化場景設計並不是創新的觀念, 早在任天堂時代, 硬體昂貴記憶體匱乏的狀況下, 模組化設計其實是關卡設計師不得不做的必要策略. 在這動不動就要求相片寫實的次世代遊戲時代裡 場景設計師面對的困難並沒有改變! 即便是記憶體有了4Gb, 上限還是存在. 對於MMO類型的遊戲, 難道就不該奉行"模組化"設計的教條嗎?

2010/10/13

Normal Map 法線貼圖 (三)

這篇是Normal Map系列文章的最後一篇. Normal Map產生的重點不外乎做bevel, smooth group的設定. 如果是對稱的模型, Normal map只做一半會遇到更麻煩的問題. 最後到了遊戲裡面除了normal map以外, light map的UV又是另外一個問題點.


----以下為翻譯
原文連結請點這裡

標題:針對light-maps來拆UV
翻譯: Hammer Chen

沿著材質的X軸做鏡像

這會影響light-map材質與vertex light-maps

Light-maps會用三種不同方像儲存光線,然後根據實際的每個像素法線來做混合。 這三個方向是固定在切線空間。因此,在世界空間會跟材質座標一樣被鏡射,而這個方向只在材質的X軸會對稱。為了確保鏡射邊縫的兩邊都採用相同方向的世界空間,UV貼圖與模型的對稱邊縫會盡可能地垂直。

在鏡像邊縫的兩旁使用相同的世界座標方向是很重要的,因為這樣light-map才能精確地計算出來。如果兩側用了不同的方向,光照貼圖在兩側的邊縫計算就會不正確,最後會導至明顯的縫隙。

切線空間會建立在第一組UV set,因此,這是材質的座標,所以要沿著X軸對稱。

把light-map UVs切開來做對稱。

模型的light-map UVs必須在鏡射的縫隙之間要留幾個texel,這樣做是必要的,因為這兩半沒辦法混合在一起。如果這兩半沒有間距開來,那麼套用到light-maps上面的smoothing filter,或是材質的bilinear texture filtering會讓縫隙產生!

請看這個牆的模型,藉由把法線貼圖沿著x軸對稱可以節省材質空間。