Exemplo n.º 1
0
 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();
     }
 }
Exemplo n.º 2
0
        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();
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 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);
        }