2012/04/15

Houdini 12新增功能介紹


從好萊塢電影, 到高階的廣告, 到次世代電視遊戲, 為了虜獲觀眾的心, 視覺特效一直是決勝點. 而要取得高階的, 寫實的火焰, 煙霧與流體特效, 在過去會需要耗費大量的模擬時間與電腦記憶體, 有了Houdini 12, VFX將會體驗到整個遊戲規則的改變 ,不論是速度或是記憶體的需求, 更容易達到賣座大片的品質了!



內建新的, 強大的幾合體引擎, Houdini 12 針對動態物理與算圖進行最佳化, 重新改寫了OpenGL 3 viewport. Houdini 12也包含了整合了Bullet solver物理解算器, Pyro FX 2, 更快更精確的FLIP fluids流體, 真的能拿來做案子的布料(production-ready cloth)以及Alembic格式的輸出功能...等等.

效能
Houdini 12重新改寫了舊的架構以達到更快速, 更有效地利用記憶體, 從新的幾何體引擎, 到針對動態物理與算圖的最佳化 到viewport的強化, 用戶可以更快速地修改.

新的幾何體架構
  • 藏在內部的機制Houdini變得更快 ,更有效地處理幾合體
  • 更小的記憶體足跡
  • 更快速的, 以向量為中心(vector-centric)的資料架構
  • 可客製化的, 新的幾合體, 屬性與資料類型
  • 多線程運算
  • Vertex & edge groups (以屬性來儲存)
  • 由向量分離出來的法線轉換(Normal transforms separate from vectors)
  • JSON-based (ASCII and binary) geometry檔案格式
Viewport
現在Viewport是以OpenGL 3.2來處理的, 這是一個當代shader-based的算圖器, 針對OpenGL 3 與 4的硬體撰寫, 有了多的功能, 例如高亮選取與geometry shaders, 這能夠處理大量的資料組, 這也會是預設的場景算圖器 .

PYRO FX 2
有了PYRO FX 2 火焰與煙霧模擬效果看起來更加寫實. 速度更快也更容易設定, Houdini 12裡面速度有很明顯的長進, 可以做更多次迭代運算. 使用GPU運算模擬提升到新的層次, 在體積渲染方面又往前邁進, 能夠做出驚人的效果.



Pyro的效果也改寫了, 變得更有效, 更好控制. 煙霧, 火焰, 燃料, 碰撞等等. 現在可以以volumes導入到SOP networks 作為來源, 因此你可以完全利用到SOP架構的威力, 產生sources The Fluid Source SOP是很強大的節點, 產生source volumes.

你能夠細切(shred)火焰 (例如紙張) 產生具有更多細節與寫實度的火舌. 與其單純地模擬銳利的火舌效果, 細切(shredding)是種很獨特的解算功能, 把比較粗的火焰以noise細切, 達到更細更銳利的火焰效果.

Time-scale的功能: 讓你在模擬完後改變速度, 讓你獲得寫實的慢動作效果, 結果還會比你用正常速度模擬出來的然後用後製改變速度來的要寫實.

自動縮放pyro模擬範圍: 根據pyro volume來決定, 省卻了使用者手動控制的動作, 選取最有效, 最經濟的模擬範圍, 以模擬出火焰與煙霧的動態.

Pyro現在更快了, 採用OpenCL的硬體加速與CPU上面的OpenCL library函式庫相容, 這表示在工作站上以GPU模擬出來的效果與非互動式(non-interactively)的無控制的渲染農場(headless farm)模擬出來的結果會一模一樣, 目前的速度與業界其他軟體相同甚至更快.

更加寫實的火焰與煙霧, 這要感謝無數次的物理 shader與其他演算法的修正 以及VOP based shader讓你可以學習並客製化外觀. 還提供新的Multigrid projection法, 會以多線程最佳化來計算煙霧, 還有Pyro Solver DOPs, 這個東西會比Houdini 11的PCG算法明顯地更快速. 計算行為類似PCG 也會給您Pressure Field , 但是, 如果你要使用Feedback Scale 讓你的流體物件能夠與其他模擬的物件互動, 那就請您使用PCG projection的計算法吧!

Pyro Clustering
Houdini現在提供新的工具, 將大量的Pyro source指向大量(“clusters”)相鄰的點, 而每個“clusters”會有自己的pyro container 這讓你可以個別檢視大型的模擬, 然後同時地模擬農場模擬/渲染這些clusters.

你不會看到接縫 或是明顯的邊界 box可以相互重疊, 你可以控制clusters的數目Smoke cluster 與 Pyro Cluster shelf tools會拾取一組的source points 然後會產生節點, 會自動resizing, clustered模擬.

因為你可以關掉互動顯示框, 分別地解算與渲染, 你可以使用clustering來產生, 基本上無大小限制的pyro simulations.

Pyro Shader
Houdini 12提供新版的Pyro shader 這套電影等級品質的shader可用在火焰與煙霧特效, 介面相當簡單. Pyro shader現在提供viewport顯示與shader數值同步化的功能, 你可以修改其中一個, 然後數值就會在其他的pyro上更新.

FLIP FLUIDS
FLIP Fluids現在提昇了可達原本十倍快的效能, 產生超過10倍的資料量, 更加穩定的行為, 新的黏度控制讓你可以模擬液體的融化與硬化效果. 整體來說FLIP fluids讓你產生更大型, 更快速的特效.



Houdini 12現在顯著地提昇FLIP solver
  • 改善效能且能夠處理大型的資料量
  • 簡化架構 透過particle fluid tools
  • 能夠與Populate Containers shelf tab協同工作
  • 避免模擬問題 (能量突然變化, 體積變少, 絲狀的水花, 過慢的亂流, 瘋狂的水滴等問題)
  • FLIP solver現在是Houdini裡面偏好的液體模擬法
可變得黏度(Variable Viscocity)
Houdini 12現在添加重要的, 新的黏度控制參數, 這對模擬不同類型的流體很有用, 可以模擬出融化與硬化的效果. 新的Make Viscous shelf tool會自動啟動FLIP Fluid的黏度參數.

BULLET
Bullet解算器現在已經變成業界標準, 也變成了Houdini預設的RBD解算器了. 提供超級快速的剛體模擬功能, Bullet整合到Houdini 12物理動態模擬中, 能夠支援動態碎裂, 也能夠與流體互動.



Bullet RBD解算器完全整合到DOPs裡面, 現在是預設的解算器, 能夠處理大量的資料量, 支援動態碎裂與流體, 也可以使用約束架構, 產生黏著(glue)效果, 讓你可以有很多控制, 你還是可以切回到RBD Solver 或ODE Solver 透過Rigid Body Solver選單裡面做切換.

CLOTH
Houdini 12裡面的布料解算器真的能拿來用在專案製作上, 能夠處理, 產生大量, 可靠的布料模擬效果, 使用數學上精確的模擬模型. 新的解算器能處理困難的狀況並提供點層級的控制性, 角色特效美術人員一定會很想看看這個驚人解算器!



Houdini 12現在很顯著地強化了布料解算器
速度上與過去的cloth solvers相當 對處理pinching有更佳控制, 尺度與解析度都是獨立參數, 因此在不同解析度布料的行為是一樣的, 也能夠將模擬的布料與手key的動態相互混合.

新的shelf tools可以定義 編輯軟的或適應的約束(constraints), 包含了更加進階的point-to-point constraints 新的工具如Attach Cloth to Body, Cloth Follow Animation, 與 Stitch Cloth.
你現在可以將低解析度模擬的布料轉移到高解析度的模型上, 用在算圖時, 透過Cloth Capture SOP 與 Cloth Deform SOP.

現在也支援多層布料, 包含了皮帶與口袋.
Houdini精確的, 物理為基礎的運算模型提供寫實的, 不會拉扯的布料.

新的SOP稱為PolyDoctor是專為布料所設計的, 但是也可以作為一般的工具, 拿來清理個別的, 構型不佳的幾合體, 它的某些功能也可以透過現有的Clean SOP來使用digital asset現在也含了PolyDoctor.

能夠用動態的幾何體來影響布料的模擬, 這些讓布的某些部位可以有特別的形狀或是拉扯效果, 其餘的部份維持想要的形狀.

RENDERING
Houdini提供大量的工具, 專為輸出資料, 可以設定拿來設定遊戲關卡Houdini能夠處理大量資料, 讓他能夠處理客製化的屬性與blind data, 你可以很容易地製作遊戲關卡的pre-viz 使用OpenGL然後輸出關卡為點資料, 讓遊戲引擎產生背景.



Mantra Volumetrics
支援隨機的(stochastic)透明度, 用在mantra的 volume 與 transparent surface shading engine 新的演算法, 能夠讓mantra渲染單一次組的ray march採樣, 這樣可以動態地加速ray traced volume renders 會產生雜訊比較多的渲染, 但是速度上會比較快, 因為需要的採樣較少. 關掉Stochastic Transparency會造成所有的透明度採樣都計算, 就如同H11的算法一樣.

Visual Effects視覺特效

VFX視覺特效師如您, 總是受到導演的美術眼光的各種挑戰, 要創造更寫實的效果. Houdini支援開發的階段, 你可以探索現象背後的科學並且在美術角度的階段專注在設計與外觀效果上. Houdini的高階地理與動態物理模擬工具, 讓你可以探索 創造特效, 透過友善的節點式工作流程. 你能夠穩定地產生, 多次的疊代運算(iterations) 而且對導演要求的可以迅速反應.

Houdini讓你可以把模型, 動畫, 物理模擬與算圖結合在一起, 產生更加寫實的VFX視覺特效, 藉由把VFX整合到所有的生產類別Houdini的程序性. 工作流程提供免外掛(out-of-box)就能達到的工具組, 讓你可以有效地與您現有的其他軟體有效率地工作, 例如FBX格式, 你也可以讓Houdini深入工作流程, 透過Houdini的開發套件與擴充的Python支援, 不論您是在製作點影, 電視特效或是高品質的廣告Houdini都能幫助您控制資料, 用你難以想像的方式來運作.

用規則來控制的粒子
VFX視覺特效通常帶有自然的, 有機的粒子運動方式. Houdini的規則為基礎的粒子特效, 提供可靠的回饋, 當你微調參數的時候或是添加expression到程序性節點的時候, 可以得到可靠的回饋, 這讓你更容易獲得可控制的結果, 但還能有創意表現.

當您在建立粒子特效的時候, Houdini會幫你處理需要計算的矩陣, 你可以專注在動作的品質, 透過程序性的控制, 讓你可以充分地操控效果. 當模擬完成後, 你還可以進一步地添加二級效果, 或是微調結果, 根據導演又在最後一分鐘的修改要求.

製作大爆炸
由於電腦遊戲, 與遊戲機變成HD畫質, 而電影也跟著變化, 總是會需要更大, 更刺激的視覺特效. 客戶會預期你能夠帶給觀眾震撼, 這表示你需要製作更多的分鏡, 以及更緊迫的製作時程. Houdini的程序性流程, 提供視覺特效流程, 專門幫助您達到以上需求, 節省時間.

從精確的剛體工具, 到新的Pyro FX火焰與煙霧工具, Houdini的節點式工作流程, 讓您可以產生不可思議的高細節與獨特的寫實模擬效果. 有了高度的連動性與操控感, Houdini讓你可以感受到在其他軟體無法得到的操控性, 不會花您太久時間就能讓您達到獨特的效果, 讓您更有競爭力.

灰塵與碎片
許多VFX分鏡都涉及到二級特效, 有了二級特效能夠提昇寫實感, 因此煙塵與碎片通常會緊密結合. 在主角特效上 (hero effect) 這對整個畫面也有加分作用 . Houdini讓您可以很容易地產生, 你可以在前期的時候有個原型, 然後再正式製作的時候把數量增大.

感謝Houdini程序化的工作流程, 可以確保二級特效能夠吃到衝擊時所產生的力道, 這樣你就可以微調主特效, 在最後一刻把二級特效加進去 (自動產生).

深探背後的運作原理
Houdini的動畫與模擬工具並不是黑盒子般深不可測. 程序性的節點架構讓你可以修改所有動態模擬的功能. 想像一下你可以把任何剛體物件取代成完全不同的東西, 有了Houdini 這套軟體把你所有想得到的困難, 例如物件穿透, 都預先想好了.

Houdini不但替你們美術人員與TD們想好互動性, 還提供了專門的解決方案與客製化的code撰寫, 你可以使用開發套件添加您自己的工具到Houdini , 利用Houdini的使用者介面, 整合您的工具, 而code也能與Houdini節點式的系統進行程序性的運作, 能與Houdini其他的節點協同工作.

建立您的特效資料庫
視覺特效通常會在分鏡裡面出現好幾次, 甚至不同專案也會重複, 這讓Houdini的節點架構更加有用 因為重複使用特效, 可是也不同的設定可以產生獨特的結果. 您只需要調整參數, 或是重串節點, 就可以產生完全不同的效果.

你也可以把這些節點網絡轉換成Houdini Digital Assets數位資產, 能夠套用在任何專案上面, 這些資產具有所有的節點, 也很容易微調, 以達到需求, 場景能夠參照資產 (從中央管理的儲存位置) 然後可以設定自動更新, 如果資產有進行任何變更.

Lighting and Rendering照明與算圖
Houdini節點式的工作流程可以產生自然的資料流, 當您串接整個流程的時候, 你可以導入靜態或是動態的模型, 然後餵給美術人員看的懂得節點架構. 當你改變模型或是動畫的時候, 這些編輯會自動下傳到整個節點, 軟體會自己幫你處理複雜的運算, 你不需要寫code來處理, 當你在製作電影, 電視特效或是高品質的廣告的時候, 這種功能可以讓你準時地完成專案.

組合場景
把分鏡裡面的元件組合起來, 管理這些元件. 這對成功的照明流程十分重要. 在Houdini裡面, 你可以利用數位資產, 讓你封裝模型, 材質, 貼圖與動態到單一的節點, 然後可以很穩定轉移到多個場景. 這樣的資產可以分享到不同的案子上面, 當改變的時候也以輕易地更新.

Houdini也支援幾合體的快取, 你可以用Houdini的bgeo格式儲存或FBX以及即將出現的Alembic格式. 透過Houdini Batch, 這是非圖形介面版的Houdini, 你也可以建立外部的資產管理方案, 讓數位資產在算圖的時候才整合到場景中以獲取最大的彈性.
非線性照明工作流程
Houdini的燈光可以用數位資產的觀念建立, 可以把這樣的設定分布到整個生產生面. 燈光可以打包成客製化工具, 因此資深的美術人員可以控制整個大方向, 而資淺的員工可以針對每個分鏡做微調, 這讓您容易管理最終結果, 但又允許你多次的調整, 資產也可以輕易地更新, 分散到所有需要的分鏡中.

具實戰經驗的Mantra算圖器
Mantra是套混合的算圖器, 具有傳統的scanline法與物理精確這兩種算法, 你可以使用Houdini互動的shader建立您的材質, 然後使用快速的動態模糊, 景深與次表面散射3S效果, 算出非常寫實的結果.

Houdini的Mantra也能拿來算圖3D立體影像, 使用3D立體攝影機設定分鏡, 決定最適合的兩眼視差 (interaxial distance). 由於現在隨時都有新的3D電影推出, 能夠做出3D攝影機正確的設定十分重要.

Volume Rendering (體積算圖)
除了Houdini是VFX特效人員的好工具外, Mantra也很適合拿來渲染體積算圖, 這些3D格點通常拿來做煙霧或是火焰的模擬運算. 這裡面包含了必要的資訊, 例如密度, 熱或是溫度Mantra能夠擷取volume裡面的資訊, 添加SSS的效果與裡頭光 照的效果. 你也可以透過edge filtering 來控制算圖效果的銳利度或是柔和度.

多個算圖引擎
Houdini開放式的架構, 設計上就是為了處理多個算圖引擎, 內建就支援了Pixar RenderMan 包含以節點為基礎的RSL shader builder.

[相關資訊]


2012/04/14

BrandonD談FumeFX retime變速效果

編譯:Hammer Chen

---以下為翻譯---
fumefx 2.0 post processing會閃爍的問題
cooperunionstud先生問: 我算圖出來的效果, 有遇到因為fumefx post processing產生閃爍的問題. 我是把變速功能(retiming)的數值由1.0降到0.3 (譯者注:也就是降速到原本的30%) , 透過fumefx post processing的功能. 最終的動態看來是好的, 但是當我算圖的時候出現奇怪的閃爍問題. 我認為這跟後製計算(post processing)有關, 有沒有人知道要怎樣修正此問題呢?

2012/02/12

thinkingParticles重要的Operator


學習thinkingParticles有段時間了, 整理一下重要的operator供各位參考. 相關測試效果:










---以下為翻譯---
譯自: cebas wiki
翻譯: Hammer Chen



ValueToTimeOperator
Value To Time 讓你可以把任何數值(scalar)轉換成time數值. 任何丟到裡面的數值都會轉換成time (frames/ticks). 這工具很強大, 想像一下, 你可以把距離轉換成時間, 這樣, 你就可以控制一個動態物件的移動速度了. 例如: 你把Speed接到這個Operator裡面, 而速度是20, Value To Time就會把這個轉換成20個frame或是tick .

AlignmentOperator
進階的粒子動畫必須要能夠把讓粒子在空間中對齊某方向. Alignment Operator一般可以用在飛行的鳥群, 可以讓鳥永遠面向他飛行的方向.

BubbleMotionOperator
Bubble Motion Operator有其特殊用途, 能夠增加粒子的二級動態效果, 例如可以製作海中泡泡升起扭動的效果.

HFragmenterModifier
thinkingParticles提供真實的階層物件拆解工具, 很容易地製作複雜的崩壞效果. 要知道物理的精確性與視覺上的複雜建築物破壞效果. (例如一棟摩天大樓, 一架飛機, 一棟房屋) 這些不管對軟體來說或是美術人員來說都很複雜. 為了要完全地利用TP的威力, 必須要進行預先爆破的功能與規畫.

如同真實世界一般, 爆破建築物必須要經過周詳的計畫與實行. 即使是在一開始的時候的微小錯誤, 都有可能造成大災難. TP也一樣, 不對的鋼骨結構最後會導致再怎樣模擬都是無效的物理模擬結果.

結構受到的混亂外力
Hfragmenter其實就是把複雜的物理結構, 變成單一容易使用的介面, 讓你可以在任何時候都能完全地控制. HFragmenter是一種階層式的破壞 (爆破)結構工具, 不只是thinkingParticles裡面的單一結點而已, 它其實是多個工具組, 能夠相互協同工作. TP裡面有提供三組工具, 三者要協同工作, 提供自動化的相互連結, 以下:

  • HFragmenter thinkingParticles Node
  • HFragmenter Modifier
  • TP Collapse (Utility)

整體的結構
這裡列出這些工具的目的是要幫助你建立結構的骨架, 讓你可以自由地調整物理參數, 用層級式的方式對不同物件作排序, 然後摧毀之. 這種獨特的方式讓你可以自由地定義破碎的部位, 以及何時要讓該部位破碎, 一但結構性骨架定義好了以後, 你可以在任何時候改變效果.

產生這個之後會被打破的物件有一套規則, 不能式單一物件, 所有的面或是部位需要塌陷成一個mesh 請看以下的規則:

例如
你想要摧毀一棟完整的建築物, 而這棟建築物裡面含有:
  • 屋頂的瓦片
  • 屋頂的樑柱
  • 牆面
  • 窗戶
  • 窗框
  • 椅子
  • 沙發
  • 煙囪
  • 桌子
這些東西加起來可能會達到上百甚至上千個. 請記住, 這些物件最後需要變成單一個mesh, 而神奇的HFragmenter就可以發揮這個功能. 一但模型建立了, 它會定義出破壞群組, 根據命名方式選取元件 採用適當的層級架構, 讓你可以輕易地定義整個破壞的順序與依序產生的碎片.
如果我根本就不想要設定整個結構呢?
把上千個物件塌陷成單一個模型, 然後指定各個元件, 定義成特定的群組, 這樣的工作真的很耗工. HFragmenter Modifier提供必要的工具, 定義結構性的架構, 而且瞬間就完成了. 還有另外一個工具能夠幫助你更快速地製作複雜設定----3ds Max utility TP Collapse會自動準備複雜的3ds max rig, 利用HFragmenter Modifier. 事實上, 它會自動塌陷多個連結的物件變成單一的模型, 然後指定適當的Fragmenter Groups .要學習更多關於TP Collapse Utility請點這裡.

為何要轉換成單一個模型?
單一模型當初要設計成這樣的原因是, 是要讓shape collision的引擎能夠處理大量複雜的物件, 讓彼此之間互動. 刻意安排出(Carving out)的碎片, 讓引擎能夠指計算物件的某一部件, 在特定時間產生想要的效果. 另外一個關鍵優點是單一模型的方式保留了零件質量的特性. 想像一下, 一個巨大的建築物的3D模型, 有好幾樓層, 每層都有好幾個房間, 房間內又有很多物件, 例如椅子, 桌子, 門, 地毯, 燈具...等等. 為了要模擬整棟大樓的倒塌, 就好像發生地震般, 這對物理引擎是一個相當巨量的任務. 如果要處理大樓裡面的每個單一物件的話, 其如如果是對每個元件處理破碎, 當破碎慢慢在建築物中擴散, 這樣的作業方式比較有效率.

ThinkingParticlesUtilities
TP Collapse是一個工具, 你可以在3ds Max的Utility裡面找到. TP Collapse是一個很簡單卻又很強大的工具, 它本身並沒有UI的控制選項, 工作流程如下:
  1. 選取一個rigged (也就是鏈結的)物件
  2. Call/Activate 啟動TP Collapse工具
這個工具會合併所有任何鏈結的物件, 把它變成單一個mesh, 然後自動地套用HFragment Modifier . 裡面帶有適當的階層設定與命名, 這些是根據原本鏈結的方式.

就像下面的插圖, 簡單的3ds Max設定用來表現TP Collapse Utility的功能, 左邊的物件包含了多個物件, 所有的物件都鏈結在一起. 右邊則是套用TP Collapse產生出來的 (單一個mesh 帶有HFragmenter修改器).

以下是鏈結物件的階層關係. 請注意! joints關節都會連接到根的dummy物件, 為了要讓TP Collapse utility能夠正常運作, TP的joint helpers能夠幫助能夠鏈結到任何的層級. 而joint helpers得實際位置其實沒有關係, 但是為了要更容易找到或處理物件, 把所有物件連結到root會比較好.

當你用link的方式在3ds max建立階層關係的物件, 會自動地轉移到HFragmenter modifier裡頭. 這個修改器會產生單一的模型, 把物件拆解成適當的FGroups.

PhysXOperator
thinkingParticles提供另外一種的剛體物理運算Operator. 它真的會判斷物件的形狀, 除了精確性以外, PhysX operator還提供對AGEIA Dynamics system完整的支援, 也會支援將來的PhysX晶片 . 這個硬體會大大地加速剛體碰撞的運算!

儘管你可以在單一個DynamicSet 裡面放多個PhysX collision operators, 我們還是建議你盡量用少一點的operators, 因為這會消耗大量的記憶體.

TexMapColorOperator
這是一個很先進的helper nodes, 要與MatterWaves operator以起運作, 取得當前物件的表面貼圖顏色. 當與pyrocluster一起使用時, TexmapColor會使用UVW 或Position input 決定顏色, 讓你可以控制volumetrics color的顏色, 根據物件表面的顏色來決定.

另外一種應用是根據物件的貼圖顏色來產生粒子效果.

TimeBaseOperator
TimeBase Helper讓你可以控制連接到的operators動畫處理的時機.

在非線性動畫的最基本的概念是: 物件的動畫不是固定在特定的frame或是時間數值上, 一旦動畫建立了, 你可以在之後的適當時機再播放該動畫或是設定適當的縮放與動作的混合.

最好的例子大概就是飛鳥群了! 鳥的翅膀動畫會跟他飛行的速度有關. 我們想像一下, 標準的翅膀運動會花費30個frame好了, 但是如果你要製作發狂的鳥兒, 翅膀應該要拍打很快, 對於飛行比較慢的鳥也會遇到這種狀況, 翅膀的動作應該要放慢.

這就是非線性動畫的最佳範例, 使用thinkingParticles與TimeBase Helper, 你就可以縮放鳥翅膀飛行的時間, 根據您需求來調整.

TimeLoopOperator
Time Loop Helper提供了另一個非線性動畫的功能, 讓你可以控制動畫, 不必讓動畫固定在特定的時間點. 所有連接到這個的operators將會在特定的時間範圍內進行loop循環.

TimerOperator
thinkingParticles提供先進的非線性動畫的功能, 讓你用完全不同的方式控制時間. Timer Helper其實就像是一個計時器, 讓你控制時間起始範圍, 根據特定的條件.

Timer1Operator
如同其他的timer Helpers一樣. Timer1 Helper會使用現有的動畫, 然後以非線性動畫的方式控制其播放時間. 請仔細閱讀以下範例, 你就會更了解其運作方式:

想像一下你有個具有動畫的門, 時間有31個frame才會到達打開的狀態. 而動畫有兩個keyframes, 其中一個在frame 0 (門關閉), 另外一個在frame 30 (門開啟). 標準的動畫軟體例如3ds max, 理解這種線性的動畫, 所以在按下播放鍵, 很自然地就會由frame 0播放到frame 30. 但是如果用Timer1 Helper來控制, 讓你萃取這31個frame的動畫, 然後用不同的時間方式來控制它的播放. 你可以觸發它的起始與停止的時間, 或是讓它暫停, 或是重複播放.

要使用Timer1 Helper 你一定知道block animation區段動畫裡面的常數(constants) ,這裡面有哪幾個frame有key. 在本例裡面只有兩個key frames ,來開啟關閉門, 既然知道這樣, 你就可以自由地以Timer1 Helper觸發你想要的門動畫.

Start parameter就代表第一個絕對的keyframe. 在本例裡面就是frame 0, 也就是門關閉的狀態.Frames1就代表播放完整個動畫 (frame 0-30) 的時間, Hold1 代表了最後的播放frame. 本例裡面就是frame 30, 也就是門開啟的狀態.

我們再複習一遍開門動畫. 讓我們將start設定為 0 , Frames1設定成15, 而Hold1設定成30. 這樣的設定, 整個動畫會在15個frame裡面播放完成.

Time2 sequence會在Time1播放完後接著下去, 這會控制添加的動畫的長度, 基本的觀念跟Time1是一樣的. Time3會定義到達整個動畫的最後位置所需要的時間, 請注意這邊最後(end)的時間並不是Timer1, 而是整個動畫的最後一個frame .在開門動畫的例子裡, End的數值設定為0 這表示門會回到它關閉的狀態, 也就是(frame 0) .為了要讓動畫結束的時候門能夠微微打開, 你可以設定成frame 5 或 10 ,這會對應到門的完整動畫(Frame 0-30)裡面的開啟狀態.

上面的說明聽起來很複雜, 但是別擔心, 如果你第一次還沒辦法完全聽懂的話, 請再閱讀一次, 你將會更了解非線性動畫. 請看看門開啟的範例檔, 它在thinkingParticles安裝資料夾裡面可以找到.

GetDirectionOperator
Get Direction Helper是個數學相關的operator, 當你需要取得粒子方向的資訊舊可以用到他, 這個operator的主要目的是給你能從單一個Alignment input資料串流取得確實的方向資訊.

IntersectOperator
intersect Helper Node是用來取得粒子在空間中運動的交錯點, 這個交錯的計算是藉由發出射線, 根據粒子移動的方向, 或是使用者定義的向量來決定. 這個Node常被用來計算在表面的衝擊點的位置.

ShapeJointOperator
Shape Joint Node會動態地在兩個粒子之間產生鏈結, 這個node可以利用Shape Collision node的碰撞資料, 有就是能支援完整的自身碰撞與其他物件的碰撞.

RepulsionBounceOperator
Repulsion Bounce能夠讓你產生兩個不同Group粒子之間的動態效果, 當這個Operator或得true的串流的時候, 就會啟動粒子的反彈或是旋轉. 很多狀況你會拿來作為PPassAB Initiator當中的Distance Condition搭配Repulsion Bounce operator所使用.

SetRefOperator
SetRef是TP裡面三個跟Reference operator參照系統相關的其中一個. SetRef用來建立粒子與粒子之間的關係的參照, 在參照建立以後, GetRef operator是用來取得參照關係的資訊. 而ClearRef operator則是用來移除粒子之間的參照關係.

TP裡面的Reference參照系統跟3ds max的參照有點不太一樣, 在TP裡面參照指的是兩個粒子之間 其中一個粒子是定義成To particle 其他的粒子則是定義成From particle, 這彼此之間並沒有階層的關係. 只有To/From方向的關係. 常常會誤解說From particle就是To particle它的父母層級, 其實不是的!

請記住參照關係是有方向性的, 有就是由From到To的粒子. 當你使用SetRef會定義出方向性的參照關係, 所以當你使用GetRef的時候, 你在問From或是To的粒子, 誰是你的參照, 你一定要指定出你要的是To 還是 From的參照粒子.

PsearchOperator
PSearch node可以用在很多進階的特效, 當你需要找到最接近或是最遠的粒子, 根據你設定的搜尋範圍, 而這個node也提供了許多的output, 讓你可以取得所有重大的資料, 用在進階的特效.

PPassOperator
PPass Operator的功能就像Group operator一樣, 而Group operator是從thinkingParticles 1.0就有的. 但是, 不像舊的Group operator, PPass提供先進的功能, 容易控制粒子的群組, 它會有下拉式的選單, 讓你在任何時候改變粒子群組, 讓你不需要重新串接或是刪除原本的設定.

PPassABOperator
PPassAB Operator其實就跟TP的Group operator很像. PPassAB的最大優點是能夠計算不同群組的粒子之間的互動, 這是在TP裡面唯一能夠產生非常最佳化的粒子互動, 碰撞效果. 計算兩個不同群組的粒子的距離, 也就只能用PPassAB來計算.

PathPositionOperator
Path Position helper很適合用在你需要把粒子放在path上的時候, 這個path可以是spline或是mesh上選取的edge.

ShapeCollisionOperator
thinkingParticles提供獨特的Shape Collision Operator 它真的會去考慮粒子的形狀動態的碰撞偵測引擎, 當與TP知名的動態碎裂系統一起使用的時候, 你可以產生驚人的動態效果, 快速且有效.

Shape Collision operator最強力的背書就是知名的賣座電影2012 電影裡面有很多爆破特效

PAttachOperator
PAttach是一個很有用的動態物理的operator 讓你可以把粒子附著到另外的粒子

要理解From/To的關係的意思最簡單的方法就是把它當成Child/Parent的關係, 其中From就是Child 而To就是Parent. 這就跟3ds max標準的階層關係一樣, 當Parent的位置/旋轉/縮放會直接地影響到連結到它的children. 所以From的粒子會連結到To的粒子, 而且也會遺傳到其移動旋轉的資訊.

要小心的是, 當使用PAttach with SC 與 ShapeCollision可能會發生錯誤!

如果你以前有用過Particle Flow PAttach就跟Lock/Bond operator很像!

MatterWavesOperator
MatterWaves Operator讓你根據多個材質產生驚人的粒子特效, 透過材質你可以控制粒子. MatterWaves是非常先進的粒子系統, 這種功能你只會在高階的動畫軟體裡面找到.

為了保證能無縫地與3ds max整合在一起, 我們用了很多新的程式撰寫技術, 其中一個技術稱為Multi-Layer Particle Control (MLPC). 這個技術讓你可以產生粒子, 基於多個材質貼圖, 就是這個技術讓MatterWaves Operator與其他產品有所不同.

PaintOperator
thinkingParticles提供進階的繪製的功能---- Paint Operator, 讓你可以在物件表面繪製粒子, 每個在物件表面產生的粒子都會產生顏色或是材質效果, 碰撞偵測的運算是精確的, 它也會判斷是否有碰撞到. 如果是串接到on的話, 為了要在物件表面繪製, 你必須要使用特殊的TP_TexMap texture map, 這個紋理貼圖是專為在物件表面處理粒子碰撞所設計的.

MemoryOperator
當你要設定非常複雜的粒子系統時, 儲存資料是最重要的工作. Memory node就是要滿足這樣的需求.

Memory node最大的功能是提供DynamicSet的擷取功能, 讓你隨時都能使用DynamicSet, 也可以針對每個粒子儲存數值.

IteratorOperator
Iterator node 是TP的次世代類型的節點, 它讓粒子的設定能夠有迭代器(iterator) 或是loop的效果 ,很類似程式語言裡面的Do 或是For Loop. 這個節點讓你可以call節點網絡好幾次.

這個節點的應用面很廣, 可以用在非常複雜的設計.

BlurpOperator
Blurp Operator的功能是要讓你快速產生粒子的morph animations. 這個Operator最主要的概念是建立複雜的分解與重組的效果, 這個特效常常在吸血鬼這類的角色上面出現, 例如吸血鬼分解成一群的蝙蝠飛走, 然後又重組變成咆哮的惡犬.

這類的效果用其他的operator很難做到, 但是如果用Blurp Operator就完全沒有問題, 這能大大加速您的流程.

CollisionMapOperator
Collision Map碰撞貼圖是一個特殊的node 用法也很特殊, 這是TP第一個工具node (Tool-Node) 而他與其他的node也很不同.

Tool-Node的意思是說他可以獨立使用, 不需要串接複雜的節點
Collision Map可以獨立使用 或者跟Particle groups一起使用

這個node的功能是?
這個工具節點的目的是要用在進階的破碎或是爆破的效果, 這個節點會自動地產生動態的map 裡面,包含了必要的破碎或是碎裂的資訊. 這些資訊可以用來接上下一個node 進行下一次碎裂的處理.

運作方式是什麼? 能用在哪裡?
Collision Map會自動產生動態的交錯map, 呈現出兩個或是多個物件之間交錯的狀況. 所有被選中的物件都會被記錄其碰撞的資訊, 所有的交錯, 或是碰撞都會產生灰階的map. 表示面與面之間的距離, 這些灰階的圖片可以作為fragmentation map之用.

要注意的是, 這是靜態的效果. 這表示如果你如果你的動畫改變了, 那表示你的collision map也必須重新產生.

ParamBlockOperator
ParamBlock Operator可能是最強大的 最有變化性的operator

這個operator讓你有無數次的存取每個單一參數, 更重要的事, 它讓你可以建立任何數量的input data 或是output data 根據你選取的物件參數, 這些參數可以接著用在其他的operators或是conditions條件, 用來驅動其他的operators.

這個operator一個有用的地方是能夠根據粒子的位置或是半徑改變顏色或大小. 另外一個例子是, 利用選取物件的材質顏色或是高光強度來驅動粒子的發射率....有無限種的可能性.

ABombOperator
ABomb是一個獨特的粒子operator, 讓你可以添加類似流體的動態效果. 當使用預設值時, 這個operator會產生經典的蕈狀雲的效果. 但是, 如果修改一下參數也可以產生複雜的流體動態效果, 可以用來模擬出煙霧或是煙塵在地面互動的感覺.

InGroupCondition
In Group Condition是測試粒子是不是包含在某個group裡面, 當這個條件為真, 就回送出一個true的output.

PSelectionOperator
由時候你會需要選取一個或是好幾個粒子, 套用某種效果, 或是刪除這些粒子. TP提供幾種方法進行這項需求, 其中一種方法就是PSelection Operator.

為了要用這個operator 使用者必須要選取一個或是多個particle IDs. 當這個operator啟動時, 所有連接到這個PSelection的operator都會針對這幾個被選到的粒子進行操作.

VolumeActivateOperator
這個操作子是thinkingParticles的新血, 把TP的整體功能強化! 這是第一次你可以在TP裡面進行跨DynamicSets的, 把資料由一個操作子餵到另外一個操作子的功能. 這個特殊的功能, VolumeActivate operator可以取代並且蓋過 VolumeBreak operator的activation data. 如此, 你就可以用TP做出多點衝擊(多個撞擊點)的效果了!

簡單的說, 你可以控制 VolumeBreak operator裡面的物件何時碎裂, 在哪個地方碎裂, 以及要怎樣碎裂. 請注意, 這個VolumeActivate Operator必須要搭配VolumeBreak operator才能使用, 而且是被用來告訴VolumeBreak operator他哪邊要進行碎裂(透過Position input); 碎裂的範圍有多遠(透過Initial Length控制) ;而這個範圍擴張的速度有多快 (由Spreading Second控制); 甚至也能決定發生的位置類型(World, Object, Normalized).

Position - 起始長度. 設定volumeBreak碎裂效果的起始長度, 這個長度是以 position 參數為中心做為起始, 告訴VolumeBreak內部碎裂的起始範圍, 來決定啟動 VB fragments的範圍有多廣.
Spreading Length - 擴張長度. 定義碎裂由上述參數起始, 最大可延伸到多大的碎裂範圍.

Spreading Second - 擴張秒數. 這設定要釋放所有的碎片要花多久的時間 , 這個參數可以用來模擬出震波效果.

VolumeBreakOperator
VolumeBreak操作子是一個會計算實體模型碎裂的工具. 這個操作子是由 volumeBreaker為基礎, 快速地創造出模型的碎片.這些碎片是真的根據模型體積計算出來的.有了 volumeBreaker , cebas公司帶給您好萊屋特效等級的破壞工具, 而VolumeBreaker的開發有徵詢過顧問以及特效專家們 , 這些專家參與的都是數百萬等級的大電影的人.

VolumeBreak幾乎可以套用在任何類型的模型, 包括那種很懶惰的人做出來的模型 (沒有完全閉合的模型). VolumeBreaker 會試著補償模型本身的錯誤, 例如沒有焊接的點, 或是開啟的邊(open edges). 這個操作子所計算出來的碎片能夠被thinkingParticles其它的操作子所取用.

Activate 啟動碎裂. 定義碎裂的百分比, 100%代表完全碎裂 ; 0%代表完全不碎. 通常會對這個參數設定動畫 當然你也可以用動態的方式控制

Raster

細分的大小 這會計算每個碎片的最小距離 因此可以控制碎片的大小 請注意如果把這個參數設定太小或產生大量模型碎片 會耗費許多計算時間

VolumeCellOperator
這個跟VolumeActivate一樣是一個新的operators. 在TP裡面, 能夠加強運作模式. 這是首次可以在不同的DynamicSets傳送資料的功能.

這樣VolumeCell operator能夠用來取代任何VolumeBreak operator裡面的volume cell的資料. 這樣一來, 你就可以提供多個"cell points"給單一個VolumeBreak operator了.

簡單的說 這個功能讓你能夠控制何時, 何地以及如何粒子會被VolumeBreak operator弄碎. 請注意,這個operator需要跟VolumeBreak operator一起工作, 並且是用來告訴VolumeBreak operator哪邊要啟動VB fragments (透過它的Position input) 或是距離多遠particle shape volume才會啟動碎裂 (透過Initial Length) 或是在這個距離以內多快會啟動(透過Spreading Second) .同樣Position Type (World, Object, Normalized)這些參數也是依此類推.

TPJointSC
Joint SC Helper 是在TP裡面用來定義連結(joint)的屬性, 這個操作是在TP介面之外進行的. 這個helper只在與SC Shape Collision一起使用的時候才有作用, 其TP裡面其他的物理引擎目前都無法處理Joint SC Helper的運算.

因為這是3ds max標準的helper物件, 所以很容易設定. 同時, 也可以透過maxscript控制他的屬性 用來自動產生helper與修改joint helper.

請注意為了要正常地載入物體, 你必須要在TP裡面載入所有參與連結的物件 (不包含joint helper). 這些物體必須要在同一個Object2Particle operator裡面, 而且同時還必須要整定對應的SC operator, 沒有必要載入SC Joint Helpers.

Obj2Particle裡面有一個能輸入"Joint Code"的地方 對應到SC Joint Helper裡面的Joint Break Code 如果你對input code設定動態數值, 當這個數值與SC Joint Helper break code相吻合時, 該joint就會斷開!

[相關文章]