Hallo,
Weiß jemand, wie ich aufgrund von Höhenpunkte eine echte "ColorMap" erzeuge. Leider versteht C# unter colormap sowas wie eine umrechnung von existierenden werte in neue, aber ich würde gerne eine neue erzeugen
Das problem ist, dass 5 verschiedene Farbverläufe (siehe Grafik) berücksichtigt werden müssten.
D.h. jeder "pixel" der karte entspricht einer gemessenen Höhe, und diese Höhe "indiziert" eine spezielle Farbe, die aber aufgrund des Farbverlaufs nicht vorher definierbar ist (ausser man rechnet sich alle farben und deren höhenindexe vorher aus -> uff)
Hoffe das Problem hab ich einigermaßen verständlich erklärt.
Hab schon im forum nach ähnlichen themen gesucht, aber ausser auf meine alte heightmap, die jedoch nicht das aktuelle Problem behandelt, bin ich auf nix gestoßen
danke für jede Hilfe
lg
Philipp
http://msdn.microsoft.com/de-de/library/ms754083.aspx#radialgradients
punkt: lineare farbverläufe.
Hallo PhilHol,
hm, also ich habe noch nicht genau verstanden, wo das Problem liegt.
die aber aufgrund des Farbverlaufs nicht vorher definierbar ist
Warum denn das nicht?
herbivore
mhm ..
Also das Farbverlauf zeichnen ist ja nicht das problem
Aber ich will jetzt diesen Farbverlauf hernehmen und sozusagen "indizieren" ..
Nehmen wir an ich hab z.b. Höhe 4.21 .. d.h. die Farbe ist daher fast gelb, aber bischen richtung rot
dann bekomm ich eine höhe -6.23 .. d.h die Farbe ist grad noch ein bischen hell, aber doch schon fast dunkelblau
Sozusagen diesen Farbverlauf "indizieren"
Hallo PhilHol,
aber das lässt sich doch leicht berechnen.
herbivore
dann zeichne doch ein bild mit dem brush und erstell ein dictionary. dann gehst du der länge nach durch und holst dir mit getpixel die farbe und als key nimmst du die entsprechende höhe.
ach ich bin ein depp ..
ich nehm einfach das bild andsich als Wert"karte" und dann über koord die farbe wie du sagst .. ..
Danke .. (manchmal denk ich einfach zu verkrampft kompliziert -> dachte an eine große funktion um den wert auszurechnen)
lg
jupp, wobei ich dir das dictionary hier ans herz legen kann. das ist ein enormer performance schub da getpixel recht lahm ist.
Mhm ..
Wie meinst du das mit dictionary ?
Sozusagen im Vorfeld alle möglichen Indizes aus dem Bild auslesen und in einem Dict speichern ?
Ist das nicht auch bissl ein performance verlust vorher ein bild komplett auszulesen stück für stück ?
eigentlich nimmt man ja für heightmap's Graustufenbilder 8)
edith sagt: warum Perfomanceverlust?Es ist doch statisch warum sollte man vorher nicht die Werte einlesen?zB bei Spielen kannst du nicht jedes Frame die Map einlesen. Das wird vorher alles in den Index/Vertexbuffer gehaun. Also vorher auslesen ganz klar...
Ist das nicht auch bissl ein performance verlust vorher ein bild komplett auszulesen stück für stück ?
richtig. das kostet zeit aber dafür kostet es nur einmal zeit.
wenn du jetzt ein größeres bild zeichnen willst, dann ist das auf jedenfall perfomanter vorher alles in ein dictionary zu lesen.
im prinzip ist es so:
wenn du erwartest das du mehr höhenpunkte hast als das dictionary an einträgen hätte, dann ist das dictionary in jedem fall vorzuziehen.
dictionary<höhenpunkt,farbe>
aha,
alles klar
Danke für die Tipps 🙂