public GenMeshSquareFace(GenMeshVertex leftTop, GenMeshVertex leftBottom, GenMeshVertex rightBottom, GenMeshVertex rightTop) : this() { this.Vertices[0] = leftTop; this.Vertices[1] = leftBottom; this.Vertices[2] = rightBottom; this.Vertices[3] = rightTop; }
private static Vector3 GetMidpoint(GenMeshVertex a, GenMeshVertex b) { var p = (a.Coordinates + b.Coordinates) / 2; var length = Mathf.Sqrt(p.x * p.x + p.y * p.y + p.z * p.z); return(new Vector3(p.x / length, p.y / length, p.z / length)); }
public static GenMesh CreateCube(float size = 1) { var mesh = new GenMesh(); // create 8 vertices the notation is XYZ so for vertex that's on top face on the left top it will be LTT var LTT = new GenMeshVertex(new Vector3(-size, +size, -size)); var RTT = new GenMeshVertex(new Vector3(+size, +size, -size)); var RTB = new GenMeshVertex(new Vector3(+size, +size, +size)); var LTB = new GenMeshVertex(new Vector3(-size, +size, +size)); var LBT = new GenMeshVertex(new Vector3(-size, -size, -size)); var RBT = new GenMeshVertex(new Vector3(+size, -size, -size)); var RBB = new GenMeshVertex(new Vector3(+size, -size, +size)); var LBB = new GenMeshVertex(new Vector3(-size, -size, +size)); // create 6 faces // top face mesh.Faces.Add(new GenMeshSquareFace(RTT, RTB, LTB, LTT)); // left face mesh.Faces.Add(new GenMeshSquareFace(LTB, LBB, LBT, LTT)); // right face mesh.Faces.Add(new GenMeshSquareFace(RTT, RBT, RBB, RTB)); // front face mesh.Faces.Add(new GenMeshSquareFace(RTB, RBB, LBB, LTB)); // back face mesh.Faces.Add(new GenMeshSquareFace(LTT, LBT, RBT, RTT)); // bottom face mesh.Faces.Add(new GenMeshSquareFace(LBT, LBB, RBB, RBT)); return(mesh); }
public GenMeshTriangleFace(GenMeshVertex a, GenMeshVertex b, GenMeshVertex c) : base(new GenMeshVertex[] { a, b, c }) { }