iOSからobjを書き出したくて以下を利用。
OBJ file from iOS and use the following.
ObjExporter - Unify Community Wiki
//https://wiki.unity3d.com/index.php/ObjExporter using UnityEngine; using System.Collections; using System.IO; using System.Text; public class ObjExporter { public static string MeshToString(MeshFilter mf, MeshRenderer renderer) { Mesh m = mf.mesh; Material[] mats = renderer.sharedMaterials; StringBuilder sb = new StringBuilder(); sb.Append("g ").Append(mf.name).Append("\n"); foreach(Vector3 v in m.vertices) { sb.Append(string.Format("v {0} {1} {2}\n",v.x,v.y,v.z)); } sb.Append("\n"); foreach(Vector3 v in m.normals) { sb.Append(string.Format("vn {0} {1} {2}\n",v.x,v.y,v.z)); } sb.Append("\n"); foreach(Vector3 v in m.uv) { sb.Append(string.Format("vt {0} {1}\n",v.x,v.y)); } for (int material=0; material < m.subMeshCount; material ++) { sb.Append("\n"); sb.Append("usemtl ").Append(mats[material].name).Append("\n"); sb.Append("usemap ").Append(mats[material].name).Append("\n"); int[] triangles = m.GetTriangles(material); for (int i=0;i<triangles.Length;i+=3) { sb.Append(string.Format("f {0}/{0}/{0} {1}/{1}/{1} {2}/{2}/{2}\n", triangles[i]+1, triangles[i+1]+1, triangles[i+2]+1)); } } return sb.ToString(); } /* public static void MeshToFile(MeshFilter mf, string filename) { using (StreamWriter sw = new StreamWriter(filename)) { sw.Write(MeshToString(mf)); } }*/ }
加えてobjファイルのテキストデータをIOSからNatShareというアセットで書き出す。
var mesh = plane.GetComponent<MeshFilter>(); var renderer = plane.GetComponent<MeshRenderer>(); var str = ObjExporter.MeshToString(mesh,renderer); new SharePayload().AddText(str).Commit();