Files
XCEngine/docs/api/resources/importsettings/importsettings.md

6.4 KiB
Raw Blame History

ImportSettings

命名空间: XCEngine::Resources

类型: class (abstract)

描述: 资源导入设置抽象基类,定义资源导入时的配置选项接口。

概述

ImportSettings 是所有资源导入设置的抽象基类。它提供了克隆和 JSON 序列化接口,允许不同资源类型定义各自的导入选项。引擎内置了两个具体实现:TextureImportSettingsMeshImportSettings

公共方法

方法 描述
virtual Core::UniqueRef<ImportSettings> Clone() const = 0 克隆一份设置
virtual bool LoadFromJSON(const Containers::String& json) 从 JSON 加载设置(当前返回 false - stub
virtual Containers::String SaveToJSON() const 保存为 JSON 字符串(当前返回空字符串 - stub

TextureImportSettings

纹理导入设置,继承自 ImportSettings

头文件: XCEngine/Resources/TextureImportSettings.h

实现说明

注意: LoadFromJSON()SaveToJSON() 当前为 stub 实现。

枚举类型

MipmapFilter

描述
Box Box 滤波器
Kaiser Kaiser 滤波器

CompressionQuality

描述
Low 低质量
Medium 中等质量
High 高质量
Ultra 超高质量

公共方法

方法 描述
void SetTextureType(TextureType type) 设置纹理类型
TextureType GetTextureType() const 获取纹理类型
void SetTargetFormat(TextureFormat format) 设置目标格式
TextureFormat GetTargetFormat() const 获取目标格式
void SetGenerateMipmaps(bool generate) 设置是否生成 Mipmap
bool GetGenerateMipmaps() const 获取是否生成 Mipmap
void SetMipmapFilter(MipmapFilter filter) 设置 Mipmap 滤波器
MipmapFilter GetMipmapFilter() const 获取 Mipmap 滤波器
void SetMaxAnisotropy(Core::uint32 anisotropy) 设置最大各向异性级别
Core::uint32 GetMaxAnisotropy() const 获取最大各向异性级别
void SetSRGB(bool srgb) 设置是否 sRGB
bool GetSRGB() const 获取 sRGB 设置
void SetFlipVertical(bool flip) 设置是否垂直翻转
bool GetFlipVertical() const 获取垂直翻转设置
void SetFlipHorizontal(bool flip) 设置是否水平翻转
bool GetFlipHorizontal() const 获取水平翻转设置
void SetBorderColor(const Math::Vector3& color) 设置边框颜色
const Math::Vector3& GetBorderColor() const 获取边框颜色
void SetCompressionQuality(CompressionQuality quality) 设置压缩质量
CompressionQuality GetCompressionQuality() const 获取压缩质量
void SetUseHardwareCompression(bool use) 设置是否使用硬件压缩
bool GetUseHardwareCompression() const 获取硬件压缩设置
void SetMaxSize(Core::uint32 size) 设置最大纹理尺寸
Core::uint32 GetMaxSize() const 获取最大纹理尺寸
void SetGenerateNormalMap(bool generate) 设置是否生成法线贴图
bool GetGenerateNormalMap() const 获取法线贴图生成设置
void SetNormalMapStrength(float strength) 设置法线贴图强度
float GetNormalMapStrength() const 获取法线贴图强度

MeshImportSettings

网格导入设置,继承自 ImportSettings

头文件: XCEngine/Resources/MeshImportSettings.h

实现说明

注意: LoadFromJSON()SaveToJSON() 当前为 stub 实现。

MeshImportFlags

描述
None 无特殊标志
FlipUVs 翻转 UV 坐标
FlipWindingOrder 翻转绕序
GenerateNormals 生成法线
GenerateTangents 生成切线
OptimizeMesh 优化网格
ImportSkinning 导入骨骼蒙皮
ImportAnimations 导入动画
ImportMaterials 导入材质
ImportCameras 导入相机
ImportLights 导入灯光

支持位运算组合(operator|operator&operator~)。

公共方法

方法 描述
void SetImportFlags(MeshImportFlags flags) 设置导入标志
MeshImportFlags GetImportFlags() const 获取导入标志
void AddImportFlag(MeshImportFlags flag) 添加单个导入标志
void RemoveImportFlag(MeshImportFlags flag) 移除单个导入标志
bool HasImportFlag(MeshImportFlags flag) const 检查是否包含某标志
void SetScale(float scale) 设置缩放
float GetScale() const 获取缩放
void SetOffset(const Math::Vector3& offset) 设置偏移
const Math::Vector3& GetOffset() const 获取偏移
void SetAxisConversion(bool convert) 设置轴转换
bool GetAxisConversion() const 获取轴转换设置
void SetMergeMeshes(bool merge) 设置是否合并网格
bool GetMergeMeshes() const 获取合并网格设置
void SetOptimizeThreshold(float threshold) 设置优化阈值
float GetOptimizeThreshold() const 获取优化阈值
void SetImportScale(float scale) 设置导入缩放
float GetImportScale() const 获取导入缩放
void SetThreshold(float threshold) 设置阈值
float GetThreshold() const 获取阈值

使用示例

#include <XCEngine/Resources/TextureImportSettings.h>
#include <XCEngine/Resources/MeshImportSettings.h>

// 纹理导入设置
TextureImportSettings texSettings;
texSettings.SetTextureType(TextureType::Texture2D);
texSettings.SetGenerateMipmaps(true);
texSettings.SetSRGB(true);
texSettings.SetCompressionQuality(CompressionQuality::High);
texSettings.SetMaxAnisotropy(16);

// 加载设置
texSettings.LoadFromJSON(R"({"sRGB":true,"maxAnisotropy":8})");

// 保存设置
Containers::String json = texSettings.SaveToJSON();

// 网格导入设置
MeshImportSettings meshSettings;
meshSettings.SetImportFlags(MeshImportFlags::FlipUVs | MeshImportFlags::GenerateNormals);
meshSettings.SetScale(1.0f);
meshSettings.SetAxisConversion(true);

// 使用设置加载资源
ResourceHandle<Texture> tex = ResourceManager::Get().Load<Texture>("tex.png", &texSettings);
ResourceHandle<Mesh> mesh = ResourceManager::Get().Load<Mesh>("model.fbx", &meshSettings);

相关文档