วิธีการบันทึกรูปแบบ 3D ใน TypeScript

วิธีการบันทึกรูปแบบ 3D ใน TypeScript

Aspose.3D FOSS for TypeScript ช่วยให้บันทึกภาพที่เข้าสู่รูปแบบทั้งหมดที่มีการสนับสนุนด้วยตัวเดียว scene.save() การเรียกใช้ รูปแบบการออกจะถูกตรวจจับโดยอัตโนมัติจากไฟล์ขยาย แนะนํานี้ครอบคลุมการบันทึกสําหรับแต่ละรูปแบบและใช้ตัวเลือกที่กําหนดเอง.

คู่มือขั้นตอน

ขั้นตอน 1: ติดตั้ง @aspose/3d

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


ขั้นตอนที่ 2: ดาวน์โหลดหรือสร้างสถานการณ์

หรือโหลดไฟล์ที่มีอยู่หรือสร้างภาพยนตร์โดยโปรแกรมก่อนที่จะบันทึก.

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

// Load from file
const scene = new Scene();
scene.open('source.obj', new ObjLoadOptions());

// Or create a new empty scene
const emptyScene = new Scene();

ขั้นตอนที่ 3: การบันทึกด้วยรูปแบบการตรวจจับอัตโนมัติ

scene.save(path) การตรวจจับรูปแบบการออกจากไฟล์ขยาย:

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

const scene = new Scene();
scene.open('input.obj', new ObjLoadOptions());

// Save as binary glTF
scene.save('output.glb');

// Save as JSON glTF
scene.save('output.gltf');

// Save as STL
scene.save('output.stl');

// Save as OBJ
scene.save('output.obj');

// Save as 3MF
scene.save('output.3mf');

// Save as COLLADA
scene.save('output.dae');

ขั้นตอน 4: ใช้รูปแบบพิเศษ SaveOptions

สําหรับการควบคุมที่ละเอียดอ่อนผ่านวัตถุตัวเลือกแบบกําหนดรูปแบบ:

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

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

// Export to GLB with specific options
const saveOptions = new GltfSaveOptions();
saveOptions.binaryMode = true;   // produce GLB (binary glTF)

scene.save('output.glb', saveOptions);

ขั้นตอน 5: เก็บไปยังบูฟเวอร์ (ในหน่วยความจํา)

ใช้ scene.saveToBuffer() เพื่อให้การผลิตเป็น A Buffer โดยไม่ต้องเขียนบนไดรฟ์:

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

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

const buffer = scene.saveToBuffer('glb');
console.log(`Buffer size: ${buffer.length} bytes`);

// Send via HTTP, upload to S3, etc.

ขั้นตอนที่ 6: ตรวจสอบการออก

หลังจากบันทึกตรวจสอบไฟล์ที่มีอยู่และมีขนาดไม่ゼロ:

import * as fs from 'fs';

const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);

การสนับสนุนรูปแบบ Matrix

การขยายตัวรูปแบบบันทึก
.glbglTF 2.0 ไวน์คําแนะนําสําหรับ glTF; ทั้งหมดของสินทรัพย์ที่รวมอยู่ในไฟล์เดียว
.gltfGLTF 2.0 JSONระยํา .bin และไฟล์ข้อความพร้อมกับ JSON
.objWavefront OBJ มือถือการเขียน .mtl ไฟล์วัสดุด้านข้าง .obj เมื่อวัสดุที่มีอยู่
.stlSTLฐาน: STL สอง; ใช้ StlSaveOptions.binaryMode = false สําหรับ ASCII ข้อความ
.fbxอัตโนมัติ FBXไม่เชื่อมต่อใน scene.save() การตรวจจับตนเอง; ใช้ StlExporter เคล็ดลับการเดินทาง
.3mf3D Manufacturingเหมาะสําหรับกระแสทํางานการพิมพ์ 3D
.daeCOLLADAรูปแบบการแลกเปลี่ยน XML

ปัญหาทั่วไปและข้อกําหนด

Error: Unsupported format เมื่อการประหยัด

ตรวจสอบว่าไฟล์ขยายตรงกับรูปแบบที่ได้รับการสนับสนุน สารสํารองใช้ไฟล์เพื่อตรวจจับรูปแบบ ไฟล์ชื่อ output.xyz จะละลาย.

.obj ไฟล์บันทึก แต่วัสดุหายไป

เมื่อบันทึก OBJ, วัสดุห้องสมุด (.mtl) เขียนโดยอัตโนมัติพร้อมกับ .obj. ทั้งสองไฟล์จะต้องอยู่ในตารางเดียวกันเมื่อเปิดใหม่ หากคุณต้องการ geometry เท่านั้นตั้งค่า ObjSaveOptions.enableMaterials = false.

ใหญ่ .gltf ด้วยการออกแบบที่แยกต่างหาก

ใช้ .glb แทนที่จะ .gltf; มันรวมข้อมูลไบนารี into a single self-contained file. Set GltfSaveOptions.binaryMode = true เมื่อผ่าน A GltfSaveOptions ตัวอย่าง.


คําถามที่พบบ่อย

ฉันสามารถบันทึกได้ในรูปแบบหลายแบบในหนึ่งล่วงหน้าหรือไม่?

ใช่; โทรศัพท์ scene.save() มากมายครั้งที่มีเส้นทางที่แตกต่างกัน:

scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');

การประหยัดจะเปลี่ยนสถานการณ์หรือไม่?

ไม่ใช่. scene.save() เป็นการทํางานที่อ่านเพียงบนกราฟ scene คุณสามารถบันทึกภาพแวดล้อมเดียวกันในรูปแบบหลายแบบโดยไม่ต้องมีผลข้างเคียงใด ๆ.

ฉันสามารถเขียนไฟล์แหล่งข้อมูลได้หรือไม่?

ใช่. ผ่านทางเดียวกันเพื่อ scene.save() ที่คุณใช้ใน scene.open().บีบอิสระเขียนไปยังกระดาษและจากนั้นเขียนลงบนดิสก์.


ดูเพิ่มเติม

 ภาษาไทย