Loads Wavefront MTL files into a SceneModel.
MTLLoader parses MTL files and creates SceneMaterials within a scene!SceneModel.
MTLLoader
MTL files define surface appearance for OBJ geometry, including:
This loader is typically used alongside an OBJLoader that references the same materials.
npm install @xeokit/sdk Copy
npm install @xeokit/sdk
import { Scene } from "@xeokit/sdk/scene";import { Viewer } from "@xeokit/sdk/viewer";import { WebGLRenderer } from "@xeokit/sdk/webglrenderer";import { ViewController } from "@xeokit/sdk/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/scene";import { Viewer } from "@xeokit/sdk/viewer";import { WebGLRenderer } from "@xeokit/sdk/webglrenderer";import { ViewController } from "@xeokit/sdk/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 scene!SceneModel.MTL files define surface appearance for OBJ geometry, including:
This loader is typically used alongside an OBJLoader that references the same materials.
Installation
Example: loading an MTL file
Notes