mcpField
L
load-assets

load-assets

github.com/playcanvas开发31139 次安装1 周前更新
代码仓库

关于 load-assets

一份 PlayCanvas 资源加载技能指南,面向开发者介绍 glTF、压缩纹理与几何体的加载配置。内容涵盖 Draco 和 Basis 解码器设置,以及其他资源类型的处理要点。

主要功能

  1. 01加载 glTF 与 GLB 资源
  2. 02配置 Draco 与 Basis 解码器
  3. 03使用 Draco 几何压缩
  4. 04使用 KTX2 纹理压缩
  5. 05加载 Gaussian splats

适用场景

  1. 01将 GLB 文件作为容器资源实例化
  2. 02为压缩资产配置 WebAssembly 解码器
  3. 03在文件体积与纹理细节间权衡
  4. 04加载 Gaussian splat 场景资源

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/playcanvas/skills --skill load-assets

安装后在 Claude Code 中输入/load-assets确认已加载。

详细介绍

加载资源

完全支持 glTF

将 .glb 文件作为 container 资源加载,并调用 asset.resource.instantiateRenderEntity(),而不是 instantiateModelEntity。导入器已经处理了 KHR_lights_punctual、KHR_materials_* (clearcoat、sheen、transmission、volume、iridescence、variants 等)、KHR_texture_transform 以及 EXT_mesh_gpu_instancing;不要手动重新构建这些内容。使用 AssetListLoader 预加载资源集。

压缩以减小体积

  • 几何体:Draco(KHR_draco_mesh_compression)。不支持 Meshopt,因此请在发布前解码此类文件。
  • 纹理:使用 Basis 的 KTX2(KHR_texture_basisu)可转码为 GPU 格式,同时减少 下载大小和 VRAM。ETC1S 最小且为有损。UASTC 更大但保留 细节,这对法线贴图最为重要。请在大小与可见细节之间权衡。

设置解码器

npm 包不附带 Draco 或 Basis wasm。请从 Engine 的 examples/assets/wasm 中,在已安装的 tag(find-examples)下复制 draco/ 和 basis/,并在加载前配置它们:

import { WasmModule, basisInitialize } from 'playcanvas';

WasmModule.setConfig('DracoDecoderModule', {
    glueUrl: '/wasm/draco/draco.wasm.js',
    wasmUrl: '/wasm/draco/draco.wasm.wasm',
    fallbackUrl: '/wasm/draco/draco.js'
});
await new Promise((resolve) => WasmModule.getInstance('DracoDecoderModule', resolve));
basisInitialize({
    glueUrl: '/wasm/basis/basis.wasm.js',
    wasmUrl: '/wasm/basis/basis.wasm.wasm',
    fallbackUrl: '/wasm/basis/basis.js'
});

在 Web Components 中,<pc-app> 下的 <pc-wasm name="DracoDecoderModule"> 元素通过 glue、wasm 和 fallback 属性设置 Draco 配置。

其他资源

  • 对于以掠射角观看的表面,请提高 texture.anisotropy,其默认值为 1。
  • 高斯 splats 作为 gsplat 资源加载到 gsplat 组件上;请从 gaussian-splatting 示例开始。

评论

支持 Markdown