@gltf-transform/core
Version:
glTF 2.0 SDK for JavaScript and TypeScript, on Web and Node.js.
163 lines (142 loc) • 3.92 kB
text/typescript
// Injected at compile time, from $npm_package_version.
declare const PACKAGE_VERSION: string;
/**
* Current version of the package.
* @hidden
*/
export const VERSION: string = `v${PACKAGE_VERSION}`;
/** @internal */
export const NAME = '@gltf-transform/core';
/**
* Interface allowing Accessor setter/getter methods to be used interchangeably with gl-matrix
* arrays or with three.js math objects' fromArray/toArray methods. For example, THREE.Vector2,
* THREE.Vector3, THREE.Vector4, THREE.Quaternion, THREE.Matrix3, THREE.Matrix4, and THREE.Color.
*
* @internal
*/
export interface ArrayProxy {
/** Sets the value of the object from an array of values. */
fromArray(array: number[]): ArrayProxy;
/** Writes the value of the object into the given array. */
toArray(array: number[]): number[];
}
/**
* TypeScript utility for nullable types.
* @hidden
*/
export type Nullable<T> = { [P in keyof T]: T[P] | null };
/**
* 2-dimensional vector.
* @hidden
*/
export type vec2 = [number, number];
/**
* 3-dimensional vector.
* @hidden
*/
export type vec3 = [number, number, number];
/**
* 4-dimensional vector, e.g. RGBA or a quaternion.
* @hidden
*/
export type vec4 = [number, number, number, number];
// biome-ignore format: Readability.
/**
* 3x3 matrix, e.g. an affine transform of a 2D vector.
* @hidden
*/
export type mat3 = [
number, number, number,
number, number, number,
number, number, number,
];
// biome-ignore format: Readability.
/**
* 4x4 matrix, e.g. an affine transform of a 3D vector.
* @hidden
*/
export type mat4 = [
number, number, number, number,
number, number, number, number,
number, number, number, number,
number, number, number, number,
];
/** @hidden */
export type bbox = { min: vec3; max: vec3 };
/** @hidden */
export const GLB_BUFFER = '@glb.bin';
/**
* Abstraction representing any one of the typed array classes supported by glTF and JavaScript.
* @hidden
*/
export type TypedArray = Float32Array | Uint32Array | Uint16Array | Uint8Array | Int16Array | Int8Array;
/**
* Abstraction representing the typed array constructors supported by glTF and JavaScript.
* @hidden
*/
export type TypedArrayConstructor =
| Float32ArrayConstructor
| Uint32ArrayConstructor
| Uint16ArrayConstructor
| Uint8ArrayConstructor
| Int16ArrayConstructor
| Int8ArrayConstructor;
/** String IDs for core {@link Property} types. */
export enum PropertyType {
ACCESSOR = 'Accessor',
ANIMATION = 'Animation',
ANIMATION_CHANNEL = 'AnimationChannel',
ANIMATION_SAMPLER = 'AnimationSampler',
BUFFER = 'Buffer',
CAMERA = 'Camera',
MATERIAL = 'Material',
MESH = 'Mesh',
PRIMITIVE = 'Primitive',
PRIMITIVE_TARGET = 'PrimitiveTarget',
NODE = 'Node',
ROOT = 'Root',
SCENE = 'Scene',
SKIN = 'Skin',
TEXTURE = 'Texture',
TEXTURE_INFO = 'TextureInfo',
}
/** Vertex layout method. */
export enum VertexLayout {
/**
* Stores vertex attributes in a single buffer view per mesh primitive. Interleaving vertex
* data may improve performance by reducing page-thrashing in GPU memory.
*/
INTERLEAVED = 'interleaved',
/**
* Stores each vertex attribute in a separate buffer view. May decrease performance by causing
* page-thrashing in GPU memory. Some 3D engines may prefer this layout, e.g. for simplicity.
*/
SEPARATE = 'separate',
}
/** Accessor usage. */
export enum BufferViewUsage {
ARRAY_BUFFER = 'ARRAY_BUFFER',
ELEMENT_ARRAY_BUFFER = 'ELEMENT_ARRAY_BUFFER',
INVERSE_BIND_MATRICES = 'INVERSE_BIND_MATRICES',
OTHER = 'OTHER',
SPARSE = 'SPARSE',
}
/** Texture channels. */
export enum TextureChannel {
R = 0x1000,
G = 0x0100,
B = 0x0010,
A = 0x0001,
}
export enum Format {
GLTF = 'GLTF',
GLB = 'GLB',
}
export const ComponentTypeToTypedArray: Record<string, TypedArrayConstructor> = {
'5120': Int8Array,
'5121': Uint8Array,
'5122': Int16Array,
'5123': Uint16Array,
'5125': Uint32Array,
'5126': Float32Array,
};