Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d Unity不渲染网格的某些部分以尝试使其他部分可见_Unity3d_Mesh_Unity5_Renderer - Fatal编程技术网

Unity3d Unity不渲染网格的某些部分以尝试使其他部分可见

Unity3d Unity不渲染网格的某些部分以尝试使其他部分可见,unity3d,mesh,unity5,renderer,Unity3d,Mesh,Unity5,Renderer,我在代码中制作了一个自定义的网格(但这似乎发生在我制作的任何游戏对象),当我在游戏或编辑器中查看它时,它会使一些面消失,以便我能更清楚地看到它。我可以理解这将是多么有用,但它不仅对游戏性而且对项目工作来说都是相当烦人的。可能只有一个框我必须取消选中,但我不知道那是什么。我已经包括了一些截图(第一个在游戏中,第二个在编辑器中。网格应该是一个完整的金字塔形状)。立方体的“我的网格”有12个三角形、8个顶点,没有uv,其中默认网格有24个顶点、12个三角形以及uv和uv2,仅供参考 以下是我的相机设

我在代码中制作了一个自定义的
网格
(但这似乎发生在我制作的任何
游戏对象
),当我在游戏或编辑器中查看它时,它会使一些面消失,以便我能更清楚地看到它。我可以理解这将是多么有用,但它不仅对游戏性而且对项目工作来说都是相当烦人的。可能只有一个框我必须取消选中,但我不知道那是什么。我已经包括了一些截图(第一个在游戏中,第二个在编辑器中。网格应该是一个完整的金字塔形状)。立方体的“我的网格”有12个三角形、8个顶点,没有uv,其中默认网格有24个顶点、12个三角形以及uv和uv2,仅供参考

以下是我的相机设置:

[编辑]否!我错了!它可以很好地处理默认的
cube
和其他默认对象

这是:

但对于我的立方体:

以下是我使用的代码:

        if (GameObject.Find ("Hopefully a Cube") == null) {

            GameObject cube = new GameObject ("Hopefully a Cube");
            Mesh mesh = new Mesh ();

            Vector3[] verticies = new Vector3[8];
            verticies [0] = new Vector3 (0, 0, 0);
            verticies [1] = new Vector3 (100, 0, 0);
            verticies [2] = new Vector3 (0, 100, 0);
            verticies [3] = new Vector3 (100, 100, 0);

            verticies [4] = new Vector3 (0, 0, 100);
            verticies [5] = new Vector3 (100, 0, 100);
            verticies [6] = new Vector3 (0, 100, 100);
            verticies [7] = new Vector3 (100, 100, 100);

            mesh.vertices = verticies;

            int[] tris = new int[36];
            tris = new[] { 0, 2, 1, 2, 3, 1, 4, 2, 0, 6, 2, 4, 4, 6, 5, 6, 7, 5, 1, 3, 5, 3, 7, 5, 0, 4, 1, 4, 5, 1, 2, 6, 3, 6, 7, 3 };
            mesh.triangles = tris;

            mesh.RecalculateNormals ();

            MeshFilter meshFilter = cube.AddComponent<MeshFilter> ();
            meshFilter.mesh = mesh;

            MeshRenderer meshRenderer = cube.AddComponent<MeshRenderer> ();
            Texture2D texture = new Texture2D (1, 1);
            texture.SetPixels (new[] { Color.blue });
            meshRenderer.sharedMaterial = new Material (meshShader);
            meshRenderer.sharedMaterial.mainTexture = texture;

            cube.SetActive (true);

        }

        if (GameObject.Find ("Hopefully a Pyramid") == null) {

            GameObject pyramid = new GameObject ("Hopefully a Pyramid");
            Mesh mesh = new Mesh ();

            Vector3[] verticies = new Vector3[5];
            verticies [0] = new Vector3 (0, 0, 0);
            verticies [1] = new Vector3 (100, 0, 0);
            verticies [2] = new Vector3 (0, 0, 100);
            verticies [3] = new Vector3 (100, 0, 100);
            verticies [4] = new Vector3 (50, 100, 50);

            mesh.vertices = verticies;

            int[] tris = new int[18];
            tris = new[] { 0, 2, 1, 2, 3, 1, 0, 4, 1, 2, 4, 0, 3, 4, 2, 3, 4, 1 };

            mesh.triangles = tris;

            mesh.RecalculateNormals ();

            MeshFilter meshFilter = pyramid.AddComponent<MeshFilter> ();
            meshFilter.mesh = mesh;

            MeshRenderer meshRenderer = pyramid.AddComponent<MeshRenderer> ();
            Texture2D texture = new Texture2D (1, 1);
            texture.SetPixels (new[] { Color.blue });
            meshRenderer.sharedMaterial = new Material (meshShader);
            meshRenderer.sharedMaterial.mainTexture = texture;

            pyramid.SetActive (true);

        }
if(GameObject.Find(“希望是一个立方体”)==null){
GameObject cube=新游戏对象(“希望是一个立方体”);
网格=新网格();
Vector3[]垂直=新Vector3[8];
垂直度[0]=新向量3(0,0,0);
垂直度[1]=新向量3(100,0,0);
垂直度[2]=新向量3(0,100,0);
垂直度[3]=新向量3(100100,0);
垂直度[4]=新向量3(0,0100);
垂直度[5]=新向量3(100,0100);
垂直度[6]=新向量3(0,100,100);
垂直度[7]=新向量3(100100100);
网格顶点=垂直;
int[]tris=新int[36];
tris=新[]{0,2,1,2,3,1,4,2,0,6,2,4,4,6,5,6,7,5,5,3,3,7,5,0,4,1,4,4,5,1,2,6,3,6,7,3};
mesh.triangles=tris;
mesh.normals();
MeshFilter-MeshFilter=cube.AddComponent();
meshFilter.mesh=网格;
MeshRenderer-MeshRenderer=cube.AddComponent();
纹理2d纹理=新纹理2d(1,1);
texture.SetPixels(新[]{Color.blue});
meshRenderer.sharedMaterial=新材质(meshShader);
meshRenderer.sharedMaterial.mainTexture=纹理;
cube.SetActive(true);
}
if(GameObject.Find(“希望是金字塔”)==null){
GameObject pyramid=新游戏对象(“希望是金字塔”);
网格=新网格();
Vector3[]垂直=新Vector3[5];
垂直度[0]=新向量3(0,0,0);
垂直度[1]=新向量3(100,0,0);
垂直度[2]=新向量3(0,0100);
垂直度[3]=新向量3(100,0100);
垂直方向[4]=新矢量3(50,100,50);
网格顶点=垂直;
int[]tris=新int[18];
tris=新[]{0,2,1,2,3,1,0,4,1,2,4,0,3,4,2,3,4,1};
mesh.triangles=tris;
mesh.normals();
MeshFilter MeshFilter=pyramid.AddComponent();
meshFilter.mesh=网格;
MeshRenderer-MeshRenderer=pyramid.AddComponent();
纹理2d纹理=新纹理2d(1,1);
texture.SetPixels(新[]{Color.blue});
meshRenderer.sharedMaterial=新材质(meshShader);
meshRenderer.sharedMaterial.mainTexture=纹理;
pyramid.SetActive(true);
}
网格的索引(三角形数组中的整数)顺序错误。它们需要从你看脸的方向顺时针旋转。一个简单的提示,如果它们出现,只需翻转所讨论三角形的两个索引即可

这是你的立方体

tris = new[] {
    0, 2, 1, 2, 3, 1, 
    4, 2, 0, 6, 2, 4, 
    4, 5, 6, 6, 5, 7, 
    1, 3, 5, 3, 7, 5,
    0, 1, 4, 4, 1, 5,
    2, 6, 3, 6, 7, 3
};
如果您想知道为什么它有如此奇怪的着色,那么创建一个由24个顶点组成的立方体,看看其中的区别。这是因为面上的法线取决于构成面的顶点的法线。(顶点颜色和UV也是如此)。因此,如果您想要锐利的边缘、相邻面上顶点的不同颜色或uv接缝,则面/边需要单独的顶点(一个点中有两个顶点),因为您只能在顶点上设置这些特征。

网格的索引(三角形数组中的整数)顺序错误。它们需要从你看脸的方向顺时针旋转。一个简单的提示,如果它们出现,只需翻转所讨论三角形的两个索引即可

这是你的立方体

tris = new[] {
    0, 2, 1, 2, 3, 1, 
    4, 2, 0, 6, 2, 4, 
    4, 5, 6, 6, 5, 7, 
    1, 3, 5, 3, 7, 5,
    0, 1, 4, 4, 1, 5,
    2, 6, 3, 6, 7, 3
};

如果您想知道为什么它有如此奇怪的着色,那么创建一个由24个顶点组成的立方体,看看其中的区别。这是因为面上的法线取决于构成面的顶点的法线。(顶点颜色和UV也是如此)。因此,如果您想要锐利的边缘、相邻面上顶点的不同颜色或uv接缝,则需要面/边的单独顶点(一个点中有两个顶点),因为您只能在顶点上设置这些特征。

99%确定这与缠绕顺序有关。你看到的效果很可能不是“这样你就能看得更清楚”,而是因为索引(或者unity称之为三角形,为什么会是错误的顺序)。请发布用于生成多维数据集的代码。我添加了我使用的代码。@dsiegler19添加了答案和简短解释。请勾选正确。您好@dsiegler19-这可能发生。这完全是浪费时间,因为您认为它对正确的模型也不起作用。但是,这种情况可能发生在臭虫身上!这里有一些关于网格方向和链接QA的值得一读的文章。请注意这个问题。。我有99%的把握这与绕组订单有关。你看到的效果很可能不是“这样你就能看得更清楚”,而是因为索引(或者unity称之为三角形,为什么会是错误的顺序)。请发布生成多维数据集的代码。我添加了cod