|
@@ -0,0 +1,104 @@
|
|
|
|
+import {
|
|
|
|
+ Material,
|
|
|
|
+ LoadingManager,
|
|
|
|
+ Mapping,
|
|
|
|
+ EventDispatcher,
|
|
|
|
+ BufferGeometry,
|
|
|
|
+ Side,
|
|
|
|
+ Texture,
|
|
|
|
+ Vector2,
|
|
|
|
+ Wrapping
|
|
|
|
+} from '../../../src/Three';
|
|
|
|
+
|
|
|
|
+export interface MaterialCreatorOptions {
|
|
|
|
+ /**
|
|
|
|
+ * side: Which side to apply the material
|
|
|
|
+ * THREE.FrontSide (default), THREE.BackSide, THREE.DoubleSide
|
|
|
|
+ */
|
|
|
|
+ side?: Side;
|
|
|
|
+ /*
|
|
|
|
+ * wrap: What type of wrapping to apply for textures
|
|
|
|
+ * THREE.RepeatWrapping (default), THREE.ClampToEdgeWrapping, THREE.MirroredRepeatWrapping
|
|
|
|
+ */
|
|
|
|
+ wrap?: Wrapping;
|
|
|
|
+ /*
|
|
|
|
+ * normalizeRGB: RGBs need to be normalized to 0-1 from 0-255
|
|
|
|
+ * Default: false, assumed to be already normalized
|
|
|
|
+ */
|
|
|
|
+ normalizeRGB?: boolean;
|
|
|
|
+ /*
|
|
|
|
+ * ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's
|
|
|
|
+ * Default: false
|
|
|
|
+ */
|
|
|
|
+ ignoreZeroRGBs?: boolean;
|
|
|
|
+ /*
|
|
|
|
+ * invertTrProperty: Use values 1 of Tr field for fully opaque. This option is useful for obj
|
|
|
|
+ * exported from 3ds MAX, vcglib or meshlab.
|
|
|
|
+ * Default: false
|
|
|
|
+ */
|
|
|
|
+ invertTrProperty?: boolean;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+export class MTLLoader extends EventDispatcher {
|
|
|
|
+ constructor(manager?: LoadingManager);
|
|
|
|
+ manager: LoadingManager;
|
|
|
|
+ materialOptions: MaterialCreatorOptions;
|
|
|
|
+ path: string;
|
|
|
|
+ texturePath: string;
|
|
|
|
+ crossOrigin: boolean;
|
|
|
|
+
|
|
|
|
+ load(url: string, onLoad: (materialCreator: MaterialCreator) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void;
|
|
|
|
+ parse(text: string) : MaterialCreator;
|
|
|
|
+ setPath(path: string) : void;
|
|
|
|
+ setTexturePath(path: string) : void;
|
|
|
|
+ setBaseUrl(path: string) : void;
|
|
|
|
+ setCrossOrigin(value: boolean) : void;
|
|
|
|
+ setMaterialOptions(value: MaterialCreatorOptions) : void;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+export interface MaterialInfo {
|
|
|
|
+ ks?: number[];
|
|
|
|
+ kd?: number[];
|
|
|
|
+ ke?: number[];
|
|
|
|
+ map_kd?: string;
|
|
|
|
+ map_ks?: string;
|
|
|
|
+ map_ke?: string;
|
|
|
|
+ norm?: string;
|
|
|
|
+ map_bump?: string;
|
|
|
|
+ bump?: string;
|
|
|
|
+ map_d?: string;
|
|
|
|
+ ns?: number;
|
|
|
|
+ d?: number;
|
|
|
|
+ tr?: number;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+export interface TexParams {
|
|
|
|
+ scale: Vector2;
|
|
|
|
+ offset: Vector2;
|
|
|
|
+ url: string;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+export class MaterialCreator {
|
|
|
|
+ constructor(baseUrl?: string, options?: MaterialCreatorOptions);
|
|
|
|
+
|
|
|
|
+ baseUrl : string;
|
|
|
|
+ options : MaterialCreatorOptions;
|
|
|
|
+ materialsInfo : {[key: string]: MaterialInfo};
|
|
|
|
+ materials : {[key: string]: Material};
|
|
|
|
+ private materialsArray : Material[];
|
|
|
|
+ nameLookup : {[key: string]: number};
|
|
|
|
+ side : Side;
|
|
|
|
+ wrap : Wrapping;
|
|
|
|
+
|
|
|
|
+ setCrossOrigin( value: boolean ) : void;
|
|
|
|
+ setManager( value: LoadingManager ) : void;
|
|
|
|
+ setMaterials( materialsInfo: {[key: string]: MaterialInfo} ) : void;
|
|
|
|
+ convert( materialsInfo: {[key: string]: MaterialInfo} ) : {[key: string]: MaterialInfo};
|
|
|
|
+ preload() : void;
|
|
|
|
+ getIndex( materialName: string ) : Material;
|
|
|
|
+ getAsArray() : Material[];
|
|
|
|
+ create( materialName: string ) : Material;
|
|
|
|
+ createMaterial_( materialName: string ) : Material;
|
|
|
|
+ getTextureParams( value: string, matParams: any ) : TexParams;
|
|
|
|
+ loadTexture(url: string, mapping?: Mapping, onLoad?: (bufferGeometry: BufferGeometry) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): Texture;
|
|
|
|
+}
|