docs: add xceditor api tree and new resource docs

This commit is contained in:
2026-04-10 17:10:42 +08:00
parent 6b90c2f6c3
commit 66ae9ec919
189 changed files with 6613 additions and 30 deletions

View File

@@ -0,0 +1,32 @@
# GaussianSplat
**命名空间**: `XCEngine::Resources`
**类型**: `submodule`
**描述**: Gaussian Splat 资源子模块,覆盖运行时 splat payload、artifact I/O 与对应 loader。
## 概述
`Resources::GaussianSplat` 当前负责把压缩后的 splat payload 以资源形式接入引擎。按当前实现,这条链路分成三层:
1. `GaussianSplat`
- 保存 metadata、section table 与原始 payload
2. `GaussianSplatArtifactIO`
- 读写 `.xcgsplat` artifact并在加载时构造 `GaussianSplat`
3. `GaussianSplatLoader`
- 作为 `IResourceLoader` 接入 `ResourceManager`
和 [Model](../Model/Model.md) / [Mesh](../Mesh/Mesh.md) 这类图结构资源不同,`GaussianSplat` 更像“多 section 二进制块 + metadata”的只读 payload 资源。
## 头文件
- [GaussianSplat](GaussianSplat/GaussianSplat.md) - `GaussianSplat.h`
- [GaussianSplatArtifactIO](GaussianSplatArtifactIO/GaussianSplatArtifactIO.md) - `GaussianSplatArtifactIO.h`
- [GaussianSplatLoader](GaussianSplatLoader/GaussianSplatLoader.md) - `GaussianSplatLoader.h`
## 相关文档
- [Resources](../Resources.md)
- [Core / Asset](../../Core/Asset/Asset.md)
- [Model](../Model/Model.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::Clear
清空内部数据。
```cpp
void Clear();
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `void` - 无返回值。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::Clear(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,28 @@
# GaussianSplat::GaussianSplat()
构造对象。
```cpp
GaussianSplat();
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `void` - 无返回值。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,33 @@
# GaussianSplat::CreateOwned
创建新对象或资源。
```cpp
bool CreateOwned(const GaussianSplatMetadata& metadata, Containers::Array<GaussianSplatSection>&& sections, Containers::Array<Core::uint8>&& payload);
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:**
- `metadata` - 参数语义详见头文件声明。
- `sections` - 参数语义详见头文件声明。
- `payload` - 参数语义详见头文件声明。
**返回:** `bool` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::CreateOwned(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,29 @@
# GaussianSplat::~GaussianSplat()
销毁对象并释放相关资源。
```cpp
~GaussianSplat() override;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `void` - 无返回值。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 对象离开作用域时会自动触发析构。
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,31 @@
# GaussianSplat::FindSection
查找并返回匹配对象。
```cpp
const GaussianSplatSection* FindSection(GaussianSplatSectionType type) const;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:**
- `type` - 参数语义详见头文件声明。
**返回:** `const GaussianSplatSection*` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::FindSection(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,64 @@
# GaussianSplat
**命名空间**: `XCEngine::Resources`
**类型**: `class`
**头文件**: `XCEngine/Resources/GaussianSplat/GaussianSplat.h`
**源文件**: `engine/src/Resources/GaussianSplat/GaussianSplat.cpp`
**描述**: Gaussian Splat 运行时资源对象,保存 metadata、section table 与原始 payload。
## 概述
`GaussianSplat` 当前把 splat 数据拆成三层状态:
- `GaussianSplatMetadata`
- 内容版本、splat/chunk/camera 数量、bounds 与 section format
- `GaussianSplatSection`
- 每个 section 的类型、格式、payload 偏移、大小和元素布局
- `payload`
- 实际的二进制块数据
这让资源对象可以在不理解每种 section 语义的前提下,统一保存和查询 payload。
## 当前状态模型
| 字段 | 说明 |
|------|------|
| `m_metadata` | 版本、bounds、计数和 section format |
| `m_sections` | section 描述表 |
| `m_payload` | 原始二进制 payload |
## 当前实现行为
- `CreateOwned(...)`
- 先验证 section table再接管 metadata / sections / payload
- `FindSection(...)`
-`GaussianSplatSectionType` 查找 section 记录
- `GetSectionData(...)`
- 根据 section 的 `dataOffset` 返回 payload 里的起始地址
- `Clear()`
- 清空 metadata、section table 和 payload并把资源标记为 invalid
- `Release()`
- 当前直接执行 `delete this`
## 测试与调用链
- `tests/Resources/GaussianSplat/test_gaussian_splat.cpp`
- 覆盖 `CreateOwned(...)` 的 metadata / payload 保存与非法 section layout 拒绝
- `engine/src/Resources/GaussianSplat/GaussianSplatArtifactIO.cpp`
- 当前把 artifact 读回结果装配成 `GaussianSplat`
## 当前实现边界
- 当前对象只提供按 section 粗粒度查询,不做更高层语义解码。
- `ValidateSections(...)` 会拒绝 `Unknown` section、越界 payload 区间和重复 section type。
- payload 生命周期完全由资源对象拥有,不借用外部内存。
## 相关文档
- [GaussianSplat 子模块](../GaussianSplat.md)
- [GaussianSplatArtifactIO](../GaussianSplatArtifactIO/GaussianSplatArtifactIO.md)
- [GaussianSplatLoader](../GaussianSplatLoader/GaussianSplatLoader.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetBounds
获取相关状态或对象。
```cpp
const Math::Bounds& GetBounds() const;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `const Math::Bounds&` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetBounds(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetCameraCount
获取相关状态或对象。
```cpp
Core::uint32 GetCameraCount() const;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `Core::uint32` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetCameraCount(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetCameraFormat
获取相关状态或对象。
```cpp
GaussianSplatSectionFormat GetCameraFormat() const;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `GaussianSplatSectionFormat` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetCameraFormat(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetChunkCount
获取相关状态或对象。
```cpp
Core::uint32 GetChunkCount() const;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `Core::uint32` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetChunkCount(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetChunkFormat
获取相关状态或对象。
```cpp
GaussianSplatSectionFormat GetChunkFormat() const;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `GaussianSplatSectionFormat` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetChunkFormat(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetColorFormat
获取相关状态或对象。
```cpp
GaussianSplatSectionFormat GetColorFormat() const;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `GaussianSplatSectionFormat` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetColorFormat(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetContentVersion
获取相关状态或对象。
```cpp
Core::uint32 GetContentVersion() const;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `Core::uint32` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetContentVersion(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetGUID
获取相关状态或对象。
```cpp
ResourceGUID GetGUID() const override;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `ResourceGUID` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetGUID(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetMemorySize
获取相关状态或对象。
```cpp
size_t GetMemorySize() const override;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `size_t` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetMemorySize(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetMetadata
获取相关状态或对象。
```cpp
const GaussianSplatMetadata& GetMetadata() const;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `const GaussianSplatMetadata&` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetMetadata(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetName
获取相关状态或对象。
```cpp
const Containers::String& GetName() const override;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `const Containers::String&` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetName(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetOtherFormat
获取相关状态或对象。
```cpp
GaussianSplatSectionFormat GetOtherFormat() const;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `GaussianSplatSectionFormat` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetOtherFormat(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetPath
获取相关状态或对象。
```cpp
const Containers::String& GetPath() const override;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `const Containers::String&` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetPath(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetPayloadData
获取相关状态或对象。
```cpp
const Core::uint8* GetPayloadData() const;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `const Core::uint8*` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetPayloadData(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetPayloadSize
获取相关状态或对象。
```cpp
size_t GetPayloadSize() const;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `size_t` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetPayloadSize(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetPositionFormat
获取相关状态或对象。
```cpp
GaussianSplatSectionFormat GetPositionFormat() const;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `GaussianSplatSectionFormat` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetPositionFormat(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetSHFormat
获取相关状态或对象。
```cpp
GaussianSplatSectionFormat GetSHFormat() const;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `GaussianSplatSectionFormat` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetSHFormat(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,31 @@
# GaussianSplat::GetSectionData
获取相关状态或对象。
```cpp
const void* GetSectionData(GaussianSplatSectionType type) const;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:**
- `type` - 参数语义详见头文件声明。
**返回:** `const void*` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetSectionData(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetSections
获取相关状态或对象。
```cpp
const Containers::Array<GaussianSplatSection>& GetSections() const;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `const Containers::Array<GaussianSplatSection>&` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetSections(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetSplatCount
获取相关状态或对象。
```cpp
Core::uint32 GetSplatCount() const;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `Core::uint32` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetSplatCount(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::GetType
获取相关状态或对象。
```cpp
ResourceType GetType() const override;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `ResourceType` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::GetType(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::IsValid
查询当前状态。
```cpp
bool IsValid() const override;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `bool` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::IsValid(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplat::Release
释放引用或底层资源。
```cpp
void Release() override;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplat.h`,当前页面用于固定 `GaussianSplat` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `void` - 无返回值。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplat.h>
void Example() {
XCEngine::Resources::GaussianSplat object;
// 根据上下文补齐参数后调用 GaussianSplat::Release(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplat.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,58 @@
# GaussianSplatArtifactIO
**命名空间**: `XCEngine::Resources`
**类型**: `functions`
**头文件**: `XCEngine/Resources/GaussianSplat/GaussianSplatArtifactIO.h`
**源文件**: `engine/src/Resources/GaussianSplat/GaussianSplatArtifactIO.cpp`
**描述**: `.xcgsplat` artifact 的读写入口,负责把 Gaussian Splat payload 序列化到磁盘并恢复成运行时资源。
## 概述
`GaussianSplatArtifactIO` 当前公开两个函数:
- `WriteGaussianSplatArtifactFile(...)`
-`GaussianSplat` 的 metadata、section table 和 payload 写成 `.xcgsplat`
- `LoadGaussianSplatArtifact(...)`
- 读取 `.xcgsplat` 并恢复成 `GaussianSplat`
## 当前实现行为
### 写入路径
- 会先解析 artifact 路径并在需要时创建父目录。
- 文件头 magic 当前校验为 `XCGSP01` 协议。
- 写入顺序是:
- `GaussianSplatArtifactFileHeader`
- `GaussianSplatArtifactHeader`
- section table
- payload 字节块
### 读取路径
- 会解析真实路径,必要时回退到 `ResourceManager::Get().GetResourceRoot()`
- header 校验失败会直接返回错误的 `LoadResult`
- 读取 section table 后会还原成 `GaussianSplatSection` 数组,再读 payload。
- 成功时通过内部 `CreateOwnedGaussianSplatResource(...)` 构造资源对象。
## 测试与调用链
- `tests/Resources/GaussianSplat/test_gaussian_splat_loader.cpp`
- 覆盖写 artifact、再由 loader 读回的往返路径
- `engine/src/Resources/GaussianSplat/GaussianSplatLoader.cpp`
- 当前把实际 `.xcgsplat` 读取委托给 `LoadGaussianSplatArtifact(...)`
## 当前实现边界
- 当前只处理 `.xcgsplat` artifact不直接解析外部原始 Gaussian Splat 源格式。
- artifact 的 section 语义依赖 header 里的 metadata/format不在这里做高层解释。
- 读取失败时直接返回错误,不做容错修复。
## 相关文档
- [GaussianSplat 子模块](../GaussianSplat.md)
- [GaussianSplat](../GaussianSplat/GaussianSplat.md)
- [GaussianSplatLoader](../GaussianSplatLoader/GaussianSplatLoader.md)

View File

@@ -0,0 +1,31 @@
# GaussianSplatLoader::CanLoad
判断当前条件下是否可执行。
```cpp
bool CanLoad(const Containers::String& path) const override;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplatLoader.h`,当前页面用于固定 `GaussianSplatLoader` 类目录下的方法级 canonical 路径。
**参数:**
- `path` - 参数语义详见头文件声明。
**返回:** `bool` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplatLoader.h>
void Example() {
XCEngine::Resources::GaussianSplatLoader object;
// 根据上下文补齐参数后调用 GaussianSplatLoader::CanLoad(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplatLoader.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,28 @@
# GaussianSplatLoader::GaussianSplatLoader()
构造对象。
```cpp
GaussianSplatLoader();
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplatLoader.h`,当前页面用于固定 `GaussianSplatLoader` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `void` - 无返回值。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplatLoader.h>
void Example() {
XCEngine::Resources::GaussianSplatLoader object;
}
```
## 相关文档
- [返回类总览](GaussianSplatLoader.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,29 @@
# GaussianSplatLoader::~GaussianSplatLoader()
销毁对象并释放相关资源。
```cpp
~GaussianSplatLoader() override;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplatLoader.h`,当前页面用于固定 `GaussianSplatLoader` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `void` - 无返回值。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplatLoader.h>
void Example() {
XCEngine::Resources::GaussianSplatLoader object;
// 对象离开作用域时会自动触发析构。
}
```
## 相关文档
- [返回类总览](GaussianSplatLoader.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,52 @@
# GaussianSplatLoader
**命名空间**: `XCEngine::Resources`
**类型**: `class`
**头文件**: `XCEngine/Resources/GaussianSplat/GaussianSplatLoader.h`
**源文件**: `engine/src/Resources/GaussianSplat/GaussianSplatLoader.cpp`
**描述**: `GaussianSplat` 资源的标准 loader负责识别 `.xcgsplat` artifact 并通过 `GaussianSplatArtifactIO` 读入运行时资源。
## 概述
`GaussianSplatLoader` 继承自 `IResourceLoader`,是 `ResourceManager` 当前注册的 Gaussian Splat 资源入口。实现策略和 `ModelLoader` 类似:
- 只接受 `.xcgsplat`
- 实际反序列化委托给 `LoadGaussianSplatArtifact(...)`
- 默认不声明额外导入设置
## 当前实现行为
### 扩展名与资源类型
- `GetResourceType()` 固定返回 `ResourceType::GaussianSplat`
- `GetSupportedExtensions()` 当前只返回:
- `xcgsplat`
- `CanLoad(...)` 当前只接受 `.xcgsplat`
### 加载路径
- `Load(...)` 会先检查扩展名
- 不支持的扩展名会返回 `Unsupported GaussianSplat format`
- 合法输入则直接调用 `LoadGaussianSplatArtifact(path)`
### 默认设置与注册
- `GetDefaultSettings()` 当前返回 `nullptr`
- 文件末尾通过 `REGISTER_RESOURCE_LOADER(GaussianSplatLoader)` 注册到资源系统
## 测试与调用链
- `tests/Resources/GaussianSplat/test_gaussian_splat_loader.cpp`
- 覆盖扩展名判断、非法路径、artifact 往返加载与 `ResourceManager` 注册
- `engine/src/Core/Asset/ResourceManager.cpp`
- 当前持有全局 `GaussianSplatLoader` 并注册到资源系统
## 相关文档
- [GaussianSplat 子模块](../GaussianSplat.md)
- [GaussianSplat](../GaussianSplat/GaussianSplat.md)
- [GaussianSplatArtifactIO](../GaussianSplatArtifactIO/GaussianSplatArtifactIO.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplatLoader::GetDefaultSettings
获取相关状态或对象。
```cpp
ImportSettings* GetDefaultSettings() const override;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplatLoader.h`,当前页面用于固定 `GaussianSplatLoader` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `ImportSettings*` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplatLoader.h>
void Example() {
XCEngine::Resources::GaussianSplatLoader object;
// 根据上下文补齐参数后调用 GaussianSplatLoader::GetDefaultSettings(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplatLoader.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplatLoader::GetResourceType
获取相关状态或对象。
```cpp
ResourceType GetResourceType() const override;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplatLoader.h`,当前页面用于固定 `GaussianSplatLoader` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `ResourceType` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplatLoader.h>
void Example() {
XCEngine::Resources::GaussianSplatLoader object;
// 根据上下文补齐参数后调用 GaussianSplatLoader::GetResourceType(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplatLoader.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,30 @@
# GaussianSplatLoader::GetSupportedExtensions
获取相关状态或对象。
```cpp
Containers::Array<Containers::String> GetSupportedExtensions() const override;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplatLoader.h`,当前页面用于固定 `GaussianSplatLoader` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `Containers::Array<Containers::String>` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplatLoader.h>
void Example() {
XCEngine::Resources::GaussianSplatLoader object;
// 根据上下文补齐参数后调用 GaussianSplatLoader::GetSupportedExtensions(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplatLoader.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,32 @@
# GaussianSplatLoader::Load
加载资源或数据。
```cpp
LoadResult Load(const Containers::String& path, const ImportSettings* settings = nullptr) override;
```
该方法声明于 `XCEngine/Resources/GaussianSplat/GaussianSplatLoader.h`,当前页面用于固定 `GaussianSplatLoader` 类目录下的方法级 canonical 路径。
**参数:**
- `path` - 参数语义详见头文件声明。
- `settings` - 参数语义详见头文件声明。
**返回:** `LoadResult` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/GaussianSplat/GaussianSplatLoader.h>
void Example() {
XCEngine::Resources::GaussianSplatLoader object;
// 根据上下文补齐参数后调用 GaussianSplatLoader::Load(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](GaussianSplatLoader.md)
- [返回模块目录](../GaussianSplat.md)

View File

@@ -0,0 +1,48 @@
# Model
**命名空间**: `XCEngine::Resources`
**类型**: `submodule`
**描述**: 模型资源子模块,覆盖运行时 `Model` 资源对象、`.xcmodel` artifact 读写以及对应的标准 loader。
## 概述
`Resources::Model` 当前不是通用场景导入层,而是资源系统内部的模型图结构承载层。按当前实现,这条链路是:
1. `WriteModelArtifactFile(...)`
- 把内存中的 `Model` 图结构序列化成 `XCMOD01` / schema v1 的 `.xcmodel`
2. `LoadModelArtifact(...)`
-`.xcmodel` 反序列化出新的堆分配 `Model`
3. `ModelLoader`
- 作为 `ResourceManager``IResourceLoader` 入口,只接受 `.xcmodel`
当前 `Model` 只保存节点树、mesh local id 与 material local id 绑定,不直接持有解析后的 `Mesh` / `Material` 资源指针。
## 头文件
- [Model](Model/Model.md) - `Model.h`
- [ModelArtifactIO](ModelArtifactIO/ModelArtifactIO.md) - `ModelArtifactIO.h`
- [ModelLoader](ModelLoader/ModelLoader.md) - `ModelLoader.h`
## 测试与调用链
- `tests/Resources/Model/test_model.cpp`
- 覆盖默认状态、图结构增量写入、`Release()` 后清空状态
- `tests/Resources/Model/test_model_loader.cpp`
- 覆盖 `.xcmodel` 扩展名识别、artifact 写入/读回、`ResourceManager` 注册
- `engine/include/XCEngine/Resources/Resources.h`
- 当前 umbrella header 已把三份 public header 统一对外暴露
- `engine/src/Core/Asset/ResourceManager.cpp`
- 当前通过全局 `ModelLoader` 注册 `ResourceType::Model`
## 当前实现边界
- 当前只支持 `.xcmodel` artifact`ModelLoader` 不直接读取 `.fbx` / `.obj` 等源格式。
- 当前 artifact 负载只覆盖节点图、mesh binding、material binding 与局部变换,不包含动画、骨骼或材质参数展开数据。
- `LoadModelArtifact(...)` 当前返回堆分配资源对象;直接调用方需要遵守 `LoadResult` 的资源释放约定。
## 相关文档
- [Resources](../Resources.md)
- [Asset](../../Core/Asset/Asset.md)

View File

@@ -0,0 +1,31 @@
# Model::AddMaterialBinding
添加元素或建立关联。
```cpp
void AddMaterialBinding(const ModelMaterialBinding& binding);
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:**
- `binding` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
// 根据上下文补齐参数后调用 Model::AddMaterialBinding(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,31 @@
# Model::AddMeshBinding
添加元素或建立关联。
```cpp
void AddMeshBinding(const ModelMeshBinding& binding);
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:**
- `binding` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
// 根据上下文补齐参数后调用 Model::AddMeshBinding(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,31 @@
# Model::AddNode
添加元素或建立关联。
```cpp
void AddNode(const ModelNode& node);
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:**
- `node` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
// 根据上下文补齐参数后调用 Model::AddNode(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,30 @@
# Model::ClearGraph
清空内部数据。
```cpp
void ClearGraph();
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `void` - 无返回值。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
// 根据上下文补齐参数后调用 Model::ClearGraph(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,28 @@
# Model::Model()
构造对象。
```cpp
Model();
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `void` - 无返回值。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,29 @@
# Model::~Model()
销毁对象并释放相关资源。
```cpp
~Model() override;
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `void` - 无返回值。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
// 对象离开作用域时会自动触发析构。
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,30 @@
# Model::GetGUID
获取相关状态或对象。
```cpp
ResourceGUID GetGUID() const override;
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `ResourceGUID` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
// 根据上下文补齐参数后调用 Model::GetGUID(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,30 @@
# Model::GetMaterialBindings
获取相关状态或对象。
```cpp
const Containers::Array<ModelMaterialBinding>& GetMaterialBindings() const;
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `const Containers::Array<ModelMaterialBinding>&` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
// 根据上下文补齐参数后调用 Model::GetMaterialBindings(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,30 @@
# Model::GetMemorySize
获取相关状态或对象。
```cpp
size_t GetMemorySize() const override;
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `size_t` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
// 根据上下文补齐参数后调用 Model::GetMemorySize(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,30 @@
# Model::GetMeshBindings
获取相关状态或对象。
```cpp
const Containers::Array<ModelMeshBinding>& GetMeshBindings() const;
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `const Containers::Array<ModelMeshBinding>&` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
// 根据上下文补齐参数后调用 Model::GetMeshBindings(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,30 @@
# Model::GetName
获取相关状态或对象。
```cpp
const Containers::String& GetName() const override;
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `const Containers::String&` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
// 根据上下文补齐参数后调用 Model::GetName(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,30 @@
# Model::GetNodes
获取相关状态或对象。
```cpp
const Containers::Array<ModelNode>& GetNodes() const;
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `const Containers::Array<ModelNode>&` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
// 根据上下文补齐参数后调用 Model::GetNodes(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,30 @@
# Model::GetPath
获取相关状态或对象。
```cpp
const Containers::String& GetPath() const override;
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `const Containers::String&` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
// 根据上下文补齐参数后调用 Model::GetPath(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,30 @@
# Model::GetRootNodeIndex
获取相关状态或对象。
```cpp
Core::uint32 GetRootNodeIndex() const;
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `Core::uint32` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
// 根据上下文补齐参数后调用 Model::GetRootNodeIndex(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,30 @@
# Model::GetType
获取相关状态或对象。
```cpp
ResourceType GetType() const override;
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `ResourceType` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
// 根据上下文补齐参数后调用 Model::GetType(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,30 @@
# Model::HasRootNode
判断是否具备指定状态或能力。
```cpp
bool HasRootNode() const;
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `bool` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
// 根据上下文补齐参数后调用 Model::HasRootNode(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,30 @@
# Model::IsValid
查询当前状态。
```cpp
bool IsValid() const override;
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `bool` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
// 根据上下文补齐参数后调用 Model::IsValid(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,75 @@
# Model
**命名空间**: `XCEngine::Resources`
**类型**: `class`
**头文件**: `XCEngine/Resources/Model/Model.h`
**源文件**: `engine/src/Resources/Model/Model.cpp`
**描述**: 运行时模型资源对象保存节点树、mesh binding 与 material binding 的轻量图结构。
## 概述
`Model` 继承自 `IResource`,但它当前承载的是“资源图描述”而不是 GPU 侧数据。实现里只保存:
- `ModelNode`
- 节点名称、父节点索引、局部位移/旋转/缩放,以及节点对应的 mesh binding 区间
- `ModelMeshBinding`
- 单个 mesh local id 以及它在 material binding 数组中的区间
- `ModelMaterialBinding`
- slot 到 material local id 的映射
这意味着 `Model` 当前更接近导入后场景层次结构的归档结果,后续系统需要再通过 local id 去解析 mesh / material 资源。
## 当前实现行为
- 默认构造后:
- `GetType()` 返回 `ResourceType::Model`
- `HasRootNode()``false`
- 三类数组都为空
- `GetMemorySize()``0`
- `SetRootNodeIndex(...)` 只记录根节点索引并刷新 `memorySize`
- `AddNode(...)` / `AddMeshBinding(...)` / `AddMaterialBinding(...)`
- 追加到对应数组并刷新 `memorySize`
- `ClearGraph()`
- 清空所有节点与绑定,根索引回到 `kInvalidModelNodeIndex`
- `Release()`
- 当前只调用 `ClearGraph()``SetInvalid()`,不会 `delete this`
## 内存与所有权
- `UpdateMemorySize()` 通过结构体大小累加,再额外把每个 `ModelNode::name` 的字符串长度计入统计。
- `Model` 自身拥有三组数组的生命周期。
- 当前测试 `tests/Resources/Model/test_model_loader.cpp` 直接对 `LoadModelArtifact(...)` 返回的 `Model*` 执行 `delete`,说明直接调用路径下对象析构仍由调用方收口。
## 公开状态模型
| 字段 | 语义 |
|------|------|
| `kInvalidModelNodeIndex` | 无根节点或未设置根节点时使用的哨兵值 |
| `ModelNode::parentIndex` | 父节点索引;根节点当前使用 `-1` |
| `ModelNode::meshBindingStart` / `meshBindingCount` | 节点对应 mesh binding 数组切片 |
| `ModelMeshBinding::materialBindingStart` / `materialBindingCount` | 单个 mesh 对应 material binding 数组切片 |
| `ModelMaterialBinding::slotIndex` | 子网格材质槽位 |
| `ModelMaterialBinding::materialLocalID` | 指向 artifact 内材质表的 local id |
## 测试与调用链
- `tests/Resources/Model/test_model.cpp`
- 验证节点、mesh binding、material binding 的追加与 `memorySize` 刷新
- `engine/src/Resources/Model/ModelArtifactIO.cpp`
- 负责把 `Model` 序列化与反序列化为 `.xcmodel`
## 当前实现边界
- 当前没有面向调用方的随机查询 helper例如“根据节点名查索引”或“根据节点遍历子树”。
- 当前 `Release()` 只清空内部状态,不承担对象销毁职责;这点与部分资源类型的 `delete this` 语义不同。
- 当前没有线程同步;读写图结构默认要求调用方自己约束时序。
## 相关文档
- [Model 子模块](../Model.md)
- [ModelArtifactIO](../ModelArtifactIO/ModelArtifactIO.md)
- [ModelLoader](../ModelLoader/ModelLoader.md)

View File

@@ -0,0 +1,30 @@
# Model::Release
释放引用或底层资源。
```cpp
void Release() override;
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `void` - 无返回值。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
// 根据上下文补齐参数后调用 Model::Release(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,31 @@
# Model::SetRootNodeIndex
设置相关状态或配置。
```cpp
void SetRootNodeIndex(Core::uint32 index);
```
该方法声明于 `XCEngine/Resources/Model/Model.h`,当前页面用于固定 `Model` 类目录下的方法级 canonical 路径。
**参数:**
- `index` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。
**示例:**
```cpp
#include <XCEngine/Resources/Model/Model.h>
void Example() {
XCEngine::Resources::Model object;
// 根据上下文补齐参数后调用 Model::SetRootNodeIndex(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](Model.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,75 @@
# ModelArtifactIO
**命名空间**: `XCEngine::Resources`
**类型**: `header`
**头文件**: `XCEngine/Resources/Model/ModelArtifactIO.h`
**源文件**: `engine/src/Resources/Model/ModelArtifactIO.cpp`
**描述**: `Model``.xcmodel` artifact 读写入口,负责把运行时图结构编码为 `XCMOD01`,以及从 artifact 还原堆分配 `Model`
## 概述
这份头文件当前只暴露两个函数:
- `WriteModelArtifactFile(...)`
- 序列化 `Model`
- `LoadModelArtifact(...)`
- 反序列化 `Model`
实现依赖 `ArtifactFormats.h` 中的 `ModelArtifactFileHeader``ModelArtifactHeader``ModelNodeArtifactHeader` 等结构,并通过 `ResourceManager::Get().GetResourceRoot()` 补全相对路径。
## 当前实现行为
### `WriteModelArtifactFile(...)`
- 若输出父目录不存在,会先尝试创建目录。
- 文件头固定写入:
- magic `XCMOD01`
- `schemaVersion == kModelArtifactSchemaVersion`
- 之后顺序写入:
- `ModelArtifactHeader`
- 每个节点的字符串名与 `ModelNodeArtifactHeader`
- 每个 `ModelMeshBindingArtifact`
- 每个 `ModelMaterialBindingArtifact`
- 失败时返回 `false`,并在提供 `outErrorMessage` 时写入简短错误文本。
### `LoadModelArtifact(...)`
- 支持相对路径;当相对路径在当前目录不存在时,会尝试拼接 `ResourceManager` 的 resource root。
- 会严格校验:
- 文件头 magic 是否为 `XCMOD01`
- schema version 是否匹配
- `rootNodeIndex` 是否落在 `nodeCount` 范围内
- 成功时通过内部 `CreateOwnedModelResource(...)`
- `new Model()`
- 调用 `Initialize(...)`
- 逐项追加节点与绑定
- 失败时返回带错误信息的 `LoadResult`
## 所有权与失败路径
- 当前 `LoadModelArtifact(...)` 返回的资源对象由堆分配创建。
- `tests/Resources/Model/test_model_loader.cpp` 直接对结果中的 `resource` 指针执行 `delete`,说明在非 `ResourceManager` 托管路径下,调用方需要负责析构收口。
- 任何一步读流失败都会立即返回失败 `LoadResult`,不会返回部分填充的 `Model`
## 测试与调用链
- `tests/Resources/Model/test_model_loader.cpp`
- 覆盖 artifact 写入后再加载的回归路径
- `engine/src/Resources/Model/ModelLoader.cpp`
- `ModelLoader::Load(...)` 最终直接委托给 `LoadModelArtifact(...)`
## 当前实现边界
- 当前没有向后兼容旧 schema 的分支header 校验失败就直接返回错误。
- 当前文件格式只保存 local id 级别的 mesh / material 绑定,不写入完整子资源 payload。
- 当前名称字符串采用长度前缀 + 原始字节写入,不做额外压缩或去重。
## 相关文档
- [Model 子模块](../Model.md)
- [Model](../Model/Model.md)
- [ModelLoader](../ModelLoader/ModelLoader.md)

View File

@@ -0,0 +1,31 @@
# ModelLoader::CanLoad
判断当前条件下是否可执行。
```cpp
bool CanLoad(const Containers::String& path) const override;
```
该方法声明于 `XCEngine/Resources/Model/ModelLoader.h`,当前页面用于固定 `ModelLoader` 类目录下的方法级 canonical 路径。
**参数:**
- `path` - 参数语义详见头文件声明。
**返回:** `bool` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/Model/ModelLoader.h>
void Example() {
XCEngine::Resources::ModelLoader object;
// 根据上下文补齐参数后调用 ModelLoader::CanLoad(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](ModelLoader.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,28 @@
# ModelLoader::ModelLoader()
构造对象。
```cpp
ModelLoader();
```
该方法声明于 `XCEngine/Resources/Model/ModelLoader.h`,当前页面用于固定 `ModelLoader` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `void` - 无返回值。
**示例:**
```cpp
#include <XCEngine/Resources/Model/ModelLoader.h>
void Example() {
XCEngine::Resources::ModelLoader object;
}
```
## 相关文档
- [返回类总览](ModelLoader.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,29 @@
# ModelLoader::~ModelLoader()
销毁对象并释放相关资源。
```cpp
~ModelLoader() override;
```
该方法声明于 `XCEngine/Resources/Model/ModelLoader.h`,当前页面用于固定 `ModelLoader` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `void` - 无返回值。
**示例:**
```cpp
#include <XCEngine/Resources/Model/ModelLoader.h>
void Example() {
XCEngine::Resources::ModelLoader object;
// 对象离开作用域时会自动触发析构。
}
```
## 相关文档
- [返回类总览](ModelLoader.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,30 @@
# ModelLoader::GetDefaultSettings
获取相关状态或对象。
```cpp
ImportSettings* GetDefaultSettings() const override;
```
该方法声明于 `XCEngine/Resources/Model/ModelLoader.h`,当前页面用于固定 `ModelLoader` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `ImportSettings*` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/Model/ModelLoader.h>
void Example() {
XCEngine::Resources::ModelLoader object;
// 根据上下文补齐参数后调用 ModelLoader::GetDefaultSettings(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](ModelLoader.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,30 @@
# ModelLoader::GetResourceType
获取相关状态或对象。
```cpp
ResourceType GetResourceType() const override;
```
该方法声明于 `XCEngine/Resources/Model/ModelLoader.h`,当前页面用于固定 `ModelLoader` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `ResourceType` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/Model/ModelLoader.h>
void Example() {
XCEngine::Resources::ModelLoader object;
// 根据上下文补齐参数后调用 ModelLoader::GetResourceType(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](ModelLoader.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,30 @@
# ModelLoader::GetSupportedExtensions
获取相关状态或对象。
```cpp
Containers::Array<Containers::String> GetSupportedExtensions() const override;
```
该方法声明于 `XCEngine/Resources/Model/ModelLoader.h`,当前页面用于固定 `ModelLoader` 类目录下的方法级 canonical 路径。
**参数:** 无。
**返回:** `Containers::Array<Containers::String>` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/Model/ModelLoader.h>
void Example() {
XCEngine::Resources::ModelLoader object;
// 根据上下文补齐参数后调用 ModelLoader::GetSupportedExtensions(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](ModelLoader.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,32 @@
# ModelLoader::Load
加载资源或数据。
```cpp
LoadResult Load(const Containers::String& path, const ImportSettings* settings = nullptr) override;
```
该方法声明于 `XCEngine/Resources/Model/ModelLoader.h`,当前页面用于固定 `ModelLoader` 类目录下的方法级 canonical 路径。
**参数:**
- `path` - 参数语义详见头文件声明。
- `settings` - 参数语义详见头文件声明。
**返回:** `LoadResult` - 返回值语义详见头文件声明。
**示例:**
```cpp
#include <XCEngine/Resources/Model/ModelLoader.h>
void Example() {
XCEngine::Resources::ModelLoader object;
// 根据上下文补齐参数后调用 ModelLoader::Load(...)。
(void)object;
}
```
## 相关文档
- [返回类总览](ModelLoader.md)
- [返回模块目录](../Model.md)

View File

@@ -0,0 +1,55 @@
# ModelLoader
**命名空间**: `XCEngine::Resources`
**类型**: `class`
**头文件**: `XCEngine/Resources/Model/ModelLoader.h`
**源文件**: `engine/src/Resources/Model/ModelLoader.cpp`
**描述**: `Model` 资源的标准 `IResourceLoader`,当前只接受 `.xcmodel` artifact并把加载工作委托给 `LoadModelArtifact(...)`
## 概述
`ModelLoader``ResourceManager` 识别 `ResourceType::Model` 的入口。当前它不承担源格式导入,只负责:
1. 声明资源类型 `ResourceType::Model`
2. 声明支持扩展名 `xcmodel`
3.`Load(...)` 中做扩展名校验
4. 转交给 `LoadModelArtifact(...)`
文件末尾通过 `REGISTER_RESOURCE_LOADER(ModelLoader)` 完成注册;`engine/src/Core/Asset/ResourceManager.cpp` 也会持有对应全局 loader 实例。
## 当前实现行为
- `GetSupportedExtensions()`
- 当前只返回一个扩展名:`xcmodel`
- `CanLoad(...)`
- 把文件扩展名转小写后比较,因此 `test.XCMODEL` 也会被接受
- `Load(...)`
- 若扩展名不匹配,返回 `"Unsupported model format: <ext>"`
- 若扩展名匹配,直接调用 `LoadModelArtifact(...)`
- `GetDefaultSettings()`
- 当前固定返回 `nullptr`
## 测试与调用链
- `tests/Resources/Model/test_model_loader.cpp`
- 覆盖 `GetResourceType()``CanLoad()`、非法路径失败以及 artifact round-trip
- `tests/Resources/Model/test_model_loader.cpp`
- 还验证了 `ResourceManager::Get().GetLoader(ResourceType::Model)` 非空
- `engine/include/XCEngine/Resources/Resources.h`
- 当前 umbrella header 已把 `ModelLoader.h` 对外暴露
## 当前实现边界
- 当前不支持 import settings`settings` 参数在实现里被显式忽略。
- 当前不直接读取源模型格式,所有成功路径都要求先有 `.xcmodel` artifact。
- 当前没有多格式回退逻辑或 MIME / 内容探测逻辑,完全依赖扩展名。
## 相关文档
- [Model 子模块](../Model.md)
- [ModelArtifactIO](../ModelArtifactIO/ModelArtifactIO.md)
- [Resources](../../Resources.md)

View File

@@ -20,8 +20,10 @@
## 子目录
- [AudioClip](AudioClip/AudioClip.md)
- [GaussianSplat](GaussianSplat/GaussianSplat.md)
- [Material](Material/Material.md)
- [Mesh](Mesh/Mesh.md)
- [Model](Model/Model.md)
- [Shader](Shader/Shader.md)
- [Texture](Texture/Texture.md)
- [Volume](Volume/Volume.md)