Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Terrain aus Bildern
#1
Ich habe mal so ein kleines Python Programm geschrieben was einfach aus einem x Belibigen Bild ein fast fertiges Terrain erstellt.

heightmap.py Groesse Weichzeichnen Helligkeit Dateiname

Groesse muss in 256er schritten erfolgen z.B. 256, 512, 768, 1024 u.s.w.
Weichzeichnen ist, damit die harten Kannten weicher werden, ein vernuenftiger Wert liegt zwischen 0.0 und 5.0 (0 = keine Veränderung)
Helligkeit um die hoehe zu reduzieren, Werte um 0.2 - 0.5 sind gut. (1 = keine Veränderung)
Dateiname und ggf. Pfad des zu ladenden Bildes.

## Linux:
#./heightmap.py 256 1.5 0.2 /Pfad/Bild.jpg

## Windows:
#C:/Python38/python.exe heightmap.py 256 1.5 0.2 G:/Pfad/Bild.jpg

# Die Bilddatei kann jpg, png, ico, bmp und so weiter sein.
# Das ausgabeformat ist eine 24 bit png heightmap fuer den OpenSimulator.

Benutzung auf eigene Gefahr!!!

Python 3
pip3 install Image

Code:
#!/usr/bin/env python3

from sys import argv
import glob, os
from PIL import Image
from PIL import ImageOps
from PIL import ImageFilter
from PIL import ImageEnhance

### Aufruf Beispiele

# heightmap.py Groesse Weichzeichnen Helligkeit Dateiname

# Groesse muss in 256er schritten erfolgen z.B. 256, 512, 768, 1024 u.s.w.
# Weichzeichnen ist, damit die harten Kannten weicher werden, ein vernuenftiger Wert liegt zwischen 0.0 und 5.0
# Helligkeit um die hoehe zu reduzieren, Werte um 0.2 sind gut.
# Dateiname und ggf. Pfad des zu ladenden Bildes.

## Linux:
#./heightmap.py 256 1.5 0.2 /Pfad/Bild.jpg

## Windows:
#C:/Python38/python.exe heightmap.py 256 1.5 0.2 G:/Pfad/Bild.jpg

# Die Bilddatei kann jpg, png, ico, bmp und so weiter sein.
# Das ausgabeformat ist eine 24 bit png heightmap fuer den OpenSimulator.

xsize = int(argv[1])            # Einstellung groesse
gaussianradius = float(argv[2]) # Einstellung weichzeichnen der Uebergaenge Wasser Land
brightness = float(argv[3])     # Einstellung Helligkeit
filename = (argv[4])            # Einstellung Dateiname

size = xsize, xsize

print(size)                     # Kontrollausgabe
print(gaussianradius)           # Kontrollausgabe
print(brightness)               # Kontrollausgabe
print(filename)                 # Kontrollausgabe

for infile in glob.glob(filename):
    file, ext = os.path.splitext(infile)
    im = Image.open(infile)                                     # Datei oeffnen
    im = im.convert('LA')                                       # in Graustufen umwandeln
    im = im.resize((size))                                      # groesse aendern
    
    im = im.filter(ImageFilter.GaussianBlur(gaussianradius))    # weichzeichnen der Uebergaenge
    im = im.convert('RGB')                                      # konvertieren in 24bit

    # Terrain muss zwischen 1E1E1E und 464646 (-10 und +30 Meter)liegen - 1m. ueber Boden = 292929 - Wasserhoehe = 282828
    brightnessMod = ImageEnhance.Brightness(im)                 # Helligkeit anpassen
    im = brightnessMod.enhance(brightness)                      # Helligkeit anpassen
    
    #contrastMod = ImageEnhance.Contrast(im)                    # Kontrast anpassen
    #im = contrastMod.enhance(contrast)                         # Kontrast anpassen
    
    #sharpnessMod = ImageEnhance.Sharpness(im)                  # Schaerfe anpassen
    #im = sharpnessMod.enhance(sharpness)                       # Schaerfe anpassen
    
    outfile = file + str(xsize)                                 # Konvertiert die Regionsgroesse in ein String und haengt diesen an den Dateinamen an.
    im.save(outfile + ".png", "PNG")                            # Datei speichern
Ein Metaversum sind viele kleine Räume, die nahtlos aneinander passen,
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.



Zitieren


Nachrichten in diesem Thema
Terrain aus Bildern - von Manfred Aabye - 21.07.2020, 11:52
RE: Terrain aus Bildern - von Xenos Yifu - 21.07.2020, 12:11
RE: Terrain aus Bildern - von Manfred Aabye - 26.07.2020, 17:26
RE: Terrain aus Bildern - von Manfred Aabye - 01.08.2020, 15:38

Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  L3DT - das Terrain Tool für Maulwürfe und solche die sich dafür halten Bogus Curry 4 9.012 25.03.2018, 22:18
Letzter Beitrag: Pharcide
  Fundsache Terrain Party, die reale Welt als Heightmap Manfred Aabye 13 27.650 13.12.2015, 00:02
Letzter Beitrag: Ezry Aldrin

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste