unity5.0新功能-布料、動畫系統


原作者:只待蒼霞

這一章講一下布料系統, 這次的布料系統有很大的改良.
Unity4中, 需要對SkinnedMeshRenderer使用SkinnedCloth, 或者對Cloth Renderer使用Interactive Cloth, 很麻煩, 在Unity5中, Cloth合二為一了.
Cloth只能必須和Skinned Mesh Renderer搭配使用, 但是這不代表使用簡單的物體時還必須在Max中導出一個帶有蒙皮信息的FBX, 其實可以新建一個GameObject然后賦予Cloth組件, 這會自動添加Skinned Mesh Renderer組件, 然后在Skinned Mesh Renderer組件中賦予基本體的Mesh上去並且設置正確的材質也完全可以.




布料可以接受外部影響,但完全不會將影響賦予外部剛體, 換句話說, 布料系統的物理模擬是單向的.




出於性能的考慮, 可以對Cloth產生影響的Collider只有兩種, SphereCollider以及CapsuleCollider, 但是SphereCollider可以賦予兩個為一組(當然了還可以只賦予一個, 第二個保持null), 那么通過組合這兩個SphereCollider可以出現第三種, Unity會將這組的兩個SphereCollider進行相連, 那么就可以有圓錐形的Collider.


按這個
按鈕來打開編輯Constraint模式,
Max Distance可以設置每個頂點最大可移動距離. 最常用的用法是將不能動的頂點的Max Distance設置為0.
Surface Penetration控制的是頂點最大可以嵌入到Mesh里面的程度. 在布料網格頂點比較稀疏的情況下可以明顯對比出差別. 具體是什么概念我不太清楚. 不過將頂點的Surface Penetration設置得很低會看起來很不正常, 默認, 也就是Unconstrained應該是一個較高的值, 沒有任何問題. 不知道在什么情況下需要將這個值設置得低一些呢? 哪位大神知道的話歡迎在本樓補充.



Visualization這里能夠選擇當前在Scene視圖中預覽Max Distance還是Surface Penetration. (這兩者二選一), 還能選擇是否讓操作影響視口背面的頂點.


Select編輯模式要先通過框選, 或者Shift+點擊來多選, 來選中頂點, 然后勾選Max Distance或者Surface Penetration前面的復選框, 代表我現在要改變選中的頂點的值了! 然后再在后面的數值里面輸入想要的數值就OK了, 要想將當前有數值的頂點設置為Unconstrained, 只需要選中那些帶有數值的頂點然后將對應復選框取消勾選即可.


在Paint模式中, 這個按鈕
代表要繪制這里設置的值了!
而這個復選框代表的意思是是否想為現在已經有值的頂點Paint成為Unconstrained的頂點.






Stretching Stiffness---拉扯硬度.
Bending Stiffness---彎曲硬度.
Use Tethers---默認開啟, 用於方式過度拉伸
Use Gravity---是否使用世界重力.
Damping---阻尼會應用於每個布料頂點. 要想打造看上去抖動更小的布料, 可以試試這個.
External Acceleration---常量外力.
Random Acceleration---隨機外力.
World Velocity Scale---與World Acceleration Scale共同組成布料的GameObject.transfrom的運動會對物理模擬造成的影響比例.
World Acceleration Scale---與World Velocity Scale共同組成布料的GameObject.transfrom的運動會對物理模擬造成的影響比例.
Friction---當布料碰到在
這個列表中存在的Collider時所產生的摩擦力, 這只會影響布料的模擬. 上面說過了布料的物理模擬是單向的.
Collision Mass Scale---How much to increase mass of colliding particles. 這個參數我不懂, 求補充.
Use Continuous Collision---使用Continuous Collision, 增加消耗, 減少直接穿透碰撞的幾率.
Use Virtual Particles---Add one virtual particle per triangle to improve collision stability.
Solver Frequency---Number of solver iterations per second. 顯然是一個優化參數, 默認120很高了, 我可以試着調低一些.
Sleep Threshold---靜止閾值.
Capsule Colliders---要對布料產生交互的膠囊碰撞體.
Sphere Colliders---要對布料產生交互的ClothSphereColliderPairs. 可以理解為他是按照一組來的, 一組中可以只有一個SphereCollider, 也可以有兩個, 當有兩個的時候, 那么這兩個SphereCollider會在布料的碰撞系統中被”焊接”起來. 這樣就允許通過兩個大小不同的SphereCollider來組合成一個圓錐形狀的碰撞體了.

這一章講一下動畫系統的更新.



首先要說一下StateMachineBehaviour.

可以為Animator的每個State都賦予一個或多個Behavior.

使用這里的New Script按鈕來創建StateMachineBehaviour是最方便的, 這樣創建出來的腳本不僅自動繼承自StateMachineBehaviour類, 還會自動添加經過注釋的Message.


需要注意的是, 不要在Awake中使用Animator.GetBehaviour.


StateMachineBehaviour可用的內容有:

上面這些是用於State的.


上面這兩個是用於SubStateMachine的.


對於StateMachineBehaviour,可以使用一個SharedBetweenAnimatorsAttribute屬性, 有了他, 在多個相同的Animator之上, 僅會生成一個實例. 既然是一個實例, 那么變量當然也是共享的.


IK現在支持膝蓋和手肘的控制. 可以混合在正常動畫中, 還可以混合在手腳的IK動畫中. 我不清楚這到底是不是5.0的新功能, 反正我以前通讀Unity4的文檔的時候是沒有這個功能的, 那時應該是4.1, 不管了, 先寫在這里吧, 知識這東西不嫌多.




Animator窗口的布局有一定的改動不過不是什么重要的內容各位自行研究一下就懂了. 但是這次的Animator有一個很好的改動, 那就是加入了Entry以及Exit. 
The Entry node is used when transitioning into a state machine.
The Exit node is used to indicate that a state machine should exit.
有了Entry和Exit, 對於SubStateMachine的處理可以更加靈活, 可以通過Entry和Exit將SubStateMachine完全理解為一個單獨的State. 或者像Unity5之前那樣將SubStateMachine內部的State與外部的東西連接. 
現在可以將State多選然后拖拽到SubStateMachine中, Unity會自動幫你整理他們的Transition關系, 還可以在SubStateMachine中多選State然后拖拽到Up節點, 同樣, Unity會自動整理Transition, Unity4在這方面極其尷尬, 用過的都知道. Unity5終於進步了.




橙色的Transition代表是的默認的過渡, 當第一次觸發, 或者當前沒有其他過渡可用時會使用這個Transition, 灰色的Transition代表的是過渡之前可以是任何State. 因此灰色的Transition只能設置condition, 不能設置過渡的細節, 因為沒有任何意義.
SubStateMachine中的Exit和(UP)的區別在於Exit創建的是灰色Transition, 而(UP)創建的是白色的正常Transition.





關於Animator, 多了一種BlendTree的方式, 非常適用於面部動畫.
這個模式可以將多個動畫混合起來一起播放. 用參數來指定混合比例. 






一般情況, Animation的運動是絕對位置的, 要想將絕對位置改變為根動畫, 也就是相對位置, 可以使用這個”Generate Root Motion Curves”, 並且將Animator的Apply Root Motion開啟.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM