MSFT_lod.d.ts 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import type { Nullable } from "@babylonjs/core/types.js";
  2. import { Observable } from "@babylonjs/core/Misc/observable.js";
  3. import type { Material } from "@babylonjs/core/Materials/material.js";
  4. import type { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
  5. import type { Mesh } from "@babylonjs/core/Meshes/mesh.js";
  6. import type { INode, IMaterial, IBuffer, IScene } from "../glTFLoaderInterfaces";
  7. import type { IGLTFLoaderExtension } from "../glTFLoaderExtension";
  8. import { GLTFLoader } from "../glTFLoader";
  9. import type { IProperty } from "babylonjs-gltf2interface";
  10. /**
  11. * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Vendor/MSFT_lod/README.md)
  12. */
  13. export declare class MSFT_lod implements IGLTFLoaderExtension {
  14. /**
  15. * The name of this extension.
  16. */
  17. readonly name = "MSFT_lod";
  18. /**
  19. * Defines whether this extension is enabled.
  20. */
  21. enabled: boolean;
  22. /**
  23. * Defines a number that determines the order the extensions are applied.
  24. */
  25. order: number;
  26. /**
  27. * Maximum number of LODs to load, starting from the lowest LOD.
  28. */
  29. maxLODsToLoad: number;
  30. /**
  31. * Observable raised when all node LODs of one level are loaded.
  32. * The event data is the index of the loaded LOD starting from zero.
  33. * Dispose the loader to cancel the loading of the next level of LODs.
  34. */
  35. onNodeLODsLoadedObservable: Observable<number>;
  36. /**
  37. * Observable raised when all material LODs of one level are loaded.
  38. * The event data is the index of the loaded LOD starting from zero.
  39. * Dispose the loader to cancel the loading of the next level of LODs.
  40. */
  41. onMaterialLODsLoadedObservable: Observable<number>;
  42. private _loader;
  43. private _bufferLODs;
  44. private _nodeIndexLOD;
  45. private _nodeSignalLODs;
  46. private _nodePromiseLODs;
  47. private _nodeBufferLODs;
  48. private _materialIndexLOD;
  49. private _materialSignalLODs;
  50. private _materialPromiseLODs;
  51. private _materialBufferLODs;
  52. /**
  53. * @internal
  54. */
  55. constructor(loader: GLTFLoader);
  56. /** @internal */
  57. dispose(): void;
  58. /** @internal */
  59. onReady(): void;
  60. /**
  61. * @internal
  62. */
  63. loadSceneAsync(context: string, scene: IScene): Nullable<Promise<void>>;
  64. /**
  65. * @internal
  66. */
  67. loadNodeAsync(context: string, node: INode, assign: (babylonTransformNode: TransformNode) => void): Nullable<Promise<TransformNode>>;
  68. /**
  69. * @internal
  70. */
  71. _loadMaterialAsync(context: string, material: IMaterial, babylonMesh: Nullable<Mesh>, babylonDrawMode: number, assign: (babylonMaterial: Material) => void): Nullable<Promise<Material>>;
  72. /**
  73. * @internal
  74. */
  75. _loadUriAsync(context: string, property: IProperty, uri: string): Nullable<Promise<ArrayBufferView>>;
  76. /**
  77. * @internal
  78. */
  79. loadBufferAsync(context: string, buffer: IBuffer, byteOffset: number, byteLength: number): Nullable<Promise<ArrayBufferView>>;
  80. private _loadBufferLOD;
  81. /**
  82. * @returns an array of LOD properties from lowest to highest.
  83. * @param context
  84. * @param property
  85. * @param array
  86. * @param ids
  87. */
  88. private _getLODs;
  89. private _disposeTransformNode;
  90. private _disposeMaterials;
  91. }