Software-OK
≡... News | ... Home | ... FAQ | Impressum | Kontakt | Gelistet bei | Danke |

  
HOME ► Faq ► FAQ - Windows-CPP-und-C ► ««« »»»

Was ist Perlin-Noise für eine Funktion?


Irgendwann ist man beim Programmieren konfrontiert mit dem Begriff Perlin oder Noise oder Perlin-Noise und fragt sich was für eine Funktion ist das und wofür ist sie gut!



Hier schön aber trocken erklärt ► wikipedia.... Perlin-Noise. Kurz gesagt es sind auf Zufallszahlen basierende Muster-Generierung-Algorithmen die ein Zufalls-basierendes aber doch geordnetes Verhalten simulieren sollen! So wie wir es aus der Natur kennen alle Blätter sind irgendwo identisch aber nicht gleich. Oder alle Vögel sind ähnlich, aber nicht alle sind Hühner, ... usw.



1.) ... Beispiel eine schlichte Perlin-Noise als einfache Wolke!
2.) ... Wofür soll ich das Wissen, muss ich Perlin-Noise verstehen!
3.) ... Schlichter Perlin-Noise Beispiel Kode in CPP


1.) Beispiel eine schlichte Perlin-Noise als einfache Wolke!

https://thebookofshaders.com/edit.php?log=161127235422
https://thebookofshaders.com/edit.php#10/ikeda-03.frag
https://thebookofshaders.com/edit.php#11/2d-vnoise.frag


https://thebookofshaders.com/edit.php#11/2d-vnoise.frag


(Bild-3) Perlin-Noise Holz!
Perlin-Noise Holz!


-
▲ Zum Anfang ▲


https://web.archive.org/web/20160604173317/http://freespace.virgin.net/hugo.elias/models/m_clouds.htm

Echtzeit-Perlin-Rauschen codiert, um die Wolken und den ganzen Rest des Grafikkrams zu erzeugen, und Matt hat das Gesamtprogramm entworfen und die so wichtige innere Schleife geschrieben, die die Wolken tatsächlich so gut macht, wie sie sind.

(Bild-4) Wolken mit Perlin-Noise als Funktion!
Wolken mit Perlin-Noise als Funktion!




-
▲ Zum Anfang ▲



2.) Wofür soll ich das Wissen, muss ich Perlin-Noise verstehen!

Große Spiele-Firmen, Filmindustrie, ...  können Armeen von Künstlern und Entwicklern anheuern, um das Unmögliche zu erschaffen aus denen die virtuelle Welt des Spiels oder 3D Grafik für Filme besteht. Wenn Sie ein Spiel oder 3D Aufgabe ohne solche finanzielle Mittel und umfangreiche Ressourcen entwerfen möchten um eine attraktive Alternative für bestimmte Naturphänomene wie Gelände, Bäume und atmosphärische Effekte generieren möchten, dann werden Sie durch den Einsatz von automatischer Generierung, das Selbe oder sogar Besseres erreicht. Mit der Hilfe eines simplen Zufallszahlengenerators kann ein qualitativ hochwertiges Auto-Generierung-System bemerkenswert realistische Modelle und Objekte erzeugen.


Weitere sinnvolle Links: 
► https://www.cs.umd.edu/class/fall2019/cmsc425/handouts/lect14-perlin.pdf
Sogar ein Oscar:
► https://web.archive.org/web/20211208192020/https://mrl.cs.nyu.edu/~perlin/doc/oscar.html

Ken Perlin Seite:
► https://mrl.cs.nyu.edu/~perlin/


(Bild-1) Ken Perlin und weitere Funktionen!
Ken Perlin und weitere Funktionen!

-
▲ Zum Anfang ▲




Oder um eine ganze Stadt zu generieren 
► https://www.shadertoy.com/view/XtsSWs


(Bild-2) Perlin-Noise und Stadt mit, bzw. aus Zufallszahlen!
Perlin-Noise und Stadt mit bzw aus Zufallszahlen!

-
▲ Zum Anfang ▲


3.) Schlichter Perlin-Noise Beispiel Kode in CPP



Dein C++-Code implementiert die Perlin-Noise-Generierung und verwendet die C++-Standardbibliothek für einige Funktionen. Hier ist eine kommentierte Version deines Codes in deutscher Sprache:
 
#include <iostream>
#include <cmath>
#include <vector>
#include <conio.h>  // Für _getch, um auf eine Tastatureingabe zu warten
 
std::vector<int> permutation = std::vector<int>(512);
 
class PerlinNoise {
public:
 PerlinNoise() {
  int i = 0;
  // Initialisiere den Permutationsvektor
    // mit zufälligen Werten zwischen 0 und 255
  for (i = 0; i < 256; ++i) {
   permutation[i] = i;
  }
 
  // Mische den Permutationsvektor
    // mit einem benutzerdefinierten Zufallszahlengenerator
  int seed = 42;
    // Du kannst den Seed
    // für verschiedene Muster ändern
  shufflePermutation(seed);
 
  // Dupliziere den Permutationsvektor,
    // um das Wickeln zu erleichtern
 
  for (i = 0; i < 256; ++i) {
   permutation[256 + i] = permutation[i];
  }
 }
 
 double noise(double x, double y, double z) const {
  int X = static_cast<int>(floor(x)) & 255;
  int Y = static_cast<int>(floor(y)) & 255;
  int Z = static_cast<int>(floor(z)) & 255;
 
  x -= floor(x);
  y -= floor(y);
  z -= floor(z);
 
  double u = fade(x);
  double v = fade(y);
  double w = fade(z);
 
  int A = permutation[X] + Y;
  int AA = permutation[A] + Z;
  int AB = permutation[A + 1] + Z;
  int B = permutation[X + 1] + Y;
  int BA = permutation[B] + Z;
  int BB = permutation[B + 1] + Z;
 
  double p1 = grad(permutation[AA], x, y, z);
  double p2 = grad(permutation[BA], x - 1, y, z);
  double p3 = grad(permutation[AB], x, y - 1, z);
  double p4 = grad(permutation[BB], x - 1, y - 1, z);
  double p5 = grad(permutation[AA + 1], x, y, z - 1);
  double p6 = grad(permutation[BA + 1], x - 1, y, z - 1);
  double p7 = grad(permutation[AB + 1], x, y - 1, z - 1);
  double p8 = grad(permutation[BB + 1], x - 1, y - 1, z - 1);
 
  double x1 = lerp(u, p1, p2);
  double x2 = lerp(u, p3, p4);
  double x3 = lerp(u, p5, p6);
  double x4 = lerp(u, p7, p8);
 
  double y1 = lerp(v, x1, x2);
  double y2 = lerp(v, x3, x4);
 
  return lerp(w, y1, y2);
 }
 
private:
 double fade(double t) const {
  return t * t * t * (t * (t * 6 - 15) + 10);
 }
 
 double lerp(double t, double a, double b) const {
  return a + t * (b - a);
 }
 
 double grad(int hash, double x, double y, double z) const {
  int h = hash & 15;
  double u = h < 8 ? x : y;
  double v = h < 4 ? y : h == 12 || h == 14 ? x : z;
  return ((h & 1) == 0 ? u : -u) + ((h & 2) == 0 ? v : -v);
 }
 
 void shufflePermutation(int seed) {
  int size = permutation.size();
  for (int i = size - 1; i > 0; --i) {
   int j = seed % (i + 1);
   std::swap(permutation[i], permutation[j]);
  }
 }
 
};
 
int main() {
 PerlinNoise perlin;
 double x = 5.0, y = 10.0, z = 15.0;
 double noiseValue = perlin.noise(x, y, z);
 std::cout << "Perlin-Rauschen bei (" << x << ", " << y << ", " << z << ") = " << noiseValue << std::endl;
 
 printf("Warte auf eine Tastatureingabe.\n");
 
 // Warten auf Tastendruck
      _getch();
 
 return 0;
}


FAQ 35: Aktualisiert am: 4 September 2024 13:00 Windows
Windows-CPP-und-C

Dark Theme in Win32 Anwendungen mit Menu und Titelleiste!


Nicht ganz einfach ist es Dark Theme in Win32 Anwendungen mit Menu und Titelleiste für Windows 11 & 10 richtig zu aktivieren und zu verwenden Hier habe
Windows-CPP-und-C

Visual Studio 2022 braucht ewig und ist langsam, warum?


Es ist auf alter Hardware schwer mit Visual Studio 2022 zu arbeiten, es braucht hier lange und ist sehr langsam, darum benötigt man die neueste Hardware
Windows-CPP-und-C

WebView2 verwenden?


Ist ein neues Steuerelement und ist in Microsoft ein Browsersteuerelement das als WebView2 bezeichnet ist, Nachfolger vom CHtmlView oder IWebBrowser Inhalt:
Windows-CPP-und-C

Ist eine Zahl eine Primzahl in C++?


Die Funktion IstEinePrimzahl gibt true zurück, wenn die übergebene Zahl eine Primzahl ist, andernfalls gibt sie false zurück Inhalt: 1. Primzahl-Ermittlung 
Windows-CPP-und-C

Verwendung von Arrays und Zeichenketten im C Programm!


Dieses C-Programm erklärt und zeigt einige wichtige Konzepte in der Verwendung von Arrays und Zeichenketten. Lassen Sie uns die verschiedenen Aspekte dieses
Windows-CPP-und-C

Suchen und Ersetzen von Wörtern im sauberen C Programm?


Worte suche und ersetzen in einem C Programm, das Suchen und Ersetzen von Wörtern oder Teilstrings in einem Text ist in C nicht unbedingt einfach oder schwierig 
Windows-CPP-und-C

Dateien in C++ mit Platzhaltern Verzeichnisübergreifend umbenennen?


Dateien in C++ mit Platzhaltern Verzeichnisübergreifend umzubenennen,  und die Einfachheit des Umbenennens von Dateien in Windows Inhalt: 1. Mit Platzhaltern

»»

  Meine Frage ist leider nicht dabei
Gestellte Fragen zu dieser Antwort:
Keywords: windows, perlin, noise, eine, funktion, programmieren, konfrontiert, begriff, perlin, noise, fragt, wofür, Fragen, Antworten, Software




  

  + Freeware
  + Ordnung am PC
  + Dateiverwaltung
  + Automatisierung
  + Office Tools
  + PC-Test-Tools
  + Deko und Spaß
  + Desktop-Uhren
  + Security

  + SoftwareOK Pages
  + Micro Staff
  + Freeware-1
  + Freeware-2
  + Freeware-3
  + FAQ
  + Downloads

  + Top
  + Desktop-OK
  + The Quad Explorer
  + Don't Sleep
  + Win-Scan-2-PDF
  + Quick-Text-Past
  + Print Folder Tree
  + Find Same Images
  + Experience-Index-OK
  + Font-View-OK


  + Freeware
  + OneLoupe
  + 4ur-Windows-8-Mouse-Balls
  + EineStoppUhr
  + TraceRouteOK
  + Q-Dir
  + PaintOkay
  + IsMyMemoryOK
  + StressTheGPU
  + DirPrintOK
  + PAD-s


Home | Danke | Kontakt | Link | FAQ | Settings | Windows 2015 | eBlog | English-AV | Impressum | Translate | PayPal | PAD-s

 © 2025 by Nenad Hrg softwareok.de • softwareok.de • softwareok.com • softwareok.eu


► Sollte man auf Windows 11 warten, oder bei Win 8.1 bleiben! ◄
► Sollte man auf Windows 11 warten, oder bei Win 8.1 bleiben! ◄
► Sollte man auf Windows 11 warten, oder bei Win 8.1 bleiben! ◄
► Sollte man auf Windows 11 warten, oder bei Win 8.1 bleiben! ◄


Diese Webseite speichert keine personenbezogenen Daten. Allerdings werden Drittanbieter verwendet, um Werbung zu schalten.
Diese wird von Google verwaltet und entspricht dem IAB Transparency and Consent Framework (IAB-TCF).
Die CMP-ID lautet 300 und kann am Seitenende individuell angepasst werden.
mehr Infos & Datenschutz

....