请记住,体素只是一个概念。处理它们作为数据的方法有几种,可视化它们的方法也有几种(提取几何形状,射线投射等)。它是固定间隔网格中的数据点,仅此而已。这一点代表什么或者你将哪个几何原语与之关联,完全取决于实现。人们通常将它们可视化为占据固定空间网格中整个单元格的立方体,这就是你将它们与立方体相关联的原因。最著名/流行的基于体素的应用程序Minecraft使用标准光栅化管道将它们可视化为以网格为中心的立方体。像GigaVoxels这样的(学术)系统对稀疏体素八叉树结构进行射线追踪以生成图像。我遇到了以下面向体素的库: stb_voxel: 一种可能是编写体素渲染器的最低门槛方式。单头文件包含。https://github.com/nothings/stb/blob/master/stb_voxel_render.h Field3D: 索尼图片库用于存储体素数据的库:http://opensource.imageworks.com/?p=field3d OpenVDB: Dreamworks工作室发布的新格式:http://www.openvdb.org/index.html Polyvox: 用于多个游戏,正在积极开发中:http://www.volumesoffun.com/polyvox-download/ VoxelIQ: 基于块的C#游戏引擎 - https://github.com/raistlinthewiz/voxeliq GigaVoxels: 用于体素的射线引导流式传输库 - http://gigavoxels.imag.fr/ Binvox: 不是一个库,但是它是一个带有基本二进制体素数据定义的体素化器:http://www.cs.princeton.edu/~min/binvox/ VoxelFarm: 用于生成程序化体素地形的引擎:http://www.voxelfarm.com/vfweb/engine.html cuda_voxelizer: 将多边形模型转换为体素模型的工具,输出到各种格式:https://github.com/Forceflow/cuda_voxelizer 这里有一篇Reddit帖子,包含20年的体素引擎代码:https://www.reddit.com/r/VoxelGameDev/comments/3fvjb4/20_years_of_voxel_engines_source_code_included/
我参与开发一个现代的体素库,名为PolyVox,它提供了体积存储(包括分页)、表面提取以及其他辅助功能,如光线投射和环境遮蔽计算。虽然它不是游戏引擎,但提供了所有需要插入到其他任何东西中的体素内容。它完全开源,并且有一个良好的开发者社区。在论坛上,人们总是愿意回答关于体素渲染等一般性问题。
这完全取决于实现和执行。我希望这些可以帮助您追求所需的内容。然而,我找到了一个链接,可能会有用。 Field3D - 一个用于存储体素数据的开源库。它提供处理内存存储的C++类,以及基于HDF5的文件格式,允许C++对象轻松地从磁盘写入和读取。(此外) Minetest - 开源游戏,与Minecraft非常相似。 Voxel Article - 图形化解释了什么是体素。