Very nice. It works well but it would be nice to have the option to change the texture file. I use the ExtrabiomesXL mod and the added blocks from that show up as black spots everywhere, so if I could change the texture file I could probably fix that.
New version, please see the original post for a download link.
Blocks can now differ in color by biome, with and optional comma-separated list of biome ids between the block ids and the color code in Blocks.txt. Also now you can generate a color-coded biome map instead of the normal terrain map. Use Biomes.txt to alter the colors used for that.
Please see the changelog for further details. Thank you.
New version, please see op for download link. The changes are updated colors thanks to Neutrino, and a new command line utility, TopographerCMD.exe, in addition to the normal graphical interface in TopographerUI.exe.
TopographerCMD --help
Usage: TopographerCMD [OPTIONS] -i [DIRECTORY] -o [FILE]
Examples:
TopographerCMD /l 90 /h+ /t- -input /World1/DIM-1/region -output nether.png
TopographerCMD -map=biomes -r 270 -i /World1/region -o World1.biomes.png
TopographerCMD -x "8,9,78,79" --crop- -i /World1/region -o dry.png
Options:
-i, --input=VALUE Path to directory containing *.mca region files.
Can be relative to .minecraft/saves/.
-o, --output=VALUE Path including file name for where the output
png will be saved.
-m, --map=VALUE "terrain" to generate a terrain map or "biomes"
to generate a color-coded biome map instead.
Default: "terrain".
-u, --upper=VALUE Only render the world below this elevation,
between 0 and 255. Default: 255.
-l, --lower=VALUE Only render the world down to this elevation,
between 0 and 255. Default: 0.
-b, --biome Whether blocks such as grass should have their
color vary based on biome. Default: enabled. Use
-b+ to enable or -b- to disable.
-h, --height Whether colors should be made lighter or darker
based on elevation. Default: enabled. Use -h+ to
enable or -h- to disable.
-t, --transparency Whether areas beneath blocks such as water or
glass should be visible. Default: enabled. Use -
t+ to enable or -t- to disable.
-n, --only=VALUE A comma separated list of block ids that will be
the only type(s) of blocks rendered.
-x, --exclude=VALUE A comma separated list of block ids that will
not be rendered.
-r, --rotate=VALUE How much the resulting map should be rotated.
Valid values are 0, 90, 180, and 270. Default: 0.
-c, --crop If empty portions along the edges of the map
should be cropped. Default: enabled. Use -c+ to
enable or -c- to disable.
-y, --less-memory Generate the map in such a way that less memory
is used, however cropping and rotating isn't
supported. May be necessary for worlds with 100s
of regions. Default: enabled. Use -y+ to enable
or -y- to disable.
-d, --dry-run If parameters should be parsed and any errors
reported without actually doing anything.
-?, --help Display this help message.
-v, --version Display version information.
I appreciate the suggestions. Beyond force filling my first Minecraft world with biomes from beta 1.7, I don't actually need either of these programs, though they have certainly been interesting to create and maintain. Suggestions from the people actually using them have been instrumental in developing both to where they are now. You and others suggest features that are obvious in hindsight but I never would have thought of by myself.
With every feature request I weigh how difficult it would be to implement, how much time it would take, how useful the feature would be, and since these are just side projects in my spare time, whether or not I would get bored doing it.
So suggestions are great! I just can't promise I'll act on any of them until I'm saying "here's a new version that implements whatever suggestion."
New version, see original post for download link. Changes:
New options:
Crop output image.
Rotate output image.
Only render certain block ids.
Exclude certain block ids from being rendered.
Some command line options were renamed/reorganized to support new options. Anything passing arguments to TopographerCMD my break until refactored.
Also I've played with the colors further. Previous versions of Blocks.txt can be found at https://github.com/m...pher/Blocks.txt (click Browse code in the bottom left corner of a revision to view the complete file).
Cool, finally a mapper that is up to date and just does top down maps instead of all the isometric maps.
Although, I have been trying to render a 3.15 GB map from my server, so what I have been doing is copying the server file into single player and then trying to render that map, I then let it process the 900 regions I have, and I've seen it get through 700 regions, but I can't seem to get a map from the program, it will always error out before it finishes/when it finishes
Cool, finally a mapper that is up to date and just does top down maps instead of all the isometric maps.
Although, I have been trying to render a 3.15 GB map from my server, so what I have been doing is copying the server file into single player and then trying to render that map, I then let it process the 900 regions I have, and I've seen it get through 700 regions, but I can't seem to get a map from the program, it will always error out before it finishes/when it finishes
I leave my computer to render (it takes several hours) and when I come back it says it has read 900 of 900 regions, although the windows 7 popup that says a program has stopped working is there and it tells me that TopographerUI has crashed
It gave me 3 files that stopped working in the program, although I didn't save what they were, so now I'm rendering the map again so I can post them
Minimap mods can't give you image files, they also cant capture your entire map.
-----------
Alright, I ran the render and the program crashed again, this is the error message I got in the "send error report" screen on windows 7:
Files that help describe the problem:
C:\Users\(myname)\AppData\Local\Temp\WER9370.tmp.WERInternalMetadata.xml
C:\Users\(myname)\AppData\Local\Temp\WERB0EF.tmp.appcompat.txt
C:\Users\(myname)\AppData\Local\Temp\WERB15D.tmp.mdmp
Flat world spawn like in normal minecraft, but with two options: Select the height of the ground (1-256) and also select the block(s) the ground is made of (like for example: 64 high map, 1-3: bedrock, 4-60: Sandstone, 61-64: sand, all flat). I would be really grateful if you did something like that.
This program reads an existing Minecraft world and generates an image, an overhead map. It doesn't generate new Minecraft worlds, sorry.
I think that is quite funny, McTwist, because I think that my suggestion would do exactly the same thing as your first exaple!
So yes, I think this is the way to go.
Your second one seems to need the bottom-up method for colour calculation, it should have the same result, but it needs to start right at the bottom, where either the first non-transparent block or the void is. It does then the same backward, what the first example does foreward. Could also be used.
// Interpolate two colors, bottom-up transparency color mixing
void Color::Interpolate(const Color & color)
{
n=(double)color.a;
r = COLOR((1.0f-n)*(double)r + n*(double)color.r);
g = COLOR((1.0f-n)*(double)g + n*(double)color.g);
b = COLOR((1.0f-n)*(double)b + n*(double)color.B)
a = a + (1-a)*n
}
alpha hurts my brain...
Once again, I don't know, if my syntax is right and I don't understand every aspect of the c++ -like code.
I thought at first that your suggestions algorithm was like what I posted. There's minor changes, but they almost looks the same. Also, the interpolation method is only when merging pixels close to each other ,and not on top of each other. This means that one pixel can be changed by up to four blocks, depending on if the blocks are transparent or not. How you're using it is found here:
// Set multiple pixels to the image
void Image::SetPixels(double dx, double dy, Color pixel)
{
using namespace std;
UINT x = 0, y = 0;
double fx = 0, fy = 0;
{
double xx, yy;
fx = modf(dx, &xx);
fy = modf(dy, &yy);
x = (UINT)xx;
y = (UINT)yy;
}
// No need
if (fx == 0 && fy == 0)
return SetPixel(x, y, pixel);
if (x < 0) return;
if (y < 0) return;
if (x >= width) return;
if (y >= height) return;
double d = 0;
double tx = 1 - fx, ty = 1 - fy;
// 0,0
d = sqrt((fx * fx) + (fy * fy));
if (d < 1)
data[x + y*width].Interpolate(pixel, 1-d);
bool xPlus = x+1 < width;
bool yPlus = y+1 < height;
// 0,1
if (fx > 0 && xPlus)
{
d = sqrt((tx * tx) + (fy * fy));
if (d < 1)
data[(x+1) + y*width].Interpolate(pixel, 1-d);
}
// 1,0
if (fy > 0 && yPlus)
{
d = sqrt((fx * fx) + (ty * ty));
if (d < 1)
data[x + (y+1)*width].Interpolate(pixel, 1-d);
}
// 1,1
if (fx > 0 && fy > 0 && xPlus && yPlus)
{
d = sqrt((tx * tx) + (ty * ty));
if (d < 1)
data[(x+1) + (y+1)*width].Interpolate(pixel, 1-d);
}
}
Could it be that Topographer runs out of memory?
How are the pixel color values stored in ram, while it renders?
If they are stored as an uncompressed bitmap with 1 byte in each channel, it results in a memory consumption of:
number of regions * chunks per region * pixel per chunk * bytes per pixel
900*32²*16²*4 B=943 MB
This is the minimum RAM usage for rendering this map.
if the variable for each channel is not type byte, but 16bit integer, it results in double the amount. In 32bit systems, 2 GB is the RAM limit for any program.
So this is a problem which could be avoided by using a cache (which I suggested here, before Topographer was created: http://www.minecraft...st__p__14176238).
Glueing the cached images together would need to use one row of region images in ram, because (if I'm correct) pngs can only be saved row by row.
@lazyboy007
Please explain us first, what this tool does. If you don't know, read the first page and then explain it. Then make your suggestion again .
That might be the problem, although it seems to get to 900 regions out of 900 regions before it gives me the error, although maybe it only errors once it then tries to create the map?
So @31stCenturyMatt
Do you know what is going on? And are there any files I can send you to help you get this fixed?
The error is when creating the huge image that the chunks are saved to, which probably is a lot bigger than all regions together. This results in that it will crash, no matter what you do.
The error is when creating the huge image that the chunks are saved to, which probably is a lot bigger than all regions together. This results in that it will crash, no matter what you do.
Is there a way to fix this/ some other program that doesn't have that problem?
Is there a way to fix this/ some other program that doesn't have that problem?
I've uploaded a new version, 0.4.1, check the original post for a download link. It should allow you to render your 900 region world. Though this isn't a permanent solution, worlds much bigger than that will run back into the same problem. From the changelog:
All memory for final image allocated at the start. Halves the amount of memory previously needed at the end to combine the image parts into the final output. If the program is going to run out of memory it should happen nearly immediately. Not a permanent solution, but should allow larger worlds approaching 1000 regions to be rendered and saved properly.
TopographerUI.exe provides a graphical user interface while TopographerCMD.exe
provides a command line interface.
Examples:
http://i.imgur.com/WYYa7.png
http://i.imgur.com/3IsUq.png
Download
Topographer requires the .NET Framework 4.0 (Client Profile) to run and has only been tested on Windows.
Topographer 0.4.2, April 27, 2012 (direct link)
All binary downloads can be found at https://github.com/m...apher/downloads.
License
Please view LICENSE.txt at https://github.com/m...ter/LICENSE.txt.
Changelog
Please view CHANGELOG.txt at https://github.com/m...r/CHANGELOG.txt.
Source
The source for Topographer is available at https://github.com/mblaine/Topographer.
Blocks can now differ in color by biome, with and optional comma-separated list of biome ids between the block ids and the color code in Blocks.txt. Also now you can generate a color-coded biome map instead of the normal terrain map. Use Biomes.txt to alter the colors used for that.
Please see the changelog for further details. Thank you.
TopographerCMD --help
With every feature request I weigh how difficult it would be to implement, how much time it would take, how useful the feature would be, and since these are just side projects in my spare time, whether or not I would get bored doing it.
So suggestions are great! I just can't promise I'll act on any of them until I'm saying "here's a new version that implements whatever suggestion."
Although, I have been trying to render a 3.15 GB map from my server, so what I have been doing is copying the server file into single player and then trying to render that map, I then let it process the 900 regions I have, and I've seen it get through 700 regions, but I can't seem to get a map from the program, it will always error out before it finishes/when it finishes
What's the error, is a message displayed?
I'm sorry I don't understand what you mean, could you explain that again? I appreciate it, thank you.
There is also one for interpolation, which is somewhat easier to implement:
Help me help you.
I leave my computer to render (it takes several hours) and when I come back it says it has read 900 of 900 regions, although the windows 7 popup that says a program has stopped working is there and it tells me that TopographerUI has crashed
It gave me 3 files that stopped working in the program, although I didn't save what they were, so now I'm rendering the map again so I can post them
Minimap mods can't give you image files, they also cant capture your entire map.
-----------
Alright, I ran the render and the program crashed again, this is the error message I got in the "send error report" screen on windows 7:
Files that help describe the problem:
C:\Users\(myname)\AppData\Local\Temp\WER9370.tmp.WERInternalMetadata.xml
C:\Users\(myname)\AppData\Local\Temp\WERB0EF.tmp.appcompat.txt
C:\Users\(myname)\AppData\Local\Temp\WERB15D.tmp.mdmp
Read our privacy statement online:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409
If the online privacy statement is not available, please read our privacy statement offline:
C:\Windows\system32\en-US\erofflps.txt
This program reads an existing Minecraft world and generates an image, an overhead map. It doesn't generate new Minecraft worlds, sorry.
I thought at first that your suggestions algorithm was like what I posted. There's minor changes, but they almost looks the same. Also, the interpolation method is only when merging pixels close to each other ,and not on top of each other. This means that one pixel can be changed by up to four blocks, depending on if the blocks are transparent or not. How you're using it is found here:
Help me help you.
That might be the problem, although it seems to get to 900 regions out of 900 regions before it gives me the error, although maybe it only errors once it then tries to create the map?
So @31stCenturyMatt
Do you know what is going on? And are there any files I can send you to help you get this fixed?
Help me help you.
Is there a way to fix this/ some other program that doesn't have that problem?
http://www.minecraftwiki.net/wiki/Programs_and_editors/Mapping#Mappers
Have a look. However, I cannot guarantee that they'll work.
Help me help you.
I've uploaded a new version, 0.4.1, check the original post for a download link. It should allow you to render your 900 region world. Though this isn't a permanent solution, worlds much bigger than that will run back into the same problem. From the changelog: