学习笔记:unity通过Mesh网格绘制图形:三角形&正方体&圆柱

本文介绍了如何在Unity中利用Mesh类创建3D图形,从绘制基本的三角形开始,逐步讲解了绘制正方体和圆柱体的过程,强调了顶点、法线和三角形顺序的重要性,以及解决面融合问题的方法。同时,展示了通过增加顶点和调整索引来实现复杂形状的构建技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,介绍

Mesh类:通过脚本创建或是获取网格的类,网格包含多个顶点和三角形数组。顶点信息包含坐标和所在面的法线。

unity中3D的世界的所有图形全部都是由三角形构成的。
比如unity已经装配好的几种图形我们可以看一下:
在这里插入图片描述

我们可以在unity中通过Mesh类来绘制图形。
所以在我们绘制其它图形之前,首先完成一个小目标,画一个三角形。

二,绘制三角形

首先做准备工作:
1.在场景中创建一个空物体,并挂载MeshRenderer和MeshFilter组件。//我们先不考虑碰撞器的问题,所以不添加collider
2.创建一个默认材质,拖入MeshRenderer组件中,为可视化做准备。
3.创建一个脚本,挂载在空物体上。然后开始编辑代码

using System.Collections.Generic;
using UnityEngine;

public class test : MonoBehaviour
{
	// 网格渲染器
	MeshRenderer meshRenderer;
	// 网格过滤器
	MeshFilter meshFilter;

	// 用来存放顶点数据
	List<Vector3> verts;        // 顶点列表
	List<int> indices;          // 序号列表

	private void Start()
	{
		verts = new List<Vector3>();
		indices = new List<int>();
		meshRenderer = GetComponent<MeshRenderer>();
		meshFilter = GetComponent<MeshFilter>();
		Generate();
	}

	public void Generate()
	{
		// 把顶点和序号数据填写在列表里
		AddMeshData1();//三角形
		// 用列表数据创建网格Mesh对象
		Mesh mesh = new Mesh();
		mesh.SetVertices(verts);
		//mesh.vertices = verts.ToArray();
		mesh.SetIndices(indices, MeshTopology.Triangles, 0);
		//mesh.triangles = indices.ToArray();
		// 自动计算法线
		mesh.RecalculateNormals();
		// 自动计算物体的整体边界
		mesh.RecalculateBounds();
		// 将mesh对象赋值给网格过滤器,就完成了
		meshFilter.mesh = mesh;
	}
	// 填写顶点和序号列表
	void AddMeshData1()
	{
		verts.Add(new Vector3(0, 0, 0));
		verts.Add(new Vector3(0, 0, 1));
		verts.Add(new Vecto
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值