Search Unity

Recalculate bounds of Skinned Mesh

Discussion in 'Scripting' started by PMerlaud, Nov 29, 2018.

  1. PMerlaud

    PMerlaud

    Joined:
    Apr 9, 2013
    Posts:
    64
    I have a skinned mesh and I'd like to be able to recalculate its bounds after modifying its blendshape weight.
    Here's my method:
    Code (CSharp):
    1. public IEnumerator ResizeMesh(int value)
    2. {
    3.     var skinnedMesh = GetComponent<SkinnedMeshRenderer>();
    4.     var m = skinnedMesh.sharedMesh;
    5.     skinnedMesh.SetBlendShapeWeight(1, value);
    6.     skinnedMesh.BakeMesh(m);
    7.     yield return new WaitForEndOfFrame();
    8.     m.RecalculateBounds();
    9.     skinnedMesh.sharedMesh = m;
    10. }
    The mesh is resized correctly when setting the blendshape but the bounds of the mesh stay the same.
    What am I missing?
     
  2. SmallSage

    SmallSage

    Joined:
    Sep 4, 2017
    Posts:
    5
    Hi,I guess: The skinnedMesh.sharedMesh can't be BakeMesh(), Because it is a Shared Mesh, maybe you can use follow code:
    var m = new Mesh(); Or var m = Object.Instantiate<Mesh>(skinnedMesh.sharedMesh);