Як зберігати 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`);Матриця підтримуваних форматів
| Розширення | Формат | Примітки |
|---|---|---|
.glb | glTF 2.0 Бінарний | Рекомендовано для glTF; усі ресурси вбудовані в один файл |
.gltf | glTF 2.0 JSON | Окремо .bin і файли текстур поряд з JSON |
.obj | Wavefront OBJ | Записує .mtl файл матеріалу поруч .obj коли матеріали присутні |
.stl | STL | За замовчуванням: бінарний STL; використовуйте StlSaveOptions.ascii = true для тексту |
.fbx | Autodesk FBX | Бінарний формат FBX |
.3mf | 3D Manufacturing | Підходить для робочих процесів 3D-друку |
.dae | COLLADA | Формат обміну на основі 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(). Бібліотека записує у буфер, а потім записує на диск.