KITASENJU DESIGN BLOG

memo, html, javascript, unity

Bake SkinnedMesh

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CopySkinnedMesh : MonoBehaviour
{
    [SerializeField] private SkinnedMeshRenderer _srcSkinned;
    [SerializeField] private MeshFilter _targetMeshFilter;
    private MeshRenderer _meshRenderer;
    private Mesh _mesh;
    private bool _isInit=false;
    private Vector4[] _tangents;
    void Start()
    {
        _mesh = new Mesh();
    }

    public void Show(){

        _meshRenderer = GetComponent<MeshRenderer>();
        _meshRenderer.enabled=true;
    }

    public void Hide(){
        _meshRenderer.enabled=false;
    }

    // Update is called once per frame
    void Update()
    {

        _srcSkinned.BakeMesh(_mesh);

        if(!_isInit){
            _isInit=true;

            _tangents =new Vector4[_mesh.vertexCount];
            for(int i=0;i<_mesh.vertexCount;i++){
                var v = _mesh.vertices[i];
                _tangents[i] = new Vector4(
                    v.x,v.y,v.z,1
                );
            }
                       
        }

        _mesh.tangents=_tangents;
        _targetMeshFilter.sharedMesh = _mesh;


    }
}

"FOOTER"