A. (四)Unity紋理、貼圖和材質
在Unity中,我們可以這樣理解:Material(材質)包含Map(貼圖),Map包含Texture(紋理)。
首先在工程中創建一個Terrain(地形)和一個Cube(立方體),然後我們基於這兩個物體來深入學習什麼是紋理、貼圖和材質。
下面我們添加一個地形紋理和一個LOL泳池派對紋理。(其實就是圖片)
我們來學習一下紋理的Inspector視圖中都有什麼屬性功能,以「泳池派對」為例。
效果如下:
詳情如下:
Texture:紋理
Normal map:法線貼圖
(游戲場景中譬如雕刻這種3D細節,如果做3D模型的話,就會浪費顯示晶元,使游戲性能下降,便會用法線貼圖,既不影響玩家體驗游戲又不影響游戲性能)
Editor GUI and Legacy GUI:編輯器的GUI和傳統的GUI
Sprite(2D and UI):圖片精靈
Cursor:設為游標
Cubemap:立方體貼圖
Cookie:聚光燈貼圖
Lightmap:光照貼圖
Advanced:高級選項(當你想要有紋理的具體參數並想擁有紋理的完全控制的時候選擇該項)
UV坐標:水平方向是U,豎直方向是V。因為圖片(紋理)是一個二維的平面,所以只需要UV坐標便可以確定圖片的位置。(當然也有三維貼圖,要用到UVW坐標,暫時還接觸不到。)
貼圖:一種就是就是把紋理通過UV坐標映射到3D物體的表面,另一種就是把紋理加入一些功能,這兩種都是貼圖。貼圖具有 UV 坐標屬性或者一些功能,而紋理沒有。
我們把Terrain加上紋理,此時這個名為「地形」的紋理就成為了Terrain的貼圖。
Shader負責將輸入的Mesh(網格)以指定的方式和輸入的貼圖或者顏色等組合作用,然後輸出。繪圖單元可以依據這個輸出來將圖像繪制到屏幕上。
將輸入的貼圖或者顏色,加上對應的Shader,以及對Shader的特定的參數設置,將這些打包在一起就是一個材質了。之後,我們便可以將材質賦予合適的renderer(渲染器)來進行渲染。
點擊Create,添加一個材質和一個物理材質。
選色:
上色:
Dynamic Friction:動摩擦系數
Static Firction:靜摩擦系數
Bounciness:彈性系數
Friction Combine:聯動摩擦
Bounce Combine:聯動反彈
Average:取平均值。
Minimum:取最低值。
Multiply:取相乘值。
Maximum:取最大值。
B. unity3d 如何給同一物體不同面加不同材質
常規做法是在max軟體把模型分開,展UV,貼倆材質球,多維材質也行,unity本身沒這功能,要在unity實現,以前有個展UV的插件,可以用,但是並不方便,簡單幾何體可以用代碼生成或者自寫shader,也能實現UV貼圖,但畢竟不是正途,還是讓美工做吧
C. unity 怎麼為組件設置材質
關鍵詞
MeshRenderer m_meshrender = 通過任意方法找到葯水的物體.GetComponent<MeshRenderer> ();
m_meshrender.material=你的材質 ;
D. unity怎麼新建材質球
很簡單的我就建立一個名字為test的C#腳本 usingSystem.Collections; usingSystem.Collections.Generic; usingUnityEngine; publicclasstest:MonoBehaviour { publicGameObject[]GameObjectUse;//你要改變材質的物體組 publicMaterialMaterial1;//第一個材質球 publicMaterialMaterial2;//第二個材質球 publicMaterialMaterial3;//第三個材質球 //因為就三個材質球比較少就簡單的方式不需要用數組; voidOnButtonDown1()//按下第一個按鈕 { for(inti=0;i<GameObjectUse.Length;i++) { GameObjectUse[i].GetComponent().material=Material1;//將所有的你所要改的材質的物體改成第一個材質 } } voidOnButtonDown2()//按下第二個按鈕 { for(inti=0;i<GameObjectUse.Length;i++) { GameObjectUse[i].GetComponent().material=Material2;//將所有的你所要改的材質的物體改成第二個材質 } } voidOnButtonDown3()//按下第三個按鈕 { for(inti=0;i<GameObjectUse.Length;i++) { GameObjectUse[i].GetComponent().material=Material3;//將所有的你所要改的材質的物體改成第三個材質 } } }然後找到一個一直存在的物體(不會消失隱藏),把腳本拖給它,將參數拖好,再在button裡面去設置每個button對應的事件就行了
E. 如何使用unity3d製作出真實的物理效果
給物體添加物理特性即可,在屬性裡面,使其具有碰撞,重力等物理性質
F. unity3d怎麼給物體上材質球,貼圖
創建材質球:在Project面板中選中Assets文件夾,對著Assets文件夾右鍵,然後點擊Create,然後選擇Material.
給材質球增加貼圖:在電腦中選擇你要的圖片,然後把圖片拖進Project面板中的Assets文件夾。選擇你創建的材質球,在Inspector面板中找到Albedo屬性,點擊該屬性左邊的小圓,這時候會彈出一個窗口,你只要在彈出的窗口中選擇拖進Unity 3D的圖片,讓後關閉彈出的窗口即可。
給物體上材質球:有兩種方式,一種是把製作好的材質球拖到Scene面板中的物體,另一種是把製作好的材質球拖到Hierarchy面板中的物體。
G. unity3d的材質怎麼安裝 還是自帶的 弄好後怎麼用筆刷刷上去
材質可以用Unity3d創建,在project欄單擊右鍵然後有個選擇創建material項,當然如果你導入用3dmax做的模型的話,你也可以發現會有對應的材質導入進來。材質弄好後,你選擇要賦予該材質的模型,然後把你剛才創建好的材質拖到該模型就可以了。另外你說的用筆刷的只能刷地形,也就是說筆刷只能改變地形,對模型就無能為力了。網上有個外國人的關於unity3d的很好的教程,你可以搜索一下看一下。
H. 畫好了材質怎麼導入Unity裡面使用
有兩個方法可以在3dsmax場景中導入相應材質球:
第一種方法:
1 點擊材質編輯器里的獲取材質按鈕(下圖紅圈1處),在彈出的材質/貼圖瀏覽器里點擊左上角的黑色倒三角按鈕,選擇打開材質庫。
2 在路徑里找到對應的材質文件載入。選擇一個材質球,在材質/貼圖瀏覽器里雙擊材質文件,材質球上就有了材質。
第二種方法:
以合並的方式導入有相應材質的模型文件,先Alt+q,孤立對象,渲染,渲染沒有錯誤,就是可以使用的模型文件,用吸管吸取對應的模型上的材質,這樣,材質球上就有了需要的材質。
I. unity3d 如何導入物理材質(一個已有的 xxx.physicMaterial)
自帶的包有這個物理材質,右鍵import就看到了
J. 如何讓unity中物理效果更加逼真
如何讓unity中物理效果更加逼真
物理可能不是每個人最喜歡的那個科目,但事實是,物理學在游戲行業的發展中起著非常重要的作用。
想像在這樣一個情況下:你終於決定要做一些大事情!一些值得注意的事情!有很多現實物理和圖形的大事情!這是一個大游戲,一切都岌岌可危!
設計已經完成了,架構也已經弄好了,看上去一切就緒。但是這時候你開始實現最有技巧的那個部分:」游戲的物理部分」!
一切都開始分崩離析,你遇到了低FPS、奇怪的運動、碰撞/觸發方面的問題,CPU使用率很高以及其他各種各樣的問題。
錯誤或不適當的物理表現可以趕走潛在的玩家。而且它涉及的不僅僅是物理表現的不正確,它還會讓一個原本流暢的游戲體驗變得延遲不舒服。
讓物理部分表現的很恰當而且不影響效率是不容易達到的。的確,物理是游戲開發過程中最困難和最重要的一部分,而且你根本避不開,必須面對它!
人們可以爭論說,「好的物理表現需要非常快的CPU!」
但是相信我這並不總是真的!大多數時候可以通過深入分析Unity的原理來獲得適當的物理表現!以及通過學習它是如何工作的來讓物理部分表現的更好。
當我還是一個初學者的時候,我不得不處理100件和物理部分有關的事情。它大概花費了我一年的時間,我才記下在處理物理部分的時候需要記住的要點!
所以我決定寫這篇文章,來幫你跳過這個痛苦的學習階段,並成為游戲物理部分的專業開發人員!
我不會談論如何使用Unity的物理部分,而我將列出技巧和要點來告訴你該如何優化你的游戲物理部分,所以如果你是一個初學者的話,我會建議你首先對Unity的物理部分有一個大概的了解。
因為物理是一個非常、非常、非常、非常(還可以有很多非常進行修飾:P)巨大而廣泛的概念,我決定分成幾個不同的部分和並盡可能的簡化。
所以讓我們開始吧!系好你的安全帶,這將是一個漫長而愉快的旅程。
降低固定的更新時間間隔。。。!
Unity的文檔是這么描述的,」物理部分的計算與更新是與幀速率無關的,FixedUpdate()時間也是與與幀速率無關的」。這個默認值是0.02(單位是秒),這意味著每20毫秒物理部分將要更新一次。所有的FixedUpdate() 函數也是20毫秒執行一次。
但是如果你的游戲不是嚴重依賴物理部分的話,你總是可以增加時間間隔,從而獲得更好的結果。(即減少物理部分的調用)。
你需要對這個值進行測試調整來得到理想的效果。
讓我們舉個簡單的例子:
「如果你要做一個簡單的紙牌游戲,沒有太多使用物理的地方。最好是減少調用物理引擎的次數。但是需要記住這么一個事情:如果你把調用物理引擎的次數減少的太多的話,你可能不會得到恰當的物理表現。」
讓我們通過下面這些例子來更好的理解這個事情
1在場景中擺放3- 4球。讓他們彼此相隔一定距離。
2創建一個物理材料,並將摩擦系數減少為0,並將反彈系數設為1。
3將新創建的物理材質附加到球體的碰撞體物理材質上。
4給球體添加剛體組件(這將向引擎表明它是一個物理物體)。
5在場景中擺放一個平面,並且按需要來給這個平面添加物理材質。
6讓球體保持在平面上的一定距離,並且讓重力影響這些球體。
7按下播放鍵,檢查結果。
這些球體會不停的彈上彈下。
這與固定時間步長有什麼關系?
上面這些只是一些預設置,現在我們來調整下固定的時間步長值。
在菜單欄裡面找到Edit >> Project Settings>> Time ,在這里你將看到Fixed Time Step Value:the value will be around 0.02(正如我之前提到的那樣)。
現在把這個值提為0.1,然後再執行游戲。
你注意到區別是什麼了么?
首先你會注意到球體有一些運動滯後。
其次,球體不會反彈了,而是直接穿過了平面。
為什麼會這樣?(不需要跳動的如此之快:P)
如果你把固定時間步長設置為0.1,那麼這意味著物理部分的更新將每100毫秒發生一次,這很明顯的有點過長了,並且將無法將測到碰撞。
這表明過多的降低固定時間步長也不是個很理想的情況。現在讓我們改變時間步長為更實用的值0.03 - 0.04(根據你的球體的設置可能會有所不同)。
現在如果你執行游戲的話,你將無法看到任何變化。只要物理看起來適合你,那就沒關系。如果你仔細檢查的話,物理碰撞會略有不同。