参考本文:
viewvox窗口操作和binvox命令参数
.binvox文件
binvox是一种体素文件的格式,比较省空间。
可以用python进行读写。参考ShapeNet简介和下载、binvox文件python示例
可视化可以在线用这个工具:
https://raahii.github.io/simple_voxel_viewer/index.html
binvox软件: 3D模型生成体素
- binvox是一个可执行程序
- 输入obj,plt 等格式的三维几何形状,输出binvox等格式的体素文件。
- 支持windows,mac,linux端。
- 直接下载就能用,才1368K。然后直接在命令行使用。方便的话可以配个全局变量
- 命令行输入:binvox,可显示各参数的说明
官网:
https://www.patrickmin.com/binvox/
https://www.patrickmin.com/minecraft/
binvox命令使用
下载可执行文件,就叫binvox,没有后缀。
用法:
binvox -d 256 proposal_22_mesh.ply
binvox[-d<体素维度>][-t<体素文件类型>][-c][-v]<文件路径>
-license:显示软件许可证
-d:指定体素网格大小(默认256,最大512)
-t:指定体素文件类型(默认binvox,也支持:hips、mira、vtk、raw、schematic、msh、nrrd)
-c:z-buffer based carving method only(仅基于z缓冲区的雕刻方法(?))
-dc:扩展雕刻,在相交前停止雕刻1个体素
-v:z-buffer based parity voting method only(仅限基于z缓冲区的奇偶校验投票方法(?))(默认同时使用-c和-v)
-e:精确体素化(设置与凸多边形相交的任何体素)(不使用图形卡graphics card)
其他参数:
-bb:强制使用不同的输入模型边界框
-ri:移除内部体素
-cb:将模型放置于单位立方体内部中心位置
-rotx:在体素化之前,将对象绕x轴逆时针旋转90度
-rotz:在体素化之前,将对象围绕z轴顺时针旋转90度
-rotx和-rotz可以多次使用
-nf:使用标准化因子(默认值1.0)
-aw: 在线框图中渲染模型(有助于处理薄零件)
-fit:仅在体素边界框中写入体素
-bi:转换为原理图时,使用块id
-mb:使用-e从.obj转换时。obj到原理图,从材料规格“usemtl blockid_uId>”解析块ID(仅允许ID范围1-255)
-down:将每个维度中的体素向下采样2倍(可多次使用)
-dmin:when downsampling, destination voxel is on if >= source voxels are (default 4)(下采样时,如果大于等于源体素为(默认值4),则目标体素处于启用状态(?))
支持的三维模型文件格式:
VRML v2.0: 几乎完全支持
UG、OBJ、OFF、DXF、XGL、POV、BREP、PLY、JOT:仅支持多边形
viewbox工具: 体素文件交互可视化
viewbox是.binvox,MIRA,nrrd等体素文件的交互可视化工具。
跟binvox一样,也是在刚才的官网下载,才几百K。配个环境变量就可以直接用,不配也可以在其所在路径下直接用。
用法:
viewvox [-ki] <model filename>
参数说明:
-ki: keep internal voxels (removed by default)
Mouse left button = rotate
middle = pan
right = zoom
Key r = reset view
arrow keys = move 1 voxel step along x (left, right) or y (up, down)
=,- = move 1 voxel step along z
q = quit
a = toggle alternating colours
p = toggle between orthographic and perspective projection
u = set z axis up
x, y, z = set camera looking down X, Y, or Z axis
X, Y, Z = set camera looking up X, Y, or Z axis
1 = toggle show x, y, and z coordinates
s = show single slice
n = show both/above/below slice neighbour(s)
t = toggle neighbour transparency
j = move slice down
k = move slice up
G = toggle show grid
g = toggle show grid at slice level
Alt + g = change grid orientation
在线体素交互可视化
可视化可以在线用这个工具:
https://raahii.github.io/simple_voxel_viewer/index.html
python
脚本:binvox_rw.py 和 voxels.py
可以从github上搜索RfDNet,在external中获得相关脚本和代码
脚本的用法:
读取binvox文件为numpy 数组
import os
import numpy as np
from external import binvox_rw,voxels
root_path = os.path.join("datasets","ShapeNetv2_data","voxel","16")
voxel_file = os.path.join("datasets","ShapeNetv2_data","voxel","16","03001627","1006be65e7bc937e9141f9b58470d646.binvox")
with open(voxel_file, 'rb') as f:
voxels = binvox_rw.read_as_3d_array(f)
voxels = voxels.data.astype(np.float32)
print(voxels.shape)
写binvox文件
略