Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 13, 2025 06:53

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Probs mit Perlin Noise
BeitragVerfasst: So Aug 27, 2006 11:22 
Offline
DGL Member
Benutzeravatar

Registriert: Do Aug 25, 2005 16:00
Beiträge: 189
Programmiersprache: Java, C#
Hi.
Ich fürchte ich hab ein paar Verständnisprobleme in puncto Perlin Noise.

Zuerst mal zur Definition( das ^ Zeichen steht bei mir für hoch, also 2² = 2^2):

Eine Noise Funktion erzeugt, wenn ich ihr einen Wert übergebe, eine Zufallszahl. Wenn ich den Wert aber nochmal übergebe, dann muss die Zufallszahl die gleiche sein wie zuvor.
Mithilfe einer Frequenz ("Abstand" zwischen den einzelnen Werten) sowie einer Amplitude (höchster Wert der erreicht werden darf) erzeuge ich eine Reihe von Werten. Diese Werte kann ich dann durch Interpolation praktisch "verbinden" (eindimensional gesehen würde dann so etwas wie ein Graph herauskommen).
Beim Perlin Noise erzeuge ich nun mehrere solcher Graphen mit einer veränderten Frequenz und einer veränderten Amplitude. Dabei wird die Frequenz durch Frequenz = 2^i verändert (i ist die "Nummer" des Graphen, also der wie vielte Graph es ist). Die Amplitude wird durch die sogennante Persistenz, einem vorher definierten Wert, verändert, und zwar in folgendem Muster: Amplitude = Persistenz^i.
Die einzelnen Graphen heißen Oktaven.
Beim Perlin Noise werden diese Graphen nun addiert/überlagert.


So, Preisfrage: Hab ich bis hier irgendwelche Fehler drin?

Außerdem interessiert mich - was heißt addiert bzw. überlagert? Die Werte addiert, dann durch die Anzahl der Graphen geteilt um den Mittelwert heraus zu finden?


cya,
Deathball


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 28, 2006 01:39 
Offline
DGL Member

Registriert: So Sep 26, 2004 05:57
Beiträge: 190
Wohnort: Linz
Ist die beste Zusammenfassung die ich je gelesen habe, sollte man ggf. ins Wiki einfügen :-).

Und üblicherweise addiert man die Oktaven einfach ohne Mittelwert. Wenn du eine Amplitude von 1 bei der 1en Oktave hast, bei der 2ten eine Amplitude von 0.5 und bei der 3ten eine Amplitude von 0.25, dann ergibt sich daraus ein gesamt-Wert von 0 bis max. 1.75. Wenn du nun den maximalen gesamt-Wert gegeben hast, kannst du die Amplituden für die einzelnen Oktaven in der umgekehrten Richtung berechnen. Bsp. max-Amplitude soll 255 sein:
x + x/2 + x/4 = 255
1.75*x = 255
x = 255 / 1.75
und x ist nun die Amplitude der ersten Oktave.

Wenn du nun durch die Anzahl der Oktaven dividieren würdest, so würde das einfach in einer 3fach so großen maximalen-Amplitude enden, wodurch du ein *3 und dann ein /3 hast, was nicht allzu sinnvoll ist.

Hinzuzufügen sei evntl. noch, dass Persistenz kleiner als 1 sein sollte (im obigen Beispiel 0.5). Und die Bezeichnung Oktave ist mir zwar dafür nicht so wirklich geläufig, klingt aber gar nicht so schlecht weshalb ich sie auch hier gleich verwendet habe. Korrekt ist sie meines Erachtens zwar eher weniger (kommt ja eigentlich aus dem Musik-Bereich) aber wen störts :-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 29, 2006 16:12 
Offline
DGL Member
Benutzeravatar

Registriert: Do Aug 25, 2005 16:00
Beiträge: 189
Programmiersprache: Java, C#
Danke für die Blumen ^_^

zu den Oktaven:
Grundlage war dieses Tutorial. Der Autor meint:
Zitat:
Each successive noise function you add is known as an octave. The reason for this is that each noise function is twice the frequency of the previous one. In music, octaves also have this property.

Kommt also aus dem Musik Bereich, falsch ist es allerdings nicht.



Allerdings muss ich sagen das ich jetzt schon ne ganze Weile hier sitze und grübele wie man die Theorie in anständigen Delphi Code verpacken kann, und komme zu keinem wirklichen Ergebnis.
Werde mir mal die Übersetzung von Frase von deinem C# Code bzw. deinen Code direkt anschauen, vielleicht hilft mir das ja ein bisschen auf die Sprünge (...aus diesem Topic)

Btw. steht da auch drin das du das gleiche Tutorial als Grundlage benutzt hast, also dürften dir Oktaven nicht gänzlich fremd sein :P



cya,
Deathball


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.014s | 15 Queries | GZIP : On ]