我想在Unity(2017.3.1f1)中运行时导入并显示.obj文件,并从Unity wiki中找到FastObjImporter的固定版本(click,直接链接到pastebin) (click)。
由于我的.obj文件不包含法线,因此我必须进行以下更改:
if(faceData[i].z >= 1) {
if(normals.Count != 0) {
newNormals[i] = normals[faceData[i].z - 1];
}
}
我还在开头添加了mesh.RecalculateNormals();
。
我打开这个问题的问题和原因是Unity没有显示任何内容。场景很简单:标准的定向灯和标准相机,以玩家角色为孩子。
我的代码(我必须旋转才能正确对齐):
Mesh m = FastObjImporter.Instance.ImportFile(path);
Material mat = new Material(Shader.Find("Hidden/Internal-Colored")) { color = new Color(0,0,1) };
GameObject obj = new GameObject();
if(obj.GetComponent<MeshFilter>()==null) { obj.AddComponent<MeshFilter>(); }
if(obj.GetComponent<MeshRenderer>()==null) { obj.AddComponent<MeshRenderer>(); }
obj.GetComponent<MeshFilter>().mesh = m;
obj.GetComponent<MeshRenderer>().material = mat;
obj.transform.Rotate(new Vector3(270,0,0));
obj.transform.Rotate(new Vector3(0,0,180));
我尝试了不同的着色器和模型,我使用相同的代码创建自己的网格和带有顶点信息的GameObjects我从.txt文件中读取并且一切正常 - 就在这里。
我也注意到了#34;三角形&#34; list总是带有0个项目,即使有很多&#34; t ....&#34;我的.obj文件中的条目。如果我改变&#34; j = 1&#34;到&#34; j = 0&#34;在这里,它填写了清单:
info += j;
j = 0;
while(j + 2 < info) {
最后,Unity仍然没有显示任何内容,因此必须有其他错误。
有没有人怀疑它可能是什么以及我能做些什么才能使它发挥作用?