[英]Perlin noise not working; returns weird numbers
我刚开始我的第一个Perlin噪声项目,但是当我测试它时,它返回了惊人的高数字。
据我了解,它们应该保持在1到-1之间。
同样,当我将盲法更改为偶数时,它只会返回零。
应该注意的是,我使用Libnoise库的c#端口。
这是我编写的代码:
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();
}
}
}
任何帮助是极大的赞赏!
我发现很讨厌,持久性应该是0到1之间的值,而不是5到50之间的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.