当前位置:   article > 正文

Unity的SkinnedMeshRenderer_skinned mesh renderer

skinned mesh renderer

SkinnedMeshRenderer蒙皮网格过滤器

有动画的网格用SKinnedMeshRenderer,静止不动的网格用MeshRenderer

SKinnedMeshRenderer 的精华在于蒙皮,所谓的蒙皮并不是模型的贴图,而是Mesh本身,蒙皮是指Mesh中的顶点附着在骨骼之上。可以这么说,具有蒙皮(Skin数据)的Mesh就是SkinnedMesh,没有蒙皮数据的就是一个普通的静态Mesh。蒙皮数据决定顶点如何绑定到骨骼上。顶点的蒙皮数据包括顶点受到哪些骨骼影响以及这些骨骼影响该顶点时的权重(weight),另外对于每块骨骼还需要骨骼偏移(BoneOffsetMatrix)用来将顶点从Mesh空间变换到骨骼空间。谷歌控制蒙皮运动,动画控制骨骼的运动

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.SceneManagement;
  5. public class ChangeAvator : MonoBehaviour
  6. {
  7. public GameObject[] objects;
  8. void Start()
  9. {
  10. gameObject.AddComponent<SkinnedMeshRenderer>();
  11. Change();
  12. }
  13. /// <summary>
  14. /// 换装
  15. /// </summary>
  16. public void Change()
  17. {
  18. //集合合并Mesh网格
  19. List<CombineInstance> combines = new List<CombineInstance>();
  20. //集合获取material
  21. List<Material> materials = new List<Material>();
  22. for (int i = 0; i < objects.Length; i++)
  23. {
  24. //获取单个Mesh
  25. Mesh mesh = objects[i].GetComponentInChildren<SkinnedMeshRenderer>().sharedMesh;
  26. CombineInstance combine = new CombineInstance();
  27. //单个赋值
  28. combine.mesh = mesh;
  29. //集合添加合并
  30. combines.Add(combine);
  31. materials.Add(objects[i].GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial);
  32. }
  33. Mesh mesh1 = new Mesh();
  34. mesh1.CombineMeshes(combines.ToArray(), false, false);
  35. //网格
  36. ga
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号