Mesh网格

Mesh(网格)

定义:Mesh 是一个包含顶点、三角形、顶点法线、UV坐标、颜色和骨骼权重 等数据的对象。它定义了3D模型的几何形状。

功能:

顶点(Vertices):构成3D模型的点。

三角形(Triangles):由三个顶点组成的面,定义了模型的表面。

法线(Normals):定义了表面的朝向,对于光照计算非常重要。

UV坐标(UV Coordinates):用于将纹理映射到3D模型上。

颜色(Colors):可以为每个顶点或每个子网格指定颜色。

骨骼权重(Bone Weights):用于骨骼动画,定义了顶点如何受到骨骼的影响。

MeshRenderer

定义:MeshRenderer 是一个组件,用于在Unity场景中渲染Mesh。

功能:

渲染网格:MeshRenderer 渲染与之关联的 MeshFilter 组件中的 Mesh。

材质应用:MeshRenderer 可以应用一个或多个材质到 Mesh 上,每个子网格可以有不同的材质。

光照和阴影:处理 Mesh 的光照和阴影效果。

全局光照:与全局光照系统(如光照探针和反射探针)交互,以实现更真实的光照效果。

脚本控制:可以通过脚本来动态改变 MeshRenderer 的属性,如材质、颜色等。

复制代码
MeshRenderer 依赖于 MeshFilter 组件来获取要渲染的 Mesh。MeshFilter 组件存储对 Mesh 的引用。
c# 复制代码
private Mesh m_Mesh = null;
private Vector3[] m_Vertices = null;
private int[] m_Triangles = null;

void Start()
{
    m_Mesh = new Mesh();
    this.gameObject.GetComponent<MeshFilter>().mesh = m_Mesh;
    m_Mesh.name = "Test Mesh";
    
    m_Vertices = new Vector3[]
    {
        new Vector3(0,0,0),
        new Vector3(0,1,0),
        new Vector3(1,0,0),
        new Vector3(1,1,0),
    };
    
    m_Triangles = new int[]
    {
        0,1,2,
        2,1,3
    }
    
    m_Mesh.Clear();
    m_Mesh.vertices = m_Vertices;
    m_Mesh.triangles = m_Triangles;
    

}
相关推荐
星恒随风2 小时前
Linux线程概念详解:从分页存储、页表、MMU与TLB,深入理解线程和进程的区别与联系
linux·运维·笔记·学习·状态模式
qq_284274052 小时前
数控机床编程基础与坐标系:编程六步流程、程序号/程序段/程序字格式,与右手定则下车床铣床XYZ轴判定(含考点)
笔记·学习·自动化·制造
德林恩宝2 小时前
On-Policy Distillation(OPD)学习文档
人工智能·学习·机器学习·大模型·llm·大模型微调
xxwl5853 小时前
区域赛分类题解
c++·笔记·学习·算法
WarPigs6 小时前
Unity无法修改Assembly-CSharp.csproj错误
unity
xxwl5857 小时前
区域赛算法模版第八章---贪心(Greedy)
c++·笔记·学习·算法
qq_284274058 小时前
S7-1200 PLC硬件与启保停实训:CPU选型与DC/DC/DC、循环扫描五阶段、博途组态及电动机启停自锁梯形图(含考点)
笔记·学习·自动化·制造
dear_bi_MyOnly8 小时前
栈和队列:从原理到应用全解析
c语言·开发语言·c++·学习·分类
遇印记9 小时前
应用层,网络管理
运维·网络·windows·学习·安全
乌暮11 小时前
从 `println` 到生产级日志:Spring Boot 日志体系完全指南
java·开发语言·jvm·spring boot·后端·学习·面试