Рендериране на сцена и експортиране

Рендериране на сцена и експортиране

@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.glbPBR (glTF 2.0)ДаДаУеб, игри, обща доставка
glTF.gltfPBR (glTF 2.0)ДаНе (+ .bin)Разработка, инспекция
STL.stlНеНеДа3D printing, geometry-only
FBX.fbxPhong/PBRНе*Не*Импортер/експортер съществуват, но не са включени в автоматичното откриване
COLLADA.daeДаДаДаCross-DCC обмен
3MF.3mfЦвят/материалНеДаМодерен 3D печат

Общи проблеми при експортиране

СимптомПричинаПоправи
Изходният GLB се отваря като JSON в прегледаbinaryMode оставено като falseЗадай opts.binaryMode = true
Текстурите липсват в изходния GLBbinaryMode не е зададеноЗадай opts.binaryMode = true за самостоятелен GLB
STL файлът няма цвят в слайсъраSTL форматът не поддържа цвятИзползвайте 3MF за цветни данни
saveToBuffer връща празен буферЛипсва или е грешен аргумент за форматиращия низПодайте форматиращия низ, напр. 'glb', 'stl', или 'obj'
FBX се отваря без анимация в BlenderИзходният файл (OBJ/STL) няма анимацияАнимацията се предава само ако е налична в източника
Изходният файл е много голямИзходният OBJ има много дублирани върховеGLB бинарният изход вече премахва дубликатите; проверете качеството на изходния ресурс

Вижте също

 Български