
一、為什么國內游戲引擎大部分都用虛幻4,不用Unity 3D呢
用虛幻4引擎呈現的游戲和電影級CG,不論是無與倫比的光影渲染、貼圖建模材質的深度展現、基于現實的物理碰撞等細節都令全球玩家嘆為觀止。《絕地求生:大逃殺》采用了虛幻4引擎作為游戲開發核心技術,所帶來的游戲效果受到玩家的一致好評。
虛幻4帶來的游戲效果究竟能有多優秀呢?
骨骼動畫系統,使角色可以做出非常細致的跑動、蹲下、趴下、跳傘、開槍、開車等動作,還可以精確體現游戲中角色健康情況和疲勞度,即使是電腦中的角色也可以明確知道角色是否疲憊或受傷。
它的游戲性系統,游戲中的觸發器,使得角色可以按下開關,打開門,并繞過障礙物。物體碰撞,角色動畫碰撞,復雜真實的交通工具和物體爆炸。5.1環繞立體聲和高品質杜比數碼音效,也就是游戲中的“聽聲辯位”等等效果,都要由它才能實現。
可以說,對于游戲的成功,虛幻4引擎功不可沒。
二、做游戲需要學什么編程
關于做游戲需要學什么編程如下:
做游戲需要學習編程語言和相關技術,如C++、Python、Unity等。以下是對做游戲所需學習的編程內容的詳細解答:
1、編程語言:
C++:C++是一種高效、強大的編程語言,被廣泛用于游戲開發,特別是在底層引擎和圖形編程方面。C#:C#是一種面向對象的編程語言,被用于Unity等游戲引擎的開發,具有較高的開發效率和靈活性。Python:Python是一種易學易用的編程語言,被用于游戲開發中的腳本編寫、快速原型開發和簡化工作流程等方面。
2、游戲引擎和開發工具:
游戲引擎是開發游戲的核心工具,提供了一系列的功能和工具來創建游戲。常用的游戲引擎包括:Unity:Unity是一款流行且易用的跨平臺游戲引擎,支持2D和3D游戲開發。Unreal Engine:UnrealEngine是一款強大的游戲引擎,被用于開發高質量的3D游戲。
3、游戲開發框架和庫:
游戲開發框架和庫提供了一系列的函數和類,幫助開發者快速構建游戲。常用的游戲開發框架和庫有:OpenGL和DirectX:這些圖形庫提供了高性能的圖形渲染功能,用于游戲中的3D圖形渲染。SDL和SFML:這些跨平臺的多媒體庫提供了對圖形、音頻和輸入設備等的訪問,用于游戲的開發。
4、數學和物理知識:
游戲開發中需要應用數學和物理知識來實現游戲世界的模擬和動作效果。掌握數學和物理的基本概念,如向量、矩陣、碰撞檢測、運動模擬等,有助于開發出更真實和流暢的游戲體驗。
三、Unity 物理系列六 布料
隨著時代的發展和移動設備硬件性能的提升,物理引擎被越來越多的移動游戲所使用。物理引擎處理的對象主要可以分為剛體(Rigid Bodies)和柔體(Soft Bodies)兩大部分,剛體主要應用在物理碰撞、破碎、布娃娃等系統中,而柔體最為重要的應用代表就是布料系統。
在物理引擎中,通過物理計算來模擬布料效果的系統可以稱之為布料系統。雖然名為布料系統,但并不僅僅用于表現角色衣服的布料效果,而且可以應用于毛發、墜飾,甚至女性的某些柔軟部位……下面的幾張圖就給出了一些游戲中應用了布料效果的地方。
在物理引擎被廣泛使用之前,游戲中的絕大部分動態效果都是通過固定的動畫來表現。這個做法非常容易理解——角色身上的飄帶也好,頭發也好,在動畫師的眼中,與角色的手腳四肢沒有任何區別,添加骨骼,進行蒙皮,制作動畫,無論一幀一幀自己手K還是用Max的柔體效果插件生成,都可以制作出逼真的布料運行的效果。(在更早的使用網格動畫的年代,原理也相差不多。)如果你覺得效果不夠好?那簡單,再多加一些控制骨骼,多給美術一些時間,就可以做出更好的效果。
基于動畫的制作方法雖然可以滿足大部分的需求,但隨著時代的發展,無論玩家還是游戲開發者都在追求更好更真實的效果,這種制作方式表現出來的布料效果的缺點慢慢顯現出來:
雖然在單個的動畫中,布料的表現效果足夠好,但是在各個動作之間轉換,甚至多個動作融合到一起進行表現的時候,用于表現布料效果的骨骼融合結果就會不那么自然,真實感也就大打折扣。
當角色有移動速度的變化時,我們通常可以通過改變動畫的播放速度提供對應的表現,但是移動速度很快和移動速度很慢時,裙擺頭發的飄揚效果都是完全一樣的,甚至當玩家面對一堵墻按下移動按鈕,角色開始播放跑步動畫,雖然并沒有移動,但仍然可以看到角色的裙擺和頭發在迎風飄揚……
目前大部分游戲在設計角色的時候由于要考慮到角色未來可能會出的時裝,可能采用最大化骨骼的制作方案。所謂最大化骨骼,就是在角色制作初期就確定好角色最多可能有哪些骨骼,在之后制作角色時裝的時候,要完全在最初定義的最大化骨骼范圍內。如果超出了這個范圍,就需要修改所有時裝的模型以及角色的所有動作,并全部重新導出,這種修改的代價是非常大的。
這些預留的最大化骨骼,有很多是在角色默認設計的時裝中沒有被使用的,但是為了給未來預留更多的可能,因此需要留好控制裙擺、長發等部件的各種最大化骨骼,而且注意,這些骨骼上都需要制作對應的動畫效果,或者在未來制作某套需要這一骨骼的時裝的時候,把所有的動畫添加上對應骨骼的動作,重新導出。在美術工作量、美術資源的大小、游戲的運行效率等方面,這種做法都有一定的負面影響。
大部分引擎都已經支持了子模型的方式,也就是引擎可以把一些子模型動態地合并到一套骨架上。但是《劍靈》的制作人員提供了另外一種思路——主角的動畫只制作身體主要部位的動畫效果,對于所有的裙擺、墜飾這樣的物體,都統一使用布料系統來制作。這一制作方案可以完美解決設計角色時裝時要考慮是否有骨骼可以驅動的問題,從而解放美術的想象力,節省美術的冗余工作,運行時的效率也得到一定的提升。
動畫重定向是一種常用的動畫復用技術,可以讓一個模型A使用另外一個模型B的動畫數據,但是如果模型A帶有裙擺、長發這樣的額外部分,而模型B的動畫中并沒有驅動對應網格的骨骼,那么重定向之后的裙擺就會非常僵硬
需要提前說明的是,前文所描述的布料系統及其原理,主要是針對在主機和端游上使用的物理模型的布料效果,它們基于網格頂點,可以做到非常精細的效果。其實還有一種制作布料效果的方法——基于骨骼進行物理模擬。這種方法的原理更加簡單,把骨骼當做一個個通過關節連接在一起的鉸鏈,給予一定的物理參數,來模擬動畫之外的動態效果,而最終效果是通過蒙皮反應到模型網格上的。由于骨骼數量通常都比頂點數量少很多,因此這種方法具有更高的運行效率,在手游中使用得也比較多,前面對于《王者榮耀》中妲己的辮子截圖,筆者猜想就是使用的類似的方法。
沿著這兩個不同的思路,筆者查看了幾個相關的插件。
a.基于骨骼的方案。基于骨骼的方案在Unity的AssetStore上有多個實現,原理都差不多: Dynamic Bone、 Swing Bone、 PhysicsBone
b.基于質子-彈簧模型的方案。主要看了兩個,一個是官方的Cloth Component,一個是 Obi Cloth。
效果可以參考
《Unity Magica Cloth從入門到乳搖》之(1)基礎設置
Magica Cloth布料模擬使用心得,以及插件功能介紹(一)
Magica Cloth布料模擬使用心得,以及插件功能介紹(二)
基本步驟包括:
Cloth組件的效果因為是基于網格的,因此不需要綁定骨骼也可以做出動態的效果,而且飄動的單元是mesh頂點,因此效果也比較細膩。(我們的角色面數也比較省,當然做不到像端游那么精細的效果。)
Cloth只能必須和Skinned Mesh Renderer搭配使用,但是這不代表使用簡單的物體時還必須在Max中導出一個帶有蒙皮信息的FBX,其實可以新建一個GameObject然后賦予Cloth組件,這會自動添加Skinned Mesh Renderer組件,然后在Skinned Mesh Renderer組件中賦予基本體的Mesh上去并且設置正確的材質也完全可以。布料可以接受外部影響,但完全不會將影響賦予外部剛體,換句話說,布料系統的物理模擬是單向的。
參考 Unity3D布料系統 And Cloth Constraint及 Mesh雙面渲染
效果如圖,這塊布固定在一個點上,受重力影響來回搖晃。
先創建一個Plane,然后添加Cloth組件。然后Edit cloth constraints:
也可以使用鼠標左鍵拖動框選,或者SHIFT多選。如果把一條線上的黑點全部選中,勾上Max Distance,就是下面這個效果:
要對布料產生交互的ClothSphereColliderPairs,比如一個人物模型,或者小球。
可以理解為他是按照一組來的,一組中可以只有一個SphereCollider,也可以有兩個,當有兩個的時候,那么這兩個SphereCollider會在布料的碰撞系統中被”焊接”起來.這樣就允許通過兩個大小不同的SphereCollider來組合成一個圓錐形狀的碰撞體了。
至于碰撞體放在Cloth自身、子物體、外部都可以,根據需求來。
根據使用的模式,工具屬性和所需執行的步驟會有所不同。在所有情況下,最后一步都對應于應用約束值的操作。
Select編輯模式要先通過框選,或者Shift+點擊來多選,來選中頂點,然后勾選Max Distance或者Surface Penetration前面的復選框,代表我現在要改變選中的頂點的值了!然后再在后面的數值里面輸入想要的數值。
要想將當前有數值的頂點設置為Unconstrained,只需要選中那些帶有數值的頂點然后將對應復選框取消勾選即可。
根據當前在整塊布料中應用的最小值和最大值,為上述選定的約束類型提供粒子顏色和約束值之間的對應關系。黑色始終表示粒子沒有約束。
注:這里會在所有球中找最大值,作為色譜的最大值。然后其他球會根據最新的色譜,改變顏色。
代表布料粒子的球體的顯示大小。在方便時可以調整此值以便簡化約束版本。這個屬性對約束本身沒有任何影響。
注意,這個值過大,會導致球全疊在一起,面板黑了,如圖:
那些紅色的斑點,實際上就是Max Distance=0的紅球,但是被黑球蓋住了,只有一點點邊緣,根據選不到。把球弄小點就能看到了:
布料碰撞使游戲中的角色服裝和其他面料更加逼真。在 Unity中,布料有幾種處理碰撞的布料粒子。可將布料粒子設置為:
要為布料設置碰撞粒子,請在 Cloth Inspector中選擇 Self Collision and Intercollision按鈕:
更多設置細節參考官方文檔
還有B站視頻:










