UNPKG

@needle-tools/gltf-progressive

Version:

three.js support for loading glTF or GLB files that contain progressive loading data

62 lines (61 loc) 2.1 kB
export { version as VERSION } from "./version.js"; export * from "./extension.js"; export * from "./plugins/index.js"; export { LODsManager } from "./lods_manager.js"; export { setDracoDecoderLocation, setKTX2TranscoderLocation, createLoaders, addDracoAndKTX2Loaders, configureLoader } from "./loaders.js"; export { getRaycastMesh, registerRaycastMesh, useRaycastMeshes } from "./utils.js"; import { addDracoAndKTX2Loaders, configureLoader, createLoaders } from "./loaders.js"; import { NEEDLE_progressive } from "./extension.js"; import { LODsManager } from "./lods_manager.js"; /** Use this function to enable progressive loading of gltf models. * @param url The url of the gltf model. * @param renderer The renderer of the scene. * @param loader The gltf loader. * @param opts Options. * @returns The LODsManager instance. * @example In react-three-fiber: * ```ts * const url = 'https://yourdomain.com/yourmodel.glb' * const { scene } = useGLTF(url, false, false, (loader) => { * useNeedleGLTFProgressive(url, gl, loader) * }) * return <primitive object={scene} /> * ``` */ export function useNeedleProgressive(url, renderer, loader, opts) { createLoaders(renderer); addDracoAndKTX2Loaders(loader); configureLoader(loader, { progressive: true, ...opts?.hints, }); loader.register(p => new NEEDLE_progressive(p, url)); const lod = LODsManager.get(renderer); if (opts?.enableLODsManager !== false) { lod.enable(); } return lod; } /** Modelviewer */ import { patchModelViewer } from "./plugins/modelviewer.js"; patchModelViewer(); import { getRaycastMesh, isSSR, useRaycastMeshes } from "./utils.js"; if (!isSSR) { const global = { gltfProgressive: { useNeedleProgressive, LODsManager, configureLoader, getRaycastMesh, useRaycastMeshes, } }; if (!globalThis["Needle"]) { globalThis["Needle"] = global; } else { for (const key in global) { globalThis["Needle"][key] = global[key]; } } }