1.找到顶点
MeshFilter filter;
public SkinnedMeshRenderer skinned;
void Start()
{
filter = GetComponent<MeshFilter>();
Mesh mesh = filter.mesh;
for (int i = 0; i < mesh.vertexCount; i++)
{
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Sphere);
go.name = i.ToString();
go.transform.position = mesh.vertices[i] * 100;
}
}
2.要读写
3.索引
4.所有代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GetVet : MonoBehaviour
{
MeshFilter filter;
public SkinnedMeshRenderer skinned;
void Start()
{
filter = GetComponent<MeshFilter>();
Mesh mesh = filter.mesh;
for (int i = 0; i < mesh.vertexCount; i++)
{
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Sphere);
go.name = i.ToString();
go.transform.position = mesh.vertices[i] * 100;
}
//3323 3313 3304 3324
//3453 3454 3439 3444
Vector3[] vertices1 = new Vector3[skinned.sharedMesh.vertices.Length];
vertices1[3453] = new Vector3(-1, -0.5f, 0);
vertices1[3454] = new Vector3(1, -0.5f, 0);
vertices1[3439] = new Vector3(0, -0.8f, 1);
vertices1[3444] = new Vector3(0, -0.8f, 1);
Vector3[] vertices2 = new Vector3[skinned.sharedMesh.vertices.Length];
vertices2[3323] = new Vector3(1, -0.5f, 0);
vertices2[3313] = new Vector3(0, -0.5f, 1);
vertices2[3304] = new Vector3(-1, -0.5f, 0);
vertices2[3324] = new Vector3(0, -0.5f, -1);
Vector3[] normals = new Vector3[skinned.sharedMesh.vertices.Length];
Vector3[] tangents = new Vector3[skinned.sharedMesh.vertices.Length];
skinned.sharedMesh.ClearBlendShapes();
skinned.sharedMesh.AddBlendShapeFrame("左卡姿兰大眼睛←", 1, vertices1, normals, tangents);
skinned.sharedMesh.AddBlendShapeFrame("右卡姿兰大眼睛→", 1, vertices2, normals, tangents);
}
// Update is called once per frame
void Update()
{
}
}
5.效果