【发布时间】:2014-07-26 23:50:59
【问题描述】:
我刚开始我的第一个 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();
}
}
}
非常感谢任何帮助!
【问题讨论】:
-
编辑您的帖子以包含一个标签,表明您正在使用哪种语言偏好(看起来像 C 变体?)您会吸引更多人这样看。
-
谢谢,添加语言
-
你做得完全正确,但你需要再做一次,因为另一个编辑踩了它。
-
HERE 是另一个使用 C# 创建纹理并用 Perlin 噪声填充的示例。但是按照 Ben 的说法,你已经做对了吗?
标签: c# noise perlin-noise