自从 Minecraft 和 Cube World 等游戏流行后,体素风格引起了越来越多人的关注。有别于传统以三角网格表现的立体世界,体素风格不仅仅是一种新的 3D 视觉表现形式,也为开发者建构游戏世界提供了新的可行方式。使用体素风格能够避免传统三角网格3D游戏开发中可能遇到的许多问题,但也会迎来一些新的挑战,比如,不确定哪一款建模工具适合用于体素风格。今天介绍的开源软件 Magica Voxel 就是一款能够在 Window 和 Mac 平台使用,功能全面、界面美观的体素模型编辑器。
Magica Voxel 是一款自由软件,使用完全免费,可以用于任何开源或商业项目,无需任何额外的授权。
演示视频
效果展示
编辑界面则如下:
.VOX 格式简单说明
本工具的模型文件使用类似 RIFF 的自定义格式 .VOX
。
模型文件中的数据以继承的块状结构组织,文件头部如下:
4 bytes : magic number ( 'V' 'O' 'X' 'space' ) 4 bytes : version number ( current version is 150 ) { MAIN chunk } ( all the magic number used here is big endian, for example, 'M''A''I''N', M is at 0 bytes, N is at 3 bytes )
每一个数据块则像下面这样:
// chunk { // header 4 bytes : chunk id 4 bytes : size of chunk contents ( n ) 4 bytes : total size of children chunks ( m ) // chunk content n bytes : chunk contents // children chunks : m bytes { child chunk 0 } { child chunk 1 } ... } ( so the total chunk size is 4 + 4 + 4 + n + m )
在主干的数据块内还会有若干个子数据块:
MAIN chunk : id : ( 'M' 'A' 'I' 'N' ) ------------------------------------------------- SIZE chunk : id : ( 'S' 'I' 'Z' 'E' ) content : ( 4 bytes x 3 : x, y, z ) VOXEL chunk : id : ( 'X' 'Y' 'Z' 'I' ) content : ( numVoxels : 4 bytes ) ( each voxel : 1 byte x 4 : x, y, z, colorIndex ) x numVoxels // 注意 : // 1. 如果调色盘数据块不存在,则使用默认的调色盘; // 2. 放在最末的颜色不会使用(只使用头 255 种颜色); // 3. 第一种颜色(位置为0)绑定到颜色索引 1 上。 PALETTE chunk (optional) : id : ( 'R' 'G' 'B' 'A' ) content : ( each pixel : 1 byte x 4 : r, g, b, a ) x 256
如果需要配色信息,可以先将调色盘导出为 .act
文件,然后从中读取颜色。
- 注意第一个有效颜色对应的体素目录为 1(因为 0 留作表示空体素方块了);
.act
文件中第一个有效颜色的位置为 0(因此最后一个颜色不会被使用)。
.act :( each pixel : 1 byte x 3 : r, g, b ) x 256
注意:
在老的模型中有时会保留一些无用的数据块,忽视它们就好。
命令行功能
除了通过图形界面控制外,Magica Voxel 也提供了一些命令行功能。
按下 TAB
可以激活或输入命令。
按下 Enter
来输入命令。
按下 UP/DOWN
来选择历史命令。
命令格式 | 命令描述 | 示例 |
---|---|---|
rand [min max] | 使用以指定范围内数字为索引的随机颜色为模型上色 | rand 10 15 |
flood [colorIndex] | 当 colorIndex == 0 时, 移除所有不可见的体素方块 | flood 0 |
或者,用 colorIndex 填充所有不可见的空间 | flood 73 | |
noise [seed scale min max] | 默认值: scale = 0.03 min = 0.2 max = 0.5 | noise 123 0.03 0.2 0.5 |
pal mask | 屏蔽所有未使用的调色盘 | |
pal fill [index] | 使用所选中的颜色索引填充调色盘 | pal fill 100 |
pal bw/mac | 生成灰度或默认的 mac 调色盘 | pal bw |
dil [axis] | 膨胀 | dil +z (仅限正方向), dil xyz (正负皆可) |
ero [axis] | 镂空 | ero +z-yx (z为正, y为负, x 正负皆可) |
maze [edge length] | 生成迷宫 | maze 8 |
o [file type] | 导出模型 | o obj |
odir [file type] | 导出当前模型列表中显示的所有模型 | odir obj |
xs [shader name] [arg0] [arg1] ... | 执行自定义的体素渲染效果 [shader/] | xs poly 5 |
xs [numIterations] [shader name] [arg0] [arg1] ... | 执行自定义的体素渲染效果 [shader/] 多次迭代执行 | xs 10 dil |
纪念碑谷风格的最棒了。
最近由 至尊小夜猫 修改于:2016-06-08 23:11:53非常感谢推荐,十分棒而且便携的软件
Unity能不能直接导入.vox格式文件?
导出为 obj 就可以导出到unity了,不过貌似应该remove doubles处理一下顶点。在blender里面可以看到大量重复顶点,不过如果每个顶点的uv坐标不一样,最终应该还是有多个顶点吧
软件太棒了,可以PS画完后直接导入进去,接着建模。
这个软件可以做骨骼动画么
这东西好顶赞,简直666啊