狠狠撸
Submit Search
Unity遊戲程式設計 - 材質與貼圖
?
0 likes
?
583 views
吳錫修 (ShyiShiou Wu)
Follow
材質與貼圖, 著色器, 貼圖材質參數設定, 物理材質設定, 布料材質設定, 天空背景材質設定
Read less
Read more
1 of 57
Download now
Download to read offline
More Related Content
Unity遊戲程式設計 - 材質與貼圖
1.
材質與貼圖 Revised on March
14, 2020 ? 材質與貼圖 ? 著色器 ? 貼圖材質參數設定 ? 物理材質設定 ? 布料材質設定 ? 天空背景材質設定
2.
? 紋理(texture)即物質表面所呈現的紋路,例如木頭的木紋狀 ? 模型決定物體的形狀,材質紋理決定物體的表面質感 ?
貼圖(mapping)是將紋理取樣圖包覆到3D模型表面,使模型表面呈現 物質紋理 ? 法線貼圖(Normal map)也稱為「Dot3(仿立體)凸凹紋理貼圖 ? 漫射貼圖(Diffuse texture)用來呈現紋理的漫射顏色 ? 鏡面貼圖(Specular map)用來呈現高光反射 ? 材質(material)用來表現物體對光的交互(反射、折射等)性質,例 如?屬對光的反射和?毯對光的反射性質完全不?樣 ? 物理材質用來表現物體的物理性質(摩擦力、彈力) 材質與貼圖 1/2 2
3.
? 建立3D專案 ? 滙入材質資源 ?
選單命令Assets> Import Package> Custom Package…,滙入 materials.unitypackage 材質與貼圖 2/2 3
4.
? 選單命令「GameObject> 3D
Object」內可找到內建3D物件 ? Cube 立方體 ? Sphere 球體 ? Capsule 膠囊 ? Cylinder 圓柱體 ? Plane 平面 ? Quad 四邊形 ? 可由Transform屬性調整物件位置(Position)、角度(Rotation)、 及縮放倍率(Scale) 內建3D物件 4 Plane Quad Cylinder Capsule Cube Sphere
5.
? Yughues Free
Metal Materials套件 Asset store資源 1/4 5
6.
? Yughues Free
Fabric Materials套件 Asset store資源 2/4 6
7.
? Free HDR
Sky套件 Asset store資源 3/4 7
8.
? Sky5X One套件
(內含5種Skybox素材) Asset store資源 4/4 8
9.
? 選單命令Assets> Create>
Material ? 預設為白色材質 ? 材質預覽 ? 預設使用球體物件來呈現材質 ? 套用材質貼圖 ? 將材質拖曳到物件上即可 建立材質 9 切換預覽物件 背光源開關 可拖曳檢視不同角度
10.
? Shader 著色器決定材質的貼圖效果 ?
Autodesk Interactive 支持Autodesk交互式物理著色器 ? Standard 標準貼圖,基於物體表面材質屬性著色 ? Standard(Roughness setup) 粗糙表面標準貼圖 ? Standard(Specular setup) 鏡面反射標準貼圖 ? FX 適用照明和玻璃效果 ? GUI 適用於圖形使用者界面 ? Mobile 適用於行動設備 ? Nature 適用樹木和地形 ? Particles 適用粒子系統 材質著色方式 1/2 10
11.
? Skybox 適用背景環境 ?
Sprites 用於2D精靈系統 ? UI 適用於使用者界面圖形 ? Unlit 繞過所有的光和陰影 ? VR 適用虛擬實境 ? Legacy Shaders 由標準著色器取代的早期著色器集合 材質著色方式 2/2 11
12.
? Render mode ?
Opaque 不透明,適用於實體沒有透明區域的物體 ? Cutout 鏤空,用來創造在不透明與透明區域之間具有明顯邊緣的透明效果。在此 模式下,沒有半透明區域,紋理只有完全不透明或不可見。適合利用透明 度建立葉子或帶孔之類的形狀 標準著色器 1/9 12
13.
? Transparent 透明,適用於渲染逼真的透明材料,如透明塑料或玻璃。在這種模式下, 材質本身可帶有透明度值(alpha),如同真實透明材料的情況,反射和高 光照明將完全清晰度下保持可見 標準著色器 2/9 13
14.
? Fade 淡出,允許以透明度讓物體完全淡出。適用於讓?個物體淡入或淡出,但 不適合用來渲染真實的透明材料,如透明塑料或玻璃,因為反射和高光照 明也將淡出 標準著色器 3/9 14
15.
? 渲染參數 標準著色器 4/9 15 Opaque、Transparent及Fade Cutout
16.
? Opaque渲染參數 ? Albedo 材質反照顏色或貼圖,預設為白色 ?
使用透明渲染模式時Alpha通道可調整透明度 ? 使用鏤空渲染模式時,Alpha Cutoff用來指定鏤空臨界值 ? Metallic 物體表面類?屬程度或貼圖,預設為0。當表面愈像?屬,愈會鏡射四周 環境,而相對自身反照顏色愈不明顯 標準著色器 5/9 16
17.
? Smoothness 物體表面光滑程度。數值愈大,表面愈像鏡面 標準著色器 6/9 17 石膏
光面塑料光滑的木頭 鋼 鏡子
18.
? Normal Map 法線貼圖用來在表面加上凸起、凹槽和划痕等細節 ?
Height Map 高度貼圖(也稱為視差貼圖)同樣用來呈現材質表面起伏,通常與法線貼圖 結合使用,強化材質表面立體感 標準著色器 7/9 18 Normal Map Normal Map + Height Map
19.
? Occlusion 遮蔽貼圖用於提供模型的哪些區域應接收高或低間接照明的資訊 ? Emission 控制從表面發射的光的顏色和強度。使用發光材料的物體即使在場景的黑 暗區域也會保持明亮 ?
Detail Mask 用來指定套用細節紋理區域 ? Tiling 紋理重覆拼貼次數 標準著色器 8/9 19 X=1, Y=1 X=2, Y=2
20.
? Offset 紋理偏移 ? Specular
Highlights 啟用高光效果 ? Reflections 啟用反射效果 標準著色器 9/9 20
21.
? 新增場景,調整Main Camera ?
Position(x, y, z) = (10, 5, -10) ? Rotation(X, Y, Z) = (0, -30, 0) ? 選單命令GameObject> 3D Object> Plane ? Position(x, y, z) = (0, 0, 0) ? 選單命令GameObject> 3D Object> Plane,更名為Wall ? Position(x, y, z) = (0, 5, 5) ? Rotation(x, y, z) = (-90, 0, 0) ? 選單命令GameObject> 3D Object> Sphere ? Position(x, y, z) = (0, 3, 0) ? Scale(x, y, z) = (6, 6, 6) 材質設定練習 1/3 21 Plane Wall Sphere
22.
? 選單命令Assets> Create>
Material,更名為Mesh Material ? Shader = Standard ? Rendering Mode = Cutout ? Albedo = Metal texture packpattern 06diffuse ? Alpha Cutoff = 0.05 ? Metallic = 0 ? Smoothness = 1 ? Normal Map = Metal texture packpattern 06normal ? Tiling(X, Y) = (3, 3) ? 將Mesh Material套用到Wall物件 材質設定練習 2/3 22
23.
? 選單命令Assets> Create>
Material,更名為Crystal Material ? Shader = Standard ? Rendering Mode = Transparent ? Albedo ? RGBA = (0, 255, 255, 128) ? Metallic = 0.2 ? Smoothness = 0.5 ? 將Crystal Material套用到Sphere物件 材質設定練習 3/3 23 Plane Wall Sphere
24.
? 選單命令Assets> Create>
Physic Material ? Physic Material屬性 ? Dynamic Friction 物體的動摩擦力,0最小,1最大 ? Static Friction 物體的靜摩擦力,0最小,1最大 ? Bounciness 彈性係數,0表示不會彈回,1則是完全反彈,没有任何能量損耗 ? Friction Combine 如何組合 兩個碰撞物體的摩擦力合成方式 ? Bounce Combine 兩個碰撞物體的彈力合成方式 物理材質 1/3 24
25.
? 彈性材質參考設定 ? 冰塊參考設定 ?
?屬參考設定 物理材質 2/3 25
26.
? 橡皮參考設定 ? 木材參考設定 物理材質
3/3 26
27.
? 新增場景,檔名physic material ?
Main Camera ? Position(x, y, z) = (18, 0, -5) ? Rotation(x, y, z) = (0, -90, 0) ? 選單命令GameObject> 3D Object> Plane,更名為Slope ? Position(x, y, z) = (0, -5, 0) ? Rotation(x, y, z) = (-20, 0, 0) ? 選單命令GameObject> 3D Object> Plane,更名為Floor ? Position(x, y, z) = (0, -7, -9) ? Rotation(x, y, z) = (0, 0, 0) 物理材質練習 1/4 27
28.
? 選單命令GameObject> 3D
Object> Cube,更名為stoneCube ? Position(x, y, z) = (-2, 0, 0) ? 加入Rigidbody元件 ? 選單命令GameObject> 3D Object> Cube ? Position(x, y, z) = (2, 0, 0) ? 加入Rigidbody元件 ? 選單命令GameObject> 3D Object> Sphere,更名為rubberSphere ? Position(x, y, z) = (0, 0, -6) ? 加入Rigidbody元件 ? 執行測試,兩個方塊應該會滾動後停在斜坡,圓球掉落後靜止 物理材質練習 2/4 28 Floor Slope rubberSphere stoneCube Cube
29.
? 選單命令Assets> Create>
Physical Material,更名為Stone ? Dynamic Friction = 0.2 ? Static Friction = 0.2 ? Bounciness = 0.5 ? 選單命令Assets> Create> Physical Material,更名為Rubber ? Dynamic Friction = 0 ? Static Friction = 0 ? Bounciness = 0.8 ? Bounce Combine = Maximum 物理材質練習 3/4 29
30.
? 將Stone套用到stoneCube之Box Collider的Material欄 ?
將Rubber套用到rubberSphere之Sphere Collider的Material欄 ? 執行測試,Sphere會原地彈跳後靜止, stoneCube會比Cube滾動到 更遠處 物理材質練習 4/4 30
31.
? 選單命令Component> Physics>
Cloth ? Cloth參數 ? Stretching Stiffness 拉伸剛度,數值愈大布料愈不易拉伸 ? Bending Stiffness 彎曲剛度,數值愈大布料愈不易彎曲 ? Use Tethers 啟用繫繩效果,避免可移動的布料粒子離 開固定粒子太遠 ? Use Gravity 開啟重力效果 ? Damping 運動阻尼,數值愈大布料愈不易飄動 ? External Acceleration 作用到布料的外部加速度(風吹動效果) ? Random Acceleration 作用到布料的隨機外部加速度 ? World Velocity Scale 角色運動時對布料頂點的影響程度 布料元件 1/3 31
32.
? World Acceleration
Scale角色加速度時對布料頂點的影響程度 ? Friction 摩擦係數 ? Collision Mass Scale 碰撞後粒子增加的質量 ? Use Continuous Collision啟用連續碰撞 ? Use Virtual Particles 啟用虛擬粒子,以提高碰撞穩定性 ? Solver Frequncy 每秒運算次數 ? Sleep Threshold 靜止臨界值 ? Caspule Colliders 與布料綁定的膠囊碰撞體 ? 布料會對碰撞體做出反應,但不會對碰撞體施加反作用力 ? Sphere Colliders 與布料綁定的球形碰撞體 ? Virtual Particle Weights碰撞球體和膠囊之虛擬粒子設定,可提供 準確的碰撞處理 布料元件 2/3 32
33.
? 按下Edit cloth
constraints ? Max Distance 設定布料網格可移動的最大距離,0的話可以用來做為布料固定點 ? Surface Penetration 布料頂點能嵌入到網格的深度 註:如果沒有出現Cloth Constraints工具,重置Layouts 布料元件 3/3 33
34.
? 新增場景,檔名Cloth ? Main
Camera ? Position(x, y, z) = (10, 0, -3) ? Rotation(x, y, z) = (0, -45, 0) ? 選單命令GameObject> 3D Object> Plane,更名為Flag ? Position(x, y, z) = (0, 0, 7.5) ? Rotation(x, y, z) = (-90, 0, 0) ? Scale(x, y, z) = (0.5, 1, 1) ? 移除Mesh Collider ? 套用Carpet pattern 02材質 布料材質練習 1/4 34
35.
? 在Flag加入Cloth元件 ? Stretching
Stiffness = 0.8 ? External Acceleration(X, Y, Z) = (0, 0, 1) ? Random Acceleration(X, Y, Z) = (0, 0, 0.5) ? Sphere Colliders項目之Size = 1 ? 按下Edit cloth constraints,將布料上方固定 ? 選取要固定的控制點,再勾選Max Distance 布料材質練習 2/4 35
36.
? 選單命令GameObject> 3D
Object> Sphere,更名為Ball ? Position(x, y, z) = (0, -2.5, 0) ? Scale(x, y, z) = (1.2, 1.2, 1.2) ? 套用Metal pattern 06材質 ? 在Ball加入Move程式腳本 using UnityEngine; using System.Collections; public class PlayerController : MonoBehaviour { public float speed; void Update () { transform.position = new Vector3(transform.position.x, transform.position.y, Mathf.PingPong(Time.time * speed, 15)); } } 布料材質練習 3/4 36
37.
? 將Ball拖曳到Flag之Sphere Colliders項目之Element
0/First欄 ? 執行測試 ? 圓球通過布旗時,如果圓球表面有穿透布料現象,可適度增加Sphere Collider之Radius值 ? 調整Stretching Stiffness及Bending Stiffness觀察變化情形 布料材質練習 4/4 37
38.
? 選單命令Assets> Import
Package> Effects 玻璃材質 38
39.
? Skybox相當於戶外空間無限遠處之背景。Unity提供四種方式產生天 空背景 天空背景材質 1/7 39
40.
? 使用6張方位圖建立天空背景材質 ? 選單命令Assets>
Create> Material ? Inspector視窗 ? Shader設定為Skybox/6 Sided ? 設定前後左右上下各方位的素材 天空背景材質 2/7 40
41.
? 使用Cubemap建立天空背景材質 ? Cutemap是合成的環景圖 ?
選單命令Assets> Create> Material ? Inspector視窗 ? Shader設定為Skybox/Cubemap ? Tint Color 天空色調 ? Exposure 曝光度 ? Rotation 旋轉角度 天空背景材質 3/7 41
42.
? 使用全景圖建立天空背景材質 ? 選單命令Assets>
Create> Material ? Inspector視窗 ? Shader設定為Skybox/Panoramic ? Spherical (HDR)加入全景圖素材 天空背景材質 4/7 42
43.
? 使用程序生成天空背景材質 ? 選單命令Assets>
Create> Material ? Inspector視窗 ? Shader設定為Skybox/Procedural ? Sun 太陽狀態 ? None ? Simple ? High Quality ? Sun Size 太陽大小 ? Atmosphere Thickness 大氣層厚度 ? Sky Tint 天空色調 ? Ground 地面色調 ? Exposure 曝光度 天空背景材質 5/7 43
44.
? 變更場景天空背景 ? 選單命令Window>
Rendering> Lighting Settings ? Scene頁籤,設定Skybox Material欄 天空背景材質 6/7 44
45.
? 另?種方式是在主攝影機加入skybox元件 ? 選單命令Component>
Rendering> Skybox ? 設定Custom Skybox欄 天空背景材質 7/7 45
46.
? 新增場景,檔名Cubemap Skybox ?
Main Camera ? Position(x, y, z) = (0, 1, 0) ? 選單命令GameObject> 3D Object> Plane ? 重置Transform ? 選單命令GameObject> 3D Object> Cylinder ? 重置Transform ? Scale(x, y, z) = (1, 0.25, 1) ? 套用Crystal Material材質 Cubemap天空背景材質練習 1/4 46
47.
? Main Camera加入CameraControl腳本程式 public
class CameraControl : MonoBehaviour { public float xSpeed = 1.0f; public float ySpeed = 1.0f; private Quaternion rotationEuler; private float x; private float y; void LateUpdate() { x += Input.GetAxis ("Mouse X") * xSpeed ; y -= Input.GetAxis ("Mouse Y") * xSpeed ; rotationEuler = Quaternion.Euler (y, x, 0); transform.rotation = rotationEuler; } } Cubemap天空背景材質練習 2/4 47
48.
? 選單命令Assets> Create>
Material,命名為Cubemap Sky ? Shader設定為Skybox/Cubemap ? Cubemap (HDR) = Assets/Materials/skybox/cubemaps/daytime.hdr Cubemap天空背景材質練習 3/4 48
49.
? 變更場景天空背景 ? 選單命令Window>
Rendering> Lighting Settings ? Scene頁籤,設定Skybox Material欄,設定使用Cubemap Sky ? 執行測試 Cubemap天空背景材質練習 4/4 49
50.
? 新增場景,檔名6sides Skybox ?
Main Camera ? Position(x, y, z) = (0, 1, 0) ? 選單命令GameObject> 3D Object> Plane ? 重置Transform ? 選單命令GameObject> 3D Object> Cylinder ? 重置Transform ? Scale(x, y, z) = (1, 0.25, 1) ? 套用Crystal Material材質 6 Sided天空背景材質練習 1/4 50
51.
? Main Camera加入CameraControl腳本程式 public
class CameraControl : MonoBehaviour { public float xSpeed = 1.0f; public float ySpeed = 1.0f; private Quaternion rotationEuler; private float x; private float y; void LateUpdate() { x += Input.GetAxis ("Mouse X") * xSpeed ; y -= Input.GetAxis ("Mouse Y") * xSpeed ; rotationEuler = Quaternion.Euler (y, x, 0); transform.rotation = rotationEuler; } } 6 Sided天空背景材質練習 2/4 51
52.
? 選單命令Assets> Create>
Material,命 名為6Sided Sky ? Shader設定為Skybox/6 Sided ? 套用以下圖片做為Skybox素材 ? sky5X_textures/skyX55+z.png ? sky5X_textures/sky55-z.png ? sky5X_textures/sky55+x.png ? sky5X_textures/sky55-x.png ? sky5X_textures/sky55+y.png ? sky5X_textures/sky55-y.png 6 Sided天空背景材質練習 3/4 52
53.
? 變更場景天空背景 ? 選單命令Window>
Rendering> Lighting Settings ? Scene頁籤,設定Skybox Material欄,設定使用6Sided Sky ? 執行測試 6 Sided天空背景材質練習 4/4 53
54.
? 新增場景,檔名Panoramic Skybox ?
Main Camera ? 重置Transform ? 選單命令GameObject> 3D Object> Cylinder ? 重置Transform ? Position(x, y, z) = (0, -1, 0) ? Scale(x, y, z) = (1, 0.25, 1) ? 套用Crystal Material材質 環場天空背景材質練習 1/4 54
55.
? Main Camera加入CameraControl腳本程式 public
class CameraControl : MonoBehaviour { public float xSpeed = 1.0f; public float ySpeed = 1.0f; private Quaternion rotationEuler; private float x; private float y; void LateUpdate() { x += Input.GetAxis ("Mouse X") * xSpeed ; y -= Input.GetAxis ("Mouse Y") * xSpeed ; rotationEuler = Quaternion.Euler (y, x, 0); transform.rotation = rotationEuler; } } 環場天空背景材質練習 2/4 55
56.
? 選單命令Assets> Create>
Material,命名為Panoramic Sky ? Shader設定為Skybox/Panoramic ? Spherical (HDR) = Panorama-Wallpaper.jpg 環場天空背景材質練習 3/4 56
57.
? 變更場景天空背景 ? 選單命令Window>
Rendering> Lighting Settings ? Scene頁籤,設定Skybox Material欄,設定使用Panoramic Sky ? 執行測試 環場天空背景材質練習 4/4 57
Download