Loads Wavefront MTL files into a SceneModel.
MTLLoader parses MTL files and creates SceneMaterials within a SceneModel.
MTLLoader
MTL files define surface appearance for OBJ geometry, including:
This loader is typically used alongside an OBJLoader that references the same materials.
classDiagram direction TB class MTLLoader { +format : "MTL" +load(params, options?) Promise~void~ } class MTLExporter { +format : "MTL" +write(params, options?) Promise~string~ } class ModelLoader { <<formats>> } class ModelExporter { <<formats>> } ModelLoader <|-- MTLLoader ModelExporter <|-- MTLExporter
map_Kd
map_Ks
map_Bump
npm install @xeokit/sdk Copy
npm install @xeokit/sdk
import { Scene } from "@xeokit/sdk/model/scene";import { Viewer } from "@xeokit/sdk/viewing/viewer";import { WebGLRenderer } from "@xeokit/sdk/viewing/webGLRenderer";import { ViewController } from "@xeokit/sdk/viewing/viewController";import { MTLLoader } from "@xeokit/sdk/formats/mtl";const handleError = (error: string) => { console.error(error);};// 1) Create scene + viewerconst scene = new Scene();const viewer = new Viewer({ scene });new WebGLRenderer({ viewer });// 2) Create a viewconst viewResult = viewer.createView({ id: "myView", elementId: "myCanvas"});if (!viewResult.ok) { handleError(viewResult.error); return;}const view = viewResult.value;// 3) Enable camera controlnew ViewController(view, {});// 4) Create a SceneModel to receive materialsconst sceneModelResult = scene.createModel({ id: "myModel" });if (!sceneModelResult.ok) { handleError(sceneModelResult.error); return;}const sceneModel = sceneModelResult.value;// 5) Create loaderconst mtlLoader = new MTLLoader();// 6) Load MTL filefetch("model.mtl") .then(r => r.text()) .then(fileData => { return mtlLoader.load({ fileData, sceneModel }); }) .then(() => { // Materials are now available on the SceneModel }) .catch(err => { sceneModel.destroy(); handleError(`Error loading MTL -> ${err}`); }); Copy
import { Scene } from "@xeokit/sdk/model/scene";import { Viewer } from "@xeokit/sdk/viewing/viewer";import { WebGLRenderer } from "@xeokit/sdk/viewing/webGLRenderer";import { ViewController } from "@xeokit/sdk/viewing/viewController";import { MTLLoader } from "@xeokit/sdk/formats/mtl";const handleError = (error: string) => { console.error(error);};// 1) Create scene + viewerconst scene = new Scene();const viewer = new Viewer({ scene });new WebGLRenderer({ viewer });// 2) Create a viewconst viewResult = viewer.createView({ id: "myView", elementId: "myCanvas"});if (!viewResult.ok) { handleError(viewResult.error); return;}const view = viewResult.value;// 3) Enable camera controlnew ViewController(view, {});// 4) Create a SceneModel to receive materialsconst sceneModelResult = scene.createModel({ id: "myModel" });if (!sceneModelResult.ok) { handleError(sceneModelResult.error); return;}const sceneModel = sceneModelResult.value;// 5) Create loaderconst mtlLoader = new MTLLoader();// 6) Load MTL filefetch("model.mtl") .then(r => r.text()) .then(fileData => { return mtlLoader.load({ fileData, sceneModel }); }) .then(() => { // Materials are now available on the SceneModel }) .catch(err => { sceneModel.destroy(); handleError(`Error loading MTL -> ${err}`); });
mtl — Wavefront MTL Loader
Loads Wavefront MTL files into a SceneModel.
Overview
MTLLoaderparses MTL files and creates SceneMaterials within a SceneModel.MTL files define surface appearance for OBJ geometry, including:
This loader is typically used alongside an OBJLoader that references the same materials.
Shape
Features
map_Kd,map_Ks,map_Bump, etc. loaded into matching SceneTextures.Installation
Example: loading an MTL file
Notes