1

Ich bin neu in der Welt Generation und die Algorithmen, die für sie verwendet werden, so hoffe ich jemand kann mir nützliche Erklärung oder Code oder beides oder Links zu einigen Ressourcen, die ich bei der Suche nach einer Lösung verpasst.OpenSimplexNoise höhere Detailstufe

Wie kann ich mit OpenSimplexNoise eine höhere Detailstufe erhalten?

Ich weiß in einigen Algorithmen wie PerlinNoise kann es mit der Frequenz getan werden und multiplizieren Oktaven zusammen. Wie kann ich so etwas mit OpenSimplexNoise erreichen?

Hier ist, was habe ich schon bekommen:

private static final int WIDTH = 512; 
private static final int HEIGHT = 512; 
private static final double FEATURE_SIZE = 64; 

public static void main(String[] args) 
    throws IOException { 

    OpenSimplexNoise noise = new OpenSimplexNoise(1233313l); 
    BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_BYTE_INDEXED); 
    for (int y = 0; y < HEIGHT; y++) 
    { 
     for (int x = 0; x < WIDTH; x++) 
     { 
      double value = noise.eval(x/FEATURE_SIZE, y/FEATURE_SIZE); 
      int rgb = 0x010101 * (int)((value + 1) * 127.5); 
      image.setRGB(x, y, rgb); 
     } 
    } 
    ImageIO.write(image, "png", new File("noise1.bmp")); 
} 

Und wie kann ich es erreichen flacheren Ergebnisse für Wälder usw. haben?

+0

Was genau meinen Sie mit "höhere Detailgenauigkeit" und "flachere Ergebnisse"? Bitte geben Sie entweder Zahlen- und/oder Bildbeispiele an, was Sie gerade bekommen und was Sie stattdessen möchten. – Pikalek

+0

http://libnoise.sourceforge.net/tutorials/images/terrainf8p1.jpg Das ist ein Beispielbild. Wie Sie sehen können, gibt es Berge, aber auch ein schönes flaches Gelände mit vielen Details. Ich weiß, dass dies in PerlinNoise mit dem Hinzufügen von mehreren Oktaven zusammen und mit der Frequenz erreicht werden kann, aber ich weiß nicht, wie man das in OpenSimplexNoise macht. – ShadowDragon

Antwort

1

OpenSimplexNoise bietet nicht direkt die von Ihnen beschriebene Funktionalität, Sie müssen sie daher selbst bereitstellen. Grundsätzlich erzeugen Sie wiederholt eine Geräuschschicht & und fügen sie dem Endergebnis hinzu. Genauer gesagt:

  • Die Anzahl der Oktaven wird durch die Anzahl der Schleifen gesteuert.
  • Die Amplitude einer Schicht wird durch Multiplikation der Werte einer bestimmten Schicht mit einem bestimmten Betrag gesteuert. Die Amplitude wird typischerweise von der Oktavzahl abgeleitet; Das gebräuchlichste Beispiel ist die Verwendung von 1/(2^n), wobei n die Nummer der aktuellen Oktave ist.
  • Die Frequenz kann durch Anpassen des Abtastintervalls gesteuert werden. Im Hinblick auf OpenSimplexNoise können Sie dies tun, indem Sie Ihre x y z Parameter um einen bestimmten Betrag multiplizieren. Wiederum wird dies typischerweise von der Oktavnummer & abgeleitet, wobei das üblichste Beispiel ein Vielfaches ist: 2^n.

Tuning die Anzahl der Oktaven, Amplitude & Frequenzwerte ist eher eine Kunst als eine Wissenschaft & sehr auf Ihre Situation abhängt. Experimentieren Sie ein wenig & Forschung, was andere verwendet haben, um das richtige für Ihr Projekt zu finden. Ich bekomme schöne Ergebnisse mit 6 Oktaven mit der oben beschriebenen Standardamplitude & Frequenz.

Verwandte Themen