Rendering Adegan dan Eksport

Rendering Adegan dan Eksport

@aspose/3d ialah perpustakaan pemprosesan dan penukaran, dan ia tidak melakukan rendering GPU atau menghasilkan fail imej. “Rendering” dalam konteks perpustakaan ini bermaksud mengeksport satu adegan ke format yang boleh digunakan oleh downstream renderer, game engine, atau viewer.

Halaman ini merangkumi semua laluan eksport: penyimpanan berasaskan fail, output penampan dalam memori, pilihan khusus format, dan cara menyediakan adegan untuk sasaran hiliran yang biasa (Three.js, Babylon.js, penonton model, dan enjin permainan).

Eksport Asas

Panggil scene.save() dengan laluan fail. Perpustakaan menentukan format output daripada sambungan fail:

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

const scene = new Scene();
scene.open('input.obj');  // use a supported format (OBJ, glTF, GLB, STL, 3MF, COLLADA)

scene.save('output.glb');    // GLB (binary glTF)
scene.save('output.stl');    // STL
scene.save('output.dae');    // COLLADA
scene.save('output.3mf');    // 3MF

Mengeksport ke GLB (Disyorkan untuk Web dan Permainan)

GLB (binary glTF 2.0) ialah satu fail berdiri sendiri yang mengandungi semua data mesh, bahan, dan tekstur. Ia merupakan format output yang disyorkan untuk penonton web (Three.js, Babylon.js, model‑viewer) dan enjin permainan (Godot, Unity melalui pengimport):

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

const scene = new Scene();
scene.open('source.obj');

const opts = new GltfSaveOptions();
opts.binaryMode = true;    // produce .glb instead of .gltf + .bin

scene.save('output.glb', opts);
console.log('GLB export complete');

Tetapkan binaryMode = true untuk menghasilkan fail GLB yang berdiri sendiri. Apabila false, outputnya ialah fail JSON .gltf dengan buffer sidecar .bin yang berasingan.

Mengeksport ke glTF (Format JSON untuk Pemeriksaan)

Varian JSON (.gltf + .bin) berguna semasa pembangunan kerana JSON boleh dibaca oleh manusia:

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

const scene = new Scene();
scene.open('input.dae');  // COLLADA is fully supported; FBX is not wired into scene.open()

const opts = new GltfSaveOptions();
opts.binaryMode = false;  // JSON + .bin sidecar

scene.save('output.gltf', opts);

Mengeksport ke STL (Alur Kerja Pencetakan 3D)

STL adalah hanya geometri (tiada bahan, tiada animasi). Ia adalah format pertukaran standard untuk pemotong cetakan 3D:

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

const scene = new Scene();
scene.open('model.obj');

const opts = new StlSaveOptions();
opts.binaryMode = true;   // binary STL is more compact than ASCII

scene.save('output.stl', opts);

Tetapkan binaryMode = false untuk menghasilkan ASCII STL, yang boleh dibaca teks tetapi lebih besar.

Mengeksport ke FBX (Alur Kerja Alat DCC)

Nota: Kelas import dan eksport FBX wujud dalam perpustakaan, tetapi pengesanan automatik format FBX tidak disambungkan ke scene.open() atau scene.save(). Memanggil scene.save('output.fbx', opts) tidak akan memanggil eksport FBX — sambungan .fbx tidak dikenali oleh penyelaras simpanan dan panggilan akan kembali kepada output OBJ. Gunakan kelas FbxExporter secara langsung jika anda memerlukan I/O FBX. Jadual sokongan format menandakan FBX sebagai No* atas sebab ini.

Jika anda perlu mengeksport ke format yang diterima oleh Blender, Maya, atau Unreal Engine, gunakan GLB atau COLLADA sebagai gantinya — kedua‑duanya sudah terintegrasi sepenuhnya ke dalam scene.save():

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

const scene = new Scene();
scene.open('input.dae');

// GLB is fully supported and widely accepted by DCC tools
const opts = new GltfSaveOptions();
opts.binaryMode = true;
scene.save('output.glb', opts);

Eksport Dalam Memori dengan saveToBuffer()

Untuk fungsi tanpa pelayan, respons HTTP, dan paip penstriman, eksport secara langsung ke Buffer tanpa menulis ke cakera:

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

function convertToGlbBuffer(inputPath: string): Buffer {
    const scene = new Scene();
    scene.open(inputPath);

    const opts = new GltfSaveOptions();
    opts.binaryMode = true;

    return scene.saveToBuffer('glb', opts);
}

// Express.js / HTTP response example
// const glbBuffer = convertToGlbBuffer('model.obj');
// res.setHeader('Content-Type', 'model/gltf-binary');
// res.send(glbBuffer);

saveToBuffer() mengambil rentetan format sebagai argumen pertama (contohnya 'glb', 'stl', 'obj') dan objek pilihan yang sama seperti save().

Menggabungkan openFromBuffer() dan saveToBuffer()

Saluran penukaran sepenuhnya dalam memori tanpa I/O cakera pada mana-mana peringkat:

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

function objBufferToGlbBuffer(objData: Buffer): Buffer {
    const scene = new Scene();

    const loadOpts = new ObjLoadOptions();
    loadOpts.enableMaterials = true;
    scene.openFromBuffer(objData, loadOpts);

    const saveOpts = new GltfSaveOptions();
    saveOpts.binaryMode = true;

    return scene.saveToBuffer('glb', saveOpts);
}

Menyiapkan Adegan untuk Renderer Tertentu

Three.js / Babylon.js (Web)

Renderer ini secara asli memuatkan fail GLB. Eksport dengan binaryMode = true. Jika tekstur dirujuk daripada OBJ sumber, pastikan .mtl dan fail imej berada dalam lokasi yang sama semasa memuat.

model-viewer (Komponen Web)

Menerima .glb secara langsung. Tetapan eksport yang sama seperti Three.js.

Enjin Godot

Import GLB melalui pengimport Godot (Project → Import). Gunakan binaryMode = true. Godot menyokong bahan PBR dari glTF 2.0 secara natif.

Blender

Untuk kesetiaan import terbaik gunakan glTF (output.gltf + output.bin) atau GLB (output.glb). Pengimport glTF 2.0 Blender mengendalikan bahan PBR dan animasi. Nota: Output FBX melalui scene.save() tidak disokong — pengesanan automatik format FBX tidak disambungkan ke penghantar simpan.

Pencetakan 3D (Pemotong: Cura, PrusaSlicer, Bambu Studio)

Eksport ke STL atau 3MF. Gunakan 3MF apabila anda memerlukan warna atau metadata bahan dipelihara. Gunakan STL untuk keserasian maksimum.

Perbandingan Format Eksport

FormatSambunganBahanAnimasiFail TunggalTerbaik Untuk
GLB.glbPBR (glTF 2.0)YaYaWeb, permainan, penghantaran umum
glTF.gltfPBR (glTF 2.0)YaTidak (+ .bin)Pembangunan, pemeriksaan
STL.stlTidakTidakYaPencetakan 3D, hanya geometri
FBX.fbxPhong/PBRTidak*Tidak*Pengimport/pengexport wujud tetapi tidak disambungkan ke pengesanan automatik
COLLADA.daeYaYaYaPertukaran silang-DCC
3MF.3mfWarna/bahanTidakYaPencetakan 3D moden

Isu Eksport Biasa

SymptomCauseFix
Output GLB opens as JSON in viewerbinaryMode ditinggalkan sebagai falseTetapkan opts.binaryMode = true
Textures missing in output GLBbinaryMode tidak ditetapkanTetapkan opts.binaryMode = true untuk GLB berdiri sendiri
STL file has no color in slicerFormat STL tidak menyokong warnaGunakan 3MF untuk data warna
saveToBuffer returns empty bufferArgumen rentetan format hilang atau salahHantar rentetan format, contohnya 'glb', 'stl', atau 'obj'
FBX opens without animation in BlenderFail sumber (OBJ/STL) tidak mempunyai animasiAnimasi hanya diteruskan jika ada dalam sumber
Output file is very largeOBJ sumber mempunyai banyak verteks duplikatOutput binari GLB sudah menghapus duplikasi; semak kualiti aset sumber

Lihat Juga

 Bahasa Melayu