Autor Beitrag
Lonar
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 25.01.10 18:27 
Hallo,

sollte dieses Thema bereits irgendwo angesprochen bzw. besprochen worden sein, möchte ich mich für ein neues Thema dazu entschuldigen. Ich bin recht neu in C# und habe dementsprechend auch noch nicht so viel Erfahrung darin, stehe allerdings vor einem Problem, welches mir wohl nur eine Programmiersprache abnehmen kann.

Ich besitze hier 2 Heightmaps (wird u.a. zur Landschaftsgenerierung in Spielen verwendet), welche zusammen eine Landschaft darstellen. Täte ich nur eine davon verwenden, täte die Landschaft nur so vor Fehlern strotzen, daher bin auch darauf angwiesen sie miteinander zu kombinieren und hoffe, ihr könnt mir dabei behilflich sein bzw. Ratschläge geben wie ich es angehen könnte / sollte.

Während die eine Heightmap die grundlegende Landschaftsform beinhaltet, beinhaltet die andere einige Fehlerkorrekturen und Landschafts-"Offsets" bzw. Ebenen-"Offsets" (also Ebenen die bei der ersten Heightmap nicht vorhanden wären). Beide kombiniert ergeben die endgültige Landschaft. Da die bitmap Datei in beiden Fällen zu 100% bemalt ist, muss ich es natürlich irgendwie schaffen diese farben miteinander zu kombinieren ohne das dabei irgendwelche Ebenen von der ersten bzw. zweiten Heightmap verloren gehen.

Bis jetzt weiß ich, dass ich die Pixel über z.B. zwei For-Schleifen (eine für y und eine für x (oder umgekehrt)) auslesen muss - hier aber endet es bereits.

Nun meine Frage an euch: wie kann ich dieses Problem am besten angehen / lösen oder ist für mein Problem bereits irgendwo ein Programm erhältlich?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 25.01.10 18:35 
Hallo und :welcome: im Forum!

Wie müssen die Pixel denn kombiniert werden? Erstmal hört sich das so an als könntest du jedes beliebige Grafikprogramm (z.B. Paint .NET) nehmen, dort die beiden Ebenen einfügen und transparent einstellen.

In einem eigenen Programm müssen die beiden Pixel auch jeweils verrechnet werden, die Frage ist wie genau. Durchschnitt der beiden Farbwerte, addieren der Werte, ...
Lonar Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 25.01.10 21:15 
Hallo,

erstmal zu dem Grafikprogramm:

Ich habe es eben mal ausprobiert, die Ebenen auf Transparent zu stellen würde ein total schlechtes Ergebnis nach sich ziehen und es auch "verfälschen".

Zum Programm:

Das mit dem errechnen der Farbwerte etc. ist u.a. eines der Probleme.

Soweit wie ich das momentan verstanden habe, werden die Pixel über einen bestimmten Wert hin gezeichnet. Soll heißen das der Farbwert wohl aus folgender Berechnung irgendwie für Graustufen entsteht:

für 16bit:

pixel = (terrainPixel * scalefactor) + (offsetPixel * offsetfactor) / 4

bzw. für 8bit

pixel = (terrainPixel * scalefactor) + (offsetPixel * offsetfactor) / 8

Scale- und offsetfactor sind feste Werte die auch vorhanden sind. Nun ist allerdings die Frage, wie man das in Code fassen und auch entsprechend in eine neue Datei schreiben soll - sofern es überhaupt richtig ist.