コード例 #1
0
        public void Combined()
        {
            XNAGame game = new XNAGame();

            game.SpectaterCamera.FarClip = 10000;
            PerlinNoiseGenerater noise;
            PerlinNoiseGenerater colorNoise;

            noise      = new PerlinNoiseGenerater();
            colorNoise = new PerlinNoiseGenerater();
            float frequency = 0.5f;
            ///float factor = 0.02f;
            float          scale            = 100f;
            List <Vector3> positions        = new List <Vector3>();
            List <Color>   colors           = new List <Color>();
            int            width            = 5000;
            int            height           = 5000;
            float          verticesPerMeter = 0.1f;
            int            verticesX        = (int)(width * verticesPerMeter);
            int            verticesY        = (int)(height * verticesPerMeter);
            SimpleTerrain  terrain;

            noise.NumberOfOctaves = 4;
            noise.persistance     = 0.5f;

            for (int i = 0; i < verticesX; i++)
            {
                for (int j = 0; j < verticesY; j++)
                {
                    //                                           combinedFractalBrowning (float x,float y,int octaves,float lacunarityFractal,float lacunarityRidge,float gainFractal,float gainRidge,float offset,float distribution )
                    float zValue = noise.CombinedFractalBrowningAndRidgedMF(i / verticesPerMeter, j / verticesPerMeter, 8, 4, 4, 0.3f, 0.2f, 1.2f, 0.8f) * scale;
                    positions.Add(new Vector3(i / verticesPerMeter, zValue, j / verticesPerMeter));
                    colors.Add(heightColoring(zValue, j + i * verticesX));
                    //colors.Add(new Color((byte)(150 * colorNoise.interpolatedNoise(i * frequency, j * frequency)), (byte)(100 + 70 * colorNoise.interpolatedNoise((i + 1) * frequency, (j + 1) * frequency)), (byte)(140 * colorNoise.interpolatedNoise(i * frequency, (j + 2) * frequency))));
                }
            }
            terrain = new SimpleTerrain(game, positions, colors, verticesX, verticesY);
            game.InitializeEvent +=
                delegate
            {
                terrain.CreateRenderData();
            };

            game.DrawEvent +=
                delegate
            {
                terrain.Render();
            };
            game.Run();
        }
コード例 #2
0
        public void NoiseTestRidgeMF()
        {
            XNAGame game = new XNAGame();
            PerlinNoiseGenerater noise;

            noise = new PerlinNoiseGenerater();
            float          factor           = 0.02f;
            float          scale            = 40f;
            List <Vector3> positions        = new List <Vector3>();
            List <Color>   colors           = new List <Color>();
            int            width            = 300;
            int            height           = 300;
            float          verticesPerMeter = 0.5f;
            int            verticesX        = (int)(width * verticesPerMeter);
            int            verticesY        = (int)(height * verticesPerMeter);
            SimpleTerrain  terrain;

            noise.NumberOfOctaves = 4;
            noise.persistance     = 0.5f;

            for (int i = 0; i < verticesX; i++)
            {
                for (int j = 0; j < verticesY; j++)
                {
                    positions.Add(new Vector3(i / verticesPerMeter, noise.RidgedMF((i * 0.2f) / verticesPerMeter, (j * 0.2f) / verticesPerMeter, 0.08f, 8, 4.0f, 0.3f, 1.2f) * scale, j / verticesPerMeter));
                    colors.Add(new Color((byte)(150 * noise.GetPerlineNoise(i, j)), (byte)(100 + 70 * noise.GetPerlineNoise(i + 1, j + 1)), (byte)(140 * noise.GetPerlineNoise(i, j + 2))));
                }
            }
            terrain = new SimpleTerrain(game, positions, colors, verticesX, verticesY);
            game.InitializeEvent +=
                delegate
            {
                terrain.CreateRenderData();
            };

            game.DrawEvent +=
                delegate
            {
                terrain.Render();
            };
            game.Run();
        }