Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
05.03.2002, 23:27
hausi



Guten Abend allerseits...
Mich nimmt es mal wunder, wie ihr sowas coden würdet. Ein Beispiel, was rauskommt ist zum Beispiel Terragen.
Ich habe mir mal folgendes überlegt:
Ein 2D-Array, in dem jeder (z.B.) 4. Punkt per Zufallsgenerator definiert wird.
Das sähe dann also ungefähr so aus:
Quellcode:
1 ? ? ? 6 ? ? ? 4
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ?
3 ? ? ? 8 ? ? ? 7
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ?
5 ? ? ? 1 ? ? ? 2

Dann durch den ganzen Array horizontal durchgehen und eine Kurve durch alle Punkte legen (wie, ist jetzt mal egal).
Das Resultat wäre also folgendes:
Quellcode:
1 3 4 5 6 6 5 5 4
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ?
3 5 6 7 8 8 8 7 7
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ?
5 4 3 2 1 1 1 2 2

Das selbe dann noch vertikal. Nun hat man ein Netz mit Farbverläufen.
Quellcode:
1 3 4 5 6 6 5 5 4
1 ? ? ? 6 ? ? ? 5
2 ? ? ? 7 ? ? ? 6
2 ? ? ? 8 ? ? ? 7
3 5 6 7 8 8 8 7 7
4 ? ? ? 7 ? ? ? 6
4 ? ? ? 5 ? ? ? 4
5 ? ? ? 3 ? ? ? 3
5 4 3 2 1 1 1 2 2

Jetzt muss man nur noch die restlichen Zahlen per Durchschnitt ausrechnen, wodurch dann (jeweils abgerundet) folgendes entsteht.
Quellcode:
1 3 4 5 6 6 5 5 4
1 2 3 4 6 6 5 5 5
2 3 4 5 7 6 6 6 6
2 3 4 5 8 7 7 7 7
3 5 6 7 8 8 8 7 7
4 4 5 5 7 7 7 7 6
4 4 4 5 5 3 3 3 4
5 5 4 3 3 2 2 3 3
5 4 3 2 1 1 1 2 2

Nun sieht das aber hauptsächlich wegen dem letzten Schritt nicht so gut aus. Ich poste ev. später noch einen Screenshot.
Hat jemand eine bessere Idee, wie man sowas machen könnte?
P.S: Habs mir länger überlegt, das ins allg. Coding Board zu posten, gehört aber eher hier hin. Geht ja immerhin hauptsächlich um Games...

--

zum Seitenanfang zum Seitenende Profil || Suche
001
06.03.2002, 09:15
Tron



das ist nicht gerade fraktal, das ist einfach nur lineare (oder quadratische, kubische, biquadratische, je nachdem durch wie viele punkte du die kurven legst) interpolation; such mal nach 'perlin noise', das verfahren eignet sich ganz gut zum erzeugen von terrains.
ich schreib nachher noch bissl was dazu, hab' grade nicht viel zeit.

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
002
06.03.2002, 17:40
hausi



Danke für den Tipp... Ich wollte damit eigentlich auch nicht zeigen, was fractal ist (sorry, für schlecht geschriebenen Text ;)) sondern eher mal fragen, wie man das macht...
Das ist die Routine, die ich bis jetzt benütze...

--

zum Seitenanfang zum Seitenende Profil || Suche
003
07.03.2002, 15:07
thinktank



Ich versteh ned, wie du vom 3. aufs 4. "Bild" kommst. Kannst du mir das erklären ?

--

zum Seitenanfang zum Seitenende Profil || Suche
004
07.03.2002, 22:29
hausi



Hier nochmals verkleinert und mit Variablen:
Quellcode:
A B C D E
F G H I J
K L M N O
P Q R S T
U V W X Y

Nun entsteht folgender Code:
Quellcode:
g=(b+f)/2;
h=(c+f+j)/4;
i=(d+j)/2;
l=(b+v+k)/4;
m=(c+w+k+o)/8;
n=(d+x+o)/4;

und so weiter... Also einfach immer den "Schnitt" mit den schon vorher gerechneten Variablen. Habe jetzt aber ein paar bessere Routinen gefunden...

--


Dieser Beitrag wurde am 07.03.2002 um 22:29 von Superhausi bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
07.03.2002, 22:53
No_Fl



So, versteh davon zwar nicht soviel, hab aber mal bei einem Gespräch mitgehöhrt:
Midpoint Displacement, fault formation und pixel deposition (alle von jason shankel (?))sollen in diesem Zusammenhang ganz gut sein.
Ausserdem hat ein gewisser dirk plate mal etwas entwickelt, bei dem zuerst eine Greyscalemap generiert wurde und damit die härte des Gesteins angegeben wurde. Anschliessend wurden Wassertropfen darauf fallen gelassen und es gibt schöne Berge und Täler.

Naja, wie gesagt ich hab da nicht so den Durchblick, dachte einfach vielleicht bringts ja jemandem etwas.

--

zum Seitenanfang zum Seitenende Profil || Suche
006
08.03.2002, 15:36
Prefect



NoFl, das hört sich nach einer interessanten Methode an, um realistischere Landschaften automatisch zu erstellen. Allerdings müßte die Map der Gesteinshärten dreidimensional sein, außerdem müßte man noch Flüsse etc... simulieren. Ist aber ein interessanter Ansatz.

In normalen Spielen (z.B. Zufallskarte für RTS) dürfte ein etwas weniger komplexer Algorithmus aber durchaus reichen - und würde wahrscheinlich sogar bessere Ergebnisse erzielen, besonders für Multiplayermaps. Denn dort ist es eigentlich weniger wichtig, daß die Karte realistisch ist. Stattdessen kommt es darauf an, ob sie spielbar ist.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
007
09.05.2002, 17:29
[A.E.F]Grasy



Für eine Heightmap in BlitzBasic3D reicht das schon aus :) 0-255 (255 höchste - 0 ist tiefste) - BB3D bastelt daraus ein schönes hügeliges 3D-Terrain (handlet später auch inkl. LOD).

--

zum Seitenanfang zum Seitenende Profil || Suche
008
11.05.2002, 16:58
TheTinySteini



Hm, hab grad dies hier bei OpenGL.org gefunden:
http://chat.carleton.ca/~eszoka/tstriplod/tstrip.htm

Sieht ja sehr interessant aus. Und da taucht auch gleich eine Frage auf, die ich nicht verstehe. Unter der Überschrift "LOD Ratio" sind in dem Artikel vier Bilder, zwei mit Triangles, zwei mit Lines. Warum verdammt ist die Darstellung mit Triangles (dazu noch mit Textur + Licht!) sehr viel schneller als die mit Lines?

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
009
11.05.2002, 17:21
Tron



das WARUM kann ich dir leider auch nicht sagen, aber DASS es so ist, das kann ich zumindest fuer geforces bestaetigen.
liegt vermurlich daran, dass der grka fuer's fuellen von polygonen optimiert wurde, und so 'unwichtige' sachen wie linien... sei froh, dass das ueberhaupt unterstuetzt wird (;

besonders extrem ist es, wenn linien mit antialising verwendet werden, das zwingt meine geforce schon bei wenigen tausend in die knie (fast hab ich da das gefuehl, es waere software-rendering)

besonders nett fand ich diesen effekt bei 'homeworld', da gibt es schiffe die sich tarnen koennen, diese werden dann als gitternetze dargestellt... das war so gut wie unspielbar. meine alte riva128 hatte da keine probleme (dafuer bei riesigen explosionen oder so fillrate-alphablending-fressenden effekten)

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
010
11.05.2002, 22:10
TheTinySteini



... auf der anderen Seite: Ich hab für Physik ein Programm gecodet, das ein Bitmap einliest (in dem Fall ein per CCD-Kamera aufgenommenes Interferenzmuster) und dann mit OpenGL darstellt. Das sind natürlich bei 384*288 Pixeln einige hunderttausend Polygone. Und man kann auch kaum Polys weglassen, sonst wird die Darstellung verfälscht.
Weil wir in der Schule natürlich keine GeForces haben, musste ich von der Darstellung mit Polygonen Abstand nehmen, vor allem weil ich auch noch ne Beleuchtung gebraucht hätte. Und dann kann man die Frames per Second mit der Hand zählen...
Also nur Punkte oder nur Linien. Mit Linien klappt's jetzt recht gut. Ich mach's übrigens mit ner GL_COMPILE-DisplayList, hab von nem Vertex-Array erst später gehört, das wär natürlich besser gewesen.

[editiert wegen Inkompatibilität zur deutschen Rächtschraibunk]

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy


Dieser Beitrag wurde am 11.05.2002 um 22:10 von TheTinySteini bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche