9 releases
0.3.4 | Dec 24, 2023 |
---|---|
0.3.3 | Jul 15, 2023 |
0.3.2 | Jan 22, 2023 |
0.2.4 | Apr 14, 2022 |
0.2.2 | Feb 26, 2022 |
#160 in Images
25 downloads per month
40KB
439 lines
minetest-worldmapper
A multi-threaded mapper for Minetest with node transparency support.
It generates a view of the world from above, rendering one pixel per voxel.
This project is currently tested on Linux only. If you have Windows and it doesn't work, please file a bug report. But if you have another OS and it does not work, please report also a bug.
Example picture
Usage
First, compile the project with cargo:
cargo build --release
Command-line arguments
Then, call the executable target/release/minetest-worldmapper
with the three required arguments:
Option | Short | Description |
---|---|---|
--world | -w | The directory of the world to render. |
--config | -c | The config file. The format should follow the config format. |
--output | -o | The image file which the map should be rendered to. |
Logging
Via the RUST_LOG
environment variable, you can choose one out of the log levels trace
, debug
, info
, warn
, and error
. The default is error
.
Example usage
minetest-worldmapper --world TestWorld/ --config config.example.toml --output map.png
Example usage with logging
RUST_LOG=debug minetest-worldmapper --world TestWorld/ --config config.example.toml --output map.png
Config file
If a voxel is rendered and its color are entirely determined by the config file, which is based on TOML. An example config file is part of this repo. Its main purpose is to map the voxel content to colors.
Config option | Type | Description |
---|---|---|
sufficient_alpha |
Integer | (optional, defaults to 230 ) When determining a pixel's color, stop going through transparent nodes when reaching this opacity value. Between 0 and 255. |
background_color |
String | Hex color string; either in the format "rrggbb" (full opacity) or "rrggbbaa" (color with alpha value). Serves as a fallback color if all voxels for a given pixel are exhausted and there is transparency left. |
hillshading.enabled |
Boolean | (optional, defaults to true ) Enables terrain relief visualisation. |
hillshading.min_alpha |
Integer | (optional, defaults to 128 ) At which alpha value a node counts as "terrain" |
node_colors |
Table | Maps node itemstrings to color strings (which have the same format as background_color ). Every node not listed here is treated like air. |
Minimal config example
background_color = "888888"
[node_colors]
"default:water_source" = "00228888"
Current limitations
- LevelDB is not supported as backend.
- Only map chunks with map format version 29 (the current) are supported.
Reading Minetest worlds with Rust
The crate minetestworld is the basis for this renderer.
Dependencies
~19–31MB
~465K SLoC