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;
}
}