Unity 画自定义网格

有时候需要程序化动态生成网格(例如骨骼)

先3D建一个模型,然后导入到Unity 调试查看mesh.vertices 的排列,用excel几下索引。然后赋值triangle的时候记得按照 123456 的顺序排列,因为Unity就是这样导入的貌似,否则画的网格不正确,最后记得重新计算下法线

在这里插入图片描述

//Vector3[] vertex = new Vector3[6];
//var mid = parent.position + parent.forward * boneSize;
//vertex[0] = parent.position;
//vertex[1] = mid + (parent.right + parent.up) * boneSize;
//vertex[2] = mid + (parent.right + -parent.up) * boneSize;
//vertex[3] = mid + (-parent.right + parent.up) * boneSize;
//vertex[4] = mid + (-parent.right + -parent.up) * boneSize;
//vertex[5] = child.position;
Vector3[] vertex = { 
        new Vector3(0.0f, -3.2f, 0.0f),
        new Vector3(1.0f, -1.1f, -1.0f),
        new Vector3(1.0f, -1.1f, 1.0f),
        new Vector3(-1.0f, -1.1f, -1.0f),
        new Vector3(-1.0f, -1.1f, 1.0f),
        new Vector3(0.0f, 1.0f, 0.0f)
        };

int[] triangle = { 
    0, 1, 2, 0, 3, 1, 0, 4, 3, 0, 2, 4, 2, 1, 5, 1, 3, 5, 3, 4, 5, 4, 2, 5 };

var vertices = new Vector3[triangle.Length];
for (int i = 0; i < triangle.Length; i++)
{
    vertices[i] = vertex[triangle[i]];
}

for (int i = 0; i < triangle.Length; i++)
{
    triangle[i] = i;
}
m_Mesh.vertices = vertices;
m_Mesh.triangles = triangle;

m_Mesh.RecalculateNormals();

// 这里不需要设置矩阵 因为顶点已经是动态生成的了
Graphics.DrawMesh(m_Mesh, Vector3.zero, Quaternion.identity, Material, 0);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值