美文网首页
014. mesh 圆环

014. mesh 圆环

作者: cmd_ts | 来源:发表于2020-03-01 08:16 被阅读0次
    040.png 41.png
    MeshFilter mesh_filter = gameObject.AddComponent<MeshFilter>();
    MeshRenderer mesh_renderer =  gameObject.AddComponent<MeshRenderer>();
    // gameObject.GetComponent<MeshRenderer>().material 
    Mesh mesh = mesh_filter.mesh;
    mesh.Clear();
    //设置顶点 N个顶点,就会有N-1个三角形
    float radius1 = 0.5f;   //圆的半径
    float radius2 = 1;   //圆的半径
    int segments = 64;  //设置有64个梯形
    Vector3[] vertices = new Vector3[segments * 2]; //多少个顶点
    Vector3 centerCircle = new Vector3(0,0,0);  //圆心点
    
    //Mathf.Deg2Rad 度转弧度:Mathf.Deg2Rad = (PI * 2) / 360
    float deltaAngle = Mathf.Deg2Rad * 360f / segments;
    float currentAngle = 0;
    //设置三角形顶点顺序,顺时针设置
    for (int i = 0; i < vertices.Length; i= i+2)
    {
        float cosA = Mathf.Cos(currentAngle);
        float sinA = Mathf.Sin(currentAngle);
    
        vertices[i] = new Vector3(cosA * radius1 + centerCircle.x, sinA * radius1 + centerCircle.y, 0);
        vertices[i + 1] = new Vector3(cosA * radius2 + centerCircle.x, sinA * radius2 + centerCircle.y, 0);
        currentAngle += deltaAngle;
    }       
    
    //顶点 1个梯形有2个三角形,每个三角形有3个顶点
    int[] triangles = new int[segments * 2 * 3];
    //0,3,1, 0,2,3  2,5,3 2,4,5,... 2(segments -1)次方,      
    
    for (int i = 0, j = 0; i < segments * 6; i += 6, j += 2)
    {
        triangles[i] = j;
        triangles[i + 1] = (j + 3) % vertices.Length;
        triangles[i + 2] = (j + 1) % vertices.Length;
    
        triangles[i + 3] = j;
        triangles[i + 4] = (j + 2) % vertices.Length;
        triangles[i + 5] = (j + 3) % vertices.Length;
    }
    
    mesh.Clear();
    
    mesh.vertices = vertices;
    mesh.triangles = triangles;
    

    相关文章

      网友评论

          本文标题:014. mesh 圆环

          本文链接:https://www.haomeiwen.com/subject/cmbtkhtx.html