您当前的位置: 首页 > 

染指流年灬

暂无认证

  • 3浏览

    0关注

    194博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

SkinnedMeshRenderer获取当前播放动作的mesh

染指流年灬 发布时间:2022-06-18 19:10:29 ,浏览量:3

有些时候我们要对当前播放动作的网格获取一些信息或者进行一些处理。这些网格信息是从SkinnedMeshRenderer获得。

这个组件直接获取的SharedMesh属性是没有受到动画控制的mesh,BakeMesh出来的Mesh也需要传入MeshFilter里面使用了之后,再从MeshFilter拿出来,才算是与当前帧的动画符合的mesh,否则还是不正常的。

这个不正常主要表现在旋转方面没有和物体的旋转匹配。

测试代码如下,这个代码是获取SkinnedMeshRenderer的当前的mesh赋值到MeshFilter中,再从MeshFilter中获取的Mesh就可以拿去用。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class TrailingMesh : MonoBehaviour {
	
	
    private Material mat; 
	private Mesh Tmesh;
	private GameObject TgameObject;
	private MeshFilter mf;
 
	private SkinnedMeshRenderer render;
	
	// Use this for initialization
	void Start () {
		render = GetComponent();
 
        TgameObject = new GameObject("TarlingObject");//特效对象
		 
        var mr = TgameObject.AddComponent();//赋予材质
		mat = new Material(Shader.Find("Standard"));
		mr.material = mat;
 
 
        mf = TgameObject.AddComponent();
	  
  
	}
	
	// Update is called once per frame
	void Update () {
 
        #region-------从SkinnedMeshRenderer上拷贝可以正确显示的网格
		TgameObject.transform.position = transform.position;
                TgameObject.transform.rotation = transform.rotation;
		Tmesh = new Mesh();
		render.BakeMesh(Tmesh);
	  #endregion
	  
	
        mf.mesh = Tmesh;
	   
	}
}
关注
打赏
1665909078
查看更多评论
立即登录/注册

微信扫码登录

0.0350s