public MainForm() { // Create form InitializeComponent(); // Create scene scene = new Scene(Canvas_Box, Canvas_Box.Width, Canvas_Box.Height); scene.Create_Origin(); scene.Create_Axes(); // Create cameras Perspective_Camera default_camera = new Perspective_Camera(new Vector3D(0, 0, 100), scene.Shape_List[0].Render_Mesh, Vector3D.Unit_Y, Canvas_Box.Width / 10, Canvas_Box.Height / 10, 10, 750); scene.Add(default_camera); scene.Render_Camera = default_camera; Perspective_Camera alternate_camera = new Perspective_Camera(new Vector3D(0, 0, -10), scene.Shape_List[0].Render_Mesh, Vector3D.Unit_Y, Canvas_Box.Width / 10, Canvas_Box.Height / 10, 10, 20) { Draw_Entire_View = false }; scene.Add(alternate_camera); // Create textures Bitmap brick = Properties.Resources.brick; Bitmap smiley = Properties.Resources.smiley; Texture brick_texture = new Texture(brick); Texture smiley_texture = new Texture(smiley); // Create test texture plane Plane texture_plane = new Plane(new Vector3D(100, 0, 0), Vector3D.Unit_Y, Vector3D.Unit_Z, 50, 50, smiley); Shape texture_plane_shape = new Shape(texture_plane); scene.Add(texture_plane_shape); // Create default meshes Cube cube_mesh = new Cube(new Vector3D(0, 0, 0), Vector3D.Unit_X, Vector3D.Unit_Y, 50) { Face_Colour = Color.Green }; Shape cube = new Shape(cube_mesh) { Selected = true }; scene.Add(cube); /* * Cuboid cuboid_mesh = new Cuboid(new Vector3D(100, 0, 100), Vector3D.Unit_X, Vector3D.Unit_Y, 30, 40, 90, smiley); * Shape cuboid = new Shape(cuboid_mesh); * scene.Add(cuboid); */ /* * Plane plane_mesh = new Plane(new Vector3D(0, 0, -30), Vector3D.Unit_X, Vector3D.Unit_Y, 100, 100) { Face_Colour = Color.Aqua }; * Shape plane = new Shape(plane_mesh); * scene.Add(plane); */ /* * // Add object from file * Custom teapot_mesh = new Custom(Vector3D.Zero, Vector3D.Unit_X, Vector3D.Unit_Y, "C:\\Users\\jbrya\\source\\repos\\3D Graphics\\3D Graphics\\Models\\teapot.obj"); * Shape teapot = new Shape(teapot_mesh); * scene.Add(teapot); * teapot_mesh.Scale(20); */ Thread graphics_thread = new Thread(Game_Loop); graphics_thread.Start(); graphics_thread.IsBackground = true; }
public Main_Form() { // Create main form InitializeComponent(); // Create scene scene = new Scene(Canvas_Box, Canvas_Box.Width, Canvas_Box.Height); // panel? // Set settings Settings.Mesh_Debug_Output_Verbosity = Verbosity.All; // Create origin and axes scene.Create_Origin(); scene.Create_Axes(); // Create a camera double camera_width = Canvas_Box.Width / 10, camera_height = Canvas_Box.Height / 10; Perspective_Camera camera = new Perspective_Camera(new Vector3D(0, 0, -100), scene.Meshes[0], Vector3D.Unit_Y, camera_width, camera_height, 10, 750); scene.Add(camera); scene.Render_Camera = camera; // Add some meshes Cube cube_mesh = new Cube(new Vector3D(100, 100, 300), Vector3D.Unit_Z, Vector3D.Unit_Y, 100); scene.Add(cube_mesh); Shape cube = new Shape(cube_mesh, Vector3D.Zero, Constants.Grav_Acc_Vector); shapes.Add(cube); Square floor_mesh = new Square(Vector3D.Zero, Vector3D.Unit_Z, Vector3D.Unit_Y, 600); scene.Add(floor_mesh); floor_mesh.Face_Colour = Color.Brown; // Add some lights Distant_Light distant_light = new Distant_Light(new Vector3D(0, 300, 0), Vector3D.Unit_Z, Vector3D.Unit_Y, 1000); scene.Add(distant_light); distant_light.Show_Icon = true; // Call some methods /* * scene.Generate_MWV_Matrices(); * scene.Generate_Shadow_Map(distant_light); * distant_light.Export_Shadow_Map(); */ // Change some properties distant_light.Colour = Color.Goldenrod; /* * string teapot_file_path = "C:\\Users\\jbrya\\source\\repos\\3D-Engine\\3D-Engine\\External\\Models\\teapot.obj"; * Custom teapot_mesh = new Custom(new Vector3D(500, 10, 0), Vector3D.Unit_Z, Vector3D.Unit_Y, teapot_file_path); * * teapot_mesh.Scale(50); * teapot_mesh.Face_Colour = Color.Red; * * scene.Add(teapot_mesh); */ /* * string seahorse_file_path = "C:\\Users\\jbrya\\source\\repos\\3D-Engine\\3D-Engine\\External\\Models\\seahorse.obj"; * Custom seahorse_mesh = new Custom(new Vector3D(1000, 10, 0), Vector3D.Unit_Z, Vector3D.Unit_Y, seahorse_file_path); * * seahorse_mesh.Scale(50); * seahorse_mesh.Face_Colour = Color.Gray; * * scene.Add(seahorse_mesh); */ /* * Cone cone_mesh = new Cone(new Vector3D(1000, 10, 0), Vector3D.Unit_Z, Vector3D.Unit_Y, 50, 25, 50); * cone_mesh.Face_Colour = Color.Aquamarine; * scene.Add(cone_mesh); * * Cylinder cylinder_mesh = new Cylinder(new Vector3D(1500, 10, 0), Vector3D.Unit_Z, Vector3D.Unit_Y, 100, 50, 50); * scene.Add(cylinder_mesh); * * Ring ring_mesh = new Ring(new Vector3D(0, 500, 0), Vector3D.Unit_Z, Vector3D.Unit_Y, 100, 200, 50); * scene.Add(ring_mesh); * ring_mesh.Face_Colour = Color.Orange; * * Vector3D[] texture_vertices = Texture.Generate_Vertices("Square"); * Texture smiley = new Texture(Properties.Resources.smiley, texture_vertices); * Square square_mesh = new Square(new Vector3D(500, 0, 500), Vector3D.Unit_Y, Vector3D.Unit_Negative_Z, 100, smiley); * scene.Add(square_mesh); */ // Start loop Thread thread = new Thread(Loop) { IsBackground = true }; thread.Start(); }