Skip to content

WasmGPU.gltf.loadAndImport

Summary

WasmGPU.gltf.loadAndImport handles glTF/GLB loading, parsing, accessor extraction, or import into WasmGPU scene objects.

Syntax

WasmGPU.gltf.loadAndImport(source: string | ArrayBuffer, options?: { load?: LoadGltfOptions; import?: ImportGltfOptions; }): Promise<GltfImportResult>
const result = await wgpu.gltf.loadAndImport(source, options);

Parameters

Name Type Required Description
source string \| ArrayBuffer Yes glTF/GLB source as URL/path string or in-memory ArrayBuffer payload.
options { load?: LoadGltfOptions; import?: ImportGltfOptions; } No Optional configuration object that customizes behavior for this call.

Returns

Promise<GltfImportResult> - Promise that resolves to GltfImportResult when asynchronous work completes.

Type Details

LoadGltfOptions

type LoadGltfOptions = {

    baseUrl?: string;

    fetch?: (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;

    loadImages?: boolean;

    onWarning?: (message: string) => void;

};

LoadGltfOptions Fields

Name Type Required Description
baseUrl string No Base URL used to resolve relative glTF asset URIs.
fetch (input: RequestInfo \| URL, init?: RequestInit) => Promise<Response> No Callback/function value used by this API call.
loadImages boolean No When true, image payloads are also resolved during loading.
onWarning (message: string) => void No Callback invoked for recoverable warnings during load/import.

ImportGltfOptions

type ImportGltfOptions = {

    sceneIndex?: number;

    targetScene?: Scene;

    addToScene?: boolean;

    computeMissingNormals?: boolean;

    importCameras?: boolean;

    importLights?: boolean;

    onWarning?: (message: string) => void;

};

ImportGltfOptions Fields

Name Type Required Description
sceneIndex number No Scene index to import from the glTF document.
targetScene Scene No Existing scene instance used as import destination.
addToScene boolean No When true, imported objects are inserted into the target scene automatically.
computeMissingNormals boolean No When true, normals are computed when missing from source geometry.
importCameras boolean No When true, glTF cameras are imported.
importLights boolean No When true, KHR_lights_punctual lights are imported.
onWarning (message: string) => void No Callback invoked for recoverable warnings during load/import.

GltfImportResult

type GltfImportResult = {

    scene: Scene;

    meshes: Mesh[];

    nodeTransforms: Transform[];

    lights: Light[];

    cameras: Camera[];

    skins: ImportedSkin[];

    animations: ImportedAnimation[];

    clips: AnimationClip[];

    destroy(): void;

};

GltfImportResult Fields

Name Type Required Description
scene Scene Yes Default scene index or scene reference in glTF/root metadata.
meshes Mesh[] Yes Array input for meshes used by this API call.
nodeTransforms Transform[] Yes Array input for nodeTransforms used by this API call.
lights Light[] Yes Array input for lights used by this API call.
cameras Camera[] Yes Array input for cameras used by this API call.
skins ImportedSkin[] Yes Array input for skins used by this API call.
animations ImportedAnimation[] Yes Array input for animations used by this API call.
clips AnimationClip[] Yes Array input for clips used by this API call.
destroy () => void Yes Callback/function value used by this API call.

ImportedSkin

type ImportedSkin = {

    name?: string;

    joints: Transform[];

    inverseBindMatrices?: Float32Array;

    skeleton?: Transform;

    runtime: Skin;

};

ImportedSkin Fields

Name Type Required Description
name string No String input controlling name for this operation.
joints Transform[] Yes Joint transforms in skin order.
inverseBindMatrices Float32Array No Optional packed inverse bind matrices (jointCount * 16) or null.
skeleton Transform No Optional root transform/index of the imported skeleton hierarchy.
runtime Skin Yes Runtime object instance created from imported source data.

ImportedAnimation

type ImportedAnimation = {

    name?: string;

    samplers: ImportedAnimationSampler[];

    channels: ImportedAnimationChannel[];

    clip: AnimationClip | null;

};

ImportedAnimation Fields

Name Type Required Description
name string No String input controlling name for this operation.
samplers ImportedAnimationSampler[] Yes Array input for samplers used by this API call.
channels ImportedAnimationChannel[] Yes Array input for channels used by this API call.
clip AnimationClip \| null Yes AnimationClip used by playback/update operations.

ImportedAnimationSampler

type ImportedAnimationSampler = {

    interpolation: "LINEAR" | "STEP" | "CUBICSPLINE";

    input: Float32Array;

    output: Float32Array;

};

ImportedAnimationSampler Fields

Name Type Required Description
interpolation "LINEAR" \| "STEP" \| "CUBICSPLINE" Yes Interpolation mode for animation sampler evaluation.
input Float32Array Yes Typed numeric/binary data consumed by this operation.
output Float32Array Yes Typed numeric/binary data consumed by this operation.

ImportedAnimationChannel

type ImportedAnimationChannel = {

    sampler: number;

    targetNode: Transform | null;

    path: "translation" | "rotation" | "scale" | "weights";

};

ImportedAnimationChannel Fields

Name Type Required Description
sampler number Yes Numeric input controlling sampler for this operation.
targetNode Transform \| null Yes Resolved runtime target transform for an animation channel.
path "translation" \| "rotation" \| "scale" \| "weights" Yes Animation channel target path (translation/rotation/scale/weights).

Example

const canvas = document.querySelector("canvas");
const wgpu = await WasmGPU.create(canvas);

const source = "./model.glb";
const options = { load: { loadImages: true }, import: { importLights: true, importCameras: true } };
const result = await wgpu.gltf.loadAndImport(source, options);
console.log(result);

See Also