Απόδοση Σκηνής και Εξαγωγή

Απόδοση Σκηνής και Εξαγωγή

@aspose/3d είναι μια βιβλιοθήκη επεξεργασίας και μετατροπής, και δεν εκτελεί απόδοση GPU ή παράγει αρχεία εικόνας. Η «Απόδοση» στο πλαίσιο αυτής της βιβλιοθήκης σημαίνει εξαγωγή μιας σκηνής σε μορφή που ένας επακόλουθος renderer, κινητήρας παιχνιδιών ή προβολέας μπορεί να καταναλώσει.

Αυτή η σελίδα καλύπτει όλες τις διαδρομές εξαγωγής: αποθήκευση σε αρχείο, έξοδο σε ενδιάμεση μνήμη, επιλογές ειδικές για μορφές, και πώς να προετοιμάσετε σκηνές για κοινά επόμενα στόχους (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 (Συνιστάται για Web και Παιχνίδια)

Το GLB (δυαδικό 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 πρόσθετο buffer.

Εξαγωγή σε 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 είναι μόνο γεωμετρία (χωρίς υλικά, χωρίς κίνηση). Είναι η τυπική μορφή ανταλλαγής για slicers 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 — ο .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);

Εξαγωγή στη μνήμη με saveToBuffer()

Για serverless λειτουργίες, HTTP απαντήσεις και ροές δεδομένων, εξάγετε απευθείας σε ένα 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()

Ένα πλήρως εν‑μνήμη pipeline μετατροπής χωρίς 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);
}

Προετοιμασία Σκηνών για Συγκεκριμένους Renderers

Three.js / Babylon.js (Web)

Αυτοί οι αποδοχείς φορτώνουν εγγενώς αρχεία GLB. Εξάγετε με binaryMode = true. Εάν οι υφές αναφέρονται από το πηγαίο OBJ, βεβαιωθείτε ότι το .mtl και τα αρχεία εικόνας βρίσκονται στην ίδια θέση κατά τη φόρτωση.

model-viewer (Web Component)

Δέχεται .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). Ο εισαγωγέας glTF 2.0 του Blender διαχειρίζεται υλικά PBR και animation. Σημείωση: η έξοδος FBX μέσω scene.save() δεν υποστηρίζεται — η αυτόματη ανίχνευση μορφής FBX δεν είναι ενσωματωμένη στον save dispatcher.

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
Τα textures λείπουν στο GLB εξόδουbinaryMode δεν έχει οριστείΟρισμένο opts.binaryMode = true για αυτόνομο GLB
Το αρχείο STL δεν έχει χρώμα στον slicerΗ μορφή STL δεν υποστηρίζει χρώμαΧρησιμοποιήστε 3MF για δεδομένα χρώματος
saveToBuffer επιστρέφει κενό bufferΤο όρισμα της συμβολοσειράς format string λείπει ή είναι λανθασμένοΠεράστε τη συμβολοσειρά format string, π.χ. 'glb', 'stl', ή 'obj'
Το FBX ανοίγει χωρίς animation στο BlenderΤο αρχείο προέλευσης (OBJ/STL) δεν έχει animationΤο animation μεταφέρεται μόνο αν υπάρχει στην πηγή
Το αρχείο εξόδου είναι πολύ μεγάλοΤο OBJ προέλευσης έχει πολλές διπλότυπες κορυφέςΗ δυαδική έξοδος GLB αφαιρεί ήδη τα διπλότυπα· ελέγξτε την ποιότητα του πηγαίου περιουσιακού στοιχείου

Δείτε επίσης

 Ελληνικά