บทนำ

เรามีความยินดีที่จะแจ้งให้ทราบว่ามีการเปิดให้ใช้งาน Aspose.3D FOSS สำหรับ TypeScript ในรูปแบบ @aspose/3d npm package. ไลบรารีที่ได้รับใบอนุญาต MIT นี้นำการประมวลผลฉาก 3D ระดับผลิตภัณฑ์ไปยังแอปพลิเคชัน TypeScript และ Node.js โดยไม่ต้องใช้ไบนารีเนทีฟ, เครื่องมือเฉพาะแพลตฟอร์ม, หรือใบอนุญาตเชิงพาณิชย์.

ไลบรารีนี้ออกแบบโดยอิงตาม Scene API ที่เรียบง่าย: โหลดไฟล์ 3D ด้วย scene.open(), ตรวจสอบหรือแปลงกราฟฉาก, และเขียนผลลัพธ์ด้วย scene.save(). คำจำกัดความประเภทของ TypeScript เต็มรูปแบบถูกรวมไว้ในแพคเกจ; ไม่จำเป็นต้องมี @types/ แพคเกจแยกเพิ่มเติมใดๆ.

คุณสมบัติหลัก

การอ่าน/เขียนหลายรูปแบบ. แพคเกจนี้สามารถอ่านและเขียนรูปแบบ 3D หลัก 6 รูปแบบในหนึ่งการติดตั้งได้. OBJ, glTF 2.0, GLB, STL, 3MF, และ COLLADA รองรับทั้งการนำเข้าและการส่งออก. มีคลาสนำเข้า/ส่งออก FBX อยู่แต่การตรวจจับรูปแบบอัตโนมัติยังไม่ได้เชื่อมต่อ, ดังนั้นไฟล์ FBX ไม่สามารถโหลดผ่าน scene.open().

การสนับสนุน TypeScript ระดับแรก. คลาสสาธารณะทั้งหมด, enum, และประเภทตัวเลือกถูกกำหนดประเภทอย่างเต็มที่. IDE ที่รองรับบริการภาษา TypeScript (VS Code, WebStorm, ฯลฯ) ให้การเติมข้อความอัตโนมัติที่แม่นยำและเอกสารอธิบายแบบอินไลน์สำหรับทุกการเรียก API.

ความเข้ากันได้กับ Node.js 18–22+. แพคเกจนี้ได้รับการทดสอบกับ Node.js 18, 20, และ 22 LTS releases. ไม่มี native addon ใดถูกคอมไพล์ระหว่างการติดตั้ง, ดังนั้นจึงทำงานได้บนทุกแพลตฟอร์มที่ Node.js รองรับ.

หนึ่งการพึ่งพาในระหว่างรันไทม์. การพึ่งพาเพียงอย่างเดียวคือ xmldom, ใช้เฉพาะสำหรับการแยกวิเคราะห์ XML ของ COLLADA เท่านั้น ตัวแยกวิเคราะห์รูปแบบอื่นทั้งหมดเป็นการทำงานด้วย JavaScript อย่างเดียว.

สัญญาอนุญาต MIT. ใช้ @aspose/3d ในโครงการเชิงพาณิชย์, โอเพ่นซอร์ส หรือโครงการภายในโดยไม่มีข้อจำกัด.

เริ่มต้นอย่างรวดเร็ว

ติดตั้งแพคเกจ:

npm install @aspose/3d

โหลดไฟล์ OBJ และแปลงเป็น GLB แบบไบนารี:

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

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

const saveOpts = new GltfSaveOptions();
saveOpts.binaryMode = true;   // produce a single .glb file
scene.save('output.glb', GltfFormat.getInstance(), saveOpts);

console.log('Converted to GLB successfully');

วนซ้ำผ่านโหนดฉากเพื่อตรวจสอบเรขาคณิต:

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

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

for (const node of scene.rootNode.childNodes) {
    console.log(`Node: ${node.name}`);
    if (node.entity) {
        console.log(`  Entity type: ${node.entity.constructor.name}`);
    }
}

รูปแบบที่รองรับ

รูปแบบส่วนขยายนำเข้าส่งออกหมายเหตุ
Wavefront OBJ.objใช่ใช่อ่าน/เขียน .mtl ไฟล์วัสดุ
glTF 2.0.gltfใช่ใช่JSON พร้อมไฟล์ภายนอก .bin บัฟเฟอร์
GLB ไบนารี.glbใช่ใช่ตั้งค่า binaryMode: true ใน GltfSaveOptions
STL.stlใช่ใช่ASCII และ binary STL
3MF.3mfใช่ใช่ไฟล์เก็บ Open Packaging Convention
FBX.fbxไม่*ไม่*มีตัวนำเข้า/ส่งออกอยู่ แต่การตรวจจับรูปแบบอัตโนมัติยังไม่ได้เชื่อมต่อ
COLLADA.daeใช่ใช่ต้องการบันเดิล xmldom การพึ่งพา

ข้อดีของ TypeScript

ทำงานกับ @aspose/3d ใน TypeScript จะตรวจจับข้อผิดพลาดประเภทในช่วงคอมไพล์แทนที่จะเป็นช่วงรันไทม์ เมื่อคุณเรียก scene.save(), คอมไพเลอร์จะตรวจสอบว่าอ็อบเจกต์ options ตรงกับที่คาดหวัง SaveOptions subtype สำหรับรูปแบบที่เลือก ตัวเลือกการโหลดและบันทึกที่เฉพาะเจาะจงต่อรูปแบบจะเปิดเผยเฉพาะคุณสมบัติที่เกี่ยวข้องกับรูปแบบนั้น; ไม่มีถุงตัวเลือกที่ไม่มีประเภทให้เดา.

เช่น, GltfSaveOptions.binaryMode เป็นแบบที่กำหนดประเภท boolean, ดังนั้นคอมไพเลอร์จึงปฏิเสธ saveOpts.binaryMode = 'yes' ก่อนที่โค้ดใดจะทำงาน. คุณสมบัติการเคลื่อนไหวบน AnimationClip, ช่องวัสดุบน PbrMaterial, และประเภทขององค์ประกอบเวอร์เท็กซ์บน VertexElement ทั้งหมดนี้มีประเภทคล้ายกันและสามารถค้นพบได้ผ่าน IntelliSense โดยไม่ต้องอ้างอิงเอกสารภายนอก.

โอเพนซอร์ส

แพ็กเกจนี้ถูกเผยแพร่ภายใต้ MIT License. โค้ดต้นฉบับพร้อมให้ใช้งานบน GitHub. การมีส่วนร่วม รายงานบั๊ก และคำขอสนับสนุนรูปแบบต่าง ๆ ยินดีรับผ่านตัวติดตามปัญหาของรีโพซิทอรี.

ไลบรารีนี้มีการพึ่งพา runtime เพียงหนึ่งรายการ: xmldom เวอร์ชัน 0.9+ ใช้เฉพาะเมื่ออ่านหรือเขียนไฟล์ COLLADA. พาร์เซอร์และไลท์เตอร์อื่น ๆ ทั้งหมดเป็นการนำไปใช้แบบ pure-JavaScript ที่แยกตัวเองได้โดยไม่มีส่วนประกอบไบนารี.

เริ่มต้นใช้งาน

สรุป

@aspose/3d เวอร์ชัน 24.12.0 ให้พื้นฐานที่เสถียร มีการกำหนดประเภท และพึ่งพาน้อยสำหรับการประมวลผลไฟล์ 3D ใน TypeScript และ Node.js ไม่ว่าจะเป็นกรณีการใช้งานการแปลงรูปแบบ การตรวจสอบฉาก การสกัดเรขาคณิต หรือการบูรณาการพายป์ไลน์ ไลบรารีนี้ครอบคลุมรูปแบบการแลกเปลี่ยน 3D ที่พบบ่อยที่สุดภายใต้ใบอนุญาตโอเพนซอร์สแบบเปิดกว้าง.

ติดตั้งวันนี้และแจ้งให้เราทราบว่าคุณสร้างอะไรขึ้นมา.