2.4 KiB
2.4 KiB
VolumeFieldLoader
命名空间: XCEngine::Resources
类型: class
头文件: XCEngine/Resources/Volume/VolumeFieldLoader.h
源文件: engine/src/Resources/Volume/VolumeFieldLoader.cpp
描述: VolumeField 资源加载器,负责识别 source .nvdb 与 artifact .xcvol 路径,并把它们统一转换成 VolumeField 资源对象。
概览
VolumeFieldLoader 当前承载两条正式加载路径:
.xcvol- 读取引擎自己的体积 artifact 格式。
.nvdb- 在启用
XCENGINE_HAS_NANOVDB时直接读取 NanoVDB source 文件。
- 在启用
因此它既是运行时加载器,也是 AssetDatabase 体积导入链路的核心入口。
当前加载模型
GetSupportedExtensions()当前返回nvdb和xcvol。CanLoad(...)只按扩展名判定,不预先验证文件存在。- 相对路径会先尝试当前路径;若不存在,再回退到
ResourceManager::Get().GetResourceRoot()。 .xcvol路径会读取VolumeFieldArtifactHeader,要求:magic == "XCVOL02"- schema 版本匹配
payloadSize > 0
.nvdb路径在支持 NanoVDB 时会读取 grid metadata,并回填:boundsvoxelSizeindexBoundsgridTypegridClass
当前实现边界
- 未启用
XCENGINE_HAS_NANOVDB时,source.nvdb会返回NanoVDB source-file support is unavailable in this build。 GetDefaultSettings()当前固定返回nullptr,说明这条导入链路暂时没有独立的 volume import settings 对象。- 当前 loader 通过
REGISTER_RESOURCE_LOADER(VolumeFieldLoader)注册到资源系统。
测试与真实调用点
tests/Resources/Volume/test_volume_field_loader.cpp- 覆盖
GetResourceType - 覆盖
CanLoad - 覆盖无效路径加载
- 覆盖直接读取 NanoVDB source payload
- 覆盖
AssetDatabase生成与复用.xcvolartifact - 覆盖按
AssetRef回读项目体积资源
- 覆盖
engine/src/Core/Asset/AssetDatabase.cpp- 当前通过
VolumeFieldLoader导入项目体积资源并写出.xcvol
- 当前通过
engine/src/Core/Asset/ResourceManager.cpp- 当前会注册这条 loader