Як зберігати 3D‑моделі у TypeScript

Як зберігати 3D‑моделі у TypeScript

Aspose.3D FOSS для TypeScript зберігає сцени у всі підтримувані формати за один scene.save() виклик. Формат виводу визначається автоматично за розширенням файлу. У цьому посібнику розглядаються збереження у кожному форматі та використання специфічних для формату параметрів.

Покроковий посібник

Крок 1: Встановіть @aspose/3d

npm install @aspose/3d

Крок 2: Завантажити або створити сцену

Або завантажте існуючий файл, або створіть сцену програмно перед збереженням.

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

// Load from file
const scene = new Scene();
scene.open('source.obj', new ObjLoadOptions());

// Or create a new empty scene
const emptyScene = new Scene();

Крок 3: Зберегти з автоматично визначеним форматом

scene.save(path) визначає формат виводу за розширенням файлу:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
scene.open('input.obj', new ObjLoadOptions());

// Save as binary glTF
scene.save('output.glb');

// Save as JSON glTF
scene.save('output.gltf');

// Save as STL
scene.save('output.stl');

// Save as OBJ
scene.save('output.obj');

// Save as FBX
scene.save('output.fbx');

// Save as 3MF
scene.save('output.3mf');

// Save as COLLADA
scene.save('output.dae');

Крок 4: Використовувати параметри збереження, специфічні для формату

Для детального керування передайте об’єкт параметрів, специфічний для формату:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());

// Export to GLB with specific options
const saveOptions = new GltfSaveOptions();
saveOptions.binaryMode = true;   // produce GLB (binary glTF)

scene.save('output.glb', saveOptions);

Крок 5: Зберегти у буфер (в пам’яті)

Використовуйте scene.saveToBuffer() щоб отримати вивід у вигляді Buffer без запису на диск:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());

const buffer = scene.saveToBuffer('output.glb');
console.log(`Buffer size: ${buffer.length} bytes`);

// Send via HTTP, upload to S3, etc.

Крок 6: Перевірити результат

Після збереження перевірте, чи файл існує і має ненульовий розмір:

import * as fs from 'fs';

const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);

Матриця підтримуваних форматів

РозширенняФорматПримітки
.glbglTF 2.0 БінарнийРекомендовано для glTF; усі ресурси вбудовані в один файл
.gltfglTF 2.0 JSONОкремо .bin і файли текстур поряд з JSON
.objWavefront OBJЗаписує .mtl файл матеріалу поруч .obj коли матеріали присутні
.stlSTLЗа замовчуванням: бінарний STL; використовуйте StlSaveOptions.ascii = true для тексту
.fbxAutodesk FBXБінарний формат FBX
.3mf3D ManufacturingПідходить для робочих процесів 3D-друку
.daeCOLLADAФормат обміну на основі XML

Типові проблеми та їх виправлення

Error: Unsupported format при збереженні

Перевірте, чи розширення файлу відповідає підтримуваному формату. Бібліотека використовує розширення для визначення формату; файл з назвою output.xyz завершиться помилкою.

.obj файл збережено, але матеріали відсутні

При збереженні OBJ, бібліотека матеріалів (.mtl) записується автоматично разом з .obj. Обидва файли мають знаходитися в одному каталозі при повторному відкритті. Якщо потрібна лише геометрія, встановіть ObjSaveOptions.enableMaterials = false.

Великий .gltf з окремими текстурами

Використовуйте .glb замість .gltf; він упакує бінарні дані в один самодостатній файл. Встановіть GltfSaveOptions.binaryMode = true при передачі GltfSaveOptions екземпляр.


Часті запитання

Чи можу я зберегти у кілька форматів за один запуск?

Так; викличте scene.save() кілька разів з різними шляхами:

scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');

Чи змінює збереження сцену?

Ні. scene.save() є операцією лише для читання у графі сцени. Ви можете зберегти одну й ту ж сцену у кілька форматів без будь‑яких побічних ефектів.

Чи можу я перезаписати вихідний файл?

Так. Передайте той самий шлях до scene.save() який ви використали в scene.open(). Бібліотека записує у буфер, а потім записує на диск.


Дивіться також

 Українська