Skillsbench 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.
install
source · Clone the upstream repo
git clone https://github.com/benchflow-ai/skillsbench
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/benchflow-ai/skillsbench "$T" && mkdir -p ~/.claude/skills && cp -r "$T/tasks/threejs-to-obj/environment/skills/obj-exporter" ~/.claude/skills/benchflow-ai-skillsbench-obj-exporter-e66812 && rm -rf "$T"
manifest:
tasks/threejs-to-obj/environment/skills/obj-exporter/SKILL.mdsource content
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:
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:
// 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
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:
// package.json { "type": "module" }
// script.js import * as THREE from 'three'; import { OBJExporter } from 'three/examples/jsm/exporters/OBJExporter.js';