AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Heightmaps generieren?

Ein Thema von Jörn · begonnen am 29. Apr 2004 · letzter Beitrag vom 4. Mai 2004
Antwort Antwort
Seite 1 von 2  1 2      
Jörn

Registriert seit: 5. Sep 2003
Ort: Helmstedt
312 Beiträge
 
#1

Heightmaps generieren?

  Alt 29. Apr 2004, 14:09
Kennt jemand eine deutsche Seite, auf der verschiedene Ansätze zum generieren von Heightmaps beschrieben werden? Hab zwar ein paar Seiten gefunden, aber die Ansätze waren meist unvollständig beschrieben oder es war nur ein kurzer Kommentar wie Programm xy das eben handhabt. Vielleicht kennt sich ja auch jemand hier damit aus?
Die einzige Seite die sehr gut aussieht ist folgende: LEDA with OpenGL

Aber ich verstehe die höheren Generatoren nicht richtig. Besonders diese beiden Absätze beim Particle Generator sind mir zu hoch *gg*

Zitat:
Damit die Landschaft tatsächlich eine vulkanische Optik hat, wird die Spitze der entstehenden Erhöhungen gesucht. Alle Punkte, die nicht zu weit von dieser Spitzenposition abweichen, werden dann ander sog. Kraterlinie gespiegelt, eine Linie, die ein Stück unterhalb der Spitze mehr oder weniger parallel zum Boden verläuft.
Über den Modify Generator ? Button ist es dem User sowohl möglich, den Postprocessing Filter sowie die Filter Konstante anzupassen, als auch die Anzahl der Positionen zu bestimmten, von denen der Algorithmus Partikel fallen lässt (Number Of Placements). Ebenso kann die minimale und die maximale Höhe für einen Kegel eingestellt werden. Desweiteren kann für jeden Positionswechsel eine bestimmte Erhöhung der Positon (y-Wert) eingegeben werden.
Und beim Fault Formation-Prinzip kenne ich dieses "dreidimensionale Kreuzprodukt" nicht. Weiss jemand was das sein soll?

Vielen Dank schon mal, MfG
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#2

Re: Heightmaps generieren?

  Alt 1. Mai 2004, 00:52
äh, wie bitte?

soweit ich weiss sind heighmaps (weiss die schreibweise nit genau) das:

bilder in graustufen von einem prog eingelesen werden
je nach farbe wird dann 3d eine karte gemacht wobei schwarz=unten und weiss=oben gilt
dieses verfahren wird (ich glaub nur) für 3d-progs benutzt

soweit mein kentnissstand
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#3

Re: Heightmaps generieren?

  Alt 1. Mai 2004, 00:54
achso, ich glaub beim abschicken hab ich verstanden, worüber dein zitat handelt...
dort geht es glaub ich darum, wie genau das prog das bild in eine graphik umwandelt...
also das prog muss die map dann ja mir kegeln und boxen usw usw usw nachbauen
das beschreibt der text wahrscheinlich
ka was das einem bringt
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Heightmaps generieren?

  Alt 1. Mai 2004, 02:18
Hi,
Zum Kreuzprodukt:
hab keine Ahnung ob das jetzt hilft. Das letzte Mal, als wir mit dem Kreuzprodukt rechneten, haben wir damit den Normalenvektor (also die Senkrechte) zu einer Ebene mit den Spannvektoren a-> und b-> im Raum gebildet...


Gruß,
Dani
Miniaturansicht angehängter Grafiken
kreuzprodukt.gif  
Dani H.
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Heightmaps generieren?

  Alt 1. Mai 2004, 02:38
Im beiliegenden Bildchen sieht man auch, warum es Kreuzprodukt heist

Ergebnis eines Kreuzproduktes ist übrigends der Vektor, der senkrecht auf den beiden Ausgangsvektoren steht.
Sind die Ausgangsvektoren linear abhängig (zeigen beide in die selbe Richtung/sind Vielfache voneinander), so ergibt das Kreuzprodukt den Nullvektor (0 0 0).
Die Länge des Ergebnisvektors gibt den Flächeninhalt des Parallelogramms an, das von den beiden Ausgangsvektoren gebildet wird. Also kann man mit dieser Operation z.B. die Fläche eines beliebigen Dreiecks ausrechnen, von dem man nur 2 Seiten, und keinen Winkel kennen muss! ( 1/2 * abs(v1 x v2) )
Geometrie ist geil!

\\1001 edits: Ich bekomm das noch irgendwie hin mit dem Anhang...
Miniaturansicht angehängter Grafiken
kreuzprod.gif  
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Jörn

Registriert seit: 5. Sep 2003
Ort: Helmstedt
312 Beiträge
 
#6

Re: Heightmaps generieren?

  Alt 1. Mai 2004, 11:49
glkbkk: Nein, ich versuche Programme zu schreiben, mit denen ich zufällig Heightmaps generieren kann. Das umwandeln einer Heightmap in eine 3D-Landschaft ist einfach, aber wie gesagt verstehe ich die höheren Generatoren nur teilweise.

Kreuzprodukt: Gut wie ich diesen Vektor nun ausrechne ist nun klar, ist ja dann auch schnell in eine Funktion verpackt. Da dieser Vektor dann senkrecht auf den anderen steht, weiss ich auch wie das nun gemeint ist. Ich habe aber keinen blassen Schimmer, wie ich jetzt auf die beiden Ursprungsvektoren kommen soll, ich hab ja nur ein 2dimensionales Bild und auch nur eine Linie, die das Bild per Zufall teilt. Werde den Tag mal ein wenig drüber grübeln müssen und vielleicht ein wenig testen.

MfG
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#7

Re: Heightmaps generieren?

  Alt 2. Mai 2004, 15:54
ähm, weisst du was ich da machen würde?

in delphi ein bitmap oder so machen
dann pixel für pixel durchgehen

Delphi-Quellcode:
farbe:=random(255);
pixel[x,y].color:=rbgtocolor(farbe, farbe, farbe)
(ich weiss dafür die befehle nit, hab also befehle genommen, die klar machen sollten, was gemeint ist)

ich bearbeitre ein pexel nachm anderen
mit farbe generiere ich einen wert
damit es grau wird, ist farbe rot, grün und blau zugleich
das die sprünge nicht zugross sind, dürfte ungefähr so gehen:
(jetzt komplett)

Delphi-Quellcode:
for x:=1 to hoehederkarte do
   begin
   for y:=1 to breitederkarte do
      begin
        farbe:=random(10)-5;//zufälliger unterschied
        image1.pixels[x,y].color:=rbgtocolor(durchschnitt der umliegenden pixel+farbe)
      end;
   end;
der durchschnitt der umliegenden felder?
so in etwa

durchschnitt:= (pixels[x-1,y].color + pixels[x-1,y-1].color + pixels[x,y-1].color + pixels[x+1,y-1].color) div 4 jetzt mehr symolisch, muss man mit jedem dert drei rbg werte machen....
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Jörn

Registriert seit: 5. Sep 2003
Ort: Helmstedt
312 Beiträge
 
#8

Re: Heightmaps generieren?

  Alt 2. Mai 2004, 17:14
Ja das wäre ja schon viel zu einfach. Da sind so große Sprünge, das kann man kaum verwenden.
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Heightmaps generieren?

  Alt 2. Mai 2004, 17:17
Heightmaps für Langschaften sind einfach nur 2D Schwarzweiss-Bilder. Um eine möglichst realistische Struktur hinzubekommen verwendet man üblicherweise "Rauschen", sehr gute Ergebnisse erzielt man mit dem "Perlin"-Algo. Musst mal nach googeln - da dürfte man so einiges drüber finden. Auch so nettigkeiten wie Plateubildung, Meeresspiegel usw. lassen sich algorithmisch lösen. Sehr schönes Anschuungsobjekt wäre das Programm Terragen. Das arbeitet genau mit diesen Mitteln und ist zu dem auch noch Freeware - und die Bilder die das Teil zaubert sind reichlich geil Ist zwar sehr umfangreich, aber die Heightmaps an sich arbeiten genau nach diesem Prinzip.
Mit Vektoren hat man bei der Erzeugung der reinen Heightmap rein garnichts zu tun!
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Jörn

Registriert seit: 5. Sep 2003
Ort: Helmstedt
312 Beiträge
 
#10

Re: Heightmaps generieren?

  Alt 2. Mai 2004, 18:29
Doch bei dieser einen Variante schon. Kurz erklärt:
  • Zwei zufällige Punkte ermitteln
  • Durch diese eine imaginäre Linie ziehen
  • Auf einer der beiden Seiten alle Punkte um x erhöhen
  • x wird zB halbiert
Und das so oft wiederholen wie man eben möchte. Und um unterscheiden zu können, auf welcher Seite der Linie ein Punkt liegt, braucht man angeblich dieses Kreuzprodukt. Aber ich bin am überlegen, ob ich das einfach mit Gleichungen nach y=mx+n mache und die Senkrechte nach m1*m2=-1 berechne, weil das mit dem Kreuzprodukt übertrieben scheint. Doch irgendwas werden sich diese Studenten auch dabei gedacht haben.

EDIT: Nachdem ich mir heute noch so einige Gedanken gemacht hab, bin ich zu dem Schluss gekommen, das die Lösung mit den Vektoren doch einfacher wäre. Nur verstehe ich immer noch nicht wie ich das im 2dimensionalen anwende, trotz Studium des Artikels auf Wikipedia *grml*
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz