3D formātu atbalsts
Aspose.3D FOSS for TypeScript lasa un raksta septiņus galvenos 3D failu formātus. Formāta noteikšana ir automātiska, ielādējot: bibliotēka pārbauda bināros maģiskos numurus, tāpēc jums nav jānorāda avota formāts. Formātam specifiskās opciju klases tiek importētas no pakotnes apakšceļiem @aspose/3d pakotne.
Atbalstītie formāti
| Formāts | Paplašinājums | Lasīt | Rakstīt | Formāta klase | Piezīmes |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | Jā | Jā | ObjFormat | Lasa .mtl materiālus; raksta .mtl kopā ar .obj |
| glTF 2.0 | .gltf | Jā | Jā | GltfFormat | JSON teksts + .bin piedziņa |
| GLB | .glb | Jā | Jā | GltfFormat | Binārais glTF; iestatīts binaryMode = true |
| STL | .stl | Jā | Jā | StlFormat | Binārais un ASCII režīmi |
| 3MF | .3mf | Jā | Jā | ThreeMfFormat | 3D Manufacturing Format |
| FBX | .fbx | Nē* | Nē* | FbxFormat | Importētājs/eksportētājs pastāv, bet formāta automātiskā noteikšana nav savienota; nav lietojams caur scene.open() |
| COLLADA | .dae | Jā | Jā | ColladaFormat | Pieprasa xmldom (automātiski instalēts) |
OBJ (Wavefront)
OBJ atbalsta gan importu, gan eksportu @aspose/3d. Kad saglabā kā OBJ, materiālu bibliotēka (.mtl) tiek automātiski ierakstīta blakus .obj failam. Izmantojiet ObjLoadOptions lai kontrolētu materiālu ielādi un koordinātu sistēmas uzvedību.
Galvenās opcijas priekš ObjLoadOptions:
| Opcija | Tips | Noklusējums | Ietekme |
|---|---|---|---|
enableMaterials | boolean | true | Parsēt .mtl failu, uz ko atsaucas mtllib |
flipCoordinateSystem | boolean | false | Apgriezt Y/Z asis, lai atbilstu labroķa sistēmām |
scale | number | 1.0 | Vienota mērogošana, kas tiek piemērota visiem virsotņu punktiem ielādes laikā |
normalizeNormal | boolean | true | Normalizēt virsotņu normāles līdz vienības garumam |
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)`);Lai konvertētu OBJ uz jebkuru rakstāmu formātu, ielādējiet to un izsauciet scene.save() ar mērķa formāta klasi.
glTF un GLB
glTF 2.0 ir ieteicamais apmaiņas formāts tīmekļa un spēļu dzinēju lietošanai. Bibliotēka izmanto to pašu GltfFormat klasi gan .gltf (JSON + sidecar) un .glb (binārs, pašpietiekams) izvade. Pārslēdzieties starp tiem, izmantojot GltfSaveOptions.binaryMode.
Ielādēt glTF vai 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
Eksportēt kā 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);Eksportēt kā bināru 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);Izmantot binaryMode = true ražošanas līdzekļu piegādei. Viena .glb ielādējas ātrāk pārlūkprogrammās un dzinējos nekā sadalītā teksta + binārā pāra.
STL
STL ir trīsstūra režģa formāts, ko izmanto CAD un 3D drukāšanā. Gan binārais, gan ASCII STL tiek atbalstīti ievadei un izvadē. StlSaveOptions.binaryMode kontrolē, vai izvade ir bināra (kompakta) vai ASCII (cilvēkam lasāma).
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 saglabā tikai trīsstūra ģeometriju un virsotņu normāles. Materiāli un UV dati STL netiek saglabāti.
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
Brīdinājums: FBX importētāja un eksportētāja klases (FbxImporter, FbxExporter) pastāv bibliotēkā, bet FBX formāta automātiskā noteikšana ir nav pieslēgta uz scene.open() vai scene.save(). Izsaucot scene.open('file.fbx') neizsauks FBX importētāju — fails tiks novirzīts uz STL rezerves variantu. Izsaucot scene.save('output.fbx', opts) neizsauks FBX eksportētāju. Iepriekšējā formāta atbalsta tabulā FBX ir atzīmēts kā No* šī iemesla dēļ. Izmantojiet GLB vai COLLADA, lai pilnībā funkcionālu importu un eksportu caur scene.open() / scene.save().
COLLADA (DAE)
COLLADA ir XML balstīts apmaiņas formāts, ko atbalsta plašs DCC rīku klāsts (Blender, Maya, Cinema 4D). Bibliotēka izmanto the xmldom atkarība XML parsēšanai; tā tiek instalēta automātiski kopā ar 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 faili var saturēt vienību mērogošanas metadatus (<unit> elements). Bibliotēka automātiski veic vienību konvertēšanu, ielādējot.
Formāta automātiskā noteikšana
Ielādējot no faila ceļa, bibliotēka mēģina noteikt formātu, balstoties uz bināriem maģiskajiem skaitļiem, pirms pāriet uz faila paplašinājumu. Tas nozīmē, ka varat ielādēt GLB failu, kas nosaukts .bin vai STL failu, kas nosaukts .model nepiesakot formātu eksplicitiski.
Ielādējot no Buffer ar scene.openFromBuffer(), maģisko skaitļu noteikšana ir galvenais mehānisms:
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)`);Formāti ar uzticamiem maģiskajiem skaitļiem: GLB (glTF), STL binārais (80 baitu galvene + trīsstūru skaits), 3MF (ZIP maģiskais PK). OBJ un COLLADA ir teksta bāzēti un tiek noteikti no faila paplašinājuma vai, izmantojot opciju klasi, ko nododat.
Padomi
- OBJ atbalsta gan importu, gan eksportu: saglabājot kā OBJ,
.mtlmateriāla fails tiek automātiski rakstīts blakus.objfailam. - Izmantojiet GLB tīmekļa piegādei: pašpietiekams binārais formāts novērš CORS problēmas ar
.binsidecarus un ielādējas ātrāk WebGL renderētājos. - Pārsūtiet formāta specifiskās opcijas: vispārīgs
scene.open(path)darbojas ar vairumu formātu, bet loader options class pārsūtīšana ļauj formāta specifisku uzvedību, piemēram, OBJ materiālu ielādi vai STL koordinātu normalizāciju. xmldomir nepieciešams COLLADA: tas tiek instalēts automātiski. Nepievienojiet topeerDependenciesvai mēģiniet to noņemt; COLLADA lasītājs to izsauc tieši.
Biežāk sastopamās problēmas
| Simptoms | Iespējams iemesls | Labot |
|---|---|---|
| OBJ materiāli ir tukši pēc ielādes | enableMaterials nav iestatīts | Iziet ObjLoadOptions ar enableMaterials = true |
GLB izveido .bin sidecar | binaryMode pēc noklusējuma uz false | Iestatīt opts.binaryMode = true iekš GltfSaveOptions |
scene.open() izsauc “neatbalstīts formāts” | Faila paplašinājums nav atpazīts | Pārsūtiet atbilstošo *LoadOptions klasi vai izmantojiet openFromBuffer() |
| COLLADA ielāde neizdodas ar XML kļūdu | xmldom trūkst vai neatbilst | Izpildīt npm install @aspose/3d vēlreiz; xmldom ir tieša atkarība |
| STL normāles pazuda ASCII eksportā | ASCII STL izmet per-face normāles | Izmantot binaryMode = true normālu saglabājošai izvadei |
Skatīt arī
- Iespējas un funkcionalitāte: scēnas grafiks, tīkls, materiāli, animācija un matemātikas API.
- Scēnas grafiks: mezglu koka izveide un pārlūkošana.
- Kā programmatiski izveidot 3D Mesh.