Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using UnityEditor;
- using System.IO;
- using System.Collections;
- public class FixBlenderImportRotation : AssetPostprocessor
- {
- public void OnPostprocessModel(GameObject obj)
- {
- ModelImporter importer = assetImporter as ModelImporter;
- if(Path.GetExtension(importer.assetPath) == ".blend")
- {
- RotateObject(obj.transform);
- }
- obj.transform.rotation = Quaternion.identity;
- }
- private void RotateObject(Transform obj)
- {
- obj.Rotate(90f, 0f, 0f);
- MeshFilter meshFilter = obj.GetComponent<MeshFilter>() as MeshFilter;
- if (meshFilter)
- {
- RotateMesh(meshFilter.sharedMesh);
- }
- foreach (Transform child in obj.transform as IEnumerable)
- {
- RotateObject(child);
- }
- }
- private void RotateMesh(Mesh mesh)
- {
- int index = 0;
- Vector3[] vertices = mesh.vertices;
- for (index = 0; index < vertices.Length; index++)
- {
- vertices[index] = new Vector3(vertices[index].x, vertices[index].z, vertices[index].y);
- }
- mesh.vertices = vertices;
- for(int submesh = 0; submesh < mesh.subMeshCount; submesh++)
- {
- int[] triangles = mesh.GetTriangles(submesh);
- for (index = 0; index < triangles.Length; index += 3)
- {
- int intermediate = triangles[index];
- triangles[index] = triangles[index + 2];
- triangles[index + 2] = intermediate;
- }
- mesh.SetTriangles(triangles, submesh);
- }
- mesh.RecalculateNormals();
- mesh.RecalculateBounds();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement