介绍

我们很高兴宣布已提供 Aspose.3D FOSS for TypeScript 作为 @aspose/3d npm 包。此 MIT 许可证的库为 TypeScript 和 Node.js 应用程序提供生产级的 3D 场景处理,无需本机二进制文件、特定平台的工具链或商业许可证。.

该库围绕一个简洁的 Scene API:使用…加载 3D 文件 scene.open(),,检查或转换场景图,并使用…写入结果 scene.save().。完整的 TypeScript 类型定义已捆绑;无需单独 @types/ 的包。.

主要特性

多格式 I/O。. 该包在一次安装中即可读取和写入六种主流 3D 格式。OBJ 支持导入;glTF 2.0、GLB、STL、3MF 和 COLLADA 支持导入和导出。虽然存在 FBX 导入/导出类,但尚未实现格式自动检测,因此无法通过 via scene.open().

一流的 TypeScript 支持。. 所有公共类、枚举和选项类型均已完整类型化。支持 TypeScript 语言服务的 IDE(如 VS Code、WebStorm 等)能够为每个 API 调用提供精准的自动补全和内联文档。.

兼容 Node.js 18–22+。. 该包已在 Node.js 18、20 和 22 LTS 版本上进行测试。安装过程中不编译本机插件,因此可在 Node.js 支持的所有平台上运行。.

仅有一个运行时依赖。. 唯一的依赖是 xmldom,,仅用于 COLLADA XML 解析。所有其他格式解析器均为纯 JavaScript 实现。.

MIT 许可证。. 使用 @aspose/3d 在商业、开源或内部项目中无限制使用。.

快速入门

安装包::

npm install @aspose/3d

加载 OBJ 文件并转换为二进制 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');

遍历场景节点以检查几何体::

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}`);
    }
}

支持的格式

格式扩展名导入导出备注
Wavefront OBJ.obj仅导入;读取 .mtl 材质文件
glTF 2.0.gltf带外部的 JSON .bin 缓冲区
二进制 GLB.glb设置 binaryMode: trueGltfSaveOptions
STL.stlASCII 和二进制 STL
3MF.3mfOpen Packaging Convention 存档
FBX.fbx否*否*导入器/导出器已存在,但格式自动检测未接通
COLLADA.dae需要捆绑的 xmldom 依赖

TypeScript 优势

使用 @aspose/3d 在 TypeScript 中会在编译时捕获类别错误,而不是在运行时。当你调用 scene.save(), 编译器会验证 options 对象是否匹配预期的 SaveOptions 所选格式的子类型。特定格式的加载和保存选项仅公开该格式相关的属性;不存在需要猜测的未类型化 options 包。.

例如,, GltfSaveOptions.binaryMode 是一个已类型化的 boolean, 因此编译器会拒绝 saveOpts.binaryMode = 'yes' 在任何代码运行之前。动画属性位于 AnimationClip,,材质通道位于 PbrMaterial,,以及顶点元素类型位于 VertexElement 都具有相似的类型,并且可以通过 IntelliSense 发现,无需查阅外部文档。.

开源

该软件包发布于 MIT 许可证.。源代码可在 GitHub 上获取。欢迎通过仓库的 issue 跟踪器提交贡献、错误报告和格式支持请求。.

该库有一个运行时依赖:: xmldom 版本 0.9+,仅在读取或写入 COLLADA 文件时使用。所有其他解析器和写入器都是自包含的纯 JavaScript 实现,不含二进制组件。.

快速入门

结论

@aspose/3d 版本 24.12.0 为 TypeScript 和 Node.js 中的 3D 文件处理提供了一个稳定、类型化、轻依赖的基础。无论使用场景是格式转换、场景检查、几何提取,还是管道集成,该库在宽松的开源许可证下覆盖了最常见的 3D 互换格式。.

今天就安装它,并告诉我们您构建了什么。.