click
,直接链接到
pastebin
)来自Unity维基的FastObjImporter(
click
由于.obj文件不包含法线,因此我必须进行以下更改:
if(faceData[i].z >= 1) {
if(normals.Count != 0) {
newNormals[i] = normals[faceData[i].z - 1];
}
}
我还补充说
mesh.RecalculateNormals();
一开始。
我提出这个问题的问题和原因是,团结没有显示任何东西。场景非常简单:标准的平行光和标准的摄像机,其中一个玩家角色是它的孩子。
我的代码(必须旋转才能正确对齐):
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));
我尝试过不同的材质和模型,我使用相同的代码创建自己的网格和游戏对象,其中的顶点信息是我从一个.txt文件中读取的,一切都很好-只是这里没有。
我还注意到“三角形”列表总是包含0个条目,即使在我的.obj文件中有很多“t….”条目。如果我在这里将“j=1”更改为“j=0”,它将填充列表:
info += j;
j = 0;
while(j + 2 < info) {
最后,团结仍然没有显示出任何东西,所以必须有其他的东西是错误的。
有没有人怀疑这可能是什么,我能做些什么让它工作?