mypro334 发表于 2023-2-3 11:04

VoxelGeneral

技术解读

基于unity平台,使用Brust编译器的体素建模插件。
体素引擎


体素引擎是一种尝试模拟原子的软件。每个原子或“体素”都占据一个定义的空间并具有特定的属性。
体素最基本的属性是固体或非固体。这些还可以包含其他值以定义其他属性,例如颜色或材料。每个体素的属性都非常适合应用程序的要求,因为内存需求是巨大的。
最常见的样本是(一个成功的游戏)。这些块可以使用各种工具雕刻。当然有许多用例,例如游戏,但也包括任何体积数据集的可视化,例如计算机断层扫描。
引擎开发原理


1.实现数据结构:稀疏八叉树,每当修改体素时,细分和合并体素,减少内存消耗。
2.可视化系统:检查数据结构是否有效,使用立方体进行构造。
3.体素的修改:简单的工具进行修改体素数据,例如碰撞去除。
4.体素的优化:多线程,Brust和ECS。C#的unsafe。float的精度误差。算法对模型平滑。
软件及功能简介


1.无限世界生成。
2.切片扫描的图片直接生成体素模型。
3.网格,地形直接生成体素模型。
4.多个体素模块叠加。
5.灵活的实时修改。
6.多个贴图支持。
7.不受渲染管线影响,全平台兼容。
8.灵活的加载和保存系统。
限制


1.体素分层限制,正常不应该超过32层,会带来很大的锯齿。
2.消除锯齿需要平滑算法,设置边缘体素块的大小。插件自带有算法,还未研究。
2.运行电脑的内存应大于4G。
3.32位电脑运行Brust有兼容性问题。
代码解析

VoxelGeneral


体素生成主要组成部分,为体素数据提供层次和的数据结构。
--VoxelSize:体素块的物理尺寸,占据的空间。蓝色方块表示,不接收负值,1-100是理想的性能。
--InitialValue:新生成块的初始值。255表示实心,0表示空心。真正值取决于附加的Hull Generators
--Depth:深度是体积。深度越,体素变得越。
--Subdivision Power:定义了底层数据结构的布局(等于3时候具有最佳的内存/性能比)。
--Dimension Count:体素成器具有第四维度。如果此值于 1,则 Voxel Generator 将同时管理多个 Voxel Data。第维总是来描述哪些区域是实的。附加维度是隐藏的,除船体成器将附加维度于某些恶作剧,例如多纹理持,其中第个维度描述材料类型。
--Rebuild():重新成外壳成器。
--SetVoxels()/SetvoxelsAdditive():提供直接或以附加式修改体素的直接功能。基本参数通常是局部位置、标深度和ID。
--SetRegionsDirty():将区域标记为脏,因此必须更新视觉效果。
--SetNeighbor(int ID, VoxelGenerator generator):将体素成器与另个体素成器连接起来。 ID是位置,0为左
下前,26为右上后。
VoxelSaveSystem


提供于保存体积数据集的选项,并在保存场景本时动保存体素数据。
--ApplyRawVoxelData:将 RawVoxelData 应于标 VoxelGenerator。
--DynamicLoad():在不中断游戏玩法的情况下从任何来源加载任何体素贴图的实时法。可以在加载期间修改 VoxelGenerator,但在加载完成之前抑制外壳成器。
--DynamicSave():不会导致性能峰值的实时保存选项。将体素贴图作为进制件保存到持久数据路径中,应在不中断游戏玩法的情况下调。 VoxelGenerators 在保存过程中被锁定。
--Load():加载体素数据并重建VoxelGenerator。
--Save():即保存体素数据。 (导致性能飙升)。
VoxelModifier


修改体素的主要具。该脚本允许在编辑模式下进绘画,并提供其他功能来修改数据集。
--TargetDimension:修改的维度,标准为0。最终取决于Hull生成器。大于0可以用于温度,适度,压力等。
--Depth:修改的目标分辨率,大小。
--VoxelModifyPosition是于修改程序定位的组件。例场景 Marching
Cubes 包含个使此类组件的雪成器 GameObject。
ColliderToVoxel


--Tolerance:公差,体素离碰撞器多近才能转化为实体。
--Falloffdist:定义距离不够近时的强度衰减。大的值会导致急剧衰减,是结果块状,理想在1000,10000之间,可以创建平滑的结果。
--FinalMultiplier:是一个乘法器,值为负时材料会被移除。
页: [1]
查看完整版本: VoxelGeneral