负载&使用FastObjImporter(Unity)

时间:2018-05-28 08:19:54

标签: c# unity3d import runtime .obj

我想在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仍然没有显示任何内容,因此必须有其他错误。

有没有人怀疑它可能是什么以及我能做些什么才能使它发挥作用?

0 个答案:

没有答案