赞
踩
SkinnedMeshRenderer蒙皮网格过滤器
有动画的网格用SKinnedMeshRenderer,静止不动的网格用MeshRenderer
SKinnedMeshRenderer 的精华在于蒙皮,所谓的蒙皮并不是模型的贴图,而是Mesh本身,蒙皮是指Mesh中的顶点附着在骨骼之上。可以这么说,具有蒙皮(Skin数据)的Mesh就是SkinnedMesh,没有蒙皮数据的就是一个普通的静态Mesh。蒙皮数据决定顶点如何绑定到骨骼上。顶点的蒙皮数据包括顶点受到哪些骨骼影响以及这些骨骼影响该顶点时的权重(weight),另外对于每块骨骼还需要骨骼偏移(BoneOffsetMatrix)用来将顶点从Mesh空间变换到骨骼空间。谷歌控制蒙皮运动,动画控制骨骼的运动
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.SceneManagement;
-
- public class ChangeAvator : MonoBehaviour
- {
- public GameObject[] objects;
-
-
- void Start()
- {
- gameObject.AddComponent<SkinnedMeshRenderer>();
- Change();
- }
-
- /// <summary>
- /// 换装
- /// </summary>
- public void Change()
- {
- //集合合并Mesh网格
- List<CombineInstance> combines = new List<CombineInstance>();
- //集合获取material
- List<Material> materials = new List<Material>();
- for (int i = 0; i < objects.Length; i++)
- {
- //获取单个Mesh
- Mesh mesh = objects[i].GetComponentInChildren<SkinnedMeshRenderer>().sharedMesh;
- CombineInstance combine = new CombineInstance();
- //单个赋值
- combine.mesh = mesh;
- //集合添加合并
- combines.Add(combine);
- materials.Add(objects[i].GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial);
- }
- Mesh mesh1 = new Mesh();
- mesh1.CombineMeshes(combines.ToArray(), false, false);
- //网格
- ga
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。