Advertisement
Guest User

Untitled

a guest
Feb 11th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. using UnityEngine;
  2. using UnityEditor;
  3. using System.IO;
  4. using System.Collections;
  5.  
  6. public class FixBlenderImportRotation : AssetPostprocessor
  7. {
  8.  
  9. public void OnPostprocessModel(GameObject obj)
  10. {
  11. ModelImporter importer = assetImporter as ModelImporter;
  12. if(Path.GetExtension(importer.assetPath) == ".blend")
  13. {
  14. RotateObject(obj.transform);
  15. }
  16. obj.transform.rotation = Quaternion.identity;
  17. }
  18.  
  19. private void RotateObject(Transform obj)
  20. {
  21.  
  22. obj.Rotate(90f, 0f, 0f);
  23.  
  24.  
  25.  
  26. MeshFilter meshFilter = obj.GetComponent<MeshFilter>() as MeshFilter;
  27. if (meshFilter)
  28. {
  29. RotateMesh(meshFilter.sharedMesh);
  30. }
  31. foreach (Transform child in obj.transform as IEnumerable)
  32. {
  33. RotateObject(child);
  34. }
  35. }
  36.  
  37. private void RotateMesh(Mesh mesh)
  38. {
  39. int index = 0;
  40.  
  41. Vector3[] vertices = mesh.vertices;
  42. for (index = 0; index < vertices.Length; index++)
  43. {
  44. vertices[index] = new Vector3(vertices[index].x, vertices[index].z, vertices[index].y);
  45. }
  46. mesh.vertices = vertices;
  47.  
  48. for(int submesh = 0; submesh < mesh.subMeshCount; submesh++)
  49. {
  50. int[] triangles = mesh.GetTriangles(submesh);
  51. for (index = 0; index < triangles.Length; index += 3)
  52. {
  53. int intermediate = triangles[index];
  54. triangles[index] = triangles[index + 2];
  55. triangles[index + 2] = intermediate;
  56. }
  57. mesh.SetTriangles(triangles, submesh);
  58. }
  59. mesh.RecalculateNormals();
  60. mesh.RecalculateBounds();
  61. }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement