Mesh To SkinMesh Renderer

Any one can help please got Strange result

when assign mesh.boneweights

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

publicclassMesh_To_SkinRenderer:MonoBehaviour{


publicMeshFiltermf;
publicMeshRenderermr;

publicSkinnedMeshRendererski;
//Usethisfor initialization
voidStart(){


GameObjectbn=newGameObject();
bn.name="roots";


mf=gameObject.GetComponent<MeshFilter>();
mr=gameObject.GetComponent<MeshRenderer>();

Meshmesh=mf.mesh;

GameObjectn=newGameObject();
n.name=name;
n.transform.parent=bn.transform;

SkinnedMeshRendererski=n.AddComponent<SkinnedMeshRenderer>();
ski.materials=mr.materials;

List<Transform>bon=newList<Transform>();
List<Matrix4x4>bindPose=newList<Matrix4x4>();

Vector3p1=newVector3(mr.bounds.center.x,mr.bounds.min.y,mr.bounds.center.z);
Vector3p2=newVector3(mr.bounds.center.x,mr.bounds.center.y,mr.bounds.center.z);
Vector3p3=newVector3(mr.bounds.center.x,mr.bounds.max.y,mr.bounds.center.z);



GameObjectbone_base=newGameObject();
bone_base.name="bone_base";
bone_base.transform.parent=bn.transform;
bon.Add(bone_base.transform);
bon[0].localRotation=Quaternion.identity;
bon[0].localPosition=p1;

bindPose.Add(bone_base.transform.transform.worldToLocalMatrix*bn.transform.localToWorldMatrix);


GameObjectbone_center=newGameObject();
bone_center.name="bone_center";
bone_center.transform.parent=bone_base.transform;
bon.Add(bone_center.transform);
bon[1].localRotation=Quaternion.identity;
bon[1].localPosition=p2;
bindPose.Add(bone_center.transform.transform.worldToLocalMatrix*bn.transform.localToWorldMatrix);

GameObjectbone_up=newGameObject();
bone_up.name="bone_up";
bone_up.transform.parent=bone_center.transform;
bon.Add(bone_up.transform);
bon[2].localRotation=Quaternion.identity;
bon[2].localPosition=p3;
bindPose.Add(bone_up.transform.transform.worldToLocalMatrix*bn.transform.localToWorldMatrix);



List<BoneWeight>poids=newList<BoneWeight>();

for(inti=0;i<mesh.vertices.Length;i++){

BoneWeightbb=newBoneWeight();


bb.boneIndex0=0;
bb.weight0=1;
poids.Add(bb);


}

ski.bones=bon.ToArray();

mesh.boneWeights=poids.ToArray();

ski.sharedMesh=mesh;

}


//Updateiscalledonceper frame
voidUpdate(){

}


publicGameObjectproche(List<GameObject>arrayPlayers,Vector3pos){

GameObjectcandidatePlayer=null;
floatdistance=1000.0f;

foreach(GameObject player inarrayPlayers){


floatnewdistance=Vector3.Distance(player.transform.position,pos);

if(newdistance<distance){

distance=newdistance;
candidatePlayer=player;

}
}



returncandidatePlayer;

}

}

Your indentation is horribly wrong, please redo that part

the question is why got this result

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

public class Mesh_To_SkinRenderer : MonoBehaviour {


    public MeshFilter mf;
    public MeshRenderer mr;

    public SkinnedMeshRenderer ski;
    // Use this for initialization
    void Start () {
  

        GameObject bn = new GameObject ();
        bn.name = "roots";


        mf = gameObject.GetComponent<MeshFilter> ();
        mr = gameObject.GetComponent<MeshRenderer> ();

        Mesh mesh = mf.mesh;

        GameObject n = new GameObject ();
        n.name = name;
        n.transform.parent = bn.transform;

        ski =     n.AddComponent<SkinnedMeshRenderer> ();
        ski.materials = mr.materials;

        List<Transform>  bon = new List<Transform>();
        List<Matrix4x4>  bindPose = new List<Matrix4x4>();

        Vector3 p1  = new Vector3 (mr.bounds.center.x, mr.bounds.min.y, mr.bounds.center.z);
        Vector3 p2  = new Vector3 (mr.bounds.center.x, mr.bounds.center.y, mr.bounds.center.z);
        Vector3 p3  = new Vector3 (mr.bounds.center.x, mr.bounds.max.y, mr.bounds.center.z);



        GameObject bone_base = new GameObject ();
        bone_base.name = "bone_base";
        bone_base.transform.parent = bn.transform;
        bon.Add (bone_base.transform);
        bon [0].localRotation = Quaternion.identity;
        bon [0].localPosition = p1;

        bindPose.Add(bone_base.transform.transform.worldToLocalMatrix * ski.transform.localToWorldMatrix );


        GameObject bone_center = new GameObject ();
        bone_center.name = "bone_center";
        bone_center.transform.parent = bone_base.transform;
        bon.Add (bone_center.transform);
        bon [1].localRotation = Quaternion.identity;
        bon [1].localPosition = p2;
        bindPose.Add(bone_center.transform.transform.worldToLocalMatrix * ski.transform.localToWorldMatrix );

        GameObject bone_up = new GameObject ();
        bone_up.name = "bone_up";
        bone_up.transform.parent = bone_center.transform;
        bon.Add (bone_up.transform);
        bon [2].localRotation = Quaternion.identity;
        bon [2].localPosition = p3;
        bindPose.Add(bone_up.transform.transform.worldToLocalMatrix * ski.transform.localToWorldMatrix );



        List<BoneWeight> poids = new List<BoneWeight> ();

            for (int i = 0; i < mesh.vertices.Length; i++) {

                BoneWeight bb = new BoneWeight ();


                bb.boneIndex0 = 1;
                bb.weight0 = 1;
                poids.Add (bb);

            }

        mesh.bindposes = bindPose.ToArray ();
        mesh.boneWeights = poids.ToArray();

        ski.rootBone = bon [0];
        ski.bones = bon.ToArray ();

          
        ski.sharedMesh = mesh;

  
    }

that’s can be fun anyone can help please it’s look when assign
bindpose