关于 load-assets
一份 PlayCanvas 资源加载技能指南,面向开发者介绍 glTF、压缩纹理与几何体的加载配置。内容涵盖 Draco 和 Basis 解码器设置,以及其他资源类型的处理要点。
主要功能
- 01加载 glTF 与 GLB 资源
- 02配置 Draco 与 Basis 解码器
- 03使用 Draco 几何压缩
- 04使用 KTX2 纹理压缩
- 05加载 Gaussian splats
适用场景
- 01将 GLB 文件作为容器资源实例化
- 02为压缩资产配置 WebAssembly 解码器
- 03在文件体积与纹理细节间权衡
- 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