【问题标题】:Perlin noise not working; returns weird numbers柏林噪音不起作用;返回奇怪的数字
【发布时间】:2014-07-26 23:50:59
【问题描述】:

我刚开始我的第一个 perlin 噪声项目,但是当我对其进行测试时,它返回的数字非常高。
据我了解,它们应该保持在 1 和 -1 之间。

此外,当我将空隙度更改为偶数时,它只返回零。

需要注意的是,我使用的是Libnoise库的c#端口。

Screenshots

这是我写的代码:

namespace Perlin
{
    public partial class Form1 : Form
    {
        double frequency, lacunarity, persistence;
        int octaveCount, resolutie;

        public Form1()
        {
            InitializeComponent();
            LibNoise.Perlin perlinMap = new LibNoise.Perlin();
            // perlinMap.Frequency =
        }



        private void trackBar1_Scroll(object sender, EventArgs e)
        {
            octaveCount = trackBar1.Value;
            textBox1.Text = octaveCount.ToString();
            //  textBox5.Text = LibNoise.GradientNoiseBasis((double)trackBar1.Value,   (double)trackBar1.Value, (double)trackBar1.Value, 1024,     LibNoise.NoiseQuality.Standard).ToString;
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void trackBar2_Scroll(object sender, EventArgs e)
        {
            persistence = (trackBar2.Value * 5);
            textBox3.Text = persistence.ToString() + "%";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            LibNoise.Perlin perlinMap = new LibNoise.Perlin();
            perlinMap.Lacunarity = lacunarity;
            perlinMap.NoiseQuality = LibNoise.NoiseQuality.Standard;
            perlinMap.OctaveCount = octaveCount;
            perlinMap.Persistence = persistence;
            perlinMap.Seed = 1024;

            textBox12.Text = perlinMap.GetValue(0.23, 0, 1).ToString();
            textBox13.Text = perlinMap.GetValue(1, 1.25, 1).ToString();
            textBox14.Text = perlinMap.GetValue(2, 0, 1.75).ToString();

            textBox15.Text = perlinMap.GetValue(0, 1, 1).ToString();
            textBox16.Text = perlinMap.GetValue(1, 1, 1).ToString();
            textBox17.Text = perlinMap.GetValue(2, 1, 1).ToString();

            textBox18.Text = perlinMap.GetValue(0, 2, 1).ToString();
            textBox19.Text = perlinMap.GetValue(1, 2, 1).ToString();
            textBox20.Text = perlinMap.GetValue(2, 2, 1).ToString();



        }

        private void trackBar3_Scroll(object sender, EventArgs e)
        {
            lacunarity = (trackBar3.Value / 2d + 0.5d);
            textBox7.Text = lacunarity.ToString();
        }

        private void trackBar4_Scroll(object sender, EventArgs e)
        {
            frequency = Math.Pow(2, trackBar4.Value + 1);
            textBox8.Text = frequency.ToString();
        }

        private void trackBar5_Scroll(object sender, EventArgs e)
        {
            frequency = Math.Pow(2, trackBar5.Value + 4);
            textBox10.Text = frequency.ToString();
        }
    }
}

非常感谢任何帮助!

【问题讨论】:

  • 编辑您的帖子以包含一个标签,表明您正在使用哪种语言偏好(看起来像 C 变体?)您会吸引更多人这样看。
  • 谢谢,添加语言
  • 你做得完全正确,但你需要再做一次,因为另一个编辑踩了它。
  • HERE 是另一个使用 C# 创建纹理并用 Perlin 噪声填充的示例。但是按照 Ben 的说法,你已经做对了吗?

标签: c# noise perlin-noise


【解决方案1】:

我找到了一些人,持久性应该是一个介于 0 和 1 之间的值,而不是我使用介于 5 和 50 之间的值。

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 1970-01-01
    • 2012-12-21
    • 2012-06-25
    • 1970-01-01
    • 2014-12-24
    • 2011-11-22
    • 2012-07-22
    • 1970-01-01
    相关资源
    最近更新 更多