Рендериране на сцена и експортиране
@aspose/3d е библиотека за обработка и конвертиране и не извършва GPU рендериране или създаване на файлове с изображения. “Rendering” в контекста на тази библиотека означава експортиране на сцена във формат, който последващ рендерер, игрови енджин или визуализатор може да използва.
Тази страница обхваща всички пътища за експортиране: запазване във файл, изход в паметен буфер, опции, специфични за формата, и как да подготвите сцените за често използвани downstream цели (Three.js, Babylon.js, прегледачи на модели и игрови двигатели).
Основен експорт
Извикайте scene.save() с път към файл. Библиотеката извлича формата на изхода от разширението на файла:
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('input.obj'); // use a supported format (OBJ, glTF, GLB, STL, 3MF, COLLADA)
scene.save('output.glb'); // GLB (binary glTF)
scene.save('output.stl'); // STL
scene.save('output.dae'); // COLLADA
scene.save('output.3mf'); // 3MF
Експортиране към GLB (Препоръчително за уеб и игри)
GLB (binary glTF 2.0) е един единствен самостоятелен файл, който вгражда всички данни за мрежи, материали и текстури. Това е препоръчителният изходен формат за уеб визуализатори (Three.js, Babylon.js, model-viewer) и игрови двигатели (Godot, Unity чрез импортер):
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('source.obj');
const opts = new GltfSaveOptions();
opts.binaryMode = true; // produce .glb instead of .gltf + .bin
scene.save('output.glb', opts);
console.log('GLB export complete');Задайте binaryMode = true за създаване на самостоятелен GLB файл. Когато false, изходът е .gltf JSON файл с отделен .bin страничен файл за буфер.
Експортиране към glTF (JSON формат за преглед)
JSON вариантът (.gltf + .bin) е полезен по време на разработка, защото JSON е четим за хора:
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('input.dae'); // COLLADA is fully supported; FBX is not wired into scene.open()
const opts = new GltfSaveOptions();
opts.binaryMode = false; // JSON + .bin sidecar
scene.save('output.gltf', opts);Експортиране към STL (Работни процеси за 3D печат)
STL съдържа само геометрия (без материали, без анимация). Това е стандартният обменен формат за софтуер за нарязване при 3D печат:
import { Scene } from '@aspose/3d';
import { StlSaveOptions } from '@aspose/3d/formats/stl';
const scene = new Scene();
scene.open('model.obj');
const opts = new StlSaveOptions();
opts.binaryMode = true; // binary STL is more compact than ASCII
scene.save('output.stl', opts);Задайте binaryMode = false за създаване на ASCII STL, който е четим като текст, но е по-голям.
Експортиране към FBX (Работни процеси с DCC инструменти)
Забележка: В библиотеката съществуват класове за импортиране и експортиране на FBX, но автоматичното разпознаване на FBX формат не е интегрирано в scene.open() или scene.save(). Извикване scene.save('output.fbx', opts) няма да задейства FBX експортер — the .fbx разширението не се разпознава от диспечера за запазване и извикването ще се върне към OBJ изход. Използвайте FbxExporter клас директно, ако ви е необходим FBX I/O. Таблицата за поддръжка на формати маркира FBX като No* по тази причина.
Ако трябва да експортирате към формат, приет от Blender, Maya или Unreal Engine, използвайте GLB или COLLADA вместо — и двете са напълно интегрирани в scene.save():
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('input.dae');
// GLB is fully supported and widely accepted by DCC tools
const opts = new GltfSaveOptions();
opts.binaryMode = true;
scene.save('output.glb', opts);In-Memory Export с saveToBuffer()
За безсървърни функции, HTTP отговори и поточни конвейери, експортирайте директно към a Buffer без записване на диск:
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
function convertToGlbBuffer(inputPath: string): Buffer {
const scene = new Scene();
scene.open(inputPath);
const opts = new GltfSaveOptions();
opts.binaryMode = true;
return scene.saveToBuffer('glb', opts);
}
// Express.js / HTTP response example
// const glbBuffer = convertToGlbBuffer('model.obj');
// res.setHeader('Content-Type', 'model/gltf-binary');
// res.send(glbBuffer);
saveToBuffer() приема низ с формат като първи аргумент (например. 'glb', 'stl', 'obj') и същите обекти с опции като save().
Комбиниране openFromBuffer() и saveToBuffer()
Пълноценно конверсионно ядро в паметта без дисков I/O на какъвто и да е етап:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
function objBufferToGlbBuffer(objData: Buffer): Buffer {
const scene = new Scene();
const loadOpts = new ObjLoadOptions();
loadOpts.enableMaterials = true;
scene.openFromBuffer(objData, loadOpts);
const saveOpts = new GltfSaveOptions();
saveOpts.binaryMode = true;
return scene.saveToBuffer('glb', saveOpts);
}Подготовка на сцени за конкретни рендеръри
Three.js / Babylon.js (уеб)
Тези рендеръри нативно зареждат GLB файлове. Експортирайте с binaryMode = true. Ако текстурите се препратват от изходния OBJ, уверете се, че .mtl и файловете с изображения са разположени заедно при зареждане.
model-viewer (уеб компонент)
Приема .glb директно. Същите настройки за експортиране като Three.js.
Godot Engine
Импортирайте GLB чрез импортера на Godot (Project → Import). Използвайте binaryMode = true. Godot поддържа PBR материали от glTF 2.0 нативно.
Blender
За най-добра точност при импортиране използвайте glTF (output.gltf + output.bin) или GLB (output.glb). Импортерът на Blender за glTF 2.0 обработва PBR материали и анимация. Забележка: FBX изходът чрез scene.save() не се поддържа — автоматичното разпознаване на FBX формат не е включено в диспечера за запазване.
3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)
Експортирайте в STL или 3MF. Използвайте 3MF, когато е необходимо запазване на цвят или метаданни за материал. Използвайте STL за максимална съвместимост.
Сравнение на експортните формати
| Формат | Разширение | Материали | Анимация | Един файл | Подходящо за |
|---|---|---|---|---|---|
| GLB | .glb | PBR (glTF 2.0) | Да | Да | Уеб, игри, обща доставка |
| glTF | .gltf | PBR (glTF 2.0) | Да | Не (+ .bin) | Разработка, инспекция |
| STL | .stl | Не | Не | Да | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR | Не* | Не* | Импортер/експортер съществуват, но не са включени в автоматичното откриване |
| COLLADA | .dae | Да | Да | Да | Cross-DCC обмен |
| 3MF | .3mf | Цвят/материал | Не | Да | Модерен 3D печат |
Общи проблеми при експортиране
| Симптом | Причина | Поправи |
|---|---|---|
| Изходният GLB се отваря като JSON в прегледа | binaryMode оставено като false | Задай opts.binaryMode = true |
| Текстурите липсват в изходния GLB | binaryMode не е зададено | Задай opts.binaryMode = true за самостоятелен GLB |
| STL файлът няма цвят в слайсъра | STL форматът не поддържа цвят | Използвайте 3MF за цветни данни |
saveToBuffer връща празен буфер | Липсва или е грешен аргумент за форматиращия низ | Подайте форматиращия низ, напр. 'glb', 'stl', или 'obj' |
| FBX се отваря без анимация в Blender | Изходният файл (OBJ/STL) няма анимация | Анимацията се предава само ако е налична в източника |
| Изходният файл е много голям | Изходният OBJ има много дублирани върхове | GLB бинарният изход вече премахва дубликатите; проверете качеството на изходния ресурс |
Вижте също
- Зареждане на модел: зареждане на 3D файлове от диск и буфери
- Граф на сцената: създаване и модифициране на сцената преди експортиране
- Поддръжка на формати: пълна матрица за четене/писане
- Преглед на API: всички класове и изброявания