Unterstützung für 3D-Format
Aspose.3D FOSS für TypeScript liest und schreibt sieben wichtige 3D-Dateiformate. Die Formaterkennung ist beim Laden automatisch: die Bibliothek prüft binäre magische Zahlen, so dass Sie das Quellformat nicht angeben müssen. Formatspezifische Optionsklassen werden aus Unterwegen des Typografieranschlusses importiert. @aspose/3d - Das Paket.
Unterstützte Formate
| Format der Datenbank | Erweiterung | Lesen Sie . | Schreiben . | Formatsklasse | Anmerkungen |
|---|---|---|---|---|---|
| OBJ | .obj | - Ja , das ist gut . | - Ja , das ist gut . | ObjFormat | Wellenfront-OJ; Lies: .mtl Materialien; schreibt .mtl neben dem .obj |
| GFT-Systeme | .gltf / .glb | - Ja , das ist gut . | - Ja , das ist gut . | GltfFormat | glTF 2.0 JSON und GLB binär |
| STL | .stl | - Ja , das ist gut . | - Ja , das ist gut . | StlFormat | Binär- und ASCII-Modus |
| 3MF | .3mf | - Ja , das ist gut . | - Ja , das ist gut . | ThreeMfFormat | 3D Manufacturing Format |
| FBX | .fbx | Nicht verfügbar* | Nicht verfügbar* | FbxFormat | Importeur/Exporter existiert, aber die automatische Erkennung des Formats ist nicht verkabelt; über das Format kann nicht genutzt werden. scene.open() |
| COLLADA | .dae | - Ja , das ist gut . | - Ja , das ist gut . | ColladaFormat | Erfordernisse xmldom (Automatisch installiert) |
OBJ (Wellenfront)
OBJ unterstützt sowohl den Import als auch die Ausfuhr in der EU. @aspose/3d.Bei der Speicherung als OBJ wird die Materialbibliothek (.mtl) wird automatisch neben den .obj Die Datei. ObjLoadOptions die Materialbelastung zu steuern und das Systemverhalten zu koordinieren.
Die wichtigsten Optionen für die ObjLoadOptions:
| Option | Typ der | Standard-Nummer | Wirkung |
|---|---|---|---|
enableMaterials | boolean | true | Die Daten werden analysiert. .mtl Datei, auf die verwiesen wird: mtllib |
flipCoordinateSystem | boolean | false | Umdrehen der Y/Z-Achsen, um mit Rechtshändigen Systemen übereinstimmen zu können |
scale | number | 1.0 | Einheitliche Skala, die auf alle Spitzen bei Belastung angewendet wird. |
normalizeNormal | boolean | true | Normalisieren Sie die normalen Winkel auf eine Längeneinheit |
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)`);Um ein OBJ in irgendein schreibbares Format zu konvertieren, laden Sie es und rufen Sie scene.save() mit der Zielformatsklasse.
glTF und GLB
glTF 2.0 ist das empfohlene Austauschformat für die Verwendung von Web- und Spieleanlagen. Die Bibliothek verwendet dieselbe GltfFormat Klasse für beide .gltf (JSON + Seitenwagen) und .glb (binär, eigenständig) Ausgabe. Schalten Sie zwischen ihnen mit GltfSaveOptions.binaryMode.
Last glTF oder 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
Exportieren als 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);Ausfuhr als binäre 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);Verwendung binaryMode = true Die Kommission hat die .glb Die Daten werden in Browsern und Motoren schneller geladen als das Split Text + Binary Pair.
STL
STL ist ein trianguliertes Mesh-Format, das im CAD und 3D-Druck verwendet wird. Sowohl binär als auch ASCII ST L werden für Eingabe und Ausgabe unterstützt. StlSaveOptions.binaryMode kontrolliert, ob die Ausgabe binär (kompakte) oder ASCII (menschlich lesbar) ist.
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 speichert nur die triangulierte Geometrie und Vertexnormale. Material- und UV-Daten werden in ST L nicht gespeichern.
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
Warnung: FBX-Klassen für Importeure und Exporteuren (
FbxImporter,FbxExporter) in der Bibliothek vorhanden, aber FBX-Format Autodetection ist ohne Drahtverbindung in diescene.open()oderscene.save().- Ich rufe .scene.open('file.fbx')wird nicht den FBX-Importeur aufrufen die Datei fällt durch das STL-Suffall.scene.save('output.fbx', opts)wird den FBX-Exporteur nicht aufrufen. Die obige Tabelle für die Unterstützung des Formats markiert FBx alsNo*Die Kommission hat die Möglichkeit, den Zugang zu Informationen über das Internet und andere Datenbanken zu erleichtern.scene.open()/scene.save().
COLLADA (DAE)
COLLADA ist ein XML-basiertes Austauschformat, das von einer Vielzahl von DCC-Tools (Blender, Maya, Cinema 4D) unterstützt wird. Die Bibliothek verwendet die xmldom Abhängigkeit für XML-Parsing; es wird automatisch mit 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-Dateien können Metadaten zur Einheitsskalierung enthalten (<unit> Die Bibliothek wendet die Einheitskonvertierung beim Laden automatisch an.
Autodetection des Formats
Beim Laden von einem Dateipfad versucht die Bibliothek Formatserkennung aus binären magischen Zahlen, bevor sie zur Dateierweiterung zurückfällt. Das bedeutet, dass Sie eine GLB-Datei mit dem Namen laden können .bin oder eine STL-Datei mit dem Namen: .model ohne das Format ausdrücklich anzugeben.
Bei der Beförderung von einem Buffer mit: scene.openFromBuffer(), Magische Zahl-Erkennung ist der primäre Mechanismus:
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)`);Formate mit zuverlässigen Zauberzahlen: GLB (glTF), STL-Binär (80-byte Header + Dreieckenzahl), 3MF (ZIP-Magie) und PK) OBJ und COLLADA sind textbasiert und werden von der Dateierweiterung oder durch die Optionsklasse, die Sie passieren, erkannt.
Tipps für die Kinder
- OBJ unterstützt sowohl den Import als auch den Export: beim Speichern als OBJ, die
.mtlDie Datenbank wird automatisch neben der.objDie Akte. - GLB für die Web-Delivery verwenden:Das selbstständige binäre Format vermeidet CORS-Probleme mit der Verwendung von
.binDie Veröffentlichung des Berichts ist in der Tat nicht zu verwerten. - Pass-Format-spezifische Optionen:Generische:
scene.open(path)Funktioniert für die meisten Formate, ermöglicht aber das Übergeben der Klasse Loader Options ein formatspezifisches Verhalten wie OBJ-Materialladen oder STL-Koordinatennormalisierung. xmldomist für COLLADA erforderlich.: es wird automatisch installiert.peerDependenciesoder versuchen, es zu entfernen; der COLLADA-Reader ruft ihn direkt an.
Häufige Probleme
| Symptom der | Wahrscheinliche Ursache | Behebung |
|---|---|---|
| OBJ-Materialien sind nach der Beladung leer. | enableMaterials nicht festgelegt | Pass . ObjLoadOptions mit: enableMaterials = true |
GLB produziert eine .bin Seitenwagen | binaryMode Verzug auf false | Setz opts.binaryMode = true in der GltfSaveOptions |
scene.open() Wirft “ununterstütztes Format” | Dateierweiterung nicht erkannt | Pass den Abgleich. *LoadOptions Klasse oder Verwendungszweck openFromBuffer() |
| COLLADA-Aufladung mit XML-Fehler fehlschlägt | xmldom fehlt oder nicht übereinstimmt | Lauf ! npm install @aspose/3d nochmals; xmldom ist eine direkte Abhängigkeit von der |
| Bei ASCII-Ausfuhren verlorene STL-Normale | ASCII STL fällt normal pro Gesicht | Verwendung binaryMode = true für normaler Erhalt |
Siehe auch:
- Merkmale und Funktionalität: Szenengraph, Mesh, Materialien, Animation und mathematische APIs.
- Schauplatz: den Knotenbaum aufzubauen und zu durchqueren.
- Wie man ein 3D-Metz programmatisch baut