Skip to main content

obj-exporter

Three.js OBJExporter utility for exporting 3D geometry to Wavefront OBJ format. Use when converting Three.js scenes, meshes, or geometries to OBJ files for use in other 3D software like Blender, Maya, or MeshLab.

Source facts

Repository
benchflow-ai/skillsbench
Last source activity
January 24, 2026 at 08:31
Detected SKILL.md language
English
Stars
1,837
Forks
371

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
obj-exporter
description
Three.js OBJExporter utility for exporting 3D geometry to Wavefront OBJ format. Use when converting Three.js scenes, meshes, or geometries to OBJ files for use in other 3D software like Blender, Maya, or MeshLab.
# OBJExporter Guide ## Basic Structure OBJ is a text-based 3D geometry format: ``` # Comment v x y z # Vertex position vn x y z # Vertex normal f v1 v2 v3 # Face (triangle) f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3 # Face with texture/normal indices ``` Example: ``` # Cube v 0 0 0 v 1 0 0 v 1 1 0 v 0 1 0 f 1 2 3 f 1 3 4 ``` ## Three.js OBJExporter Three.js provides `OBJExporter` in examples: ```javascript import { OBJExporter } from 'three/examples/jsm/exporters/OBJExporter.js'; const exporter = new OBJExporter(); const objString = exporter.parse(object3D); // Write to file (Node.js) import fs from 'fs'; fs.writeFileSync('output.obj', objString); ``` ## Exporting with World Transforms To export geometry in world coordinates: ```javascript // Update world matrices first root.updateMatrixWorld(true); // Clone and transform geometry const worldGeometry = mesh.geometry.clone(); worldGeometry.applyMatrix4(mesh.matrixWorld); // Create new mesh for export const exportMesh = new THREE.Mesh(worldGeometry); const objData = exporter.parse(exportMesh); ``` ## Merging Multiple Geometries ```javascript import { mergeGeometries } from 'three/examples/jsm/utils/BufferGeometryUtils.js'; const geometries = []; root.traverse((obj) => { if (obj instanceof THREE.Mesh) { const geom = obj.geometry.clone(); geom.applyMatrix4(obj.matrixWorld); geometries.push(geom); } }); const merged = mergeGeometries(geometries); const mergedMesh = new THREE.Mesh(merged); const objData = exporter.parse(mergedMesh); ``` ## Node.js ES Module Setup For running Three.js in Node.js: ```json // package.json { "type": "module" } ``` ```javascript // script.js import * as THREE from 'three'; import { OBJExporter } from 'three/examples/jsm/exporters/OBJExporter.js'; ```
View on GitHub