![]() |
3D Funktion
Hallo.
Hier sind eher die Mathematiker gefragt. Ich kenn mich mit 3D Funktionen nicht sonderlich gut aus aber würde gern was dazulernen. Ich suche im Grunde eine Funktion, die folgende Eigenschaften besitzt: Vorgaben: - Funktion sollte sich aus Sinus und Kosinus zusammensetzen (nicht stetig steigend oder fallend, und keine Grenzwerte) - Funktion sollte sich beliebig jedoch zwischen 2 festen Werten bewegen (zB -1 und 1, mich interessiert eigentlich genau 1 Wert, der von 2 Variablen abhängt) - x und y sind die beiden Variablen und z das Funktionsergebnis - Funktion sollte in etwa wie eine Wasseroberfläche aussehen (kann beliebig krum sein, jedoch ohne großartige Brüche) Ich hoffe das reicht an Parametern! Ihr dürft mich gern nach Strich und Faden belehren. Ich bitte euch zu schlau-meiern!! :-D //Edit: Und kennt jemand Freeware-Tools zum veranschaulichen solcher Funktionen ? MfG |
AW: 3D Funktion
Hmmmm, da gibt's mehrere Möglichkeiten.
Eine sehr einfache ist z.B. diese hier: ![]() + Hat ein paar Wellen - Für eine Wasseroberfläche viel zu regelmäßig Ob die jetzt gut oder schlecht ist kommt auch ein bisschen drauf an, was du damit machen willst ;-) |
AW: 3D Funktion
Puh, das ist schwieriger als gedacht! :shock:
Mein (zurzeit) bester Versuch: ![]() Das größte Problem ist wohl, dass man mit z = f[x,y] keine sich brechenden Wellen (heißt das so?) erhalten kann. Mit Parametrischen Funktionen könnte man das ev. besser hinbekommen, bin mir aber nicht sicher |
AW: 3D Funktion
Zitat:
Ich habe gerade ganz grob gesagt z = Sin(x) + Cos(y) ausprobiert und es sieht sehr wellig aus. Ich vermute ich muss sehr viel mehr sin und cos einmischen und x und y noch etwas strecken/stauchen/etc. Und das führt mich wohl zu "Perlin noise" ... Kennt sich jemand damit aus ? Oder hat jemand Lust etwas damit zu arbeiten ? :thumb: |
AW: 3D Funktion
Es wäre auch nicht unwichtig zu wissen, was für ein Wasser dir so vorschwebt. Ein ruhiger Tümpel verhält sich doch etwas anders als ein windiger Strand, oder mitten im Ozean. Vom Grundsatz her ist Perlin-Noise praktisch nie falsch, aber da gibt's sooo viele Wege Feintuning zu betreiben.
Da Perlin-Noise eine absolute Standardaufgabe im Bereich Grafik ist, finden sich dazu Haufen an Dingen im Netz zum Verständnis. Das macht wenig Sinn hier zu wiederholen. Zitat:
|
AW: 3D Funktion
Zitat:
Achja es geht hier nicht ums Wasser, eher um eine (möglichst) extrem zufällige Weltgenerierung. ^^ |
AW: 3D Funktion
Stellt sich noch die Frage: Machst du "nur" Oberflächengenerierung oder etwas in die richtung wie MineCraft(Tunnelsystem, Untergrundgenerierung)
MFG Memnarch |
AW: 3D Funktion
Und da findet sich unter
![]() Eine nette Linksammlung gibt es z.B. ![]() EDIT: noch einfacher Algorithmus zum schnell implementieren.
Code:
Wenn dir das Ergebnis zu verrauscht aussieht, kannst du es noch glätten.
Eingabe:
L A Anfangsvariation D Variationsdämpfung (<= 1 für sinnvolle Ergebnisse) Ausgabe: Heightmap L (2^L mal 2^L) Variablen: V Variation Ablauf: L := ein "Teilstück" mit der Größe 2^L mal 2^L V := A solange Teilstücke größer 1 für jedes Teilstück T von L teile T in 4 gleichgroße neue Teilstücke T_1 bis T_4. für die neuen Teilstücke T_i tue T_i.höhe := T_i.höhe + 2*zufall(0 bis 1)*V - V V := A*V |
AW: 3D Funktion
Zitat:
Wie gesagt ich arbeite an der Engine und versuche gerade die Welt "unendlich" groß zu machen. |
AW: 3D Funktion
Wenn es zumindest ein wenig abwechslungsreich und "nett" sein soll, wirst du um Noises und ggf. fraktal-ähnliche Konstrukte nicht herum kommen. Man schaue sich z.B.
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz