Advertisement
Guest User

Untitled

a guest
Jun 30th, 2015
367
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. void Generate ()
  2. {
  3. SkinnedMeshRenderer smr = GetComponent<SkinnedMeshRenderer>();
  4.  
  5. List<CombineInstance> combineInstances = new List<CombineInstance>();
  6.  
  7. boneWeightsList = new List<BoneWeight>();
  8.  
  9. CombineInstance ci1 = new CombineInstance();
  10. ci1.mesh = smr.sharedMesh;
  11. ci1.transform = smr.transform.localToWorldMatrix;
  12. ci1.subMeshIndex = 0;
  13. combineInstances.Add(ci1);
  14.  
  15. boneWeightsList.AddRange(smr.sharedMesh.boneWeights);
  16.  
  17.  
  18. /*materialList = new List<Material>();
  19. materialList.Add(smr.material);*/
  20. Transform[] bones = smr.bones;//bones.GetComponentsInChildren<Transform>();
  21.  
  22. foreach(Transform bone in bones)
  23. Debug.Log(bone.name);
  24.  
  25. //Debug.Log("Elements length : " + elements.Length.ToString() + "config length : " + config.Length.ToString());
  26.  
  27. for (int i = 0; i < 1; i++ )
  28. {
  29. //Debug.Log("i = " + i + ", config[i] = " + config[i] + ".");
  30. SkinnedMeshRenderer smr1 = (SkinnedMeshRenderer)Object.Instantiate(element);
  31. Debug.Log(element);
  32. Debug.Log(smr1.sharedMesh.subMeshCount);
  33.  
  34. // Add meshes to combineinstances
  35. for (int sub = 0; sub < smr1.sharedMesh.subMeshCount; sub++)
  36. {
  37. CombineInstance ci = new CombineInstance();
  38. ci.mesh = smr1.sharedMesh;
  39. ci.transform = smr1.transform.localToWorldMatrix;
  40. ci.subMeshIndex = 0;
  41. combineInstances.Add(ci);
  42. }
  43.  
  44. boneWeightsList.AddRange(smr1.sharedMesh.boneWeights);
  45.  
  46. Object.Destroy(smr1.gameObject);
  47. }
  48.  
  49. // Combine meshes
  50. smr.sharedMesh = new Mesh();
  51. smr.sharedMesh.CombineMeshes(combineInstances.ToArray(), true, false);
  52. smr.sharedMesh.boneWeights = boneWeightsList.ToArray();
  53.  
  54. smr.bones = bones;
  55.  
  56. // Update bindposes
  57. List<Matrix4x4> bindposes = new List<Matrix4x4>();
  58. for (int i = 0; i < bones.Length; i++)
  59. {
  60. bindposes.Add(bones[i].worldToLocalMatrix * transform.localToWorldMatrix);
  61. }
  62. smr.sharedMesh.bindposes = bindposes.ToArray();
  63.  
  64. //smr.sharedMesh.RecalculateBounds();
  65.  
  66. transform.Rotate(Vector3.right, -90);
  67.  
  68. //GetComponent<Animation>().Play();
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement