mstr_xp_scn_normalmaps = True\r
\r
# Paths to required X-Plane scenery tools\r
-mstr_xp_meshtool = "/home/marcus/Developer/Projects/orthographic/bin/MeshTool"\r
-mstr_xp_ddstool = "/home/marcus/Developer/Projects/orthographic/bin/DDSTool"\r
-mstr_xp_dsftool = "/home/marcus/Developer/Projects/orthographic/bin/DSFTool"\r
-mstr_xp_xessrc = "https://dev.x-plane.com/update/misc/MeshTool/"\r
+#mstr_xp_meshtool = "/home/marcus/Developer/Projects/orthographic/bin/MeshTool"\r
+mstr_xp_ddstool = "D:/Developer/Projects/orthographic/bin/DDSTool.exe"\r
+mstr_xp_dsftool = "D:/Developer/Projects/orthographic/bin/DSFTool.exe"\r
+#mstr_xp_xessrc = "https://dev.x-plane.com/update/misc/MeshTool/"\r
mstr_xp_floor_height = 2.8 # 2.5m ceiling height + 30cm concrete per floor\r
-mstr_xp_ortho_location = "/home/marcus/Data/Sim/Simulator/orthographic/"\r
+mstr_xp_ortho_location = "D:/Simulator/12/Custom Scenery/z_orthographic/"\r
\r
# If you set the above to true, you can define for which features you\r
# want to generate normal maps for. The below is my recommendation for\r
if self._zoomlevel == 16: samples = 2000\r
\r
txts = glob.glob(mstr_datafolder + "textures/" + self._tag + "/" + self._value + "/*.png")\r
- ptc_src = Image.open(txts[randrange(0, len(txts))])\r
+ ptc_name = txts[randrange(0, len(txts))]\r
+ while "brd" in ptc_name:\r
+ ptc_name = txts[randrange(0, len(txts))]\r
+ ptc_src = Image.open(ptc_name)\r
if self._zoomlevel == 16: ptc_src = ptc_src.resize((250,250), resample=Image.Resampling.BILINEAR)\r
clrz = mstr_colorizer(ptc_src)\r
\r
for i in range(samples):\r
xp = randrange(-125, 1924)\r
yp = randrange(-125, 1924)\r
+\r
ptc = clrz._grs.rotate(randrange(0, 360), expand=True)\r
+ if self._value == "golf_course":\r
+ ptc = clrz._baseimg.rotate(randrange(0, 360), expand=True)\r
tmp_layer.alpha_composite(ptc, (xp,yp))\r
\r
# Add the seamless border\r
brd = Image.open(mstr_datafolder + "textures/" + self._tag + "/" + self._value + "/brd.png")\r
brd_clrz = mstr_colorizer(brd)\r
- tmp_layer.alpha_composite(brd_clrz._grs)\r
+ if self._value != "golf_course":\r
+ tmp_layer.alpha_composite(brd_clrz._baseimg)\r
+ else:\r
+ tmp_layer.alpha_composite(brd_clrz._grs)\r
\r
- tmp_layer.putalpha(51)\r
+ if self._value != "golf_course":\r
+ tmp_layer.putalpha(51)\r
+ \r
layer.alpha_composite(tmp_layer)\r
mstr_msg("layergen", "Layer image generated")\r
\r
\r
# Add a white-ish border around pitches\r
if self._tag == "leisure" and self._value == "pitch":\r
- pitch_edge = osm_edge\r
- pitch_edge = pitch_edge.filter(ImageFilter.GaussianBlur(radius=0.5))\r
+ pitch_edge = mask.filter(ImageFilter.FIND_EDGES)\r
pitch_mask = pitch_edge.load()\r
\r
# ImageOps.invert does not like RGBA images for inversion. So I need to do it.\r
\r
# Generate an edge mask from the original\r
osm_edge = mask.filter(ImageFilter.FIND_EDGES)\r
- osm_edge = osm_edge.filter(ImageFilter.MaxFilter)\r
+ #osm_edge = osm_edge.filter(ImageFilter.MaxFilter)\r
mstr_msg("layergen", "Edge mask generated")\r
\r
# As above, we will apply the blur as noted in the defines\r
if self._tag == "natural" and self._value == "tree_row":\r
trees = Image.new("RGBA", (self._imgsize, self._imgsize))\r
treespx = trees.load()\r
- for t in range(80001):\r
+ for t in range(450001):\r
lx = randrange(self._imgsize)\r
ly = randrange(self._imgsize)\r
a = mask_pix[lx,ly]\r
# Find a suitable color\r
w = randrange(125, 156)\r
a=mask_pix[x,y]\r
- layer_comp_pix[x, y] = ( w,w,w,a[3] )\r
+ layer_comp_pix[x, y] = ( w,w,w,int(a[3]/3) )\r
\r
if self._tag == "highway" and self._value == "residential":\r
osm_edge = mask.filter(ImageFilter.FIND_EDGES)\r
if tp[3] > 0:\r
rndshd = randrange(5, 210)\r
sc = (0, 0, 0, rndshd)\r
- if x + 8 < self._imgsize and y + 5 < self._imgsize:\r
- shadow_pix[x + 8, y + 5] = sc\r
+ spx = 8\r
+ spy = 5\r
+ if self._zoomlevel == 16:\r
+ spx = 2\r
+ spy = 1\r
+ if x + spx < self._imgsize and y + spy < self._imgsize:\r
+ shadow_pix[x + spx, y + spy] = sc\r
tree_shadow = tree_shadow.filter(ImageFilter.GaussianBlur(radius=2))\r
tree_shadow.alpha_composite(trees)\r
\r
nrmimg.alpha_composite(wtrimg)\r
\r
# Save\r
- nrmfln = mstr_datafolder + "z_orthographic/normals/" + self._latlngfld + "/" + str(self._ty) + "_" + str(\r
- self._tx) + ".png"\r
+ nrmfln = mstr_datafolder + "z_orthographic/normals/" + self._latlngfld + "/" + str(self._ty) + "_" + str(self._tx) + ".png"\r
nrmimg.save(nrmfln)\r
\r
\r
if tp[3] > 0:\r
rndshd = randrange(5, 210)\r
sc = (0, 0, 0, rndshd)\r
- if x + 8 < self._imgsize and y + 5 < self._imgsize:\r
- shadow_pix[x + 8, y + 5] = sc\r
+ spx = 8\r
+ spy = 5\r
+ if self._zoomlevel == 16:\r
+ spx = 2\r
+ spy = 1\r
+ if x + spx < self._imgsize and y + spy < self._imgsize:\r
+ shadow_pix[x + spx, y + spy] = sc\r
tree_shadow = tree_shadow.filter(ImageFilter.GaussianBlur(radius=2))\r
tree_shadow.alpha_composite(trees)\r
self._tile.alpha_composite(tree_shadow)\r