Mesh


Unity中的Mesh(网格)是一切3D模型、地形、角色、道具、甚至某些UI元素的几何基础,是“物体的骨架”
包含顶点、面、法线、UV、颜色等数据,是3D图形渲染的核心单位

Mesh的构成

数据作用
顶点(Vertices)网格的点,构成形状的基础
三角形(Triangles)每三个顶点组成一个三角面,是渲染最小单元
法线(Normals)每个顶点的方向,用于光照计算
UV 坐标(UVs)纹理坐标,用来决定贴图怎么铺在模型上
顶点色(Colors)每个顶点的颜色,用于特效、调色
切线(Tangents)用于法线贴图的方向辅助向量

这些数据最终会交给GPU,进行渲染

Mesh在Unity中的用途

用途举例
渲染模型静态模型、角色模型、环境场景
自定义几何体Procedural Mesh(如地形、波浪、水面)
碰撞体数据Mesh Collider 也使用 Mesh
特效/轨迹线性 Mesh(如剑气轨迹、能量波)
角色换装动态换装系统中组合不同 Mesh

如何创建、操作Mesh

Unity提供Mesh类,支持自定义几何体

示例:创建一个简单三角形Mesh

Mesh mesh = new Mesh();

Vector3[] vertices = new Vector3[]
{
    new Vector3(0, 0, 0),
    new Vector3(0, 1, 0),
    new Vector3(1, 0, 0)
};

int[] triangles = new int[] {0, 1, 2};

mesh.vertices = vertices;
mesh.triangles = triangles;
mesh.RecalculateNormals(); // 自动生成法线

GetComponent<MeshFilter>().mesh = mesh;

MeshFilter 和 MeshRenderer

在Unity中,MeshFilterMeshRenderer是构成立体物体(3D模型)渲染的核心组件

  • MeshFilter:提供集合形状(顶点、三角形等)
  • MeshRenderer:将形状渲染到屏幕上(使用材质、光照等)

MeshFilterandMeshRenderer;

MeshFilter:提供模型数据

  • MeshFilter包含一个Mesh对象,这是3D模型的几何体,比如立方体、球体、角色模型等
  • 这些Mesh是.fbx.obj导入的,或运行时通过代码生成

可以通过以下方式获取或赋值Mesh

MeshFilter mf = GetComponent<MeshFilter>();
Mesh mesh = mf.mesh; // 当前使用的实例化mesh
mf.mesh = someOtherMesh; // 替换为新的Mesh

.mesh是一个实例副本,你修改它不会影响原始资源;.sharedMesh是共享原始资源

MeshRenderer:负责把模型画出来

  • MeshRenderer负责把MeshFilter提供的几何体渲染到屏幕上
  • 控制材质、阴影、光照、剔除、光照探针等参数

面板参数

Element 0, 1…
  • 控制使用哪个材质渲染对应子网格
  • 通常一个对象只有一个材质,如果是多个SubMesh,会有多个材质槽 适用场景:
  • 多材质角色:身体/衣服/装备使用不同的材质
  • 不同部件不同特效:一个材质透明,一个闪光
Lighting

Cast Shadows(投射阴影)

  • 控制该物体是否想地面等对象投影
  • 选项:
    • On:始终投射阴影
    • Off:不投影
    • Two Sided:背面也能投影(适用于双面平面)
    • Shadows Only:只显示阴影,不渲染模型本体(隐形)

Receive Shadows(接收阴影)

  • 是否接收其他物体的阴影(比如树被房子挡住时)
  • 关闭可提升性能,但视觉上可能不真实
Probes(探针相关,环境光/间接光)

在Unity中,Probes是一类帮助处理间接光照和环境反射的技术,目的是让动态物体(如角色、道具)在光照和反射效果上看起来更自然,融入环境

为什么需要探针

Unity中有两类光照

  • 直接光照:来自灯光(如Dirctional Light)
  • 间接光照:来自物体间的反弹、环境照明

对于静态物体,Unity可以烘焙光照贴图(Lightmap)来记录间接光照
但动态物体(移动的角色、道具)不能使用烘焙光照贴图,这时候就需要探针来帮它“感受环境的光”

探针是一种轻量级采样方式,让动态物体获得类似烘焙光照/环境反射的技术,从而避免使用高开销的实时光照和实时反射

Light Probes

  • 是否接受光照探针(动态光照采样,用于小物体,如动态角色)
  • 一般设置为Blend Probes(自动采样探针)

Reflection Probes

  • 是否使用反射探针(环境反射用)
  • 选项:
    • Off
    • Blend Probes(常用)
    • Simple(不混合,只是用最近一个)
Additional Settings(附加设置)

Motion Vectors

  • 控制是否为该物体生成运动矢量(供后处理如动态模糊使用)
  • 推荐开启:Per Object Motion

Lightmap Static

  • 如果你将对象标记为静态,会自动启用Lightmap烘焙支持
  • 静态光照适用于不动的建筑、地面等