Unity Mesh参数详解(一)

Mesh指的是模型的网格,Unity中内置的几种简单的几何模型都具有自己的网格:


Unity开放了定制网格的方式,通过这些方式可以构建出许多很复杂的图案或几何体,网上有很多通过Mesh生成特定模型的方式,这里主要介绍的是我自己对于参数的一些理解。

要生成一个Mesh网格,需要为Mesh提供两种最基本的数据集:顶点坐标和三角形配置信息(其他的如uv,法线等,都不是必须的,但可以提供很多效果,这边不做介绍)

先看一段简单的代码:
[ExecuteInEditMode]
public class CubeTest : MonoBehaviour {

    [Header("顶点")]
    public Vector3[] newVertices;
    [Header("三角形")]
    public int[] newTriangles;

    [ContextMenu("Create")]
    public void Create() {
        Mesh mesh = GetComponent<MeshFilter>().sharedMesh;
        mesh.vertices = newVertices;
        mesh.triangles = newTriangles;
    }
}

然后是界面配置


效果


很简单的一个三角形网格就出来了,接下来是参数的详细讲解

首先是顶点信息

在界面配置中,我们给了三个点,分别是(0,0,0)(1,0,0)(0,1,0)

三个点对应的可以在上图的012中标出,坐标是相对与模型空间中的,模型原点是不变的。 记住点的位置和在顶点数组中的顺序,还有观察的面,这点很重要,在后续配置三角形信息时会用到。


在unity中可以通过左上角的按钮切换显示的坐标系,Pivot表示模型坐标系,Center表示Mesh坐标系,中心点即Mesh的中心点,是会随着Mesh的改变而改变的。

然后是三角形配置

在unity中,三角形面片都是单面的,只有在一个面能够看到他们,换个角度就看不到了,如下图,注意比较坐标系


那么怎么确定在哪个面能够看到这个三角网格呢,这都是可以配置的,由构成三角形的顶点顺序决定的。

在上面的截图中,我们配置的是(0,1,2)这个顺序,从这个角度,注意从0,1,2这样的顺序遍历过去,刚好是顺时针的


答案很明确了,从哪边看,构成三角形的三个点顺序是顺时针的,说明这个三角网格就是渲染在哪个面的,再做一次验证,我们将三角形的顺序改成0,2,1



效果很明显,从另一面就可以看到这个三角形了(注意蓝色轴(Z轴)的方向),三角形顺序改成(2,1,0)(1,0,2)效果都是一样的
如果要在两个面都能看到这个三角形怎么办?

因为在unity中,三角形面片都是单面的,所以单个三角形是没办法做到的,我们需要再两个面都构建三角形,这在unity中是可行的,让我们看看效果



这样,在两个面都可以观察到这个面片了。

这些都是最基础的东西,同理,通过复杂计算,配置顶点的坐标和三角形的构成,就可以生成各种复杂的模型。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值