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:

asposefoss/3d is not yet published — build from source until it ships. See the project README for build instructions.

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

FormatExtensionImportExportNotes
OBJ.objYesYesWavefront OBJ; reads/writes .mtl material files
glTF.gltf / .glbYesYesglTF 2.0 JSON and GLB binary
STL.stlYesYesASCII and binary STL
3MF.3mfYesYesOpen Packaging Convention archive
FBX.fbxNo*No*Importer/exporter exist but format auto-detection not wired
COLLADA.daeYesYesRequires 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

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.