]> marstr Code Repo - marstr/orthographic.git/commitdiff
Corrections to patch generation code for some features
authorMarcus Str. <marcus@marstr.online>
Wed, 18 Dec 2024 08:57:24 +0000 (09:57 +0100)
committerMarcus Str. <marcus@marstr.online>
Wed, 18 Dec 2024 08:57:24 +0000 (09:57 +0100)
layergen.py
photogen.py

index 9a34beebdfd8d3fcf3244dd2d5dc29c610ec87f7..fc2db4ec117606dd1f3805f3223411e370ee429c 100644 (file)
@@ -159,8 +159,7 @@ class mstr_layergen:
             for line in file:\r
                 linedata = line.split(" ")\r
                 if linedata[0] == self._tag and linedata[1] == self._value:\r
-                    src = linedata[2].split(",")\r
-                    contrast = src[4]\r
+                    contrast = int(linedata[4])\r
 \r
         return contrast\r
 \r
@@ -295,6 +294,8 @@ class mstr_layergen:
 \r
             # Find this layer's predetermined contrast\r
             lyr_contrast = self.findLayerContrast()\r
+            if lyr_contrast != 0:\r
+                mstr_msg("layergen", "Applying contrast value: " + str(lyr_contrast))\r
 \r
             # Should this not exist yet, we need to create it\r
             #if os.path.isfile(gensrc_ptc) == False:\r
@@ -376,18 +377,18 @@ class mstr_layergen:
                     self._tag == "landuse" and self._value == "residential"):\r
                 amt = randrange(2, 9)\r
                 masks = glob.glob(mstr_datafolder + "textures/tile/completion/*.png")\r
+                patchtags = [\r
+                    ["landuse", "meadow"],\r
+                    ["landuse", "grass"],\r
+                    ["natural", "heath"],\r
+                    ["natural", "scrub"]\r
+                ]\r
                 for i in range(1, amt + 1):\r
                     pick = randrange(0, len(masks))\r
                     patchmask = Image.open(masks[pick])\r
+                    patchmask = patchmask.rotate(randrange(0, 360), expand=True)\r
                     patchpix = patchmask.load()\r
                     # Pick from possible tags and values for the patches\r
-                    patchtags = [\r
-                        ["landuse", "meadow"],\r
-                        ["landuse", "grass"],\r
-                        ["natural", "heath"],\r
-                        ["natural", "scrub"]\r
-                    ]\r
-\r
                     numbers = list(range(1, 16))\r
                     src = random.sample(numbers, 5)\r
 \r
@@ -411,7 +412,7 @@ class mstr_layergen:
                                 nc = ( oc[0], oc[1], oc[2], ptc_msk[3] )\r
                                 lp_pix[x,y] = nc\r
 \r
-                    layerpatch = layerpatch.rotate(randrange(0, 360), expand=True)\r
+                    #layerpatch = layerpatch.rotate(randrange(0, 360), expand=True)\r
 \r
                     lx = randrange(self._imgsize - layerpatch.width)\r
                     ly = randrange(self._imgsize - layerpatch.height)\r
@@ -546,17 +547,17 @@ class mstr_layergen:
                             d = randrange(41, 61)\r
                             layer_comp_pix[x, y] = ( d,d,d,a[3] )\r
                         if self._tag == "highway" and self._value != "motorway":\r
-                            d = randrange(0, 36)\r
-                            dr = 90+d\r
-                            dg = 90+d\r
-                            db = 95+d\r
+                            d = randrange(0, 6)\r
+                            dr = 80+d\r
+                            dg = 80+d\r
+                            db = 85+d\r
                             da = a[3]\r
                             layer_comp_pix[x, y] = ( dr,dg,db,da )\r
                         if self._tag == "highway" and self._value == "motorway":\r
-                            d = randrange(0, 36)\r
-                            dr = 57+d\r
-                            dg = 68+d\r
-                            db = 70+d\r
+                            d = randrange(0, 46)\r
+                            dr = 47+d\r
+                            dg = 58+d\r
+                            db = 60+d\r
                             layer_comp_pix[x, y] = ( dr,dg,db,a[3] )\r
                         if self._tag == "highway" and (self._value == "footway" or self._value == "track" or self._value == "path"):\r
                             dr = randrange(158, 183)\r
@@ -690,7 +691,7 @@ class mstr_layergen:
             ptc_src = []\r
 \r
             # Find this layer's predetermined contrast\r
-            lyr_contrast = self.findLayerContrast()\r
+            lyr_contrast = randrange(1, 4)\r
 \r
             rg = mstr_resourcegen(self._tag, self._value, src)\r
             rg.setLayerContrast(int(lyr_contrast))\r
index 2a8cb5e4e9c03d97528849da1953cea8c13589f9..ce2decf617f3fcc83a393d287e3d531747b29160 100644 (file)
@@ -1,6 +1,7 @@
 \r
 import os\r
 from PIL import Image, ImageFilter, ImageEnhance, ImageFile\r
+\r
 from defines import *\r
 from layergen import *\r
 from log import *\r
@@ -92,40 +93,42 @@ class mstr_photogen:
                 if c < len(cpl)-1:\r
                     cplstr = cplstr + "_"\r
 \r
-            # Should this not exist yet, we need to create it\r
-            rg = mstr_resourcegen("landuse", "meadow", cpl)\r
-            rg.setLayerContrast(randrange(1,4))\r
-            ptcimg = rg.gensource()\r
-\r
-            ptc_src = [ptcimg[0]]\r
-            samples = 250  # <- We need this in a moment\r
-            for i in range(samples):\r
-                imgid = 0\r
-                if len(ptc_src) == 1: imgid = 0\r
-                l = 0 - int(ptc_src[imgid].width / 2)\r
-                r = cmpl.width - int(ptc_src[imgid].width / 2)\r
-                t = 0 - int(ptc_src[imgid].height / 2)\r
-                b = cmpl.height - int(ptc_src[imgid].height / 2)\r
-                cmpl.alpha_composite(ptc_src[imgid], (randrange(l, r), randrange(t, b)))\r
-\r
-            brd_img = ptcimg[1]\r
-            cmpl.alpha_composite(brd_img)\r
+            # Find the right color catalogue\r
+            cpl_catalog = 0\r
+            for c in range(len(mstr_completion_colors)):\r
+                if mstr_completion_colors[c][0] == edn:\r
+                    cpl_catalog = c\r
+\r
+            # Put in some pixels\r
+            cmpl_bg = Image.new("RGBA", (self._tile.width, self._tile.height))\r
+            cmpl_pix = cmpl_bg.load()\r
+            for y in range(0, self._tile.height):\r
+                for x in range(0, self._tile.width):\r
+                    idx = randrange(0, len(mstr_completion_colors[cpl_catalog][1]))\r
+                    clr = mstr_completion_colors[cpl_catalog][1][idx]\r
+                    cmpl_pix[x,y] = clr\r
+            cmpl_bg = ImageEnhance.Contrast(cmpl_bg).enhance(0.8)\r
+            cmpl_bg = cmpl_bg.filter(ImageFilter.GaussianBlur(radius=1))\r
+            cmpl_bg.alpha_composite(self._tile)\r
+            self._tile = cmpl_bg\r
 \r
             # Patches to add from other sources. If they don't exist, we also need to make them\r
             masks = glob.glob(mstr_datafolder + "textures/tile/completion/*.png")\r
             amt = randrange(5, 16)\r
+            patchtags = [\r
+                ["landuse", "meadow"],\r
+                ["landuse", "grass"],\r
+                ["natural", "heath"],\r
+                ["natural", "scrub"]\r
+            ]\r
+\r
             for i in range(1, amt + 1):\r
                 pick = randrange(0, len(masks))\r
                 patchmask = Image.open(masks[pick])\r
+                patchmask = patchmask.rotate(randrange(0, 360), expand=True)\r
                 patchpix = patchmask.load()\r
-                # Pick from possible tags and values for the patches\r
-                patchtags = [\r
-                    ["landuse", "meadow"],\r
-                    ["landuse", "grass"],\r
-                    ["natural", "heath"],\r
-                    ["natural", "scrub"]\r
-                ]\r
 \r
+                # Pick from possible tags and values for the patches\r
                 numbers = list(range(1, 16))\r
                 src = random.sample(numbers, 5)\r
 \r
@@ -149,10 +152,10 @@ class mstr_photogen:
                             nc = (oc[0], oc[1], oc[2], ptc_msk[3])\r
                             lp_pix[x, y] = nc\r
 \r
-                layerpatch = layerpatch.rotate(randrange(0, 360), expand=True)\r
+                #layerpatch = layerpatch.rotate(randrange(0, 360), expand=True)\r
 \r
-                lx = randrange(self._imgsize - layerpatch.width)\r
-                ly = randrange(self._imgsize - layerpatch.height)\r
+                lx = randrange(0, self._imgsize - layerpatch.width)\r
+                ly = randrange(0, self._imgsize - layerpatch.height)\r
                 cmpl.alpha_composite(layerpatch, (lx, ly))\r
 \r
             # Merge the images\r