บทนำ

เรามีความยินดีที่จะแจ้งให้ทราบว่ามีการเปิดให้ใช้งาน 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+. แพคเกจนี้ได้รับการทดสอบกับรุ่น LTS ของ Node.js 18, 20, และ 22. ไม่มีการคอมไพล์ native addon ใด ๆ ระหว่างการติดตั้ง, ดังนั้นจึงทำงานได้บนทุกแพลตฟอร์มที่ Node.js รองรับ.

มีการพึ่งพา runtime เพียงหนึ่งรายการ. การพึ่งพาเดียวคือ 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 และ STL ไบนารี
3MF.3mfใช่ใช่ไฟล์อาร์ไคฟ์ Open Packaging Convention
FBX.fbxไม่*ไม่*Importer/exporter มีอยู่แต่การตรวจจับรูปแบบอัตโนมัติยังไม่ได้เชื่อมต่อ
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 ไม่ว่ากรณีการใช้งานจะเป็นการแปลงรูปแบบ, การตรวจสอบฉาก, การสกัดเรขาคณิต, หรือการรวมเข้ากับ pipeline ไลบรารีครอบคลุมรูปแบบการแลกเปลี่ยน 3D ที่พบบ่อยที่สุดภายใต้ใบอนุญาตโอเพนซอร์สที่อนุญาตอย่างกว้างขวาง.

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