private void Form_Load(object sender, EventArgs e) { { var camera = new Camera( new vec3(0, 0, 5), new vec3(0, 0, 0), new vec3(0, 1, 0), CameraType.Perspecitive, this.glCanvas1.Width, this.glCanvas1.Height); var rotator = new SatelliteManipulater(); rotator.Bind(camera, this.glCanvas1); this.scene = new Scene(camera, this.glCanvas1); this.scene.ClearColor = Color.SkyBlue; this.glCanvas1.Resize += this.scene.Resize; } { const int gridsPer2Unit = 20; const int scale = 2; var ground = GroundRenderer.Create(new GroundModel(gridsPer2Unit * scale)); ground.Scale = new vec3(scale, scale, scale); var obj = new SceneObject(); obj.Renderer = ground; this.scene.RootObject.Children.Add(obj); } { SimpleRenderer movableRenderer = SimpleRenderer.Create(new Teapot()); movableRenderer.RotationAxis = new vec3(0, 1, 0); movableRenderer.Scale = new vec3(0.1f, 0.1f, 0.1f); this.movableRenderer = movableRenderer; SceneObject obj = movableRenderer.WrapToSceneObject(); this.scene.RootObject.Children.Add(obj); } { BillboardRenderer billboardRenderer = BillboardRenderer.Create(new BillboardModel()); SceneObject obj = billboardRenderer.WrapToSceneObject(new UpdateBillboardPosition(movableRenderer)); this.scene.RootObject.Children.Add(obj); } { LabelRenderer labelRenderer = LabelRenderer.Create(); labelRenderer.Text = "Teapot - CSharpGL"; SceneObject obj = labelRenderer.WrapToSceneObject(new UpdateLabelPosition(movableRenderer)); this.scene.RootObject.Children.Add(obj); } { var uiAxis = new UIAxis(AnchorStyles.Left | AnchorStyles.Bottom, new Padding(3, 3, 3, 3), new Size(128, 128)); this.scene.RootUI.Children.Add(uiAxis); } { var frmPropertyGrid = new FormProperyGrid(this.scene); frmPropertyGrid.Show(); } { var frmPropertyGrid = new FormProperyGrid(this.glCanvas1); frmPropertyGrid.Show(); } { this.scene.Start(); } }
private void Form_Load(object sender, EventArgs e) { { var camera = new Camera( new vec3(5, 3, 4), new vec3(0, 0, 0), new vec3(0, 1, 0), CameraType.Perspecitive, this.glCanvas1.Width, this.glCanvas1.Height); var scene = new Scene(camera, this.glCanvas1); scene.ClearColor = Color.SkyBlue; this.glCanvas1.Resize += scene.Resize; this.scene = scene; var cameraManipulater = new SatelliteManipulater(); cameraManipulater.Bind(camera, this.glCanvas1); this.cameraManipulater = cameraManipulater; } { const int gridsPer2Unit = 20; const int scale = 2; GroundRenderer renderer = GroundRenderer.Create(new GroundModel(gridsPer2Unit * scale)); renderer.Scale = new vec3(scale, scale, scale); SceneObject obj = renderer.WrapToSceneObject(generateBoundingBox: true); this.scene.RootObject.Children.Add(obj); } { var arcballManipulater = new ArcBallManipulater(); arcballManipulater.Bind(this.scene.Camera, this.glCanvas1); SimpleRenderer renderer = SimpleRenderer.Create(new Teapot()); SceneObject obj = renderer.WrapToSceneObject(); obj.Scripts.Add(new ArcballScript(arcballManipulater)); { BoundingBoxRenderer box = renderer.GetBoundingBoxRenderer(); var boxObj = box.WrapToSceneObject(); boxObj.Scripts.Add(new ArcballScript(arcballManipulater)); obj.Children.Add(boxObj); } this.scene.RootObject.Children.Add(obj); } { var uiAxis = new UIAxis(AnchorStyles.Left | AnchorStyles.Bottom, new Padding(3, 3, 3, 3), new Size(128, 128)); uiAxis.Initialize(); this.scene.UIRoot.Children.Add(uiAxis); } { var builder = new StringBuilder(); builder.AppendLine("1: Scene's property grid."); builder.AppendLine("2: Canvas' property grid."); builder.AppendLine("3: Form's property grid."); MessageBox.Show(builder.ToString()); } { this.scene.Start(); } }
public static ConditionalRenderer Create() { var result = new ConditionalRenderer(); { var wallRenderer = SimpleRenderer.Create(new Cube(new vec3(unitLengths.x * 2, unitLengths.y * 2, 0.1f) * new vec3(xside, yside, zside))); wallRenderer.WorldPosition = new vec3(0, 0, 6); var boxRenderer = SimpleRenderer.Create(new Cube(new vec3(unitLengths.x * 2, unitLengths.y * 2, 0.1f) * new vec3(xside, yside, zside))); boxRenderer.WorldPosition = new vec3(0, 0, 6); var query = new Query(); result.coupleList.Add(new Tuple <SimpleRenderer, RendererBase, Query>(boxRenderer, wallRenderer, query)); } for (int x = 0; x < xside; x++) { for (int y = 0; y < yside; y++) { for (int z = 0; z < zside; z++) { var model = new RandomPointsModel(unitLengths, pointCount); RandomPointsRenderer renderer = RandomPointsRenderer.Create(model); renderer.PointColor = Color.FromArgb( (int)((float)(x + 1) / (float)xside * 255), (int)((float)(y + 1) / (float)yside * 255), (int)((float)(z + 1) / (float)zside * 255)); renderer.WorldPosition = (new vec3(x, y, z) * unitLengths * scaleFactor) - (new vec3(xside - 1, yside - 1, zside - 1) * unitLengths * scaleFactor * 0.5f); var cubeRenderer = SimpleRenderer.Create(new Cube(unitLengths)); cubeRenderer.WorldPosition = renderer.WorldPosition; var query = new Query(); result.coupleList.Add(new Tuple <SimpleRenderer, RendererBase, Query>(cubeRenderer, renderer, query)); } } } result.ModelSize = new vec3(xside + 1, yside + 1, zside + 1) * unitLengths * scaleFactor; return(result); }
private void glSceneCanvas1_Load(object sender, EventArgs e) { { this.glSceneCanvas1.Scene.Camera.Position = new vec3(5, 4, 3); } { const int size = 128; var uiAxis = new UIAxis(AnchorStyles.Left | AnchorStyles.Bottom, new Padding(10, 10, 10, 10), new Size(size, size)); this.glSceneCanvas1.Scene.UIRoot.Children.Add(uiAxis); } { var ground = GroundRenderer.Create(new GroundModel(20)); ground.Scale = new vec3(10, 10, 10); SceneObject obj = ground.WrapToSceneObject(name: "ground", generateBoundingBox: true); this.glSceneCanvas1.Scene.RootObject.Children.Add(obj); } { SimpleRenderer axis = SimpleRenderer.Create(new Axis()); SceneObject obj = axis.WrapToSceneObject(name: "Axis", generateBoundingBox: true); this.glSceneCanvas1.Scene.RootObject.Children.Add(obj); } }
private List <PickableRenderer> GetPickableRenderers() { List <PickableRenderer> list = new List <PickableRenderer>(); { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new Tetrahedron()); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new Teapot()); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new Sphere()); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new Chain()); pickableRenderer.SwitchList.Add(new LineWidthSwitch(5)); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new BigDipper()); pickableRenderer.SwitchList.Add(new LineWidthSwitch(5)); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new Axis(partCount: 6, radius: 1.0f)); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimpleRenderer pickableRenderer = SimpleRenderer.Create(new Cube(new vec3(5, 4, 3))); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { var points = new List <vec3>() { new vec3(-4.0f, 0.0f, 0.0f), new vec3(-6.0f, 4.0f, 0.0f), new vec3(6.0f, -4.0f, 0.0f), new vec3(4.0f, 0.0f, 0.0f), }; BezierRenderer pickableRenderer = BezierRenderer.Create(points, BezierType.Curve); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { // note: the points are not centered at (0, 0, 0). Thus the renderer will not be placed at (0, 0, 0). var points = new List <vec3>() { new vec3(-4.0f, 0.0f, 4.0f), new vec3(-2.0f, 4.0f, 4.0f), new vec3(4.0f, 0.0f, 4.0f), new vec3(-4.0f, 0.0f, 0.0f), new vec3(-2.0f, 4.0f, 0.0f), new vec3(4.0f, 0.0f, 0.0f), new vec3(-4.0f, 0.0f, -4.0f), new vec3(-2.0f, 4.0f, -4.0f), new vec3(4.0f, 0.0f, -4.0f) }; BezierRenderer pickableRenderer = BezierRenderer.Create(points, BezierType.Surface); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { SimplexNoiseRenderer pickableRenderer = SimplexNoiseRenderer.Create(); pickableRenderer.Initialize(); list.Add(pickableRenderer); } { KleinBottleRenderer pickableRenderer = KleinBottleRenderer.Create(new KleinBottleModel()); pickableRenderer.Scale = new vec3(0.1f, 0.1f, 0.1f); pickableRenderer.Initialize(); list.Add(pickableRenderer); } return(list); }