diff --git a/main.py b/main.py index abad2a8..de5b841 100644 --- a/main.py +++ b/main.py @@ -26,13 +26,13 @@ def main(): abs(buildArea.begin.z - buildArea.end.z) / 2) length_world = sqrt((center[0]*2) ** 2 + (center[1]*2) ** 2) - # remove_trees('./world_maker/data/heightmap.png', './world_maker/data/treemap.png', - # './world_maker/data/smooth_sobel_watermap.png') - # smooth_terrain('./world_maker/data/heightmap.png', - # './world_maker/data/heightmap_smooth.png', './world_maker/data/smooth_sobel_watermap.png') + remove_trees('./world_maker/data/heightmap.png', './world_maker/data/treemap.png', + './world_maker/data/smooth_sobel_watermap.png') + smooth_terrain('./world_maker/data/heightmap.png', + './world_maker/data/heightmap_smooth.png', './world_maker/data/smooth_sobel_watermap.png') - # set_roads(skeleton_highway, origin) - # set_roads(skeleton_mountain, origin) + set_roads(skeleton_highway, origin) + set_roads(skeleton_mountain, origin) # set_roads_grids(road_grid, origin) # roads.setRoads(skeleton_mountain) # roads.setRoads(skeleton_highway) diff --git a/world_maker/data/building.png b/world_maker/data/building.png index 4a17fac..4ffaac2 100644 Binary files a/world_maker/data/building.png and b/world_maker/data/building.png differ diff --git a/world_maker/data/building_moutain.png b/world_maker/data/building_moutain.png index f368aea..7c30565 100644 Binary files a/world_maker/data/building_moutain.png and b/world_maker/data/building_moutain.png differ diff --git a/world_maker/data/city_map.png b/world_maker/data/city_map.png index db0f628..34a7571 100644 Binary files a/world_maker/data/city_map.png and b/world_maker/data/city_map.png differ diff --git a/world_maker/data/district.png b/world_maker/data/district.png index 38652dd..c460326 100644 Binary files a/world_maker/data/district.png and b/world_maker/data/district.png differ diff --git a/world_maker/data/heightmap_smooth.png b/world_maker/data/heightmap_smooth.png index 1991fef..92e2b39 100644 Binary files a/world_maker/data/heightmap_smooth.png and b/world_maker/data/heightmap_smooth.png differ diff --git a/world_maker/data/heightmap_with_building.png b/world_maker/data/heightmap_with_building.png index e13f0e4..850e459 100644 Binary files a/world_maker/data/heightmap_with_building.png and b/world_maker/data/heightmap_with_building.png differ diff --git a/world_maker/data/highwaymap.png b/world_maker/data/highwaymap.png index f26666c..4c78943 100644 Binary files a/world_maker/data/highwaymap.png and b/world_maker/data/highwaymap.png differ diff --git a/world_maker/data/mountain_map.png b/world_maker/data/mountain_map.png index 8b8acd3..1e3ac10 100644 Binary files a/world_maker/data/mountain_map.png and b/world_maker/data/mountain_map.png differ diff --git a/world_maker/data/roadmap.png b/world_maker/data/roadmap.png index 2fca289..9a5a76a 100644 Binary files a/world_maker/data/roadmap.png and b/world_maker/data/roadmap.png differ diff --git a/world_maker/data/skeleton_highway.png b/world_maker/data/skeleton_highway.png index 0b985de..11b0921 100644 Binary files a/world_maker/data/skeleton_highway.png and b/world_maker/data/skeleton_highway.png differ diff --git a/world_maker/data/skeleton_highway_area.png b/world_maker/data/skeleton_highway_area.png index 7847491..5c956b2 100644 Binary files a/world_maker/data/skeleton_highway_area.png and b/world_maker/data/skeleton_highway_area.png differ diff --git a/world_maker/data/skeleton_mountain.png b/world_maker/data/skeleton_mountain.png index 7fe9f8f..f29fdd2 100644 Binary files a/world_maker/data/skeleton_mountain.png and b/world_maker/data/skeleton_mountain.png differ diff --git a/world_maker/data/skeleton_mountain_area.png b/world_maker/data/skeleton_mountain_area.png index f72239c..339319d 100644 Binary files a/world_maker/data/skeleton_mountain_area.png and b/world_maker/data/skeleton_mountain_area.png differ diff --git a/world_maker/data_analysis.py b/world_maker/data_analysis.py index c7180d7..6118acd 100644 --- a/world_maker/data_analysis.py +++ b/world_maker/data_analysis.py @@ -229,19 +229,50 @@ def highway_map() -> Image.Image: negative_smooth_sobel_water = subtract_map( negative_smooth_sobel, './world_maker/data/watermap.png') array_sobel_water = np.array(negative_smooth_sobel_water) + + # Remove details array_sobel_water = ndimage.binary_erosion( - array_sobel_water, iterations=12) + array_sobel_water, iterations=5) + + # Smooth non buildable area + array_sobel_water = filter_negative( + filter_smooth_array(np.array(filter_negative(array_sobel_water)), 2)) + array_sobel_water = np.array(array_sobel_water) + + # Propagate buildable area array_sobel_water = ndimage.binary_dilation( array_sobel_water, iterations=5) - array_sobel_water = filter_smooth_array(array_sobel_water, 5) + + # Smooth buildable area + array_sobel_water = filter_smooth_array(array_sobel_water, 2) + array_sobel_water = np.array(array_sobel_water) + + # Smooth non buildable area + array_sobel_water = filter_negative( + filter_smooth_array(np.array(filter_negative(array_sobel_water)), 1)) + array_sobel_water = np.array(array_sobel_water) + + # Erode buildable area array_sobel_water = ndimage.binary_erosion( - array_sobel_water, iterations=20) - array_sobel_water = filter_smooth_array(array_sobel_water, 6) + array_sobel_water, iterations=12) + + # Dilate buildable area + array_sobel_water = ndimage.binary_dilation( + array_sobel_water, iterations=7) + + # Smooth buildable area + array_sobel_water = filter_smooth_array(array_sobel_water, 20) + array_sobel_water = np.array(array_sobel_water) + image = Image.fromarray(array_sobel_water) - image_no_details = filter_remove_details(image, 15) - image_no_details.save('./world_maker/data/highwaymap.png') + image.save('./world_maker/data/smooth_for_highway.png') + + # Remove details + # image_no_details = filter_remove_details(image, 10) + # image_no_details.save('./world_maker/data/highwaymap.png') + print("[Data Analysis] Highway map generated.") - return image_no_details + return image def create_volume(surface: np.ndarray, heightmap: np.ndarray, make_it_flat: bool = False) -> np.ndarray: diff --git a/world_maker/world_maker.py b/world_maker/world_maker.py index a108feb..6d536d0 100644 --- a/world_maker/world_maker.py +++ b/world_maker/world_maker.py @@ -9,10 +9,10 @@ from world_maker.pack_rectangle import generate_building def world_maker(): - # world = World() - # heightmap, watermap, treemap = get_data(world) + world = World() + heightmap, watermap, treemap = get_data(world) - heightmap, watermap, treemap = get_data_no_update() + # heightmap, watermap, treemap = get_data_no_update() filter_sobel( "./world_maker/data/heightmap.png").save('./world_maker/data/sobelmap.png')