]> marstr Code Repo - marstr/orthographic.git/commitdiff
Corrections to amount of small trees and their shadow rendering. Test of render succe...
authorMarcus Str. <marcus@marstr.online>
Mon, 27 Jan 2025 20:56:59 +0000 (21:56 +0100)
committerMarcus Str. <marcus@marstr.online>
Mon, 27 Jan 2025 20:56:59 +0000 (21:56 +0100)
defines.py
layergen.py
photogen.py

index 36aa7ce6ddc2fbbc8e892bf47ba9a6d5ceebcfd7..733a5059b8e9b2e825f6a40448c738e43c61894a 100644 (file)
@@ -74,12 +74,12 @@ mstr_xp_genscenery = True
 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
index 60c6d33630c90e0898ff725413b6ba440df515be..59f3a3b61f0be0b75cc1491750a4ac8b5104a309 100644 (file)
@@ -377,7 +377,10 @@ class mstr_layergen:
             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
@@ -386,15 +389,23 @@ class mstr_layergen:
             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
@@ -442,8 +453,7 @@ class mstr_layergen:
 \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
@@ -509,7 +519,7 @@ class mstr_layergen:
 \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
@@ -587,7 +597,7 @@ class mstr_layergen:
             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
@@ -614,7 +624,7 @@ class mstr_layergen:
                             # 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
@@ -802,8 +812,13 @@ class mstr_layergen:
                         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
index df328993d7378373b8e35dbced58d8a19340079b..d503e5b0bb4957ea086fa5dd0b5ed68843154520 100644 (file)
@@ -238,8 +238,7 @@ class mstr_photogen:
             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
@@ -403,8 +402,13 @@ class mstr_photogen:
                         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