mrkite/minutor

Allow render coordinates to be out of bound of existing terrain.

MajsterTynek opened this issue · 8 comments

I want to map out areas in a known boundary that has a specific shape.
I don't like that when renders constantly change their size as this makes comparisons difficult.

Additional suggestions:

  • Option/parameter for expanding render to region size (in 512x512 tiles)
  • Option/parameter support for coordinates like in *.mca file names.
  • Option/parameter for rendering each region into a separate tile.
    (should it allow different sizes?)

If I understand your suggestions correctly, it is already supported. Maybe not the way you like, but possible.
Have you checked: https://github.com/mrkite/minutor/wiki/Command-Line

  • You can export "any" bounds you want. (Yes, it is limited to Chunk boundaries.)
  • You are free to use any filename you like. Different names will result in multiple files.

But to get what you want you may have to wrap several calls to Minutor in a script file. This script can loop over the regions you want, calculate the bounds and call Minutor --save xyz.png. I'm doing that for my worlds.

I have mixed up everything, but still, I meant for both console and GUI versions of Minutor.
I mostly meant the GUI as it gets stuck when using arrows and cannot type in more or gets reverted to min/max.
Like a button/switch for expanding coordinates to full region tiles, when render occurs (without changing inputs?)

Also, I don't like calculating region boundaries manually, thus asking for support of this kind.
For example, if we input 1,2 - 4,5, it will multiply internally by 512, and add 511 to the right-bottom one.

Well, I do use scripts myself, but starting it up every time for 40k+ times takes time and system resources.
If Minutor supported the export of regions tiles, it would ease work for others, including myself.
(+updating only if modified? checking timestamps? compare existing png with mca?)

Personally, I am thinkering on GUI for wdl previews, so I could compare world snapshots.
I am sorry I am overthinking everything. ¯\_(ツ)_/¯

Understood, in the save GUI some margin beyond the current world border sound reasonable. It is a limitation that is not present on the command line. But some limit is also useful, so maybe the next region boundary is really a good choice. Should be something to be added with low effort.

A GUI tick box to automatically extend to next region border is also feasible.
At the moment it is silently using Chunk borders.

You wrote 40k+ times. That means your world is 100kx100k Blocks large, 200x200 region files, approximately 200 GByte of storage. But for that scale I understand your ideas.
It is possible to export a larger image (in one step) and than tile it by an image manipulation program (I use ImageMagick for that task). If you have chosen region boundaries during export and tile in 512x512 it should be quite fast and easy. Only 1 call for Minutor export and the rest is simple and fast image manipulation.

I assume that you want to update the rendered tiles when the underlying region file changes, which to me sounds more like a scriptable task - "compare file timestamps, if newer, use Minutor to update the tile". For this, you do really need to start multiple instances or Minutor needs to implement some form of commandline batch processing, but I'd venture a guess that starting multiple instances at that point doesn't hurt performance that bad, since the executable is already cached by the OS wherever possible.

I added some of your ideas to a new branch

  • export GUI allows now values to the next Region boundary
  • there is a selection option to snap to Chunks (like before) or Regions (your wish)
  • this selection is stored in the settings and preserves its state

Some testing is still necessary, especially corner cases.

@MajsterTynek is the added functionality solving what you expected with this Issue?
Then we could close it.

The missing topics (defining names for tiles, restrict to only changed tiles, ...) is stuff that can easily be done via external scripting. I think it is not the right approach to add "scripting support" into a GUI application.
But if you describe some more scenarios in detail, we can change the command line interface or add some more stuff that helps there.

I forgor 💀

Just post anything related here, I will get noticed even on closed Issues.
Or create new Issues when you find something new.