binvox, viewbox:体素文件与工具

参考本文:
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文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值