วิธีการบันทึกรูปแบบ 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
| การขยายตัว | รูปแบบ | บันทึก |
|---|---|---|
.glb | glTF 2.0 ไวน์ | คําแนะนําสําหรับ glTF; ทั้งหมดของสินทรัพย์ที่รวมอยู่ในไฟล์เดียว |
.gltf | GLTF 2.0 JSON | ระยํา .bin และไฟล์ข้อความพร้อมกับ JSON |
.obj | Wavefront OBJ มือถือ | การเขียน .mtl ไฟล์วัสดุด้านข้าง .obj เมื่อวัสดุที่มีอยู่ |
.stl | STL | ฐาน: STL สอง; ใช้ StlSaveOptions.binaryMode = false สําหรับ ASCII ข้อความ |
.fbx | อัตโนมัติ FBX | ไม่เชื่อมต่อใน scene.save() การตรวจจับตนเอง; ใช้ StlExporter เคล็ดลับการเดินทาง |
.3mf | 3D Manufacturing | เหมาะสําหรับกระแสทํางานการพิมพ์ 3D |
.dae | COLLADA | รูปแบบการแลกเปลี่ยน 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().บีบอิสระเขียนไปยังกระดาษและจากนั้นเขียนลงบนดิสก์.