Jak přeměnit 3D modely do TypeScriptu

Jak přeměnit 3D modely do TypeScriptu

Aspose.3D FOSS pro TypeScript konvertuje mezi 3D formáty načtením do neutrálního Scene Tato příručka ukazuje nejčastější konverze.

Krok za krokem

Krok 1: Nainstalovat @aspose/3d

asposefoss/3d is not yet published — build from source until it ships. See the project README for build instructions.


Krok 2: Nahrát zdrojový soubor

Vytvořit Scene a zavolat. scene.open().Použijte formát specifický pro … *LoadOptions třída pro nejlepší výsledky.

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
const opts = new ObjLoadOptions();
opts.enableMaterials = true;
scene.open('model.obj', opts);

Krok 3: Uložit do cílového formátu

Zavolej . scene.save() Výstupní formát je detekován z rozšíření souboru.

// OBJ → glTF binary (GLB)
scene.save('output.glb');

// OBJ → STL
scene.save('output.stl');

// OBJ → COLLADA
scene.save('output.dae');

Poznámka: FBX je … nepodporované v. scene.save() Autodetekce. .fbx Rozšíření není propojeno s žádným vývozcem šetří se na .fbx Použijte OBJ, glTF, STL, 3MF nebo COLLADA pro spolehlivý výstup.


Krok 4: Obvyklé příklady konverze

OBJ na glTF / GLB

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());
scene.save('model.glb');
console.log('Converted OBJ → GLB');

FBX Nedostává podporu

FBX automatické detekce není připojená. scene.open(). A … a … .fbx soubor předán do: scene.open() FBX importér/exportér třídy existují v knihovně, ale vyžadují přímé volání spíše než vysokorovné. open()/save() Použijte COLLADA, OBJ nebo glTF jako alternativu k FBX.

glTF na STL

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

const scene = new Scene();
scene.open('model.glb');
scene.save('model.stl');
console.log('Converted GLB → STL');

COLLADA na 3MF

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

const scene = new Scene();
scene.open('model.dae');
scene.save('model.3mf');
console.log('Converted COLLADA → 3MF');

Krok 5: Srovnávejte více souborů v dávkách

import * as fs from 'fs';
import * as path from 'path';
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const inputDir = './input';
const outputDir = './output';

fs.mkdirSync(outputDir, { recursive: true });

const objFiles = fs.readdirSync(inputDir).filter(f => f.endsWith('.obj'));

for (const file of objFiles) {
    const inputPath = path.join(inputDir, file);
    const outputFile = file.replace('.obj', '.glb');
    const outputPath = path.join(outputDir, outputFile);

    const scene = new Scene();
    scene.open(inputPath, new ObjLoadOptions());
    scene.save(outputPath);

    console.log(`Converted ${file}${outputFile}`);
}

Podporovaná konverzní matice

Od \ DoglTF/GLBOBJSTLFBX3MFCOLLADA
OBJ
glTF/GLB
FBX
STL
3MF
COLLADA

FBX není podporována prostřednictvím vysoké úrovně open()/save() API formát není připojen k automatickému detekci. Všechny výše uvedené buňky FBX jsou ?? .


Obvyklé problémy a řešení

Materiály se po přeměně ztrácejí.

Materiály OBJ (usemtl, .mtl soubor) jsou načteny, když ObjLoadOptions.enableMaterials = true.Při ukládání do GLTF se vlastnosti materiálů PBR automaticky mapují. Komplexní materiály (procesorové, vícevrstvé) mohou přeměňovat s sníženou věrností.

Obecné rozměry síťových pásů jsou nesprávně vyznačeny.

Různé formáty používají různé výchozí jednotky (milimetry pro STL, metry za glTF). ObjLoadOptions.scale při nakládání nebo StlSaveOptions.scale při šetření na normalizaci jednotek.

Nesoulad souřadnicového systému (model převrácen nebo otočen)

Některé formáty používají pravou ruku Y-up, jiní Z- up. ObjLoadOptions.flipCoordinateSystem = true nebo po naložení použít rotaci na kořenový uzel.


Časté otázky

Zachovává konverze animace?

Daty animace jsou uchovávány při konverzi mezi formáty, které je podporují (např. COLLADA → glTF). STL a OBJ neobsahují data animací. FBX není podporován prostřednictvím scene.open()/scene.save(), takže FBX animace a jízdy v obvodu nejsou k dispozici prostřednictvím API na vysoké úrovni.

Jsou zachovány texturní údaje?

Textury, na které odkazuje materiál OBJ nebo jsou vkládány do GLTF, se přenášejí do grafu scény.binaryMode = truePro výstup OBJ jsou textury uloženy jako samostatné soubory vedle datového systému. .obj.

Můžu konverzovat mnoho souborů paralelně?

scene.open() a) scene.save() jsou synchronní. Použijte Node.js worker_threads pro paralelní zpracování.


Viz také:

 Čeština