public void lineRenderTeapot() { var lines = new List <List <(Vector2, Vector2, Color)> >(); var verts = ObjFileLoader.LoadVertsFromObjAtPath(new System.IO.FileInfo("../../../../../geometry_models/teapot.obj")) .Select(x => Vector4.Add(x, new Vector4(5, 5, 0, 0))).ToArray(); var tris = ObjFileLoader.LoadTrisFromObjAtPath(new System.IO.FileInfo("../../../../../geometry_models/teapot.obj")); var trilines = tris.SelectMany(x => new List <(Vector2, Vector2, Color)>() { (new Vector2(verts[x.vertIndexList[0] - 1].X * 50, verts[x.vertIndexList[0] - 1].Y * 50), new Vector2(verts[x.vertIndexList[1] - 1].X * 50, verts[x.vertIndexList[1] - 1].Y * 50), Color.White), (new Vector2(verts[x.vertIndexList[1] - 1].X * 50, verts[x.vertIndexList[1] - 1].Y * 50), new Vector2(verts[x.vertIndexList[2] - 1].X * 50, verts[x.vertIndexList[2] - 1].Y * 50), Color.White), (new Vector2(verts[x.vertIndexList[2] - 1].X * 50, verts[x.vertIndexList[2] - 1].Y * 50), new Vector2(verts[x.vertIndexList[0] - 1].X * 50, verts[x.vertIndexList[0] - 1].Y * 50), Color.White), } ); lines.Add(trilines.ToList()); var renderer = new LineRenderer2d(640, 480, lines); var image = new ppmImage(640, 480, 255); image.Colors = renderer.Render(); Assert.AreEqual(18702, image.Colors.Where(x => x == Color.White).Count()); System.IO.File.WriteAllBytes("../../../linetest_teapot.ppm", image.toByteArray()); }
public void TriangleRenderKnot1WithVertsDirect() { var verts = ObjFileLoader.LoadVertsFromObjAtPath(new System.IO.FileInfo("../../../../../geometry_models/knot/knot.obj")) //flip verts since image top is 0,0 .Select(x => Vector4.Multiply(x, new Vector4(1.0f, 1.0f, 1.0f, 1.0f))) //scale and offset. .Select(x => Vector4.Multiply(Vector4.Add(x, new Vector4(5, 5, 0, 0)), 120)).ToArray(); var tris = ObjFileLoader.LoadTrisFromObjAtPath(new System.IO.FileInfo("../../../../../geometry_models/knot/knot.obj")); var renderer = new Triangle2dRenderer(1024, 768, new List <IEnumerable <TriangleFace> > { tris }); renderer.VertexData = verts.Select(x => new Vector3(x.X, x.Y, x.Z)).ToArray(); var image = new ppmImage(1024, 768, 255); image.Colors = renderer.Render(); Assert.AreEqual(741639, image.Colors.Where(x => x == Color.Red).Count()); System.IO.File.WriteAllBytes("../../../knotTestVertsDirect.ppm", image.toByteArray()); }