UNPKG

gs-json

Version:

gs-JSON is a domain agnostic unifying 3D file format for geometric and semantic modelling (hence the 'gs').

71 lines (70 loc) 1.72 kB
import { TGeomTypeStr, TDataTypeStr } from "./enums"; /** * Types, for parsing gs-json data. */ export declare type TPointsData = [number[], [number, number, number][]]; export declare type TObjData = [number[][], number[][], any[]]; export declare type TTree2Data = Array<[number, number[]]>; export declare type TTree3Data = Array<[number, TTree2Data]>; export declare type TTreeData = Array<TTree2Data | TTree3Data>; /** * Interface, for parsing JSON ModelData. */ export interface IModelData { metadata: IMetadata; geom: IGeomData; attribs?: IAttribsData; groups?: IGroupData[]; skins?: ISkinData[]; } export interface IMetadata { filetype: "gs-json"; version: string; uuid: string; crs?: any; location?: string; } export interface IGeomData { points?: TPointsData; objs?: TObjData[]; } export interface IAttribsData { points?: IAttribData[]; vertices?: IAttribData[]; edges?: IAttribData[]; wires?: IAttribData[]; faces?: IAttribData[]; objs?: IAttribData[]; } export interface IAttribData { name: string; geom_type: TGeomTypeStr; data_type: TDataTypeStr; values: any[]; } export interface IGroupData { name: string; parent?: string; objs?: number[]; topos?: TTreeData; points?: number[]; props?: Array<[string, any]>; } export interface ISkinData { images: string[]; textures: string[]; materials: any[]; } export interface ITopoPathData { id: number; tt: (0 | 1); ti?: number; st?: (0 | 1); si?: number; } export interface IPointData { id: number; x: number; y: number; z: number; }