Introduction
We are pleased to announce the availability of Aspose.3D FOSS for TypeScript as the @aspose/3d npm package. This MIT-licensed library brings production-quality 3D scene processing to TypeScript and Node.js applications without requiring native binaries, platform-specific toolchains, or commercial licenses.
The library is designed around a straightforward Scene API: load a 3D file with scene.open(), inspect or transform the scene graph, and write the result with scene.save(). Full TypeScript type definitions are bundled; no separate @types/ package is required.
Key Features
Multi-format I/O. The package reads and writes OBJ, glTF 2.0, GLB, STL, 3MF, and COLLADA files in a single install. FBX format classes are included but require explicit format registration; use OBJ, glTF, or STL for file conversion workflows.
First-class TypeScript support. All public classes, enumerations, and option types are fully typed. IDEs with TypeScript language service support (VS Code, WebStorm, etc.) provide TypeScript autocompletion for all API calls without a separate @types/ package.
Node.js 18–22+ compatibility. The package is tested against Node.js 18, 20, and 22 LTS releases. No native addons are compiled during install, so it works on Linux, macOS, and Windows.
One runtime dependency. The only dependency is xmldom, used exclusively for COLLADA XML parsing. All other format parsers are pure JavaScript implementations.
MIT license. Use @aspose/3d in commercial, open-source, or internal projects without restriction.
Quick Start
Run the following command to install the @aspose/3d package from npm:
Load an OBJ file and convert it to a binary GLB:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());
const saveOpts = new GltfSaveOptions();
saveOpts.binaryMode = true; // produce a single .glb file
scene.save('output.glb', GltfFormat.getInstance(), saveOpts);
console.log('Converted to GLB successfully');
Iterate over scene nodes to inspect geometry:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());
for (const node of scene.rootNode.childNodes) {
console.log(`Node: ${node.name}`);
if (node.entity) {
console.log(` Entity type: ${node.entity.constructor.name}`);
}
}
Supported Formats
| Format | Extension | Import | Export | Notes |
|---|---|---|---|---|
| OBJ | .obj | Yes | Yes | Wavefront OBJ; reads/writes .mtl material files |
| glTF | .gltf / .glb | Yes | Yes | glTF 2.0 JSON and GLB binary |
| STL | .stl | Yes | Yes | ASCII and binary STL |
| 3MF | .3mf | Yes | Yes | Open Packaging Convention archive |
| FBX | .fbx | No* | No* | Importer/exporter exist but format auto-detection not wired |
| COLLADA | .dae | Yes | Yes | Requires bundled xmldom dependency |
TypeScript Advantages
Working with @aspose/3d in TypeScript catches category errors at compile time rather than at runtime. When you call scene.save(), the compiler verifies that the options object matches the expected SaveOptions subtype for the chosen format. Format-specific load and save options expose only the properties relevant to that format; there is no untyped options bag to guess at.
For example, GltfSaveOptions.binaryMode is a typed boolean, so the compiler rejects saveOpts.binaryMode = 'yes' before any code runs. Animation properties on AnimationClip, material channels on PbrMaterial, and vertex element types on VertexElement are all similarly typed and discoverable through IntelliSense without consulting external documentation.
Open Source
The package is published under the MIT License. Source code is available on GitHub. Contributions, bug reports, and format support requests are welcome through the repository’s issue tracker.
The library has one runtime dependency: xmldom (^0.6.0), used only when reading or writing COLLADA files. All other parsers and writers are self-contained pure-JavaScript implementations with no binary components.
Getting Started
- npm:
npm install @aspose/3d - Knowledge Base: How to Load 3D Models in TypeScript
- Knowledge Base: How to Export 3D Scenes to glTF/GLB in TypeScript
- API Reference: Aspose.3D FOSS for TypeScript: Full Class Reference
- GitHub: aspose-3d/aspose-3d-node
Conclusion
@aspose/3d version 24.12.0 provides a stable, typed, dependency-light foundation for 3D file processing in TypeScript and Node.js. Whether the use case is format conversion, scene inspection, geometry extraction, or pipeline integration, the library covers the most common 3D interchange formats under a permissive open-source license.
Install it today and let us know what you build.