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
|
||||
|
||||
# Paths to required X-Plane scenery tools
|
||||
mstr_xp_meshtool = "/home/marcus/Developer/Projects/orthographic/bin/MeshTool"
|
||||
mstr_xp_ddstool = "/home/marcus/Developer/Projects/orthographic/bin/DDSTool"
|
||||
mstr_xp_dsftool = "/home/marcus/Developer/Projects/orthographic/bin/DSFTool"
|
||||
mstr_xp_xessrc = "https://dev.x-plane.com/update/misc/MeshTool/"
|
||||
#mstr_xp_meshtool = "/home/marcus/Developer/Projects/orthographic/bin/MeshTool"
|
||||
mstr_xp_ddstool = "D:/Developer/Projects/orthographic/bin/DDSTool.exe"
|
||||
mstr_xp_dsftool = "D:/Developer/Projects/orthographic/bin/DSFTool.exe"
|
||||
#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_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
|
||||
# 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
|
||||
|
||||
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)
|
||||
clrz = mstr_colorizer(ptc_src)
|
||||
|
||||
@ -386,15 +389,23 @@ class mstr_layergen:
|
||||
for i in range(samples):
|
||||
xp = randrange(-125, 1924)
|
||||
yp = randrange(-125, 1924)
|
||||
|
||||
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))
|
||||
|
||||
# Add the seamless border
|
||||
brd = Image.open(mstr_datafolder + "textures/" + self._tag + "/" + self._value + "/brd.png")
|
||||
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)
|
||||
|
||||
if self._value != "golf_course":
|
||||
tmp_layer.putalpha(51)
|
||||
|
||||
layer.alpha_composite(tmp_layer)
|
||||
mstr_msg("layergen", "Layer image generated")
|
||||
|
||||
@ -442,8 +453,7 @@ class mstr_layergen:
|
||||
|
||||
# Add a white-ish border around pitches
|
||||
if self._tag == "leisure" and self._value == "pitch":
|
||||
pitch_edge = osm_edge
|
||||
pitch_edge = pitch_edge.filter(ImageFilter.GaussianBlur(radius=0.5))
|
||||
pitch_edge = mask.filter(ImageFilter.FIND_EDGES)
|
||||
pitch_mask = pitch_edge.load()
|
||||
|
||||
# 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
|
||||
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")
|
||||
|
||||
# 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":
|
||||
trees = Image.new("RGBA", (self._imgsize, self._imgsize))
|
||||
treespx = trees.load()
|
||||
for t in range(80001):
|
||||
for t in range(450001):
|
||||
lx = randrange(self._imgsize)
|
||||
ly = randrange(self._imgsize)
|
||||
a = mask_pix[lx,ly]
|
||||
@ -614,7 +624,7 @@ class mstr_layergen:
|
||||
# Find a suitable color
|
||||
w = randrange(125, 156)
|
||||
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":
|
||||
osm_edge = mask.filter(ImageFilter.FIND_EDGES)
|
||||
@ -802,8 +812,13 @@ class mstr_layergen:
|
||||
if tp[3] > 0:
|
||||
rndshd = randrange(5, 210)
|
||||
sc = (0, 0, 0, rndshd)
|
||||
if x + 8 < self._imgsize and y + 5 < self._imgsize:
|
||||
shadow_pix[x + 8, y + 5] = sc
|
||||
spx = 8
|
||||
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.alpha_composite(trees)
|
||||
|
||||
|
12
photogen.py
12
photogen.py
@ -238,8 +238,7 @@ class mstr_photogen:
|
||||
nrmimg.alpha_composite(wtrimg)
|
||||
|
||||
# Save
|
||||
nrmfln = mstr_datafolder + "z_orthographic/normals/" + self._latlngfld + "/" + str(self._ty) + "_" + str(
|
||||
self._tx) + ".png"
|
||||
nrmfln = mstr_datafolder + "z_orthographic/normals/" + self._latlngfld + "/" + str(self._ty) + "_" + str(self._tx) + ".png"
|
||||
nrmimg.save(nrmfln)
|
||||
|
||||
|
||||
@ -403,8 +402,13 @@ class mstr_photogen:
|
||||
if tp[3] > 0:
|
||||
rndshd = randrange(5, 210)
|
||||
sc = (0, 0, 0, rndshd)
|
||||
if x + 8 < self._imgsize and y + 5 < self._imgsize:
|
||||
shadow_pix[x + 8, y + 5] = sc
|
||||
spx = 8
|
||||
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.alpha_composite(trees)
|
||||
self._tile.alpha_composite(tree_shadow)
|
||||
|
Loading…
x
Reference in New Issue
Block a user