jeheydorn / nortantis

Nortantis is a fantasy map generator. It uses a simple tectonic plate simulation to create islands and continents with trees, rivers, and mountains. The result has the appearance of an old-fashioned hand-drawn map.
GNU Affero General Public License v3.0
70 stars 19 forks source link

Feature Proposal: import map from image #11

Open chevyinasia opened 1 year ago

chevyinasia commented 1 year ago

Excellent tool Nortantis team!

I have to say, the ability to paint visually pleasing mountain ranges in strokes rather than placing stamps individually is such a timesaver.

My feature proposal would be to import a map from an image and load it in the editor.

Basic implementation: read a black & white 16:9 image, treat black as landmasses and white/transparent as ocean/water, paint the polygons accordingly, and throw it into the editor. Being able to start with bare landmasses with predetermined shapes would save even more time.

Enhanced implementation: read a b&w image as a heightmap (such as the heightmap exported by Nortantis), paint landmasses and add the various types of hills and mountains accordingly, and open it for editing. There's some overlap in visual weight between round mountains, twisty hills, and sharp hills so maybe the type could be randomized at that height.

Exhaustive implementation: import images for heightmap and placement of each region/type, lakes, cities, or if no heightmap, swaths for the different types of hills and mountains, then paint the polygons etc. etc. Simpler to import them one at a time for each region/icon, but a unified import screen where the user could add each "layer" and select its region/icon context would be pretty cool. Only slightly more value over the basic landmass import as each layer would have to be prepared separately. Would only benefit overly fussy and fiddly mapmakers like myself.

Also, it would be cool if there were fjords for shorelines. I've got them at the northern and southern extrema on my current world map.

jeheydorn commented 1 year ago

I appreciate your interest in Nortantis, but I am actually the only developer on this project, and right now I have other things I need to focus my time on. Nortantis is just a side project for me. So this feature, even though I'm sure it would be useful for people who want to import their map from another program, might not happen, at least not in the near future. I have a long list of things like that which I can't afford to much time on now.

If we did build this, one difficult point would be how to convey to the user that the actual shape of the landmass they end up importing would depend on not only the heightmap, but also the randomly generated polygon structure. In other words, it wouldn't be very precise, and the coastlines wouldn't match the heightmap exactly. In theory, Nortantis could shape the polygons to exactly match the coastline of the height map, but I don't like that idea because those polygons would retain that shape when edited later, even if someone later moved the coastlines.

chevyinasia commented 1 year ago

Understood this is a side project. Still pretty badass for something built in spare time.

I was thinking more along the lines of treating the supplied landmass/heightmap images as "hints" for Nortantis and letting it do its thing. Creators can touch up afterward. Precise shape matching would be super elegant, but overkill. I'm not suggesting an overhaul of the polygon logic. Just best-fit with the randomly generated polygons would be enough, like sampling the pixel at the center of each polygon to decide whether or not to place a region/icon. I'd be looking forward to "happy accidents".

As for communicating limitations to the user, you just said it right there.

I have a proposal for a super minimalist implementation: Capability to use an image, like an existing map or sketch, as a guide. The image is scaled to fit the map canvas and displayed with transparency. No processing or automation, just a visual reference for the user. Controls would be show/hide and possibly selectable transparency level (0, 25, 50, 75). Also, an option to start the editor with a blank map (not that it's any significant to clear the map after loading a random one).

jeheydorn commented 1 year ago

Thanks. I agree that's possible and not terribly difficult to implement (although I'm not committing to anything). It would require a new algorithm to create regions, since those are based on tectonic plates for randomly generated maps. But other than that, the generator could decide the placement of mountains, hills, trees, rivers, and cities, based on the terrain as it does now.

It would be nice if a height map exported from Nortantis which was then imported resulted in the same randomly generated map, but I don't think that's possible with the way my exported height maps work. They have added fine-grained detail that would throw off the elevation of the polygons just enough that there would be differences. That and there is rounding error, plus when doing the import you would have to choose the correct world size and random seed for terrain.

By the way, in case you didn't notice, there is a tool in the editor to clear the entire map so that you don't have to do it by hand with a brush. It's in the Edit menu.

On Mon, May 15, 2023, 10:03 PM chevyinasia @.***> wrote:

Understood this is a side project. Still pretty badass for something built in spare time.

I was thinking more along the lines of treating the supplied landmass/heightmap images as "hints" for Nortantis and letting it do its thing. Creators can touch up afterward. Precise shape matching would be super elegant, but overkill. I'm not suggesting an overhaul of the polygon logic. Just best-fit with the randomly generated polygons would be enough, like sampling the pixel at the center of each polygon to decide whether or not to place a region/icon. I'd be looking forward to "happy accidents".

As for communicating limitations to the user, you just said it right there.

I have a proposal for a super minimalist implementation: Capability to use an image, like an existing map or sketch, as a guide. The image is scaled to fit the map canvas and displayed with transparency. No processing or automation, just a visual reference for the user. Controls would be show/hide and possibly selectable transparency level (0, 25, 50, 75). Also, an option to start the editor with a blank map (not that it's any significant to clear the map after loading a random one).

— Reply to this email directly, view it on GitHub https://github.com/jeheydorn/nortantis/issues/11#issuecomment-1548946592, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABY34KKULZHBUMPCNUXCNWTXGL4BBANCNFSM6AAAAAAYBBBVY4 . You are receiving this because you commented.Message ID: @.***>

sleingor commented 6 months ago

Hello. I have a very nerve-wracking situation. I am trying to save the map in image format and it shows this error. I don't know how to fight it. The worst thing is that this problem occurs ONLY when using a political map, not a monochrome map. изображение_2023-12-11_232122442

jeheydorn commented 6 months ago

That error tells me that another error happened in a background thread, so we'll have to dig in deeper. You're using the export as image workflow, right? If so, before opening that workflow, open the log viewer window in Nortantis. It's hidden in the lower left corner of the main window as a collapsed section. Click and drag it up to make it visible. Then export to image again, and then send me the contents of that log viewer window by copy pasting it's contents.

If you're willing to send me an email, it would also help to send your nort file to @.***

On Mon, Dec 11, 2023, 1:21 PM sleingor @.***> wrote:

Hello. I have a very nerve-wracking situation. I am trying to save the map in image format and it shows this error. I don't know how to fight it. The worst thing is that this problem occurs ONLY when using a political map, not a monochrome map. _2023-12-11_232122442.png (view on web) https://github.com/jeheydorn/nortantis/assets/119521646/1fd0cd18-fafb-47dc-a535-fe9279dc9021

— Reply to this email directly, view it on GitHub https://github.com/jeheydorn/nortantis/issues/11#issuecomment-1850827643, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABY34KLZVCUNPHFTPXWTV53YI5TNFAVCNFSM6AAAAAAYBBBVY6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNJQHAZDONRUGM . You are receiving this because you commented.Message ID: @.***>