@google/model-viewer
Version:
Easily display interactive 3D models on the web and in AR!
277 lines (276 loc) • 7.63 kB
TypeScript
export declare type RGB = [number, number, number];
export declare type RGBA = [number, number, number, number];
export declare type Quaternion = [number, number, number, number];
export declare type Vector3 = [number, number, number];
export declare type Matrix4 = [
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
number,
number
];
export declare type Extras = any;
export interface ExtensionDictionary {
[index: string]: any;
}
export declare type VariantMapping = {
material: number;
variants: Array<number>;
};
export declare type VariantMappings = Array<VariantMapping>;
export declare type Variants = Array<{
name: string;
}>;
export interface PerspectiveCameraIntrinsics {
aspectRatio?: number;
yfov: number;
zfar: number;
znear: number;
extensions?: ExtensionDictionary;
extras?: Extras;
}
export interface OrthographicCameraIntrinsics {
xmag: number;
ymag: number;
zfar: number;
znear: number;
extensions?: ExtensionDictionary;
extras?: Extras;
}
export declare type CameraType = 'perspective' | 'orthographic';
export interface PerspectiveCamera {
name?: string;
type: 'perspective';
perspective?: PerspectiveCameraIntrinsics;
extensions?: ExtensionDictionary;
extras?: Extras;
}
export interface OrthographicCamera {
name?: string;
type: 'orthographic';
orthographic?: OrthographicCamera;
extensions?: ExtensionDictionary;
extras?: Extras;
}
export declare type Camera = PerspectiveCamera | OrthographicCamera;
export declare enum Filter {
Nearest = 9728,
Linear = 9729,
NearestMipmapNearest = 9984,
LinearMipmapNearest = 9985,
NearestMipmapLinear = 9986,
LinearMipmapLinear = 9987
}
export declare type NearestFilter = Filter.Nearest;
export declare type LinearFilter = Filter.Linear;
export declare type NearestMipmapNearestFilter = Filter.NearestMipmapNearest;
export declare type LinearMipmapNearestFilter = Filter.LinearMipmapNearest;
export declare type NearestMipmapLinearFilter = Filter.NearestMipmapLinear;
export declare type LinearMipmapLinearFilter = Filter.LinearMipmapLinear;
export declare type MagFilter = NearestFilter | LinearFilter;
export declare type MinFilter = NearestFilter | LinearFilter | NearestMipmapNearestFilter | LinearMipmapNearestFilter | NearestMipmapLinearFilter | LinearMipmapLinearFilter;
export declare enum Wrap {
ClampToEdge = 33071,
MirroredRepeat = 33648,
Repeat = 10497
}
export declare type ClampToEdgeWrap = Wrap.ClampToEdge;
export declare type MirroredRepeatWrap = Wrap.MirroredRepeat;
export declare type RepeatWrap = Wrap.Repeat;
export declare type WrapMode = RepeatWrap | ClampToEdgeWrap | MirroredRepeatWrap;
export interface Sampler {
name?: string;
magFilter?: MagFilter;
minFilter?: MinFilter;
wrapS?: WrapMode;
wrapT?: WrapMode;
extensions?: ExtensionDictionary;
extras?: Extras;
}
export interface Texture {
name?: string;
sampler?: number;
source?: number;
extensions?: ExtensionDictionary;
extras?: Extras;
}
export interface TextureInfo {
index: number;
texCoord?: number;
extensions?: ExtensionDictionary;
extras?: Extras;
}
export interface OcclusionTextureInfo extends TextureInfo {
strength?: number;
}
export interface NormalTextureInfo extends TextureInfo {
scale?: number;
}
export interface PBRMetallicRoughness {
baseColorFactor?: RGBA;
baseColorTexture?: TextureInfo;
metallicRoughnessTexture?: TextureInfo;
metallicFactor?: number;
roughnessFactor?: number;
extensions?: ExtensionDictionary;
extras?: Extras;
}
export declare type AlphaMode = 'OPAQUE' | 'MASK' | 'BLEND';
export interface Material {
name?: string;
doubleSided?: boolean;
alphaMode?: AlphaMode;
alphaCutoff?: number;
emissiveFactor?: RGB;
pbrMetallicRoughness?: PBRMetallicRoughness;
normalTexture?: NormalTextureInfo;
occlusionTexture?: OcclusionTextureInfo;
emissiveTexture?: TextureInfo;
extensions?: ExtensionDictionary;
extras?: Extras;
}
export interface KHRMaterialsVariants {
mappings: VariantMapping[];
}
export declare type AttributeDictionary = {
[index: string]: number;
};
export interface Primitive {
attributes: AttributeDictionary;
indices?: number;
material?: number;
extensions?: ExtensionDictionary;
extras?: Extras;
}
export interface Mesh {
name?: string;
primitives: Primitive[];
weights: number[];
extensions?: ExtensionDictionary;
extras?: Extras;
}
export interface Node {
name?: string;
mesh?: number;
matrix?: Matrix4;
rotation?: Quaternion;
scale?: Vector3;
translation?: Vector3;
weights?: number[];
children?: number[];
extensions?: ExtensionDictionary;
extras?: Extras;
}
export interface Image {
name?: string;
uri?: string;
bufferView?: number;
mimeType?: string;
extensions?: ExtensionDictionary;
extras?: Extras;
}
export interface Scene {
name?: string;
nodes: number[];
extensions?: ExtensionDictionary;
extras?: Extras;
}
export declare type AccessorType = 'SCALAR' | 'VEC2' | 'VEC3' | 'VEC4' | 'MAT2' | 'MAT3' | 'MAT4';
export interface Accessor {
name?: string;
bufferView?: number;
byteOffset?: number;
componentType: number;
normalized?: boolean;
count: number;
type: AccessorType;
max?: number;
min?: number;
extensions?: ExtensionDictionary;
extras?: Extras;
sparse?: any;
}
export declare type ChannelTargetPath = 'rotation' | 'scale' | 'translation' | 'weights';
export interface ChannelTarget {
node: number;
path: ChannelTargetPath;
}
export interface Channel {
sampler: number;
target: ChannelTarget;
extensions?: ExtensionDictionary;
extras?: Extras;
}
export declare type AnimationInterpolation = 'LINEAR' | 'STEP' | 'CUBICSPLINE';
export interface AnimationSampler {
input: number;
interpolation: AnimationInterpolation;
output: number;
extensions?: ExtensionDictionary;
extras?: Extras;
}
export interface Animation {
name?: string;
channels: Channel[];
samplers: AnimationSampler[];
extensions?: ExtensionDictionary;
extras?: Extras;
}
export interface Skin {
inverseBindMatrices?: number;
skeleton?: number;
joints: number[];
name?: string;
extensions?: ExtensionDictionary;
extras?: Extras;
}
export declare type GLTFElement = Scene | Node | Mesh | Material | Image | Texture | TextureInfo | Sampler | PBRMetallicRoughness | Accessor | Camera | Animation | AnimationSampler | Skin;
export interface GLTFElementMap {
'scene': Scene;
'node': Node;
'mesh': Mesh;
'material': Material;
'image': Image;
'texture': Texture;
'texture-info': TextureInfo;
'sampler': Sampler;
'accessor': Accessor;
'camera': Camera;
'animation': Animation;
'animation-sampler': AnimationSampler;
'skin': Skin;
}
export interface Asset {
version: '2.0';
copyright?: string;
generator?: string;
minVersion?: string;
extensions?: ExtensionDictionary;
extras?: Extras;
}
export interface GLTF {
asset: Asset;
scene?: number;
scenes?: Scene[];
nodes?: Node[];
materials?: Material[];
accessors?: Accessor[];
samplers?: Sampler[];
images?: Image[];
textures?: Texture[];
meshes?: Mesh[];
cameras?: Camera[];
animations?: Animation[];
skins?: Skin[];
}