示例#1
0
        private void pictureBox1_Click(object sender, EventArgs e)
        {
            Convolution[] Convs = new Convolution[3];
            Convs[0].Operation = Operation.Plus;
            Convs[1].Operation = (Operation)cmbOp2.SelectedIndex;
            Convs[2].Operation = (Operation)cmbOp3.SelectedIndex;
            Convs[0].Coef      = Convert.ToDouble(tbCoef1.Text);
            Convs[1].Coef      = Convert.ToDouble(tbCoef2.Text);
            Convs[2].Coef      = Convert.ToDouble(tbCoef3.Text);
            L.GenerateHeightmap(Convert.ToInt32(tbSizeX.Text), Convert.ToInt32(tbSizeY.Text), (GenMethod)cmbGenMethod.SelectedIndex, Convs,
                                cbSmoothing.Checked, cbValley.Checked, cbIsland.Checked);

            L.BuildMesh(new Vector(Convert.ToDouble(tbSizeX.Text), Convert.ToDouble(tbSizeY.Text), Convert.ToDouble(tbSizeZ.Text)));

            int    i, j;
            Bitmap B = new Bitmap(L.SizeX, L.SizeY);

            for (i = 0; i < B.Width; i++)
            {
                for (j = 0; j < B.Height; j++)
                {
                    byte X = Convert.ToByte(L.Heightmap[i, j] * 255);
                    B.SetPixel(i, j, Color.FromArgb(X, X, X));
                }
            }
            pictureBox1.Image = B;
        }
示例#2
0
        private void button3_Click(object sender, EventArgs e)
        {
            int LightCount = 0;

            if (cbLight1.Checked)
            {
                LightCount++;
            }
            if (cbLight2.Checked)
            {
                LightCount++;
            }
            if (cbLight3.Checked)
            {
                LightCount++;
            }
            if (cbLight4.Checked)
            {
                LightCount++;
            }
            if (cbLight5.Checked)
            {
                LightCount++;
            }

            Light[] Sources = new Light[LightCount];

            double c1 = Convert.ToDouble(tb_c1.Text);
            double c2 = Convert.ToDouble(tb_c2.Text);
            double c3 = Convert.ToDouble(tb_c3.Text);

            Vector S = new Vector(Convert.ToDouble(tbSizeX.Text), Convert.ToDouble(tbSizeY.Text), Convert.ToDouble(tbSizeZ.Text));

            int i = 0, j;

            if (cbLight1.Checked)
            {
                if (cbPointLight1.Checked)
                {
                    Sources[i] = new PointLight(ColorToVector(btnAmbient1.BackColor), ColorToVector(btnDiffuse1.BackColor),
                                                ColorToVector(btnSpecular1.BackColor), c1, c2, c3, StringToVector(tbLight1.Text) | S);
                }
                else
                {
                    Sources[i] = new DirLight(ColorToVector(btnAmbient1.BackColor), ColorToVector(btnDiffuse1.BackColor),
                                              ColorToVector(btnSpecular1.BackColor), StringToNormVector(tbLight1.Text));
                }
                i++;
            }
            if (cbLight2.Checked)
            {
                if (cbPointLight2.Checked)
                {
                    Sources[i] = new PointLight(ColorToVector(btnAmbient2.BackColor), ColorToVector(btnDiffuse2.BackColor),
                                                ColorToVector(btnSpecular2.BackColor), c1, c2, c3, StringToVector(tbLight2.Text) | S);
                }
                else
                {
                    Sources[i] = new DirLight(ColorToVector(btnAmbient2.BackColor), ColorToVector(btnDiffuse2.BackColor),
                                              ColorToVector(btnSpecular2.BackColor), StringToNormVector(tbLight2.Text));
                }
                i++;
            }
            if (cbLight3.Checked)
            {
                if (cbPointLight3.Checked)
                {
                    Sources[i] = new PointLight(ColorToVector(btnAmbient3.BackColor), ColorToVector(btnDiffuse3.BackColor),
                                                ColorToVector(btnSpecular3.BackColor), c1, c2, c3, StringToVector(tbLight3.Text) | S);
                }
                else
                {
                    Sources[i] = new DirLight(ColorToVector(btnAmbient3.BackColor), ColorToVector(btnDiffuse3.BackColor),
                                              ColorToVector(btnSpecular3.BackColor), StringToNormVector(tbLight3.Text));
                }
                i++;
            }
            if (cbLight4.Checked)
            {
                if (cbPointLight4.Checked)
                {
                    Sources[i] = new PointLight(ColorToVector(btnAmbient4.BackColor), ColorToVector(btnDiffuse4.BackColor),
                                                ColorToVector(btnSpecular4.BackColor), c1, c2, c3, StringToVector(tbLight4.Text) | S);
                }
                else
                {
                    Sources[i] = new DirLight(ColorToVector(btnAmbient4.BackColor), ColorToVector(btnDiffuse4.BackColor),
                                              ColorToVector(btnSpecular4.BackColor), StringToNormVector(tbLight4.Text));
                }
                i++;
            }
            if (cbLight5.Checked)
            {
                if (cbPointLight5.Checked)
                {
                    Sources[i] = new PointLight(ColorToVector(btnAmbient5.BackColor), ColorToVector(btnDiffuse5.BackColor),
                                                ColorToVector(btnSpecular5.BackColor), c1, c2, c3, StringToVector(tbLight5.Text) | S);
                }
                else
                {
                    Sources[i] = new DirLight(ColorToVector(btnAmbient5.BackColor), ColorToVector(btnDiffuse5.BackColor),
                                              ColorToVector(btnSpecular5.BackColor), StringToNormVector(tbLight5.Text));
                }
                i++;
            }

            L.Ground = new Material(ColorToVector(btnAmbient.BackColor), ColorToVector(btnDiffuse.BackColor), ColorToVector(btnSpecular.BackColor));

            float       AllTime = 0, t;
            PerfCounter Counter1 = new PerfCounter();

            Counter1.Start();
            Convolution[] Convs = new Convolution[3];
            Convs[0].Operation = Operation.Plus;
            Convs[1].Operation = (Operation)cmbOp2.SelectedIndex;
            Convs[2].Operation = (Operation)cmbOp3.SelectedIndex;
            Convs[0].Coef      = Convert.ToDouble(tbCoef1.Text);
            Convs[1].Coef      = Convert.ToDouble(tbCoef2.Text);
            Convs[2].Coef      = Convert.ToDouble(tbCoef3.Text);
            L.GenerateHeightmap(Convert.ToInt32(tbSizeX.Text), Convert.ToInt32(tbSizeY.Text), (GenMethod)cmbGenMethod.SelectedIndex, Convs,
                                cbSmoothing.Checked, cbValley.Checked, cbIsland.Checked);
            t = Counter1.Finish();
            lblHeightmapTime.Text = Convert.ToString(t);
            AllTime += t;

            L.BuildMesh(new Vector(Convert.ToDouble(tbSizeX.Text), Convert.ToDouble(tbSizeY.Text), Convert.ToDouble(tbSizeZ.Text)));

            Counter1.Start();
            L.BuildLightmap(Sources, 2);
            t = Counter1.Finish();
            lblLightmapTime.Text = Convert.ToString(t);
            AllTime += t;

            Counter1.Start();
            L.GenerateColormap(Colors, 1);
            t = Counter1.Finish();
            lblTextureTime.Text = Convert.ToString(t);
            AllTime            += t;

            lblAllTime.Text = Convert.ToString(AllTime);

            string DirName;

            /*if (tbDir.Text[0] == '.')
             * {
             *  DirName = "../../" + tbDir.Text + "/" + tbName.Text;
             *  Directory.CreateDirectory(DirName);
             * }
             * else*/
            DirName = tbDir.Text + "/" + tbName.Text;


            Bitmap B1, B2, B3;

            L.SaveHeightmap(DirName + "/Heightmap.bmp", out B1);
            L.SaveLightmap(DirName + "/Lightmap.bmp", out B2);
            L.SaveColormap(DirName + "/Texture.bmp", out B3);

            //pictureBox1.Image = B1;
            Bitmap B = new Bitmap(L.SizeX, L.SizeY);

            for (i = 0; i < B.Width; i++)
            {
                for (j = 0; j < B.Height; j++)
                {
                    byte X = Convert.ToByte(L.Heightmap[i, j] * 255);
                    B.SetPixel(i, j, Color.FromArgb(X, X, X));
                }
            }
            pictureBox1.Image = B;
            pictureBox2.Image = B2;
            pictureBox3.Image = B3;
            pictureBox1.Refresh();
            pictureBox2.Refresh();
            pictureBox3.Refresh();

            SaveSettings("EditorSettings.ini");
        }