Υποστήριξη Μορφών 3D

Aspose.3D FOSS για TypeScript διαβάζει και γράφει επτά κύρια 3D φορμά αρχείων. Η ανίχνευση του φορμά είναι αυτόματη κατά τη φόρτωση: η βιβλιοθήκη ελέγχει τους δυαδικούς μαγικούς αριθμούς ώστε να μην χρειάζεται να καθορίσετε το πηγαίο φορμά. Οι κλάσεις επιλογών ειδικές για κάθε φορμά εισάγονται από υπο-διαδρομές του @aspose/3d πακέτο.

Υποστηριζόμενες μορφές

ΜορφήΕπέκτασηΑνάγνωσηΕγγραφήΚλάση ΜορφήςΣημειώσεις
Wavefront OBJ.objΝαιΝαιObjFormatΔιαβάζει .mtl υλικά; γράφει .mtl μαζί με .obj
glTF 2.0.gltfΝαιΝαιGltfFormatJSON κείμενο + .bin sidecar
GLB.glbΝαιΝαιGltfFormatBinary glTF; ορισμένο binaryMode = true
STL.stlΝαιΝαιStlFormatΔυαδικές και ASCII λειτουργίες
3MF.3mfΝαιΝαιThreeMfFormat3D Manufacturing Format
FBX.fbxΌχι*Όχι*FbxFormatΥπάρχει εισαγωγέας/εξαγωγέας, αλλά η αυτόματη ανίχνευση μορφής δεν είναι ενσωματωμένη· δεν είναι χρησιμοποιήσιμο μέσω scene.open()
COLLADA.daeΝαιΝαιColladaFormatΑπαιτεί xmldom (αυτόματη εγκατάσταση)

OBJ (Wavefront)

Το OBJ υποστηρίζει τόσο εισαγωγή όσο και εξαγωγή σε @aspose/3d. Όταν αποθηκεύετε ως OBJ, η βιβλιοθήκη υλικών (.mtl) γράφεται αυτόματα δίπλα στο .obj αρχείο. Χρησιμοποιήστε ObjLoadOptions για να ελέγξετε τη φόρτωση υλικού και τη συμπεριφορά του συστήματος συντεταγμένων.

Κύριες επιλογές για ObjLoadOptions:

ΕπιλογήΤύποςΠροεπιλογήΑποτέλεσμα
enableMaterialsbooleantrueΑναλύστε το .mtl αρχείο που αναφέρεται από mtllib
flipCoordinateSystembooleanfalseΑναστρέψτε τους άξονες Y/Z για να ταιριάζουν με δεξιόχειρες συστήματα
scalenumber1.0Ομοιόμορφη κλίμακα που εφαρμόζεται σε όλες τις κορυφές κατά τη φόρτωση
normalizeNormalbooleantrueΚανονικοποίηση των κανονικών των κορυφών σε μονάδα μήκους
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
const opts = new ObjLoadOptions();
opts.enableMaterials = true;
opts.normalizeNormal = true;

scene.open('model.obj', opts);
console.log(`Loaded ${scene.rootNode.childNodes.length} top-level node(s)`);

Για να μετατρέψετε ένα OBJ σε οποιαδήποτε μορφή εγγραφής, φορτώστε το και καλέστε scene.save() με την κλάση του επιθυμητού μορφότυπου.

glTF and GLB

Το glTF 2.0 είναι η προτεινόμενη μορφή ανταλλαγής για χρήση στο web και σε μηχανές παιχνιδιών. Η βιβλιοθήκη χρησιμοποιεί το ίδιο GltfFormat κλάση για και τα δύο .gltf (JSON + sidecar) και .glb (δυαδικό, αυτόνομο) έξοδο. Εναλλαγή μεταξύ τους με GltfSaveOptions.binaryMode.

Φόρτωση glTF ή GLB:

import { Scene } from '@aspose/3d';
import { GltfLoadOptions } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('model.gltf', new GltfLoadOptions());
// or
scene.open('model.glb');  // format detected from magic bytes

Εξαγωγή ως JSON glTF (.gltf + .bin):

import { Scene } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('input.fbx');

const opts = new GltfSaveOptions();
opts.binaryMode = false;  // produces output.gltf + output.bin
scene.save('output.gltf', GltfFormat.getInstance(), opts);

Εξαγωγή ως δυαδικό GLB (.glb):

import { Scene } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';

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

const opts = new GltfSaveOptions();
opts.binaryMode = true;  // single self-contained file
scene.save('output.glb', GltfFormat.getInstance(), opts);

Χρησιμοποιήστε binaryMode = true για παράδοση περιουσιακών στοιχείων παραγωγής. Ένα ενιαίο .glb φορτώνεται πιο γρήγορα σε προγράμματα περιήγησης και μηχανές από το διαχωρισμένο ζεύγος κειμένου + δυαδικού.

STL

Το STL είναι μια μορφή τριγωνοποιημένου πλέγματος που χρησιμοποιείται σε CAD και 3D εκτύπωση. Υποστηρίζονται τόσο τα δυαδικά όσο και τα ASCII STL για είσοδο και έξοδο. StlSaveOptions.binaryMode ελέγχει αν η έξοδος είναι δυαδική (συμπαγής) ή ASCII (ανθρώπινα αναγνώσιμη).

import { Scene } from '@aspose/3d';
import { StlLoadOptions, StlSaveOptions } from '@aspose/3d/formats/stl';

const scene = new Scene();
scene.open('model.stl', new StlLoadOptions());

// Export as binary STL (default, compact)
const binaryOpts = new StlSaveOptions();
binaryOpts.binaryMode = true;
scene.save('output_binary.stl', binaryOpts);

// Export as ASCII STL (human-readable)
const asciiOpts = new StlSaveOptions();
asciiOpts.binaryMode = false;
scene.save('output_ascii.stl', asciiOpts);

Το STL αποθηκεύει μόνο τριγωνοποιημένη γεωμετρία και κανονικές κορυφών. Τα υλικά και τα δεδομένα UV δεν διατηρούνται στο STL.

3MF (3D Manufacturing Format)

3MF is an XML-based format designed for additive manufacturing. It supports color and material metadata alongside geometry. Use it when exchanging files with 3D printing slicers or manufacturing workflows.

import { Scene } from '@aspose/3d';
import { ThreeMfSaveOptions } from '@aspose/3d/formats/3mf';

const scene = new Scene();
scene.open('model.3mf');

// Re-export as 3MF
scene.save('output.3mf', new ThreeMfSaveOptions());

3MF files are ZIP archives internally. The library handles archive creation and extraction automatically.

FBX

Προειδοποίηση: Οι κλάσεις εισαγωγέα και εξαγωγέα FBX (FbxImporter, FbxExporter) υπάρχουν στη βιβλιοθήκη, αλλά η αυτόματη ανίχνευση μορφής FBX είναι δεν είναι ενσωματωμένη στο scene.open() ή scene.save(). Η κλήση scene.open('file.fbx') δεν θα ενεργοποιήσει τον εισαγωγέα FBX — το αρχείο θα περάσει στην εναλλακτική STL. Η κλήση scene.save('output.fbx', opts) δεν θα ενεργοποιήσει τον εξαγωγέα FBX. Ο πίνακας υποστήριξης μορφών παραπάνω σημειώνει το FBX ως No* για αυτόν τον λόγο. Χρησιμοποιήστε GLB ή COLLADA για πλήρως λειτουργική εισαγωγή και εξαγωγή μέσω scene.open() / scene.save().

COLLADA (DAE)

Το COLLADA είναι μια μορφή ανταλλαγής βασισμένη σε XML που υποστηρίζεται από μια ευρεία γκάμα εργαλείων DCC (Blender, Maya, Cinema 4D). Η βιβλιοθήκη χρησιμοποιεί το xmldom εξάρτημα για την ανάλυση XML· εγκαθίσταται αυτόματα με npm install @aspose/3d.

import { Scene } from '@aspose/3d';
import { ColladaSaveOptions } from '@aspose/3d/formats/collada';

const scene = new Scene();
scene.open('model.dae');

// Re-export as COLLADA
const saveOpts = new ColladaSaveOptions();
scene.save('output.dae', saveOpts);

Τα αρχεία COLLADA μπορεί να περιέχουν μεταδεδομένα κλιμάκωσης μονάδων (<unit> στοιχείο). Η βιβλιοθήκη εφαρμόζει αυτόματα τη μετατροπή μονάδων κατά τη φόρτωση.

Αυτόματη Ανίχνευση Μορφής

Κατά τη φόρτωση από διαδρομή αρχείου, η βιβλιοθήκη προσπαθεί να ανιχνεύσει τη μορφή από τους δυαδικούς μαγικούς αριθμούς πριν επιστρέψει στην επέκταση του αρχείου. Αυτό σημαίνει ότι μπορείτε να φορτώσετε ένα αρχείο GLB με όνομα .bin ή ένα αρχείο STL με όνομα .model χωρίς να καθορίσετε τη μορφή ρητά.

Κατά τη φόρτωση από ένα Buffer με scene.openFromBuffer(), η ανίχνευση magic-number είναι ο κύριος μηχανισμός:

import { Scene } from '@aspose/3d';
import * as fs from 'fs';

const buffer = fs.readFileSync('model.glb');
const scene = new Scene();
scene.openFromBuffer(buffer);  // format detected from magic bytes: 'glTF'

console.log(`Root has ${scene.rootNode.childNodes.length} child node(s)`);

Μορφές με αξιόπιστους magic numbers: GLB (glTF), δυαδικό STL (80-byte header + triangle count), 3MF (ZIP magic PK). OBJ και COLLADA είναι text-based και ανιχνεύονται από την επέκταση αρχείου ή από την options class που περνάτε.

Συμβουλές

  • Το OBJ υποστηρίζει τόσο την εισαγωγή όσο και την εξαγωγή: όταν αποθηκεύεται ως OBJ, το .mtl το αρχείο υλικού γράφεται αυτόματα δίπλα στο .obj αρχείο.
  • Χρησιμοποιήστε GLB για παράδοση στο web:η αυτόνομη δυαδική μορφή αποφεύγει προβλήματα CORS με .bin τα sidecars και φορτώνει πιο γρήγορα σε renderers WebGL.
  • Περάστε επιλογές ειδικές για τη μορφή: γενικό scene.open(path) λειτουργεί για τις περισσότερες μορφές, αλλά η μεταβίβαση της κλάσης επιλογών φορτωτή ενεργοποιεί συμπεριφορά ειδική για τη μορφή, όπως η φόρτωση υλικού OBJ ή η κανονικοποίηση συντεταγμένων STL.
  • xmldom απαιτείται για COLLADA: εγκαθίσταται αυτόματα. Μην το προσθέσετε στο peerDependencies ή προσπαθήστε να το αφαιρέσετε· ο αναγνώστης COLLADA το καλεί άμεσα.

Κοινά Προβλήματα

ΣύμπτωμαΠιθανή ΑιτίαΔιόρθωση
Τα υλικά OBJ είναι κενά μετά τη φόρτωσηenableMaterials δεν έχει οριστείΠέρασμα ObjLoadOptions με enableMaterials = true
Το GLB παράγει ένα .bin πρόσθετοbinaryMode προεπιλογή σε falseΟρισμός opts.binaryMode = true σε GltfSaveOptions
scene.open() εμφανίζει “μη υποστηριζόμενη μορφή”Η επέκταση αρχείου δεν αναγνωρίζεταιΠέρασε το ταιριαστό *LoadOptions κλάση ή χρησιμοποιήστε openFromBuffer()
Η φόρτωση COLLADA αποτυγχάνει με σφάλμα XMLxmldom λείπει ή δεν ταιριάζειΕκτέλεση npm install @aspose/3d ξανά; xmldom είναι άμεση εξάρτηση
Τα normals του STL χάθηκαν στην εξαγωγή ASCIIASCII STL παραλείπει τα κανονικά ανά πρόσωποΧρησιμοποιήστε binaryMode = true για έξοδο που διατηρεί τα κανονικά

Δείτε επίσης

 Ελληνικά