这似乎是唯一可以使我的项目长期运行的体素插件,但我不明白如何使用它。
据我了解,我必须在存储库中使用这个 python 工具将 MagicaVoxel 模型转换为插件可用的一些 .png。 它有以下评论:
使用方法:
将 Vox 导出为切片格式,然后将 PNG 文件重命名为 *Slice.png
将 Vox 导出为 obj 格式,然后将生成的 PNG 文件重命名为 *Palette.png
运行此脚本(通过不带参数运行来查看用法)
因此,通过 MagicaVoxel 导出为这些格式,我可以获得这两个文件。问题是...
这是该 python 工具的示例用法:
Example: {sys.argv[0]} Vox/Slice.png Vox/Palette.png Texture/Voxel.png Texture/Model.png 64 80 48
它还需要 Voxel.png 和 Model.png 文件。我怎样才能得到这些?
不仅如此,我还尝试将占位符图像输入到工具中,以便满足所有参数,并且我之前导出的 Slice.png 文件在第二个断言语句中失败了:
slices: np.ndarray = cv2.imread(slices_path, cv2.IMREAD_UNCHANGED)
assert slices is not None, f"Failed to load slices: {slices_path}"
assert slices.shape == (height * depth, width, 4)
我相信这意味着我的 Slice.png 不能被 16 整除?因为我认为该工具要求您的模型的尺寸可以被 16 整除。但是我的模型的尺寸可以被 16 整除。
从阅读代码来看...忽略注释和输出,它们都是错误的。
命令行参数在此处读取:
slices_path, palette_path, voxels_path, model_path, width, height, depth = sys.argv[1:]
我将用它作为参考来解释参数是什么:
slices_path
:输入切片图像的路径(例如Slice.png)。palette_path
:输入调色板图像的路径(例如Palette.png)。voxels_path
:输出体素图像的保存路径(例如Voxel.png)。model_path
:输出模型图像的保存路径(例如Model.png)。width
:体素数据的宽度。height
:体素数据的高度。depth
:体素数据的深度。我将继续更详细地解释它们:
slices_path
的大小必须为height * depth
乘width
,并且具有4个通道(RGBA)。这是用这个断言检查的:
assert slices.shape == (height * depth, width, 4)
同时
palette_path
必须是由 1
组成的 256
像素带,并且具有 3 个通道 (RGB):
assert palette.shape == (1, 256, 3)
重申
voxels_path
和 model_path
是输出。如果一切顺利,程序应该创建这些文件。
最后
width
、height
和 depth
必须是 16 的倍数。用以下几行检查:
assert width % 16 == 0
assert height % 16 == 0
assert depth % 16 == 0
因此,典型的用法应该如下所示:
vox_to_images.py Slices.png Palette.png Voxels.png Model.png 64 80 48