135 lines
4.1 KiB
Markdown
135 lines
4.1 KiB
Markdown
# Examples
|
|
|
|
[![asciicast](https://asciinema.org/a/fbcP4hsWvLXYnLyDbkwhEGQaH.svg)](https://asciinema.org/a/fbcP4hsWvLXYnLyDbkwhEGQaH)
|
|
|
|
## Level of detail (LOD)
|
|
|
|
Generate a lod scaled by 50% from the input model.
|
|
|
|
`./vengi-voxconvert -s --input infile.vox --output output.vox`
|
|
|
|
## Import 2d image as volume
|
|
|
|
Imports a 2d image and applies depth to it.
|
|
|
|
`./vengi-voxconvert --image-as-volume --image-as-volume-max-depth 8 --image-as-volume-both-sides true --input infile.png --output output.vox`
|
|
|
|
Import given input image as volume. Uses a depth map to make a volume out of the image. The depth map R channel is using values from 0 (black) to white (255) resulting in voxel heights from 1 to max-height (see `--image-as-volume-max-depth`).
|
|
|
|
The `--input` with e.g. `infile.png` will pick the depth map next to the image path called `infile-dm.png` as depth map.
|
|
|
|
## Merge several models
|
|
|
|
Merge several models into one:
|
|
|
|
`./vengi-voxconvert --input one.vox --input two.vox --output onetwo.vox`
|
|
|
|
## Voxelize an obj, gltf, ply or stl file
|
|
|
|
Voxelize an obj and save as magicavoxel (including colors):
|
|
|
|
> You are getting better results if you create a palette from your textures first.
|
|
>
|
|
> This can be done by reducing the color to 256 and import that reduced image in
|
|
> [voxedit](../voxedit/Index.md) as palette.
|
|
>
|
|
> For obj the mtl file must be in the same dir as the obj files, as well as the
|
|
> potential textures.
|
|
>
|
|
> glTF is supported both in ascii and binary - but the satelite files must also
|
|
> reside in the same dir as the `glb` or `gltf` file.
|
|
|
|
`./vengi-voxconvert -set voxformat_scale 2 -set palette /path/to/palette.png --input mesh.obj --output voxels.vox`
|
|
|
|
> See the [supported formats](Formats.md) for a few more details.
|
|
|
|
## Generate from heightmap
|
|
|
|
Just specify the heightmap as input file like this:
|
|
|
|
`./vengi-voxconvert --input heightmap.png --output outfile.vox`
|
|
|
|
## Translate the voxels
|
|
|
|
You can translate the voxels in the world like this:
|
|
|
|
`./vengi-voxconvert --translate 0:10:0 --input heightmap.png --output outfile.vox`
|
|
|
|
This would move the voxels 10 units upwards. But keep in mind that not every format supports
|
|
to store a translation offset.
|
|
|
|
## Execute lua script
|
|
|
|
Use the `--script` parameter:
|
|
|
|
`./vengi-voxconvert --script "cover 2" --input infile.vox --output outfile.vox`
|
|
|
|
This is executing the script in `./scripts/cover.lua` with a parameter of `2`.
|
|
|
|
`./vengi-voxconvert --script "./scripts/cover.lua 2" --input infile.vox --output outfile.vox`
|
|
|
|
This is doing exactly the same as above - just with a full path.
|
|
|
|
See the [scripting](../LUAScript.md) documentation for further details.
|
|
|
|
## Extract palette png
|
|
|
|
Saves the png in the same dir as the vox file:
|
|
|
|
`./vengi-voxconvert --export-palette --input infile.vox --output outfile.vox`
|
|
|
|
There will be an `infile.png` now.
|
|
|
|
## Extract single layers
|
|
|
|
Extract just a few layers from the input file.
|
|
|
|
`./vengi-voxconvert --filter 1-2,4 --input infile.vox --output outfile.vox`
|
|
|
|
This will export layers 1, 2 and 4.
|
|
|
|
## Convert to mesh
|
|
|
|
You can export your volume model into a obj or ply.
|
|
|
|
`./vengi-voxconvert --input infile.vox --output outfile.obj`
|
|
|
|
## Batch convert
|
|
|
|
To convert a complete directory of e.g. `*.vox` to `*.obj` files, you can use e.g. the bash like this:
|
|
|
|
### Bash (Linux, OSX)
|
|
|
|
> Beware - no whitespaces in files
|
|
|
|
```bash
|
|
for i in *.vox; do vengi-voxconvert --input "$i" --output "${i%.vox}.obj"; done
|
|
```
|
|
|
|
```bash
|
|
for i in *.vxm; do vengi-voxconvert --input "$i" --output "${i%.vxm}.gltf" done
|
|
```
|
|
|
|
### PowerShell (Windows)
|
|
|
|
> https://docs.microsoft.com/en-us/powershell/scripting/learn/ps101/06-flow-control?view=powershell-7.2
|
|
|
|
An example for the windows powershell to extract single layers into a new model
|
|
|
|
```ps
|
|
$array = "1-2,5", "1-2,7"
|
|
foreach ($i in $array){
|
|
./vengi-voxconvert --filter $i --input "input.vox" --output "output_$i.vxm"
|
|
}
|
|
```
|
|
|
|
### Batch file (Windows)
|
|
|
|
> https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/for
|
|
|
|
Windows batch (or `cmd.exe`) example to convert all png in the current directory into magicavoxel vox files.
|
|
|
|
```cmd
|
|
for %f in (*.png) do call vengi-voxconvert --input "%~f" --output "%~nf.vox"
|
|
```
|