我想在Unity(2017.3.1f1)的运行时导入并显示.obj文件,并从Unity wiki(click)找到FastObjImporter的固定版本(click,直接链接到pastebin) .
由于我的.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()==null) { obj.AddComponent(); }
if(obj.GetComponent()==null) { obj.AddComponent(); }
obj.GetComponent().mesh = m;
obj.GetComponent().material = mat;
obj.transform.Rotate(new Vector3(270,0,0));
obj.transform.Rotate(new Vector3(0,0,180));
我尝试了不同的着色器和模型,我使用相同的代码来创建我自己的网格物体和带有顶点信息的GameObjects我正在从.txt文件中读取并且一切正常 - 只是不在这里 .
我还注意到“三角形”列表总是带有0个项目,即使我的.obj文件中有大量“t ....”条目 . 如果我在这里将“j = 1”更改为“j = 0”,则填充列表:
info += j;
j = 0;
while(j + 2 < info) {
最后,Unity仍然没有显示任何内容,因此必须有其他错误 .
有没有人怀疑它可能是什么以及我能做些什么才能让它发挥作用?