由顶点和三角形创建的立方体作为网格呈现与普通立方体不同?

问题描述

对于我想用这些立方体做的事情,我需要自己创建网格,这样我才能知道哪些顶点是哪个顶点并且能够操纵几何体。

但为什么我的脚本立方体(左侧)在阴影方面与 Unity 的看起来如此不同?

两者都使用相同的材​​料。

problem

我猜这和 phong 有关系吗?

这是我用来创建自己的多维数据集的代码

private void CreateCube() 
{

    GameObject cubeObject;
    cubeObject = Instantiate(prefab,new Vector3(0,0),Quaternion.identity);

    Vector3[] vertices;
    int[] triangles;

    vertices = new Vector3[8];

    // BottOM VERTICES
    vertices[0] = new Vector3(0,0); //BBL
    vertices[1] = new Vector3(1,0); //BBR
    vertices[2] = new Vector3(0,1); //BTL
    vertices[3] = new Vector3(1,1); //BTR
    // TOP VERTICES
    vertices[4] = new Vector3(0,1,0); //TBL
    vertices[5] = new Vector3(1,0); //TBR
    vertices[6] = new Vector3(0,1); //TTL
    vertices[7] = new Vector3(1,1); //TTR

    triangles = new int[36];

    // BottOM TRIANGLES
    triangles[0] = 1; //BBR
    triangles[1] = 2; //BTL
    triangles[2] = 0; //BBL
    triangles[4] = 2; //BTL
    triangles[3] = 3; //BTR
    triangles[5] = 1; //BBR
    
    // TOP TRIANGLES
    triangles[6] = 4; //TBL
    triangles[7] = 6; //TTL
    triangles[8] = 7; //TTR
    triangles[9] = 5; //TBR
    triangles[10] = 4; //TBL
    triangles[11] = 7; //TTR

    // BACK TRIANGLES
    triangles[12] = 5; //TBR
    triangles[13] = 0; //BBL
    triangles[14] = 4; //TBL
    triangles[15] = 1; //BBR   
    triangles[16] = 0; //BBL
    triangles[17] = 5; //TBR

    // FRONT TRIANGLES
    triangles[18] = 6; //TTL
    triangles[19] = 2; //BTL
    triangles[20] = 3; //BTR
    triangles[21] = 6; //TTL
    triangles[22] = 3; //BTR 
    triangles[23] = 7; //TTR

    // LEFT TRIANGLES
    triangles[24] = 6; //TTL
    triangles[25] = 4; //TBL 
    triangles[26] = 2; //BTL
    triangles[27] = 0; //BBL 
    triangles[28] = 2; //BTL 
    triangles[29] = 4; //TBL 

    // RIGHT TRIANGLES
    triangles[32] = 7; //TTR
    triangles[31] = 5; //TBR
    triangles[30] = 1; //BBR  
    triangles[35] = 1; //BBR  
    triangles[34] = 3; //BTR 
    triangles[33] = 7; //TTR

    Mesh cubeMesh = new Mesh(); 

    cubeObject.GetComponent<MeshFilter>().sharedMesh = cubeMesh;

    cubeMesh.Clear();
    cubeMesh.vertices = vertices;
    cubeMesh.triangles = triangles;

    cubeMesh.Recalculatenormals();
}

预制件只是一个带有空网格过滤器和带有材质(认材质)的网格渲染器的游戏对象。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)