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ātsPaplašinājumsLasītRakstītFormāta klasePiezīmes
Wavefront OBJ.objObjFormatLasa .mtl materiālus; raksta .mtl kopā ar .obj
glTF 2.0.gltfGltfFormatJSON teksts + .bin piedziņa
GLB.glbGltfFormatBinārais glTF; iestatīts binaryMode = true
STL.stlStlFormatBinārais un ASCII režīmi
3MF.3mfThreeMfFormat3D Manufacturing Format
FBX.fbxNē*Nē*FbxFormatImportētājs/eksportētājs pastāv, bet formāta automātiskā noteikšana nav savienota; nav lietojams caur scene.open()
COLLADA.daeColladaFormatPieprasa 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:

OpcijaTipsNoklusējumsIetekme
enableMaterialsbooleantrueParsēt .mtl failu, uz ko atsaucas mtllib
flipCoordinateSystembooleanfalseApgriezt Y/Z asis, lai atbilstu labroķa sistēmām
scalenumber1.0Vienota mērogošana, kas tiek piemērota visiem virsotņu punktiem ielādes laikā
normalizeNormalbooleantrueNormalizē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, .mtl materiāla fails tiek automātiski rakstīts blakus .obj failam.
  • Izmantojiet GLB tīmekļa piegādei: pašpietiekams binārais formāts novērš CORS problēmas ar .bin sidecarus 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.
  • xmldom ir nepieciešams COLLADA: tas tiek instalēts automātiski. Nepievienojiet to peerDependencies vai mēģiniet to noņemt; COLLADA lasītājs to izsauc tieši.

Biežāk sastopamās problēmas

SimptomsIespējams iemeslsLabot
OBJ materiāli ir tukši pēc ielādesenableMaterials nav iestatītsIziet ObjLoadOptions ar enableMaterials = true
GLB izveido .bin sidecarbinaryMode pēc noklusējuma uz falseIestatīt opts.binaryMode = true iekš GltfSaveOptions
scene.open() izsauc “neatbalstīts formāts”Faila paplašinājums nav atpazītsPārsūtiet atbilstošo *LoadOptions klasi vai izmantojiet openFromBuffer()
COLLADA ielāde neizdodas ar XML kļūduxmldom trūkst vai neatbilstIzpildī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ālesIzmantot binaryMode = true normālu saglabājošai izvadei

Skatīt arī

 Latviešu