///
///
declare module 'babylonjs-loaders' {
export = BABYLON;
}
declare module BABYLON {
class STLFileLoader implements ISceneLoaderPlugin {
solidPattern: RegExp;
facetsPattern: RegExp;
normalPattern: RegExp;
vertexPattern: RegExp;
name: string;
extensions: ISceneLoaderPluginExtensions;
importMesh(meshesNames: any, scene: Scene, data: any, rootUrl: string, meshes: Nullable, particleSystems: Nullable, skeletons: Nullable): boolean;
load(scene: Scene, data: any, rootUrl: string): boolean;
loadAssetContainer(scene: Scene, data: string, rootUrl: string, onError?: (message: string, exception?: any) => void): AssetContainer;
private isBinary;
private parseBinary;
private parseASCII;
}
}
declare module BABYLON {
/**
* Class reading and parsing the MTL file bundled with the obj file.
*/
class MTLFileLoader {
materials: BABYLON.StandardMaterial[];
/**
* This function will read the mtl file and create each material described inside
* This function could be improve by adding :
* -some component missing (Ni, Tf...)
* -including the specific options available
*
* @param scene
* @param data
* @param rootUrl
*/
parseMTL(scene: BABYLON.Scene, data: string | ArrayBuffer, rootUrl: string): void;
/**
* Gets the texture for the material.
*
* If the material is imported from input file,
* We sanitize the url to ensure it takes the textre from aside the material.
*
* @param rootUrl The root url to load from
* @param value The value stored in the mtl
* @return The Texture
*/
private static _getTexture;
}
class OBJFileLoader implements ISceneLoaderPluginAsync {
static OPTIMIZE_WITH_UV: boolean;
static INVERT_Y: boolean;
name: string;
extensions: string;
obj: RegExp;
group: RegExp;
mtllib: RegExp;
usemtl: RegExp;
smooth: RegExp;
vertexPattern: RegExp;
normalPattern: RegExp;
uvPattern: RegExp;
facePattern1: RegExp;
facePattern2: RegExp;
facePattern3: RegExp;
facePattern4: RegExp;
facePattern5: RegExp;
/**
* Calls synchronously the MTL file attached to this obj.
* Load function or importMesh function don't enable to load 2 files in the same time asynchronously.
* Without this function materials are not displayed in the first frame (but displayed after).
* In consequence it is impossible to get material information in your HTML file
*
* @param url The URL of the MTL file
* @param rootUrl
* @param onSuccess Callback function to be called when the MTL file is loaded
* @private
*/
private _loadMTL;
/**
* Imports one or more meshes from the loaded glTF data and adds them to the scene
* @param meshesNames a string or array of strings of the mesh names that should be loaded from the file
* @param scene the scene the meshes should be added to
* @param data the glTF data to load
* @param rootUrl root url to load from
* @param onProgress event that fires when loading progress has occured
* @param fileName Defines the name of the file to load
* @returns a promise containg the loaded meshes, particles, skeletons and animations
*/
importMeshAsync(meshesNames: any, scene: Scene, data: any, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void, fileName?: string): Promise<{
meshes: AbstractMesh[];
particleSystems: IParticleSystem[];
skeletons: Skeleton[];
animationGroups: AnimationGroup[];
}>;
/**
* Imports all objects from the loaded glTF data and adds them to the scene
* @param scene the scene the objects should be added to
* @param data the glTF data to load
* @param rootUrl root url to load from
* @param onProgress event that fires when loading progress has occured
* @param fileName Defines the name of the file to load
* @returns a promise which completes when objects have been loaded to the scene
*/
loadAsync(scene: Scene, data: string, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void, fileName?: string): Promise;
/**
* Load into an asset container.
* @param scene The scene to load into
* @param data The data to import
* @param rootUrl The root url for scene and resources
* @param onProgress The callback when the load progresses
* @param fileName Defines the name of the file to load
* @returns The loaded asset container
*/
loadAssetContainerAsync(scene: Scene, data: string, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void, fileName?: string): Promise;
/**
* Read the OBJ file and create an Array of meshes.
* Each mesh contains all information given by the OBJ and the MTL file.
* i.e. vertices positions and indices, optional normals values, optional UV values, optional material
*
* @param meshesNames
* @param scene BABYLON.Scene The scene where are displayed the data
* @param data String The content of the obj file
* @param rootUrl String The path to the folder
* @returns Array
* @private
*/
private _parseSolid;
}
}
declare module BABYLON {
/**
* Mode that determines the coordinate system to use.
*/
enum GLTFLoaderCoordinateSystemMode {
/**
* Automatically convert the glTF right-handed data to the appropriate system based on the current coordinate system mode of the scene.
*/
AUTO = 0,
/**
* Sets the useRightHandedSystem flag on the scene.
*/
FORCE_RIGHT_HANDED = 1
}
/**
* Mode that determines what animations will start.
*/
enum GLTFLoaderAnimationStartMode {
/**
* No animation will start.
*/
NONE = 0,
/**
* The first animation will start.
*/
FIRST = 1,
/**
* All animations will start.
*/
ALL = 2
}
/**
* Interface that contains the data for the glTF asset.
*/
interface IGLTFLoaderData {
/**
* JSON that represents the glTF.
*/
json: Object;
/**
* The BIN chunk of a binary glTF
*/
bin: Nullable;
}
/**
* Interface for extending the loader.
*/
interface IGLTFLoaderExtension {
/**
* The name of this extension.
*/
readonly name: string;
/**
* Defines whether this extension is enabled.
*/
enabled: boolean;
}
/**
* Loader state.
*/
enum GLTFLoaderState {
/**
* The asset is loading.
*/
LOADING = 0,
/**
* The asset is ready for rendering.
*/
READY = 1,
/**
* The asset is completely loaded.
*/
COMPLETE = 2
}
/** @hidden */
interface IGLTFLoader extends IDisposable {
readonly state: Nullable;
importMeshAsync: (meshesNames: any, scene: Scene, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void, fileName?: string) => Promise<{
meshes: AbstractMesh[];
particleSystems: IParticleSystem[];
skeletons: Skeleton[];
animationGroups: AnimationGroup[];
}>;
loadAsync: (scene: Scene, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void, fileName?: string) => Promise;
}
/**
* File loader for loading glTF files into a scene.
*/
class GLTFFileLoader implements IDisposable, ISceneLoaderPluginAsync, ISceneLoaderPluginFactory {
/** @hidden */
static _CreateGLTFLoaderV1: (parent: GLTFFileLoader) => IGLTFLoader;
/** @hidden */
static _CreateGLTFLoaderV2: (parent: GLTFFileLoader) => IGLTFLoader;
/**
* Raised when the asset has been parsed
*/
onParsedObservable: Observable;
private _onParsedObserver;
/**
* Raised when the asset has been parsed
*/
onParsed: (loaderData: IGLTFLoaderData) => void;
/**
* Set this property to false to disable incremental loading which delays the loader from calling the success callback until after loading the meshes and shaders.
* Textures always loads asynchronously. For example, the success callback can compute the bounding information of the loaded meshes when incremental loading is disabled.
* Defaults to true.
* @hidden
*/
static IncrementalLoading: boolean;
/**
* Set this property to true in order to work with homogeneous coordinates, available with some converters and exporters.
* Defaults to false. See https://en.wikipedia.org/wiki/Homogeneous_coordinates.
* @hidden
*/
static HomogeneousCoordinates: boolean;
/**
* The coordinate system mode. Defaults to AUTO.
*/
coordinateSystemMode: GLTFLoaderCoordinateSystemMode;
/**
* The animation start mode. Defaults to FIRST.
*/
animationStartMode: GLTFLoaderAnimationStartMode;
/**
* Defines if the loader should compile materials before raising the success callback. Defaults to false.
*/
compileMaterials: boolean;
/**
* Defines if the loader should also compile materials with clip planes. Defaults to false.
*/
useClipPlane: boolean;
/**
* Defines if the loader should compile shadow generators before raising the success callback. Defaults to false.
*/
compileShadowGenerators: boolean;
/**
* Defines if the Alpha blended materials are only applied as coverage.
* If false, (default) The luminance of each pixel will reduce its opacity to simulate the behaviour of most physical materials.
* If true, no extra effects are applied to transparent pixels.
*/
transparencyAsCoverage: boolean;
/** @hidden */
_normalizeAnimationGroupsToBeginAtZero: boolean;
/**
* Function called before loading a url referenced by the asset.
*/
preprocessUrlAsync: (url: string) => Promise;
/**
* Observable raised when the loader creates a mesh after parsing the glTF properties of the mesh.
*/
readonly onMeshLoadedObservable: Observable;
private _onMeshLoadedObserver;
/**
* Callback raised when the loader creates a mesh after parsing the glTF properties of the mesh.
*/
onMeshLoaded: (mesh: AbstractMesh) => void;
/**
* Observable raised when the loader creates a texture after parsing the glTF properties of the texture.
*/
readonly onTextureLoadedObservable: Observable;
private _onTextureLoadedObserver;
/**
* Callback raised when the loader creates a texture after parsing the glTF properties of the texture.
*/
onTextureLoaded: (texture: BaseTexture) => void;
/**
* Observable raised when the loader creates a material after parsing the glTF properties of the material.
*/
readonly onMaterialLoadedObservable: Observable;
private _onMaterialLoadedObserver;
/**
* Callback raised when the loader creates a material after parsing the glTF properties of the material.
*/
onMaterialLoaded: (material: Material) => void;
/**
* Observable raised when the loader creates a camera after parsing the glTF properties of the camera.
*/
readonly onCameraLoadedObservable: Observable;
private _onCameraLoadedObserver;
/**
* Callback raised when the loader creates a camera after parsing the glTF properties of the camera.
*/
onCameraLoaded: (camera: Camera) => void;
/**
* Observable raised when the asset is completely loaded, immediately before the loader is disposed.
* For assets with LODs, raised when all of the LODs are complete.
* For assets without LODs, raised when the model is complete, immediately after the loader resolves the returned promise.
*/
readonly onCompleteObservable: Observable;
private _onCompleteObserver;
/**
* Callback raised when the asset is completely loaded, immediately before the loader is disposed.
* For assets with LODs, raised when all of the LODs are complete.
* For assets without LODs, raised when the model is complete, immediately after the loader resolves the returned promise.
*/
onComplete: () => void;
/**
* Observable raised when an error occurs.
*/
readonly onErrorObservable: Observable;
private _onErrorObserver;
/**
* Callback raised when an error occurs.
*/
onError: (reason: any) => void;
/**
* Observable raised after the loader is disposed.
*/
readonly onDisposeObservable: Observable;
private _onDisposeObserver;
/**
* Callback raised after the loader is disposed.
*/
onDispose: () => void;
/**
* Observable raised after a loader extension is created.
* Set additional options for a loader extension in this event.
*/
readonly onExtensionLoadedObservable: Observable;
private _onExtensionLoadedObserver;
/**
* Callback raised after a loader extension is created.
*/
onExtensionLoaded: (extension: IGLTFLoaderExtension) => void;
/**
* Returns a promise that resolves when the asset is completely loaded.
* @returns a promise that resolves when the asset is completely loaded.
*/
whenCompleteAsync(): Promise;
/**
* The loader state or null if the loader is not active.
*/
readonly loaderState: Nullable;
/**
* Defines if the loader logging is enabled.
*/
loggingEnabled: boolean;
/**
* Defines if the loader should capture performance counters.
*/
capturePerformanceCounters: boolean;
private _loader;
/**
* Name of the loader ("gltf")
*/
name: string;
/**
* Supported file extensions of the loader (.gltf, .glb)
*/
extensions: ISceneLoaderPluginExtensions;
/**
* Disposes the loader, releases resources during load, and cancels any outstanding requests.
*/
dispose(): void;
/** @hidden */
_clear(): void;
/**
* Imports one or more meshes from the loaded glTF data and adds them to the scene
* @param meshesNames a string or array of strings of the mesh names that should be loaded from the file
* @param scene the scene the meshes should be added to
* @param data the glTF data to load
* @param rootUrl root url to load from
* @param onProgress event that fires when loading progress has occured
* @param fileName Defines the name of the file to load
* @returns a promise containg the loaded meshes, particles, skeletons and animations
*/
importMeshAsync(meshesNames: any, scene: Scene, data: any, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void, fileName?: string): Promise<{
meshes: AbstractMesh[];
particleSystems: IParticleSystem[];
skeletons: Skeleton[];
animationGroups: AnimationGroup[];
}>;
/**
* Imports all objects from the loaded glTF data and adds them to the scene
* @param scene the scene the objects should be added to
* @param data the glTF data to load
* @param rootUrl root url to load from
* @param onProgress event that fires when loading progress has occured
* @param fileName Defines the name of the file to load
* @returns a promise which completes when objects have been loaded to the scene
*/
loadAsync(scene: Scene, data: string | ArrayBuffer, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void, fileName?: string): Promise;
/**
* Load into an asset container.
* @param scene The scene to load into
* @param data The data to import
* @param rootUrl The root url for scene and resources
* @param onProgress The callback when the load progresses
* @param fileName Defines the name of the file to load
* @returns The loaded asset container
*/
loadAssetContainerAsync(scene: Scene, data: string | ArrayBuffer, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void, fileName?: string): Promise;
/**
* If the data string can be loaded directly.
* @param data string contianing the file data
* @returns if the data can be loaded directly
*/
canDirectLoad(data: string): boolean;
/**
* Rewrites a url by combining a root url and response url.
*/
rewriteRootURL: (rootUrl: string, responseURL?: string) => string;
/**
* Instantiates a glTF file loader plugin.
* @returns the created plugin
*/
createPlugin(): ISceneLoaderPlugin | ISceneLoaderPluginAsync;
private _parse;
private _getLoader;
private _parseBinary;
private _parseV1;
private _parseV2;
private static _parseVersion;
private static _compareVersion;
private static _decodeBufferToText;
private static readonly _logSpaces;
private _logIndentLevel;
private _loggingEnabled;
/** @hidden */
_log: (message: string) => void;
/** @hidden */
_logOpen(message: string): void;
/** @hidden */
_logClose(): void;
private _logEnabled;
private _logDisabled;
private _capturePerformanceCounters;
/** @hidden */
_startPerformanceCounter: (counterName: string) => void;
/** @hidden */
_endPerformanceCounter: (counterName: string) => void;
private _startPerformanceCounterEnabled;
private _startPerformanceCounterDisabled;
private _endPerformanceCounterEnabled;
private _endPerformanceCounterDisabled;
}
}
declare module BABYLON.GLTF1 {
/**
* Enums
*/
enum EComponentType {
BYTE = 5120,
UNSIGNED_BYTE = 5121,
SHORT = 5122,
UNSIGNED_SHORT = 5123,
FLOAT = 5126
}
enum EShaderType {
FRAGMENT = 35632,
VERTEX = 35633
}
enum EParameterType {
BYTE = 5120,
UNSIGNED_BYTE = 5121,
SHORT = 5122,
UNSIGNED_SHORT = 5123,
INT = 5124,
UNSIGNED_INT = 5125,
FLOAT = 5126,
FLOAT_VEC2 = 35664,
FLOAT_VEC3 = 35665,
FLOAT_VEC4 = 35666,
INT_VEC2 = 35667,
INT_VEC3 = 35668,
INT_VEC4 = 35669,
BOOL = 35670,
BOOL_VEC2 = 35671,
BOOL_VEC3 = 35672,
BOOL_VEC4 = 35673,
FLOAT_MAT2 = 35674,
FLOAT_MAT3 = 35675,
FLOAT_MAT4 = 35676,
SAMPLER_2D = 35678
}
enum ETextureWrapMode {
CLAMP_TO_EDGE = 33071,
MIRRORED_REPEAT = 33648,
REPEAT = 10497
}
enum ETextureFilterType {
NEAREST = 9728,
LINEAR = 9728,
NEAREST_MIPMAP_NEAREST = 9984,
LINEAR_MIPMAP_NEAREST = 9985,
NEAREST_MIPMAP_LINEAR = 9986,
LINEAR_MIPMAP_LINEAR = 9987
}
enum ETextureFormat {
ALPHA = 6406,
RGB = 6407,
RGBA = 6408,
LUMINANCE = 6409,
LUMINANCE_ALPHA = 6410
}
enum ECullingType {
FRONT = 1028,
BACK = 1029,
FRONT_AND_BACK = 1032
}
enum EBlendingFunction {
ZERO = 0,
ONE = 1,
SRC_COLOR = 768,
ONE_MINUS_SRC_COLOR = 769,
DST_COLOR = 774,
ONE_MINUS_DST_COLOR = 775,
SRC_ALPHA = 770,
ONE_MINUS_SRC_ALPHA = 771,
DST_ALPHA = 772,
ONE_MINUS_DST_ALPHA = 773,
CONSTANT_COLOR = 32769,
ONE_MINUS_CONSTANT_COLOR = 32770,
CONSTANT_ALPHA = 32771,
ONE_MINUS_CONSTANT_ALPHA = 32772,
SRC_ALPHA_SATURATE = 776
}
/**
* Interfaces
*/
interface IGLTFProperty {
extensions?: {
[key: string]: any;
};
extras?: Object;
}
interface IGLTFChildRootProperty extends IGLTFProperty {
name?: string;
}
interface IGLTFAccessor extends IGLTFChildRootProperty {
bufferView: string;
byteOffset: number;
byteStride: number;
count: number;
type: string;
componentType: EComponentType;
max?: number[];
min?: number[];
name?: string;
}
interface IGLTFBufferView extends IGLTFChildRootProperty {
buffer: string;
byteOffset: number;
byteLength: number;
byteStride: number;
target?: number;
}
interface IGLTFBuffer extends IGLTFChildRootProperty {
uri: string;
byteLength?: number;
type?: string;
}
interface IGLTFShader extends IGLTFChildRootProperty {
uri: string;
type: EShaderType;
}
interface IGLTFProgram extends IGLTFChildRootProperty {
attributes: string[];
fragmentShader: string;
vertexShader: string;
}
interface IGLTFTechniqueParameter {
type: number;
count?: number;
semantic?: string;
node?: string;
value?: number | boolean | string | Array;
source?: string;
babylonValue?: any;
}
interface IGLTFTechniqueCommonProfile {
lightingModel: string;
texcoordBindings: Object;
parameters?: Array;
}
interface IGLTFTechniqueStatesFunctions {
blendColor?: number[];
blendEquationSeparate?: number[];
blendFuncSeparate?: number[];
colorMask: boolean[];
cullFace: number[];
}
interface IGLTFTechniqueStates {
enable: number[];
functions: IGLTFTechniqueStatesFunctions;
}
interface IGLTFTechnique extends IGLTFChildRootProperty {
parameters: {
[key: string]: IGLTFTechniqueParameter;
};
program: string;
attributes: {
[key: string]: string;
};
uniforms: {
[key: string]: string;
};
states: IGLTFTechniqueStates;
}
interface IGLTFMaterial extends IGLTFChildRootProperty {
technique?: string;
values: string[];
}
interface IGLTFMeshPrimitive extends IGLTFProperty {
attributes: {
[key: string]: string;
};
indices: string;
material: string;
mode?: number;
}
interface IGLTFMesh extends IGLTFChildRootProperty {
primitives: IGLTFMeshPrimitive[];
}
interface IGLTFImage extends IGLTFChildRootProperty {
uri: string;
}
interface IGLTFSampler extends IGLTFChildRootProperty {
magFilter?: number;
minFilter?: number;
wrapS?: number;
wrapT?: number;
}
interface IGLTFTexture extends IGLTFChildRootProperty {
sampler: string;
source: string;
format?: ETextureFormat;
internalFormat?: ETextureFormat;
target?: number;
type?: number;
babylonTexture?: Texture;
}
interface IGLTFAmbienLight {
color?: number[];
}
interface IGLTFDirectionalLight {
color?: number[];
}
interface IGLTFPointLight {
color?: number[];
constantAttenuation?: number;
linearAttenuation?: number;
quadraticAttenuation?: number;
}
interface IGLTFSpotLight {
color?: number[];
constantAttenuation?: number;
fallOfAngle?: number;
fallOffExponent?: number;
linearAttenuation?: number;
quadraticAttenuation?: number;
}
interface IGLTFLight extends IGLTFChildRootProperty {
type: string;
}
interface IGLTFCameraOrthographic {
xmag: number;
ymag: number;
zfar: number;
znear: number;
}
interface IGLTFCameraPerspective {
aspectRatio: number;
yfov: number;
zfar: number;
znear: number;
}
interface IGLTFCamera extends IGLTFChildRootProperty {
type: string;
}
interface IGLTFAnimationChannelTarget {
id: string;
path: string;
}
interface IGLTFAnimationChannel {
sampler: string;
target: IGLTFAnimationChannelTarget;
}
interface IGLTFAnimationSampler {
input: string;
output: string;
interpolation?: string;
}
interface IGLTFAnimation extends IGLTFChildRootProperty {
channels?: IGLTFAnimationChannel[];
parameters?: {
[key: string]: string;
};
samplers?: {
[key: string]: IGLTFAnimationSampler;
};
}
interface IGLTFNodeInstanceSkin {
skeletons: string[];
skin: string;
meshes: string[];
}
interface IGLTFSkins extends IGLTFChildRootProperty {
bindShapeMatrix: number[];
inverseBindMatrices: string;
jointNames: string[];
babylonSkeleton?: Skeleton;
}
interface IGLTFNode extends IGLTFChildRootProperty {
camera?: string;
children: string[];
skin?: string;
jointName?: string;
light?: string;
matrix: number[];
mesh?: string;
meshes?: string[];
rotation?: number[];
scale?: number[];
translation?: number[];
babylonNode?: Node;
}
interface IGLTFScene extends IGLTFChildRootProperty {
nodes: string[];
}
/**
* Runtime
*/
interface IGLTFRuntime {
extensions: {
[key: string]: any;
};
accessors: {
[key: string]: IGLTFAccessor;
};
buffers: {
[key: string]: IGLTFBuffer;
};
bufferViews: {
[key: string]: IGLTFBufferView;
};
meshes: {
[key: string]: IGLTFMesh;
};
lights: {
[key: string]: IGLTFLight;
};
cameras: {
[key: string]: IGLTFCamera;
};
nodes: {
[key: string]: IGLTFNode;
};
images: {
[key: string]: IGLTFImage;
};
textures: {
[key: string]: IGLTFTexture;
};
shaders: {
[key: string]: IGLTFShader;
};
programs: {
[key: string]: IGLTFProgram;
};
samplers: {
[key: string]: IGLTFSampler;
};
techniques: {
[key: string]: IGLTFTechnique;
};
materials: {
[key: string]: IGLTFMaterial;
};
animations: {
[key: string]: IGLTFAnimation;
};
skins: {
[key: string]: IGLTFSkins;
};
currentScene?: Object;
scenes: {
[key: string]: IGLTFScene;
};
extensionsUsed: string[];
extensionsRequired?: string[];
buffersCount: number;
shaderscount: number;
scene: Scene;
rootUrl: string;
loadedBufferCount: number;
loadedBufferViews: {
[name: string]: ArrayBufferView;
};
loadedShaderCount: number;
importOnlyMeshes: boolean;
importMeshesNames?: string[];
dummyNodes: Node[];
}
/**
* Bones
*/
interface INodeToRoot {
bone: Bone;
node: IGLTFNode;
id: string;
}
interface IJointNode {
node: IGLTFNode;
id: string;
}
}
declare module BABYLON.GLTF1 {
/**
* Implementation of the base glTF spec
*/
class GLTFLoaderBase {
static CreateRuntime(parsedData: any, scene: Scene, rootUrl: string): IGLTFRuntime;
static LoadBufferAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (buffer: ArrayBufferView) => void, onError: (message: string) => void, onProgress?: () => void): void;
static LoadTextureBufferAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (buffer: Nullable) => void, onError: (message: string) => void): void;
static CreateTextureAsync(gltfRuntime: IGLTFRuntime, id: string, buffer: Nullable, onSuccess: (texture: Texture) => void, onError: (message: string) => void): void;
static LoadShaderStringAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (shaderString: string | ArrayBuffer) => void, onError?: (message: string) => void): void;
static LoadMaterialAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (material: Material) => void, onError: (message: string) => void): void;
}
/**
* glTF V1 Loader
*/
class GLTFLoader implements IGLTFLoader {
static Extensions: {
[name: string]: GLTFLoaderExtension;
};
static RegisterExtension(extension: GLTFLoaderExtension): void;
state: Nullable;
dispose(): void;
private _importMeshAsync;
/**
* Imports one or more meshes from a loaded gltf file and adds them to the scene
* @param meshesNames a string or array of strings of the mesh names that should be loaded from the file
* @param scene the scene the meshes should be added to
* @param data gltf data containing information of the meshes in a loaded file
* @param rootUrl root url to load from
* @param onProgress event that fires when loading progress has occured
* @returns a promise containg the loaded meshes, particles, skeletons and animations
*/
importMeshAsync(meshesNames: any, scene: Scene, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void): Promise<{
meshes: AbstractMesh[];
particleSystems: IParticleSystem[];
skeletons: Skeleton[];
animationGroups: AnimationGroup[];
}>;
private _loadAsync;
/**
* Imports all objects from a loaded gltf file and adds them to the scene
* @param scene the scene the objects should be added to
* @param data gltf data containing information of the meshes in a loaded file
* @param rootUrl root url to load from
* @param onProgress event that fires when loading progress has occured
* @returns a promise which completes when objects have been loaded to the scene
*/
loadAsync(scene: Scene, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void): Promise;
private _loadShadersAsync;
private _loadBuffersAsync;
private _createNodes;
}
}
declare module BABYLON.GLTF1 {
/**
* Utils functions for GLTF
*/
class GLTFUtils {
/**
* Sets the given "parameter" matrix
* @param scene: the {BABYLON.Scene} object
* @param source: the source node where to pick the matrix
* @param parameter: the GLTF technique parameter
* @param uniformName: the name of the shader's uniform
* @param shaderMaterial: the shader material
*/
static SetMatrix(scene: Scene, source: Node, parameter: IGLTFTechniqueParameter, uniformName: string, shaderMaterial: ShaderMaterial | Effect): void;
/**
* Sets the given "parameter" matrix
* @param shaderMaterial: the shader material
* @param uniform: the name of the shader's uniform
* @param value: the value of the uniform
* @param type: the uniform's type (EParameterType FLOAT, VEC2, VEC3 or VEC4)
*/
static SetUniform(shaderMaterial: ShaderMaterial | Effect, uniform: string, value: any, type: number): boolean;
/**
* Returns the wrap mode of the texture
* @param mode: the mode value
*/
static GetWrapMode(mode: number): number;
/**
* Returns the byte stride giving an accessor
* @param accessor: the GLTF accessor objet
*/
static GetByteStrideFromType(accessor: IGLTFAccessor): number;
/**
* Returns the texture filter mode giving a mode value
* @param mode: the filter mode value
*/
static GetTextureFilterMode(mode: number): ETextureFilterType;
static GetBufferFromBufferView(gltfRuntime: IGLTFRuntime, bufferView: IGLTFBufferView, byteOffset: number, byteLength: number, componentType: EComponentType): ArrayBufferView;
/**
* Returns a buffer from its accessor
* @param gltfRuntime: the GLTF runtime
* @param accessor: the GLTF accessor
*/
static GetBufferFromAccessor(gltfRuntime: IGLTFRuntime, accessor: IGLTFAccessor): any;
/**
* Decodes a buffer view into a string
* @param view: the buffer view
*/
static DecodeBufferToText(view: ArrayBufferView): string;
/**
* Returns the default material of gltf. Related to
* https://github.com/KhronosGroup/glTF/tree/master/specification/1.0#appendix-a-default-material
* @param scene: the Babylon.js scene
*/
static GetDefaultMaterial(scene: Scene): ShaderMaterial;
private static _DefaultMaterial;
}
}
declare module BABYLON.GLTF1 {
abstract class GLTFLoaderExtension {
private _name;
constructor(name: string);
readonly name: string;
/**
* Defines an override for loading the runtime
* Return true to stop further extensions from loading the runtime
*/
loadRuntimeAsync(scene: Scene, data: IGLTFLoaderData, rootUrl: string, onSuccess?: (gltfRuntime: IGLTFRuntime) => void, onError?: (message: string) => void): boolean;
/**
* Defines an onverride for creating gltf runtime
* Return true to stop further extensions from creating the runtime
*/
loadRuntimeExtensionsAsync(gltfRuntime: IGLTFRuntime, onSuccess: () => void, onError?: (message: string) => void): boolean;
/**
* Defines an override for loading buffers
* Return true to stop further extensions from loading this buffer
*/
loadBufferAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (buffer: ArrayBufferView) => void, onError: (message: string) => void, onProgress?: () => void): boolean;
/**
* Defines an override for loading texture buffers
* Return true to stop further extensions from loading this texture data
*/
loadTextureBufferAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (buffer: ArrayBufferView) => void, onError: (message: string) => void): boolean;
/**
* Defines an override for creating textures
* Return true to stop further extensions from loading this texture
*/
createTextureAsync(gltfRuntime: IGLTFRuntime, id: string, buffer: ArrayBufferView, onSuccess: (texture: Texture) => void, onError: (message: string) => void): boolean;
/**
* Defines an override for loading shader strings
* Return true to stop further extensions from loading this shader data
*/
loadShaderStringAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (shaderString: string) => void, onError: (message: string) => void): boolean;
/**
* Defines an override for loading materials
* Return true to stop further extensions from loading this material
*/
loadMaterialAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (material: Material) => void, onError: (message: string) => void): boolean;
static LoadRuntimeAsync(scene: Scene, data: IGLTFLoaderData, rootUrl: string, onSuccess?: (gltfRuntime: IGLTFRuntime) => void, onError?: (message: string) => void): void;
static LoadRuntimeExtensionsAsync(gltfRuntime: IGLTFRuntime, onSuccess: () => void, onError?: (message: string) => void): void;
static LoadBufferAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (bufferView: ArrayBufferView) => void, onError: (message: string) => void, onProgress?: () => void): void;
static LoadTextureAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (texture: Texture) => void, onError: (message: string) => void): void;
static LoadShaderStringAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (shaderData: string | ArrayBuffer) => void, onError: (message: string) => void): void;
static LoadMaterialAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (material: Material) => void, onError: (message: string) => void): void;
private static LoadTextureBufferAsync;
private static CreateTextureAsync;
private static ApplyExtensions;
}
}
declare module BABYLON.GLTF1 {
class GLTFBinaryExtension extends GLTFLoaderExtension {
private _bin;
constructor();
loadRuntimeAsync(scene: Scene, data: IGLTFLoaderData, rootUrl: string, onSuccess: (gltfRuntime: IGLTFRuntime) => void, onError: (message: string) => void): boolean;
loadBufferAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (buffer: ArrayBufferView) => void, onError: (message: string) => void): boolean;
loadTextureBufferAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (buffer: ArrayBufferView) => void, onError: (message: string) => void): boolean;
loadShaderStringAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (shaderString: string) => void, onError: (message: string) => void): boolean;
}
}
declare module BABYLON.GLTF1 {
class GLTFMaterialsCommonExtension extends GLTFLoaderExtension {
constructor();
loadRuntimeExtensionsAsync(gltfRuntime: IGLTFRuntime, onSuccess: () => void, onError: (message: string) => void): boolean;
loadMaterialAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (material: Material) => void, onError: (message: string) => void): boolean;
private _loadTexture;
}
}
declare module BABYLON.GLTF2 {
/**
* Loader interface with an index field.
*/
interface IArrayItem {
/**
* The index of this item in the array.
*/
index: number;
}
/**
* Loader interface with additional members.
*/
interface ILoaderAccessor extends IAccessor, IArrayItem {
/** @hidden */
_data?: Promise;
/** @hidden */
_babylonVertexBuffer?: Promise;
}
/**
* Loader interface with additional members.
*/
interface ILoaderAnimationChannel extends IAnimationChannel, IArrayItem {
}
/** @hidden */
interface _ILoaderAnimationSamplerData {
input: Float32Array;
interpolation: AnimationSamplerInterpolation;
output: Float32Array;
}
/**
* Loader interface with additional members.
*/
interface ILoaderAnimationSampler extends IAnimationSampler, IArrayItem {
/** @hidden */
_data?: Promise<_ILoaderAnimationSamplerData>;
}
/**
* Loader interface with additional members.
*/
interface ILoaderAnimation extends IAnimation, IArrayItem {
channels: ILoaderAnimationChannel[];
samplers: ILoaderAnimationSampler[];
/** @hidden */
_babylonAnimationGroup?: AnimationGroup;
}
/**
* Loader interface with additional members.
*/
interface ILoaderBuffer extends IBuffer, IArrayItem {
/** @hidden */
_data?: Promise;
}
/**
* Loader interface with additional members.
*/
interface ILoaderBufferView extends IBufferView, IArrayItem {
/** @hidden */
_data?: Promise;
/** @hidden */
_babylonBuffer?: Promise;
}
/**
* Loader interface with additional members.
*/
interface ILoaderCamera extends ICamera, IArrayItem {
}
/**
* Loader interface with additional members.
*/
interface ILoaderImage extends IImage, IArrayItem {
/** @hidden */
_data?: Promise;
}
/**
* Loader interface with additional members.
*/
interface ILoaderMaterialNormalTextureInfo extends IMaterialNormalTextureInfo, ILoaderTextureInfo {
}
/**
* Loader interface with additional members.
*/
interface ILoaderMaterialOcclusionTextureInfo extends IMaterialOcclusionTextureInfo, ILoaderTextureInfo {
}
/**
* Loader interface with additional members.
*/
interface ILoaderMaterialPbrMetallicRoughness extends IMaterialPbrMetallicRoughness {
baseColorTexture?: ILoaderTextureInfo;
metallicRoughnessTexture?: ILoaderTextureInfo;
}
/**
* Loader interface with additional members.
*/
interface ILoaderMaterial extends IMaterial, IArrayItem {
pbrMetallicRoughness?: ILoaderMaterialPbrMetallicRoughness;
normalTexture?: ILoaderMaterialNormalTextureInfo;
occlusionTexture?: ILoaderMaterialOcclusionTextureInfo;
emissiveTexture?: ILoaderTextureInfo;
/** @hidden */
_babylonData?: {
[drawMode: number]: {
material: Material;
meshes: AbstractMesh[];
promise: Promise;
};
};
}
/**
* Loader interface with additional members.
*/
interface ILoaderMesh extends IMesh, IArrayItem {
primitives: ILoaderMeshPrimitive[];
}
/**
* Loader interface with additional members.
*/
interface ILoaderMeshPrimitive extends IMeshPrimitive, IArrayItem {
}
/**
* Loader interface with additional members.
*/
interface ILoaderNode extends INode, IArrayItem {
/**
* The parent glTF node.
*/
parent?: ILoaderNode;
/** @hidden */
_babylonMesh?: Mesh;
/** @hidden */
_primitiveBabylonMeshes?: Mesh[];
/** @hidden */
_babylonBones?: Bone[];
/** @hidden */
_numMorphTargets?: number;
}
/** @hidden */
interface _ILoaderSamplerData {
noMipMaps: boolean;
samplingMode: number;
wrapU: number;
wrapV: number;
}
/**
* Loader interface with additional members.
*/
interface ILoaderSampler extends ISampler, IArrayItem {
/** @hidden */
_data?: _ILoaderSamplerData;
}
/**
* Loader interface with additional members.
*/
interface ILoaderScene extends IScene, IArrayItem {
}
/**
* Loader interface with additional members.
*/
interface ILoaderSkin extends ISkin, IArrayItem {
/** @hidden */
_babylonSkeleton?: Skeleton;
/** @hidden */
_promise?: Promise;
}
/**
* Loader interface with additional members.
*/
interface ILoaderTexture extends ITexture, IArrayItem {
}
/**
* Loader interface with additional members.
*/
interface ILoaderTextureInfo extends ITextureInfo {
}
/**
* Loader interface with additional members.
*/
interface ILoaderGLTF extends IGLTF {
accessors?: ILoaderAccessor[];
animations?: ILoaderAnimation[];
buffers?: ILoaderBuffer[];
bufferViews?: ILoaderBufferView[];
cameras?: ILoaderCamera[];
images?: ILoaderImage[];
materials?: ILoaderMaterial[];
meshes?: ILoaderMesh[];
nodes?: ILoaderNode[];
samplers?: ILoaderSampler[];
scenes?: ILoaderScene[];
skins?: ILoaderSkin[];
textures?: ILoaderTexture[];
}
}
/**
* Defines the module for importing and exporting glTF 2.0 assets
*/
declare module BABYLON.GLTF2 {
/**
* Helper class for working with arrays when loading the glTF asset
*/
class ArrayItem {
/**
* Gets an item from the given array.
* @param context The context when loading the asset
* @param array The array to get the item from
* @param index The index to the array
* @returns The array item
*/
static Get(context: string, array: ArrayLike | undefined, index: number | undefined): T;
/**
* Assign an `index` field to each item of the given array.
* @param array The array of items
*/
static Assign(array?: IArrayItem[]): void;
}
/**
* The glTF 2.0 loader
*/
class GLTFLoader implements IGLTFLoader {
/** The glTF object parsed from the JSON. */
gltf: ILoaderGLTF;
/** The Babylon scene when loading the asset. */
babylonScene: Scene;
/** @hidden */
_completePromises: Promise[];
private _disposed;
private _parent;
private _state;
private _extensions;
private _rootUrl;
private _fileName;
private _uniqueRootUrl;
private _rootBabylonMesh;
private _defaultBabylonMaterialData;
private _progressCallback?;
private _requests;
private static readonly _DefaultSampler;
private static _ExtensionNames;
private static _ExtensionFactories;
/**
* Registers a loader extension.
* @param name The name of the loader extension.
* @param factory The factory function that creates the loader extension.
*/
static RegisterExtension(name: string, factory: (loader: GLTFLoader) => IGLTFLoaderExtension): void;
/**
* Unregisters a loader extension.
* @param name The name of the loader extenion.
* @returns A boolean indicating whether the extension has been unregistered
*/
static UnregisterExtension(name: string): boolean;
/**
* Gets the loader state.
*/
readonly state: Nullable;
/** @hidden */
constructor(parent: GLTFFileLoader);
/** @hidden */
dispose(): void;
/** @hidden */
importMeshAsync(meshesNames: any, scene: Scene, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void, fileName?: string): Promise<{
meshes: AbstractMesh[];
particleSystems: IParticleSystem[];
skeletons: Skeleton[];
animationGroups: AnimationGroup[];
}>;
/** @hidden */
loadAsync(scene: Scene, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void, fileName?: string): Promise;
private _loadAsync;
private _loadData;
private _setupData;
private _loadExtensions;
private _checkExtensions;
private _setState;
private _createRootNode;
/**
* Loads a glTF scene.
* @param context The context when loading the asset
* @param scene The glTF scene property
* @returns A promise that resolves when the load is complete
*/
loadSceneAsync(context: string, scene: ILoaderScene): Promise;
private _forEachPrimitive;
private _getMeshes;
private _getSkeletons;
private _getAnimationGroups;
private _startAnimations;
/**
* Loads a glTF node.
* @param context The context when loading the asset
* @param node The glTF node property
* @param assign A function called synchronously after parsing the glTF properties
* @returns A promise that resolves with the loaded Babylon mesh when the load is complete
*/
loadNodeAsync(context: string, node: ILoaderNode, assign?: (babylonMesh: Mesh) => void): Promise;
private _loadMeshAsync;
private _loadMeshPrimitiveAsync;
private _loadVertexDataAsync;
private _createMorphTargets;
private _loadMorphTargetsAsync;
private _loadMorphTargetVertexDataAsync;
private static _LoadTransform;
private _loadSkinAsync;
private _loadBones;
private _loadBone;
private _loadSkinInverseBindMatricesDataAsync;
private _updateBoneMatrices;
private _getNodeMatrix;
/**
* Loads a glTF camera.
* @param context The context when loading the asset
* @param camera The glTF camera property
* @param assign A function called synchronously after parsing the glTF properties
* @returns A promise that resolves with the loaded Babylon camera when the load is complete
*/
loadCameraAsync(context: string, camera: ILoaderCamera, assign?: (babylonCamera: Camera) => void): Promise;
private _loadAnimationsAsync;
/**
* Loads a glTF animation.
* @param context The context when loading the asset
* @param animation The glTF animation property
* @returns A promise that resolves with the loaded Babylon animation group when the load is complete
*/
loadAnimationAsync(context: string, animation: ILoaderAnimation): Promise;
private _loadAnimationChannelAsync;
private _loadAnimationSamplerAsync;
private _loadBufferAsync;
/**
* Loads a glTF buffer view.
* @param context The context when loading the asset
* @param bufferView The glTF buffer view property
* @returns A promise that resolves with the loaded data when the load is complete
*/
loadBufferViewAsync(context: string, bufferView: ILoaderBufferView): Promise;
private _loadIndicesAccessorAsync;
private _loadFloatAccessorAsync;
private _loadVertexBufferViewAsync;
private _loadVertexAccessorAsync;
private _loadMaterialMetallicRoughnessPropertiesAsync;
/** @hidden */
_loadMaterialAsync(context: string, material: ILoaderMaterial, babylonMesh: Mesh, babylonDrawMode: number, assign?: (babylonMaterial: Material) => void): Promise;
private _createDefaultMaterial;
/**
* Creates a Babylon material from a glTF material.
* @param context The context when loading the asset
* @param material The glTF material property
* @param babylonDrawMode The draw mode for the Babylon material
* @returns The Babylon material
*/
createMaterial(context: string, material: ILoaderMaterial, babylonDrawMode: number): Material;
/**
* Loads properties from a glTF material into a Babylon material.
* @param context The context when loading the asset
* @param material The glTF material property
* @param babylonMaterial The Babylon material
* @returns A promise that resolves when the load is complete
*/
loadMaterialPropertiesAsync(context: string, material: ILoaderMaterial, babylonMaterial: Material): Promise;
/**
* Loads the normal, occlusion, and emissive properties from a glTF material into a Babylon material.
* @param context The context when loading the asset
* @param material The glTF material property
* @param babylonMaterial The Babylon material
* @returns A promise that resolves when the load is complete
*/
loadMaterialBasePropertiesAsync(context: string, material: ILoaderMaterial, babylonMaterial: Material): Promise;
/**
* Loads the alpha properties from a glTF material into a Babylon material.
* Must be called after the setting the albedo texture of the Babylon material when the material has an albedo texture.
* @param context The context when loading the asset
* @param material The glTF material property
* @param babylonMaterial The Babylon material
*/
loadMaterialAlphaProperties(context: string, material: ILoaderMaterial, babylonMaterial: Material): void;
/**
* Loads a glTF texture info.
* @param context The context when loading the asset
* @param textureInfo The glTF texture info property
* @param assign A function called synchronously after parsing the glTF properties
* @returns A promise that resolves with the loaded Babylon texture when the load is complete
*/
loadTextureInfoAsync(context: string, textureInfo: ILoaderTextureInfo, assign?: (babylonTexture: BaseTexture) => void): Promise;
private _loadTextureAsync;
private _loadSampler;
/**
* Loads a glTF image.
* @param context The context when loading the asset
* @param image The glTF image property
* @returns A promise that resolves with the loaded data when the load is complete
*/
loadImageAsync(context: string, image: ILoaderImage): Promise;
/**
* Loads a glTF uri.
* @param context The context when loading the asset
* @param uri The base64 or relative uri
* @returns A promise that resolves with the loaded data when the load is complete
*/
loadUriAsync(context: string, uri: string): Promise;
private _onProgress;
private static _GetTextureWrapMode;
private static _GetTextureSamplingMode;
private static _GetTypedArray;
private static _GetNumComponents;
private static _ValidateUri;
private static _GetDrawMode;
private _compileMaterialsAsync;
private _compileShadowGeneratorsAsync;
private _forEachExtensions;
private _applyExtensions;
private _extensionsOnLoading;
private _extensionsOnReady;
private _extensionsLoadSceneAsync;
private _extensionsLoadNodeAsync;
private _extensionsLoadCameraAsync;
private _extensionsLoadVertexDataAsync;
private _extensionsLoadMaterialAsync;
private _extensionsCreateMaterial;
private _extensionsLoadMaterialPropertiesAsync;
private _extensionsLoadTextureInfoAsync;
private _extensionsLoadAnimationAsync;
private _extensionsLoadUriAsync;
/**
* Helper method called by a loader extension to load an glTF extension.
* @param context The context when loading the asset
* @param property The glTF property to load the extension from
* @param extensionName The name of the extension to load
* @param actionAsync The action to run
* @returns The promise returned by actionAsync or null if the extension does not exist
*/
static LoadExtensionAsync(context: string, property: IProperty, extensionName: string, actionAsync: (extensionContext: string, extension: TExtension) => Nullable>): Nullable>;
/**
* Helper method called by a loader extension to load a glTF extra.
* @param context The context when loading the asset
* @param property The glTF property to load the extra from
* @param extensionName The name of the extension to load
* @param actionAsync The action to run
* @returns The promise returned by actionAsync or null if the extra does not exist
*/
static LoadExtraAsync(context: string, property: IProperty, extensionName: string, actionAsync: (extraContext: string, extra: TExtra) => Nullable>): Nullable>;
/**
* Increments the indentation level and logs a message.
* @param message The message to log
*/
logOpen(message: string): void;
/**
* Decrements the indentation level.
*/
logClose(): void;
/**
* Logs a message
* @param message The message to log
*/
log(message: string): void;
/**
* Starts a performance counter.
* @param counterName The name of the performance counter
*/
startPerformanceCounter(counterName: string): void;
/**
* Ends a performance counter.
* @param counterName The name of the performance counter
*/
endPerformanceCounter(counterName: string): void;
}
}
declare module BABYLON.GLTF2 {
/**
* Interface for a glTF loader extension.
*/
interface IGLTFLoaderExtension extends BABYLON.IGLTFLoaderExtension, IDisposable {
/**
* Called after the loader state changes to LOADING.
*/
onLoading?(): void;
/**
* Called after the loader state changes to READY.
*/
onReady?(): void;
/**
* Define this method to modify the default behavior when loading scenes.
* @param context The context when loading the asset
* @param scene The glTF scene property
* @returns A promise that resolves when the load is complete or null if not handled
*/
loadSceneAsync?(context: string, scene: ILoaderScene): Nullable>;
/**
* Define this method to modify the default behavior when loading nodes.
* @param context The context when loading the asset
* @param node The glTF node property
* @param assign A function called synchronously after parsing the glTF properties
* @returns A promise that resolves with the loaded Babylon mesh when the load is complete or null if not handled
*/
loadNodeAsync?(context: string, node: ILoaderNode, assign: (babylonMesh: Mesh) => void): Nullable>;
/**
* Define this method to modify the default behavior when loading cameras.
* @param context The context when loading the asset
* @param camera The glTF camera property
* @param assign A function called synchronously after parsing the glTF properties
* @returns A promise that resolves with the loaded Babylon camera when the load is complete or null if not handled
*/
loadCameraAsync?(context: string, camera: ILoaderCamera, assign: (babylonCamera: Camera) => void): Nullable>;
/**
* @hidden Define this method to modify the default behavior when loading vertex data for mesh primitives.
* @param context The context when loading the asset
* @param primitive The glTF mesh primitive property
* @returns A promise that resolves with the loaded geometry when the load is complete or null if not handled
*/
_loadVertexDataAsync?(context: string, primitive: ILoaderMeshPrimitive, babylonMesh: Mesh): Nullable>;
/**
* @hidden Define this method to modify the default behavior when loading materials. Load material creates the material and then loads material properties.
* @param context The context when loading the asset
* @param material The glTF material property
* @param assign A function called synchronously after parsing the glTF properties
* @returns A promise that resolves with the loaded Babylon material when the load is complete or null if not handled
*/
_loadMaterialAsync?(context: string, material: ILoaderMaterial, babylonMesh: Mesh, babylonDrawMode: number, assign: (babylonMaterial: Material) => void): Nullable>;
/**
* Define this method to modify the default behavior when creating materials.
* @param context The context when loading the asset
* @param material The glTF material property
* @param babylonDrawMode The draw mode for the Babylon material
* @returns The Babylon material or null if not handled
*/
createMaterial?(context: string, material: ILoaderMaterial, babylonDrawMode: number): Nullable;
/**
* Define this method to modify the default behavior when loading material properties.
* @param context The context when loading the asset
* @param material The glTF material property
* @param babylonMaterial The Babylon material
* @returns A promise that resolves when the load is complete or null if not handled
*/
loadMaterialPropertiesAsync?(context: string, material: ILoaderMaterial, babylonMaterial: Material): Nullable>;
/**
* Define this method to modify the default behavior when loading texture infos.
* @param context The context when loading the asset
* @param textureInfo The glTF texture info property
* @param assign A function called synchronously after parsing the glTF properties
* @returns A promise that resolves with the loaded Babylon texture when the load is complete or null if not handled
*/
loadTextureInfoAsync?(context: string, textureInfo: ITextureInfo, assign: (babylonTexture: BaseTexture) => void): Nullable>;
/**
* Define this method to modify the default behavior when loading animations.
* @param context The context when loading the asset
* @param animation The glTF animation property
* @returns A promise that resolves with the loaded Babylon animation group when the load is complete or null if not handled
*/
loadAnimationAsync?(context: string, animation: IAnimation): Nullable>;
/**
* Define this method to modify the default behavior when loading uris.
* @param context The context when loading the asset
* @param uri The uri to load
* @returns A promise that resolves with the loaded data when the load is complete or null if not handled
*/
_loadUriAsync?(context: string, uri: string): Nullable>;
}
}
/**
* Defines the module for the built-in glTF 2.0 loader extensions.
*/
declare module BABYLON.GLTF2.Extensions {
}
declare module BABYLON.GLTF2.Extensions {
/**
* [Specification](https://github.com/najadojo/glTF/tree/MSFT_audio_emitter/extensions/2.0/Vendor/MSFT_audio_emitter)
*/
class MSFT_audio_emitter implements IGLTFLoaderExtension {
/** The name of this extension. */
readonly name: string;
/** Defines whether this extension is enabled. */
enabled: boolean;
private _loader;
private _clips;
private _emitters;
/** @hidden */
constructor(loader: GLTFLoader);
/** @hidden */
dispose(): void;
/** @hidden */
onLoading(): void;
/** @hidden */
loadSceneAsync(context: string, scene: ILoaderScene): Nullable>;
/** @hidden */
loadNodeAsync(context: string, node: ILoaderNode, assign: (babylonMesh: Mesh) => void): Nullable>;
/** @hidden */
loadAnimationAsync(context: string, animation: ILoaderAnimation): Nullable>;
private _loadClipAsync;
private _loadEmitterAsync;
private _getEventAction;
private _loadAnimationEventAsync;
}
}
declare module BABYLON.GLTF2.Extensions {
/**
* [Specification](https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/MSFT_lod)
*/
class MSFT_lod implements IGLTFLoaderExtension {
/** The name of this extension. */
readonly name: string;
/** Defines whether this extension is enabled. */
enabled: boolean;
/**
* Maximum number of LODs to load, starting from the lowest LOD.
*/
maxLODsToLoad: number;
/**
* Observable raised when all node LODs of one level are loaded.
* The event data is the index of the loaded LOD starting from zero.
* Dispose the loader to cancel the loading of the next level of LODs.
*/
onNodeLODsLoadedObservable: Observable;
/**
* Observable raised when all material LODs of one level are loaded.
* The event data is the index of the loaded LOD starting from zero.
* Dispose the loader to cancel the loading of the next level of LODs.
*/
onMaterialLODsLoadedObservable: Observable;
private _loader;
private _nodeIndexLOD;
private _nodeSignalLODs;
private _nodePromiseLODs;
private _materialIndexLOD;
private _materialSignalLODs;
private _materialPromiseLODs;
/** @hidden */
constructor(loader: GLTFLoader);
/** @hidden */
dispose(): void;
/** @hidden */
onReady(): void;
/** @hidden */
loadNodeAsync(context: string, node: ILoaderNode, assign: (babylonMesh: Mesh) => void): Nullable>;
/** @hidden */
_loadMaterialAsync(context: string, material: ILoaderMaterial, babylonMesh: Mesh, babylonDrawMode: number, assign: (babylonMaterial: Material) => void): Nullable>;
/** @hidden */
_loadUriAsync(context: string, uri: string): Nullable>;
/**
* Gets an array of LOD properties from lowest to highest.
*/
private _getLODs;
private _disposeUnusedMaterials;
}
}
declare module BABYLON.GLTF2.Extensions {
/** @hidden */
class MSFT_minecraftMesh implements IGLTFLoaderExtension {
readonly name: string;
enabled: boolean;
private _loader;
constructor(loader: GLTFLoader);
dispose(): void;
loadMaterialPropertiesAsync(context: string, material: ILoaderMaterial, babylonMaterial: Material): Nullable>;
}
}
declare module BABYLON.GLTF2.Extensions {
/** @hidden */
class MSFT_sRGBFactors implements IGLTFLoaderExtension {
readonly name: string;
enabled: boolean;
private _loader;
constructor(loader: GLTFLoader);
dispose(): void;
loadMaterialPropertiesAsync(context: string, material: ILoaderMaterial, babylonMaterial: Material): Nullable>;
}
}
declare module BABYLON.GLTF2.Extensions {
/**
* [Specification](https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression)
*/
class KHR_draco_mesh_compression implements IGLTFLoaderExtension {
/** The name of this extension. */
readonly name: string;
/** Defines whether this extension is enabled. */
enabled: boolean;
private _loader;
private _dracoCompression?;
/** @hidden */
constructor(loader: GLTFLoader);
/** @hidden */
dispose(): void;
/** @hidden */
_loadVertexDataAsync(context: string, primitive: ILoaderMeshPrimitive, babylonMesh: Mesh): Nullable>;
}
}
declare module BABYLON.GLTF2.Extensions {
/**
* [Specification](https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness)
*/
class KHR_materials_pbrSpecularGlossiness implements IGLTFLoaderExtension {
/** The name of this extension. */
readonly name: string;
/** Defines whether this extension is enabled. */
enabled: boolean;
private _loader;
/** @hidden */
constructor(loader: GLTFLoader);
/** @hidden */
dispose(): void;
/** @hidden */
loadMaterialPropertiesAsync(context: string, material: ILoaderMaterial, babylonMaterial: Material): Nullable>;
private _loadSpecularGlossinessPropertiesAsync;
}
}
declare module BABYLON.GLTF2.Extensions {
/**
* [Specification](https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit)
*/
class KHR_materials_unlit implements IGLTFLoaderExtension {
/** The name of this extension. */
readonly name: string;
/** Defines whether this extension is enabled. */
enabled: boolean;
private _loader;
/** @hidden */
constructor(loader: GLTFLoader);
/** @hidden */
dispose(): void;
/** @hidden */
loadMaterialPropertiesAsync(context: string, material: ILoaderMaterial, babylonMaterial: Material): Nullable>;
private _loadUnlitPropertiesAsync;
}
}
declare module BABYLON.GLTF2.Extensions {
/**
* [Specification](https://github.com/MiiBond/glTF/tree/khr_lights_v1/extensions/Khronos/KHR_lights) (Experimental)
*/
class KHR_lights implements IGLTFLoaderExtension {
/** The name of this extension. */
readonly name: string;
/** Defines whether this extension is enabled. */
enabled: boolean;
private _loader;
private _lights?;
/** @hidden */
constructor(loader: GLTFLoader);
/** @hidden */
dispose(): void;
/** @hidden */
onLoading(): void;
/** @hidden */
loadSceneAsync(context: string, scene: ILoaderScene): Nullable>;
/** @hidden */
loadNodeAsync(context: string, node: ILoaderNode, assign: (babylonMesh: Mesh) => void): Nullable>;
}
}
declare module BABYLON.GLTF2.Extensions {
/**
* [Specification](https://github.com/AltspaceVR/glTF/blob/avr-sampler-offset-tile/extensions/2.0/Khronos/KHR_texture_transform/README.md) (Experimental)
*/
class KHR_texture_transform implements IGLTFLoaderExtension {
/** The name of this extension. */
readonly name: string;
/** Defines whether this extension is enabled. */
enabled: boolean;
private _loader;
/** @hidden */
constructor(loader: GLTFLoader);
/** @hidden */
dispose(): void;
/** @hidden */
loadTextureInfoAsync(context: string, textureInfo: ITextureInfo, assign: (babylonTexture: BaseTexture) => void): Nullable>;
}
}
declare module BABYLON.GLTF2.Extensions {
/**
* [Specification](TODO) (Experimental)
*/
class EXT_lights_imageBased implements IGLTFLoaderExtension {
/** The name of this extension. */
readonly name: string;
/** Defines whether this extension is enabled. */
enabled: boolean;
private _loader;
private _lights?;
/** @hidden */
constructor(loader: GLTFLoader);
/** @hidden */
dispose(): void;
/** @hidden */
onLoading(): void;
/** @hidden */
loadSceneAsync(context: string, scene: ILoaderScene): Nullable>;
private _loadLightAsync;
}
}