UNPKG

@openglobus/og

Version:

[openglobus](https://www.openglobus.org/) is a javascript/typescript library designed to display interactive 3d maps and planets with map tiles, imagery and vector data, markers, and 3D objects. It uses the WebGL technology, open source, and completely fr

195 lines (194 loc) 4.51 kB
import { Object3d } from "../../Object3d"; export interface GltfData { bin: ArrayBuffer[]; gltf: GltfMetadata; } export interface GltfMetadata { accessors: Accessor[]; bufferViews: BufferView[]; meshes: GltfMesh[]; materials: { name: string; pbrMetallicRoughness?: { baseColorFactor?: number[]; metallicFactor?: number; roughnessFactor?: number; baseColorTexture?: { index: number; texCoord?: number; }; metallicRoughnessTexture?: { index: number; texCoord?: number; }; }; normalTexture?: { index: number; texCoord?: number; scale?: number; }; occlusionTexture?: { index: number; texCoord?: number; strength?: number; }; emissiveTexture?: { index: number; texCoord?: number; }; emissiveFactor?: number[]; alphaMode?: AlphaMode; alphaCutoff?: number; doubleSided?: boolean; }[]; textures: { sampler?: number; source?: number; name?: string; }[]; images?: { uri?: string; mimeType?: MimeType; bufferView?: number; name?: string; }[]; scene: number; scenes: { nodes?: number[]; name?: string; }[]; nodes: GltfNode[]; extensionsRequired?: string[]; extensionsUsed?: string[]; } export interface GltfMesh { name: string; primitives: GltfPrimitive[]; } export interface GltfPrimitive { indices?: number; material?: number; mode?: PrimitiveMode; attributes: PrimitiveAttributes; extensions?: { [key: string]: any; KHR_draco_mesh_compression?: { bufferView: number; attributes: PrimitiveAttributes; }; }; } export type PrimitiveAttributes = { POSITION: number; NORMAL: number; } & Record<string, number>; export interface GltfNode { camera?: number; children?: number[]; skin?: number; matrix?: number[]; mesh?: number; rotation?: number[]; scale?: number[]; translation?: number[]; weights?: number[]; name?: string; } export declare enum MimeType { JPEG = "image/jpeg", PNG = "image/png" } export interface Accessor { bufferView: number; byteOffset?: number; componentType: AccessorComponentType; count: number; type: AccessorDataType; max: number[]; min: number[]; } export interface BufferView { buffer: number; byteLength: number; byteOffset: number; target?: BufferViewTarget; byteStride?: number; } export declare enum BufferViewTarget { ARRAY_BUFFER = 34962, ELEMENT_ARRAY_BUFFER = 34963 } export declare enum AccessorComponentType { byte = 5120, ubyte = 5121, short = 5122, ushort = 5123, uint = 5125, float = 5126 } export declare enum AccessorDataType { scalar = "SCALAR", vec2 = "VEC2", vec3 = "VEC3", vec4 = "VEC4", mat2 = "MAT2", mat3 = "MAT3", mat4 = "MAT4" } export interface Mesh { name: string; primitives: Primitive[]; } export interface Primitive { name: string; indices?: ArrayBufferLike; vertices: ArrayBufferLike; normals: ArrayBufferLike; texCoords?: ArrayBufferLike; material?: Material; mode: PrimitiveMode; object3d?: Object3d; } export interface Material { name: string; baseColorFactor?: number[]; baseColorTexture?: Texture; metallicRoughnessTexture?: Texture; normalTexture?: NormalTexture; occlusionTexture?: OcclusionTexture; emissiveTexture?: Texture; emissiveFactor?: number[]; alphaMode?: AlphaMode; alphaCutoff?: number; doubleSided?: boolean; } export interface Texture { image: TextureImage; texCoord?: number; } export interface NormalTexture extends Texture { scale?: number; } export interface OcclusionTexture extends Texture { strength?: number; } export interface TextureImage { src?: string; element?: HTMLImageElement; mimeType?: MimeType; name?: string; } export declare enum AlphaMode { OPAQUE = "OPAQUE", MASK = "MASK", BLEND = "BLEND" } export declare enum PrimitiveMode { points = 0, lines = 1, lineLoop = 2, lineStrip = 3, triangles = 4, triangleStrip = 5, triangleFan = 6 }