Corrections to amount of small trees and their shadow rendering. Test of render successful. Adjustment to base Perlins required for some tags.
This commit is contained in:
parent
05265e8136
commit
9eddb97425
10
defines.py
10
defines.py
@ -74,12 +74,12 @@ mstr_xp_genscenery = True
|
|||||||
mstr_xp_scn_normalmaps = True
|
mstr_xp_scn_normalmaps = True
|
||||||
|
|
||||||
# Paths to required X-Plane scenery tools
|
# Paths to required X-Plane scenery tools
|
||||||
mstr_xp_meshtool = "/home/marcus/Developer/Projects/orthographic/bin/MeshTool"
|
#mstr_xp_meshtool = "/home/marcus/Developer/Projects/orthographic/bin/MeshTool"
|
||||||
mstr_xp_ddstool = "/home/marcus/Developer/Projects/orthographic/bin/DDSTool"
|
mstr_xp_ddstool = "D:/Developer/Projects/orthographic/bin/DDSTool.exe"
|
||||||
mstr_xp_dsftool = "/home/marcus/Developer/Projects/orthographic/bin/DSFTool"
|
mstr_xp_dsftool = "D:/Developer/Projects/orthographic/bin/DSFTool.exe"
|
||||||
mstr_xp_xessrc = "https://dev.x-plane.com/update/misc/MeshTool/"
|
#mstr_xp_xessrc = "https://dev.x-plane.com/update/misc/MeshTool/"
|
||||||
mstr_xp_floor_height = 2.8 # 2.5m ceiling height + 30cm concrete per floor
|
mstr_xp_floor_height = 2.8 # 2.5m ceiling height + 30cm concrete per floor
|
||||||
mstr_xp_ortho_location = "/home/marcus/Data/Sim/Simulator/orthographic/"
|
mstr_xp_ortho_location = "D:/Simulator/12/Custom Scenery/z_orthographic/"
|
||||||
|
|
||||||
# If you set the above to true, you can define for which features you
|
# If you set the above to true, you can define for which features you
|
||||||
# want to generate normal maps for. The below is my recommendation for
|
# want to generate normal maps for. The below is my recommendation for
|
||||||
|
31
layergen.py
31
layergen.py
@ -377,7 +377,10 @@ class mstr_layergen:
|
|||||||
if self._zoomlevel == 16: samples = 2000
|
if self._zoomlevel == 16: samples = 2000
|
||||||
|
|
||||||
txts = glob.glob(mstr_datafolder + "textures/" + self._tag + "/" + self._value + "/*.png")
|
txts = glob.glob(mstr_datafolder + "textures/" + self._tag + "/" + self._value + "/*.png")
|
||||||
ptc_src = Image.open(txts[randrange(0, len(txts))])
|
ptc_name = txts[randrange(0, len(txts))]
|
||||||
|
while "brd" in ptc_name:
|
||||||
|
ptc_name = txts[randrange(0, len(txts))]
|
||||||
|
ptc_src = Image.open(ptc_name)
|
||||||
if self._zoomlevel == 16: ptc_src = ptc_src.resize((250,250), resample=Image.Resampling.BILINEAR)
|
if self._zoomlevel == 16: ptc_src = ptc_src.resize((250,250), resample=Image.Resampling.BILINEAR)
|
||||||
clrz = mstr_colorizer(ptc_src)
|
clrz = mstr_colorizer(ptc_src)
|
||||||
|
|
||||||
@ -386,15 +389,23 @@ class mstr_layergen:
|
|||||||
for i in range(samples):
|
for i in range(samples):
|
||||||
xp = randrange(-125, 1924)
|
xp = randrange(-125, 1924)
|
||||||
yp = randrange(-125, 1924)
|
yp = randrange(-125, 1924)
|
||||||
|
|
||||||
ptc = clrz._grs.rotate(randrange(0, 360), expand=True)
|
ptc = clrz._grs.rotate(randrange(0, 360), expand=True)
|
||||||
|
if self._value == "golf_course":
|
||||||
|
ptc = clrz._baseimg.rotate(randrange(0, 360), expand=True)
|
||||||
tmp_layer.alpha_composite(ptc, (xp,yp))
|
tmp_layer.alpha_composite(ptc, (xp,yp))
|
||||||
|
|
||||||
# Add the seamless border
|
# Add the seamless border
|
||||||
brd = Image.open(mstr_datafolder + "textures/" + self._tag + "/" + self._value + "/brd.png")
|
brd = Image.open(mstr_datafolder + "textures/" + self._tag + "/" + self._value + "/brd.png")
|
||||||
brd_clrz = mstr_colorizer(brd)
|
brd_clrz = mstr_colorizer(brd)
|
||||||
|
if self._value != "golf_course":
|
||||||
|
tmp_layer.alpha_composite(brd_clrz._baseimg)
|
||||||
|
else:
|
||||||
tmp_layer.alpha_composite(brd_clrz._grs)
|
tmp_layer.alpha_composite(brd_clrz._grs)
|
||||||
|
|
||||||
|
if self._value != "golf_course":
|
||||||
tmp_layer.putalpha(51)
|
tmp_layer.putalpha(51)
|
||||||
|
|
||||||
layer.alpha_composite(tmp_layer)
|
layer.alpha_composite(tmp_layer)
|
||||||
mstr_msg("layergen", "Layer image generated")
|
mstr_msg("layergen", "Layer image generated")
|
||||||
|
|
||||||
@ -442,8 +453,7 @@ class mstr_layergen:
|
|||||||
|
|
||||||
# Add a white-ish border around pitches
|
# Add a white-ish border around pitches
|
||||||
if self._tag == "leisure" and self._value == "pitch":
|
if self._tag == "leisure" and self._value == "pitch":
|
||||||
pitch_edge = osm_edge
|
pitch_edge = mask.filter(ImageFilter.FIND_EDGES)
|
||||||
pitch_edge = pitch_edge.filter(ImageFilter.GaussianBlur(radius=0.5))
|
|
||||||
pitch_mask = pitch_edge.load()
|
pitch_mask = pitch_edge.load()
|
||||||
|
|
||||||
# ImageOps.invert does not like RGBA images for inversion. So I need to do it.
|
# ImageOps.invert does not like RGBA images for inversion. So I need to do it.
|
||||||
@ -509,7 +519,7 @@ class mstr_layergen:
|
|||||||
|
|
||||||
# Generate an edge mask from the original
|
# Generate an edge mask from the original
|
||||||
osm_edge = mask.filter(ImageFilter.FIND_EDGES)
|
osm_edge = mask.filter(ImageFilter.FIND_EDGES)
|
||||||
osm_edge = osm_edge.filter(ImageFilter.MaxFilter)
|
#osm_edge = osm_edge.filter(ImageFilter.MaxFilter)
|
||||||
mstr_msg("layergen", "Edge mask generated")
|
mstr_msg("layergen", "Edge mask generated")
|
||||||
|
|
||||||
# As above, we will apply the blur as noted in the defines
|
# As above, we will apply the blur as noted in the defines
|
||||||
@ -587,7 +597,7 @@ class mstr_layergen:
|
|||||||
if self._tag == "natural" and self._value == "tree_row":
|
if self._tag == "natural" and self._value == "tree_row":
|
||||||
trees = Image.new("RGBA", (self._imgsize, self._imgsize))
|
trees = Image.new("RGBA", (self._imgsize, self._imgsize))
|
||||||
treespx = trees.load()
|
treespx = trees.load()
|
||||||
for t in range(80001):
|
for t in range(450001):
|
||||||
lx = randrange(self._imgsize)
|
lx = randrange(self._imgsize)
|
||||||
ly = randrange(self._imgsize)
|
ly = randrange(self._imgsize)
|
||||||
a = mask_pix[lx,ly]
|
a = mask_pix[lx,ly]
|
||||||
@ -614,7 +624,7 @@ class mstr_layergen:
|
|||||||
# Find a suitable color
|
# Find a suitable color
|
||||||
w = randrange(125, 156)
|
w = randrange(125, 156)
|
||||||
a=mask_pix[x,y]
|
a=mask_pix[x,y]
|
||||||
layer_comp_pix[x, y] = ( w,w,w,a[3] )
|
layer_comp_pix[x, y] = ( w,w,w,int(a[3]/3) )
|
||||||
|
|
||||||
if self._tag == "highway" and self._value == "residential":
|
if self._tag == "highway" and self._value == "residential":
|
||||||
osm_edge = mask.filter(ImageFilter.FIND_EDGES)
|
osm_edge = mask.filter(ImageFilter.FIND_EDGES)
|
||||||
@ -802,8 +812,13 @@ class mstr_layergen:
|
|||||||
if tp[3] > 0:
|
if tp[3] > 0:
|
||||||
rndshd = randrange(5, 210)
|
rndshd = randrange(5, 210)
|
||||||
sc = (0, 0, 0, rndshd)
|
sc = (0, 0, 0, rndshd)
|
||||||
if x + 8 < self._imgsize and y + 5 < self._imgsize:
|
spx = 8
|
||||||
shadow_pix[x + 8, y + 5] = sc
|
spy = 5
|
||||||
|
if self._zoomlevel == 16:
|
||||||
|
spx = 2
|
||||||
|
spy = 1
|
||||||
|
if x + spx < self._imgsize and y + spy < self._imgsize:
|
||||||
|
shadow_pix[x + spx, y + spy] = sc
|
||||||
tree_shadow = tree_shadow.filter(ImageFilter.GaussianBlur(radius=2))
|
tree_shadow = tree_shadow.filter(ImageFilter.GaussianBlur(radius=2))
|
||||||
tree_shadow.alpha_composite(trees)
|
tree_shadow.alpha_composite(trees)
|
||||||
|
|
||||||
|
12
photogen.py
12
photogen.py
@ -238,8 +238,7 @@ class mstr_photogen:
|
|||||||
nrmimg.alpha_composite(wtrimg)
|
nrmimg.alpha_composite(wtrimg)
|
||||||
|
|
||||||
# Save
|
# Save
|
||||||
nrmfln = mstr_datafolder + "z_orthographic/normals/" + self._latlngfld + "/" + str(self._ty) + "_" + str(
|
nrmfln = mstr_datafolder + "z_orthographic/normals/" + self._latlngfld + "/" + str(self._ty) + "_" + str(self._tx) + ".png"
|
||||||
self._tx) + ".png"
|
|
||||||
nrmimg.save(nrmfln)
|
nrmimg.save(nrmfln)
|
||||||
|
|
||||||
|
|
||||||
@ -403,8 +402,13 @@ class mstr_photogen:
|
|||||||
if tp[3] > 0:
|
if tp[3] > 0:
|
||||||
rndshd = randrange(5, 210)
|
rndshd = randrange(5, 210)
|
||||||
sc = (0, 0, 0, rndshd)
|
sc = (0, 0, 0, rndshd)
|
||||||
if x + 8 < self._imgsize and y + 5 < self._imgsize:
|
spx = 8
|
||||||
shadow_pix[x + 8, y + 5] = sc
|
spy = 5
|
||||||
|
if self._zoomlevel == 16:
|
||||||
|
spx = 2
|
||||||
|
spy = 1
|
||||||
|
if x + spx < self._imgsize and y + spy < self._imgsize:
|
||||||
|
shadow_pix[x + spx, y + spy] = sc
|
||||||
tree_shadow = tree_shadow.filter(ImageFilter.GaussianBlur(radius=2))
|
tree_shadow = tree_shadow.filter(ImageFilter.GaussianBlur(radius=2))
|
||||||
tree_shadow.alpha_composite(trees)
|
tree_shadow.alpha_composite(trees)
|
||||||
self._tile.alpha_composite(tree_shadow)
|
self._tile.alpha_composite(tree_shadow)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user