diff --git a/world_maker/District.py b/world_maker/District.py index 61080c9..a6e7628 100644 --- a/world_maker/District.py +++ b/world_maker/District.py @@ -128,7 +128,7 @@ class District: return road return None - def generate_roads(self, map_data, random_range=(20, 40)): + def generate_roads(self, map_data, random_range=(40, 50)): width = {0: self.center_expend.x} height = {0: self.center_expend.y} self.roads_expend = [Road(self.center_expend, 0, 0)] diff --git a/world_maker/data_analysis.py b/world_maker/data_analysis.py index 29a9671..ea71f65 100644 --- a/world_maker/data_analysis.py +++ b/world_maker/data_analysis.py @@ -274,12 +274,15 @@ def skeleton_mountain_map(image: str | Image.Image = './world_maker/data/mountai return skeleton -def smooth_sobel_water() -> Image.Image: +def smooth_sobel_water(image: str | Image.Image = "./world_maker/data/sobelmap.png") -> Image.Image: watermap = handle_import_image("./world_maker/data/watermap.png") watermap = filter_negative( filter_remove_details(filter_negative(watermap), 5)) - sobel = handle_import_image("./world_maker/data/sobelmap.png") - sobel = filter_remove_details(filter_smooth_theshold(sobel, 1), 2) + sobel = handle_import_image(image) + sobel = filter_remove_details(filter_smooth_theshold(sobel, 1), 5) + sobel_array = np.array(filter_negative(sobel)) + sobel_array = ndimage.binary_dilation(sobel_array, iterations=3) + sobel = filter_negative(Image.fromarray(sobel_array)) group = group_map(watermap, sobel) group = filter_negative(group) group.save('./world_maker/data/smooth_sobel_watermap.png') diff --git a/world_maker/world_maker.py b/world_maker/world_maker.py index 2e5a7ca..471f4d3 100644 --- a/world_maker/world_maker.py +++ b/world_maker/world_maker.py @@ -1,7 +1,7 @@ from world_maker.World import World from PIL import Image from world_maker.data_analysis import (get_data, filter_negative, rectangle_2D_to_3D, skeleton_mountain_map, highway_map, filter_sobel, skeleton_highway_map, - smooth_sobel_water, subtract_map, detect_mountain, filter_smooth, overide_map) + smooth_sobel_water, subtract_map, detect_mountain, filter_smooth, overide_map, filter_remove_details) from world_maker.City import City from world_maker.Position import Position from random import randint @@ -12,10 +12,14 @@ def world_maker(): world = World() heightmap, watermap, treemap = get_data(world) + heightmap_smooth = filter_smooth(heightmap, 4) + heightmap_smooth.save('./world_maker/data/heightmap_smooth.png') + filter_sobel( "./world_maker/data/heightmap.png").save('./world_maker/data/sobelmap.png') + filter_sobel(heightmap_smooth).save('./world_maker/data/sobelmap_from_smooth.png') - smooth_sobel_water_map = smooth_sobel_water() + smooth_sobel_water_map = smooth_sobel_water('./world_maker/data/sobelmap_from_smooth.png') skeleton_highway = skeleton_highway_map(highway_map()) city = City() @@ -27,6 +31,7 @@ def world_maker(): image_mountain_map = city.get_district_mountain_map() road = city.draw_roads(4) road.save('./world_maker/data/roadmap.png') + subtract_map(smooth_sobel_water_map, road).save( './world_maker/data/city_map.png') subtract_map('./world_maker/data/city_map.png',