54.屏幕后期处理效果-网格网格渲染器蒙皮网格渲染器材质着色器之间的关系
54.1 知识点
网格、网格渲染器、材质、着色器 它们是什么
网格(Mesh)
- 网格是一个3D对象的几何数据。
- 它由顶点、边和面组成,描述了对象的形状和结构,定义了3D模型的轮廓。
- 网格中包含模型的关键数据,例如:
- 顶点
- 法线
- 切线
- 纹理坐标
- 顶点颜色
- 骨骼权重
- 骨骼索引
- 网格边界等信息
- Shader中使用的模型数据来源于Mesh。
- Unity中:
- 不带骨骼动画的模型网格数据通常在
MeshFilter
(网格过滤器)组件中关联。 - 带骨骼动画的模型网格数据一般在
Skinned Mesh Renderer
(蒙皮网格渲染器)中关联。
- 不带骨骼动画的模型网格数据通常在
网格渲染器(Mesh Renderer)
- 网格渲染器是Unity中的一个组件,用于将网格绘制到屏幕上。
- 功能:
- 引用一个网格对象来获取几何数据。
Mesh Renderer
组件会自动寻找同一GameObject上的MeshFilter
组件中的网格(Mesh)并将其渲染。 - 引用一个或多个材质,用于定义对象的外观。
- 引用一个网格对象来获取几何数据。
- 通常用于不带骨骼动画的模型渲染,例如:
- 建筑物
- 箱子
- 地面等不需要骨骼动画的模型。
蒙皮网格渲染器(Skinned Mesh Renderer)
- 蒙皮网格渲染器是一种特殊的网格渲染器,用于处理带有骨骼动画的网格。
- 功能:
- 处理网格的几何数据。
- 处理骨骼和权重,允许网格根据骨骼动画进行变形。
- 特点:
- 使用蒙皮网格渲染器的对象不需要再使用
MeshFilter
组件。 - 可直接关联网格信息。
- 使用蒙皮网格渲染器的对象不需要再使用
- 通常用于带有动画的模型,例如:
- 游戏中的角色
- 怪物
- 机关等。
材质(Material)
- 材质,也称为材质球,定义了模型网格的外观。
- 它包含对一个着色器的引用,并通过一组属性(例如颜色、纹理等)来配置着色器。
- 一个模型可以有多个材质,每个材质应用于模型的不同部分。
着色器(Shader)
- 着色器是一种描述如何渲染图形和计算图形外观的程序。
- 功能:
- 控制图形的颜色、光照、纹理和其他视觉效果。
- 特点:
- 在GPU上运行的程序,用于计算每个像素的颜色。
- 在学习中,着色器知识是重点。
网格、网格渲染器、材质、着色器之间的关系
网格渲染器(Mesh Renderer)
- Mesh(网格)
- 关联组件:
MeshFilter
(网格过滤器) - 包含内容:
- 几何数据(Geometry Data)
- 关联组件:
- Material(材质)
- 包含内容:
- Shader(着色器)
- Properties(属性):颜色、纹理等(这些属性由Shader决定是否暴露在材质中)
- 包含内容:
蒙皮网格渲染器(Skinned Mesh Renderer)
- Mesh(网格)
- 包含内容:
- 几何数据(Geometry Data)
- 包含内容:
- Bones & Weights(骨骼与权重)
- Material(材质)
- 包含内容:
- Shader(着色器)
- Properties(属性):颜色、纹理等(这些属性由Shader决定是否暴露在材质中)
- 包含内容:
总结
MeshRenderer
和SkinnedMeshRenderer
是Unity中的组件。- 如果需要获取或修改一个对象的
Mesh
(网格)、Material
(材质)、材质上的属性、材质关联的Shader
(着色器)等信息,都可以通过这两个组件来操作。
54.2 知识点代码
Lesson54_屏幕后期处理效果_网格网格渲染器蒙皮网格渲染器材质着色器之间的关系.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson54_屏幕后期处理效果_网格网格渲染器蒙皮网格渲染器材质着色器之间的关系 : MonoBehaviour
{
void Start()
{
#region 知识点一 网格、网格渲染器、材质、着色器 它们是什么
#region 网格(Mesh)
//网格是一个3D对象的几何数据。
//它由顶点、边和面组成。网格描述了对象的形状和结构,定义了3D模型的轮廓。
//网格中包含了模型的关键数据
//比如:
//顶点、法线、切线、纹理坐标、顶点颜色、骨骼权重、骨骼索引、网格边界等等信息
//我们在Shader中使用的模型的数据就来自于Mesh
//Unity中不带骨骼动画的模型网格数据一般在MeshFilter(网格过滤器)组件中进行关联
//而带骨骼动画的模型网格数据一般在Skinned Mesh Renderer(蒙皮网格渲染器)中进行关联
#endregion
#region 网格渲染器(Mesh Renderer)
//网格渲染器是Unity中的一个组件,用于将网格绘制到屏幕上
//它主要用来
//1.引用一个网格对象来获取几何数据,Mesh Renderer组件会自动寻找同一GameObject上
// Mesh Filter组件中的网格(Mesh)并将其渲染出来
//2.引用一个或多个材质,用于定义对象的外观
//一般不带骨骼动画的模型都使用网格渲染器来进行渲染
//比如:
//游戏中的建筑物,箱子,地面等等不需要骨骼动画的模型
#endregion
#region 蒙皮网格渲染器(Skinned Mesh Renderer)
//蒙皮网格渲染器是一种特殊的网格渲染器,用于处理带有骨骼动画的网格。
//它不仅处理网格的几何数据,还处理骨骼和权重,允许网格根据骨骼动画进行变形。
//使用蒙皮网格渲染器的对象不需要再使用Mesh Filter组件
//它可以直接关联对应的网格信息
//一般带有动画的模型都使用蒙皮网格渲染器来进行渲染
//比如:
//游戏中的角色、怪物、机关等等
#endregion
#region 材质(Material)
//材质我们也可以称为材质球
//它定义了模型网格的外观
//材质包含对一个着色器的引用,并通过一组属性(例如颜色、纹理等等信息)来配置着色器
//一个模型可以有多个材质,每个材质应用于模型的不同部分
#endregion
#region 着色器(Shader)
//是一种用于描述如何渲染图形和计算图形外观的程序
//主要用于控制图形的颜色、光照、纹理和其他视觉效果
//它是运行在GPU上的程序,用于计算每个像素的颜色
//我们这套课中学习的知识都是和着色器有关的
#endregion
#endregion
#region 知识点二 网格、网格渲染器、材质、着色器 之间的关系
//Mesh Renderer(网格渲染器)
// └── Mesh(网格) —— MeshFilter(网格过滤器组件进行关联)
// └── Geometry Data(几何数据)
// └── Material(材质)
// └── Shader(着色器)
// └── Properties(属性:颜色、纹理等 —— 在Shader中决定哪些属性暴露在材质上)
//Skinned Mesh Renderer(蒙皮网格渲染器)
// └── Mesh(网格)
// └── Geometry Data(几何数据)
// └── Bones & Weights(骨骼与权重)
// └── Material(材质)
// └── Shader(着色器)
// └── Properties(属性:颜色、纹理等 —— 在Shader中决定哪些属性暴露在材质上)
//从关系中我们可以得出
//由于Mesh Renderer和Skinned Mesh Renderer都是Unity中的组件
//那如果我们想要获取、修改一个对象Mesh(网格)、Material(材质)、材质上属性、材质关联的Shader(着色器)等等信息
//都可以利用这两个组件去获取
#endregion
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com