Files
XCEngine/docs/api/XCEngine/Resources/Volume/VolumeFieldLoader/VolumeFieldLoader.md

2.4 KiB
Raw Blame History

VolumeFieldLoader

命名空间: XCEngine::Resources

类型: class

头文件: XCEngine/Resources/Volume/VolumeFieldLoader.h

源文件: engine/src/Resources/Volume/VolumeFieldLoader.cpp

描述: VolumeField 资源加载器,负责识别 source .nvdb 与 artifact .xcvol 路径,并把它们统一转换成 VolumeField 资源对象。

概览

VolumeFieldLoader 当前承载两条正式加载路径:

  1. .xcvol
    • 读取引擎自己的体积 artifact 格式。
  2. .nvdb
    • 在启用 XCENGINE_HAS_NANOVDB 时直接读取 NanoVDB source 文件。

因此它既是运行时加载器,也是 AssetDatabase 体积导入链路的核心入口。

当前加载模型

  • GetSupportedExtensions() 当前返回 nvdbxcvol
  • CanLoad(...) 只按扩展名判定,不预先验证文件存在。
  • 相对路径会先尝试当前路径;若不存在,再回退到 ResourceManager::Get().GetResourceRoot()
  • .xcvol 路径会读取 VolumeFieldArtifactHeader,要求:
    • magic == "XCVOL02"
    • schema 版本匹配
    • payloadSize > 0
  • .nvdb 路径在支持 NanoVDB 时会读取 grid metadata并回填
    • bounds
    • voxelSize
    • indexBounds
    • gridType
    • gridClass

当前实现边界

  • 未启用 XCENGINE_HAS_NANOVDBsource .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 生成与复用 .xcvol artifact
    • 覆盖按 AssetRef 回读项目体积资源
  • engine/src/Core/Asset/AssetDatabase.cpp
    • 当前通过 VolumeFieldLoader 导入项目体积资源并写出 .xcvol
  • engine/src/Core/Asset/ResourceManager.cpp
    • 当前会注册这条 loader

相关文档