Jak przekształcić modele 3D w typografię

Jak przekształcić modele 3D w typografię

Aspose.3D FOSS dla TypeScript konwertuje między formatami 3D poprzez ładowanie do neutralnego Scene reprezentowanie i oszczędność do formatu docelowego. ta instrukcja pokazuje najczęstsze konwersje.

Przewodnik krok po kroku

Krok 1: Instalacja @aspose/3d

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


Krok 2: Pobierz plik źródłowy

Tworzenie A Scene i wezwanie scene.open().Użyj formatu specyficznego *LoadOptions Klasy dla najlepszych wyników.

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: Zapisz do formatu docelowego

Wzywaj scene.save() z trasy wyjścia. format wyjściowy jest wykryty z rozszerzenia pliku.

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

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

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

Uwaga : FBX jest Nie wspierane przez scene.save() Auto-detekcja - wskaźnik .fbx nie jest przypisywany do żadnego eksportu - oszczędności na .fbx W zamian użyj OBJ, glTF, STL, 3MF lub COLLADA do niezawodnego wyjścia.


Krok 4: Wspólne przykłady konwersji

Obj do 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 - nie obsługiwane

Auto-detection FBX nie jest włączony do scene.open(). A w .fbx Archiwum przekazywane do scene.open() nie jest rozpoznawalny przez dowolnego detektoru formatów i przechodzi do parsera STL, który będzie się nie udał lub wytwarza śmieci. FBX importer / eksporter klasy istnieją w bibliotece ale wymagają bezpośredniego odwołania zamiast wysokiego poziomu open()/save() Użyj COLLADA, OBJ lub glTF jako alternatywy FBX.

GST do STL

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

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

Własność do 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: Konwertuj pliki wielokrotne

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}`);
}

Wspierane konwersje Matrix

Od doGST / GLBOBJSTLFBX3MFCOLLADA
OBJ
GST / GLB
FBX
STL
3MF
COLLADA

FBX Nie wspierane przez wysokie poziomy open()/save() API – format nie jest przełączony do automatycznego wykrywania. wszystkie powyższe komórki FBX są .


Wspólne problemy i rozwiązania

Materiały są utracone po konwersji.

Materiały z zakresu (usemtl, .mtl - są pobierane, gdy ObjLoadOptions.enableMaterials = true.W przypadku oszczędzania na glTF, właściwości materiału PBR są automatycznie mapowane. złożone materiały (proceduralne, wielokładniki) mogą być konwertowane z zmniejszoną lojalnością.

Mesh wydaje się skalić nieprawidłowo

Różne formaty używają różnych podanych jednostek (milimetrów dla STL, metrów do glTF). ObjLoadOptions.scale w trakcie ładowania lub StlSaveOptions.scale Oszczędności do normalizacji jednostek.

System koordynacyjny (modele zderzone lub obrabiane)

Niektóre formaty używają prawego Y-up, inne Z-Up. ObjLoadOptions.flipCoordinateSystem = true lub zastosowanie rotacji do korzeniowego węzła po ładowaniu.


Często zadawane pytania

Czy konwersja zachowuje animacje?

Dane animacyjne są przechowywane podczas konwersji pomiędzy formatami, które go obsługują (np. COLLADA → glTF). STL i OBJ nie przynoszą danych animacyjnych. FBX nie jest obsługiwany przez scene.open()/scene.save(), więc fbx animacji okrągłe ścieżki nie są dostępne za pośrednictwem API na wysokim poziomie.

Czy dane teksturowe są zachowane?

Wprowadzane są tekstury, które są odwoływane do materiałów OBJ lub wbudowane w glTF, przechodzą przez graf sceny. (w przypadku oszczędzania na GLB)binaryMode = true, binary buffer jest wbudowany w jeden plik. dla wyjścia OBJ, tekstury są zapisywane jako oddzielne pliki obok .obj.

Czy mogę konwertować wiele plików równolegle?

scene.open() i scene.save() Wystarczy użyć Node.js worker_threads do równoległego przetwarzania.


Zobacz również

 Polski