资源

本页面为自动翻译,可能包含错误。如果发现问题,请通过“编辑此页面”链接帮助修正。

Turian 使用导入管线:你放入项目 assets/ 文件夹的文件是源文件。导入时,每个源文件被分配一个稳定的 GUID(存储在副文件 <file>.meta 中),并烹饪为 .cache/assets/ 下的运行时产物。发布的游戏从打包的 .oap 中读取这些产物,从不接触松散的 assets/ 文件夹。资源之间的引用(材质的纹理、MeshRenderer 的网格)以 GUID 形式存储,因此在重命名和移动时仍然有效。


导入模型(glTF / GLB / OBJ)

.gltf.glb.obj 放入 assets/ 会导入其几何体。对于 glTF/GLB,Turian 还会读取文件中的材质纹理,并从中生成引擎资源——单个模型是一个,会产生多个资源:

  • 每个 glTF 材质对应一个 .material,将 glTF 金属粗糙度模型映射到内置 PBR 着色器(基础颜色、金属度、粗糙度、自发光 + 强度、法线缩放、遮蔽、透明度模式/阈值、双面 → 剔除);
  • 每个引用的图像对应一个纹理资源

这些生成的资源记录在模型的 .meta 中,并在重新导入时保持其 GUID,因此场景引用保持有效。不支持的材质扩展会发出警告,但不会致命。

几何体在导入时烹饪为规范的二进制网格,因此运行时通过一个快速、格式无关的路径加载它——OBJ/glTF/cgltf 解析仅在编辑器中进行,从不在发布的游戏中进行。

编辑生成的子资源

在资源浏览器中选择一个导入的模型;检查器会在生成的资源下列出其生成的材质/纹理。单击一个材质打开并调整(例如其基础颜色)。编辑在重新导入时保持不变——导入器仅(重新)生成缺失的材质。完整的重新导入会清除缓存,从源重新生成所有内容。

导入设置

选择纹理或模型会显示导入设置面板(Unity 风格):

  • 图像 —— 纹理类型(默认 / 法线贴图 / 精灵 / UI / HDR)、色彩空间、Mipmap、压缩、滤镜、包裹、最大尺寸。
  • 模型 —— 导入材质、导入动画、缩放因子。

设置存储在 .meta 中;应用会重新烹饪资源。

外部纹理 vs 内嵌纹理

  • 外部图像(glTF 引用同级 .png/.jpg 文件)成为普通的纹理资源,拥有自己的 .meta——因此你可以像其他任何资源一样选择和交换它们。
  • 内嵌图像(GLB 二进制块或 base64 数据 URI)在导入期间被提取为仅缓存纹理资源。

无论哪种方式,生成的材质都会通过 GUID 绑定每个贴图。常见格式(PNG、JPEG 等)被解码为 RGBA8。

纹理格式

格式 路径
PNG / JPEG / BMP / TGA / WebP 解码为 RGBA8(stb_image)。
KTX2.ktx2 GPU 块格式直接上传——BCn 直通、Zstandard 解压、Basis Universal(ETC1S / UASTC)转码为 BC7。Mip 级别得以保留。

KTX2 支持位于独立、与引擎无关的 ktx2 模块中(包含供应商提供的 Basis Universal 转码器),嵌入在 loadTexture 后面,因此材质和导入器保持格式无关。


PBR 材质

.material 是一个小型 JSON 资源,通过 GUID 引用着色器,并存储该着色器暴露的参数值。内置的 PBR(金属粗糙度) 着色器暴露:

参数 类型 说明
base_color 颜色 漫反射色调(RGBA)
metallicroughness 标量 0–1
emissiveemissive_strength 颜色 / 标量
normal_scaleocclusion_strength 标量
alpha_cutoff 标量 用于蒙版透明度
albedo_mapmetallic_roughness_mapnormal_mapemissive_mapocclusion_map 纹理 通过 GUID 绑定

由于生成的材质是普通资源,你可以在检查器中编辑它,或者将网格切换到不同的材质而无需接触模型。当你将 MeshRenderer 的网格设置为模型且其材质仍为空时,Turian 会自动填充该模型的主要生成材质。

你也可以通过资源浏览器从头创建材质,包括内置预设(默认、金属、塑料、自发光、玻璃)。


示例

3d-model-materials 示例并排展示了三个对象:使用内置金属预设的 OBJ 立方体、作为 glTF(外部 .png 贴图)的 Khronos WaterBottle,以及作为 GLB(导入时提取的内嵌贴图)的同一个瓶子。其结构设计为可扩展到大型场景,如 Sponza 或 Bistro——将模型放入 assets/models/,打开项目,添加到场景中即可。

另请参阅组件参考了解 MeshRenderer 组件,以及项目设置了解引导场景。


← 所有文档 编辑此页面