Unity Mesh、MeshFilter、MeshRenderer到底是个啥玩意

1.首先我们创建一个Cube在Unity中,在Hierarchy中点击右键3d Object ->Cube。然后查看右侧的Inspector窗口,如果没有的话,看顶部的Windows菜单,里面有Inspector窗口。如下截图:

包含了Mesh Filter,Mesh Renderer组件,然后再Mesh Filter中包含了Mesh

The Mesh Filter takes a mesh from your assets and passes it to the Mesh Renderer for rendering on the screen.

大体意思是说,Mesh Filter是用了一个从资源里取到的mesh资源,然后通过Mesh Render,渲染到屏幕中

那么这个Mesh中都包含了什么东东?这个问题的发现原因是由于我发现有些Object里有Mesh Filter 但是没有Mesh。所以才想到这个东东可以动过代码创建!怎么创建?首先要知道Mesh里都包含了什么玩意!!

在Mesh中存储着三维模型的数据:vertices(顶点数据数组Vector3[])、triangles(三角形顶点索引数组,int[])、normals(法线向量数组,Vector3[])、uv(纹理坐标数组,Vector2[])。我怎么知道的?看代码哇...

Mesh mesh = new Mesh(); 自己去源代码里看

然后这里需要一些OpenGL相关的知识,如下截图,这里知道就好,理解的话需要看OpenGL相关内容

 

好的,我可以为你解答。 在Unity中,Mesh用于表示3D模型的几何信息,而MeshRendererMeshFilter组件则用于将Mesh渲染到屏幕上。如果你想构建一个baseMesh脚本,可以按照以下步骤进行: 1. 创建一个空物体,并给它添加一个MeshFilter组件和一个MeshRenderer组件。 2. 在脚本中,你需要定义一个Mesh实例,并使用MeshFilter组件的sharedMesh属性来获取当前物体的Mesh。 3. 接下来,你可以使用Mesh的各种方法来修改Mesh的几何信息,例如设置顶点位置、UV坐标、法线等等。 4. 修改完Mesh信息后,调用MeshFilter组件的mesh属性来更新当前物体的Mesh。 5. 最后,你可以使用MeshRenderer组件来设置物体的材质和渲染模式等等。 下面是一个简单的示例代码: ```csharp using UnityEngine; [RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))] public class BaseMesh : MonoBehaviour { private Mesh baseMesh; private void Awake() { baseMesh = GetComponent<MeshFilter>().sharedMesh; } private void Start() { // 修改Mesh信息 Vector3[] vertices = new Vector3[4] { new Vector3(-1, -1, 0), new Vector3(1, -1, 0), new Vector3(-1, 1, 0), new Vector3(1, 1, 0) }; baseMesh.vertices = vertices; int[] triangles = new int[6] { 0, 2, 1, 2, 3, 1 }; baseMesh.triangles = triangles; // 更新Mesh GetComponent<MeshFilter>().mesh = baseMesh; // 设置材质和渲染模式等等 GetComponent<MeshRenderer>().material = new Material(Shader.Find("Standard")); GetComponent<MeshRenderer>().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On; } } ``` 希望这可以帮助你构建自己的baseMesh脚本,如果你还有其他问题,可以继续问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值