我试图通过仅使用顶点和面创建网格来以编程方式创建gameObject。 GameObject已创建,但我看不到任何显示的内容。我已经搜索了这个问题,但没有找到任何令人满意的答案。我有另一个问题,即我知道面中的顶点应该是顺时针方向,但这意味着什么?例如,假设我有一个顶点索引为5,6,7的面,那么我首先访问顶点数组并检查每个顶点所在的位置并在faces数组中以顺时针方式排列它们的索引吗?也许我在这方面出错了,但我尝试以各种方式在'Faces'数组中排列顶点索引,但它仍然无效。
// Vertices is a double array
mesh.vertices = Vertices.ToArray();
// Faces is an int array
mesh.triangles = Faces.ToArray();
mesh.RecalculateNormals();
mesh.RecalculateBounds();
mesh.name = "Imported Model";
model = new GameObject("Model");
MeshFilter meshFilter = model.AddComponent<MeshFilter>();
meshFilter.mesh = mesh;
model.AddComponent(typeof(MeshRenderer));
提前致谢。
答案 0 :(得分:0)
没有人能看到你Vertices
和Faces
的样子,所以我不排除那里的问题。
我现在看到的唯一问题是没有添加着色器。如果您没有为网格添加着色器,将在场景视图中以紫色显示,但它将不可见 游戏视图。
代码的最后一行:
model.AddComponent(typeof(MeshRenderer));
应扩展为:
MeshRenderer renderer = model.AddComponent(typeof(MeshRenderer)) as MeshRenderer;
renderer.material.shader = Shader.Find("Particles/Additive");
现在应该显示您的网格。否则,您的顶点,三角形在您的问题中未发布时出现问题。没有视觉图像,理解顺时针的东西很难。这个guy在youtube上用真正的标签框解释它是最好的,我建议你在做任何评论之前先看一下。