مقدمه

خوشحالیم که اعلام می‌کنیم در دسترس است Aspose.3D FOSS برای TypeScript به عنوان @aspose/3d پکیج npm. این کتابخانه تحت مجوز MIT پردازش صحنه‌های 3D با کیفیت تولید را به برنامه‌های TypeScript و Node.js می‌آورد بدون نیاز به باینری‌های بومی، ابزارهای مخصوص پلتفرم یا مجوزهای تجاری.

این کتابخانه بر پایه یک Scene API: بارگذاری یک فایل 3D با scene.open(), بررسی یا تبدیل گراف صحنه، و نوشتن نتیجه با scene.save(). تعاریف کامل نوع TypeScript به‌صورت بسته‌بندی شده‌اند؛ هیچ @types/ پکیجی لازم نیست.

ویژگی‌های کلیدی

I/O چندفرمت. این بسته شش فرمت اصلی سه‌بعدی را در یک نصب می‌خواند و می‌نویسد. OBJ، glTF 2.0، GLB، STL، 3MF و COLLADA همگی از واردات و صادرات پشتیبانی می‌کنند. کلاس‌های واردکننده/صادرکننده FBX وجود دارند اما تشخیص خودکار فرمت هنوز فعال نشده است، بنابراین فایل‌های FBX نمی‌توانند از طریق scene.open().

پشتیبانی TypeScript درجه یک. تمام کلاس‌های عمومی، شمارش‌ها و انواع گزینه‌ها به‌طور کامل تایپ شده‌اند. IDEهایی که از سرویس زبان TypeScript پشتیبانی می‌کنند (VS Code، WebStorm و غیره) تکمیل خودکار دقیق و مستندات درون‌خطی برای هر فراخوانی API ارائه می‌دهند.

سازگاری با Node.js 18–22+. این بسته در مقابل نسخه‌های LTS Node.js 18، 20 و 22 تست شده است. هیچ افزونه بومی‌ای در طول نصب کامپایل نمی‌شود، بنابراین بر روی تمام پلتفرم‌هایی که 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بلهبلهSTL ASCII و باینری
3MF.3mfبلهبلهآرشیو Open Packaging Convention
FBX.fbxخیر*خیر*Importer/exporter وجود دارد اما تشخیص خودکار فرمت وصل نشده است
COLLADA.daeبلهبلهنیازمند بسته‌بندی xmldom وابستگی

مزایای TypeScript

کار با @aspose/3d در TypeScript خطاهای دسته‌بندی را در زمان کامپایل به جای زمان اجرا می‌گیرد. وقتی فراخوانی می‌کنید scene.save(), کامپایلر تأیید می‌کند که شیء گزینه‌ها با مورد انتظار مطابقت دارد SaveOptions زیرنوع برای فرمت انتخاب‌شده. گزینه‌های بارگذاری و ذخیره مخصوص هر فرمت فقط ویژگی‌های مرتبط با آن فرمت را نشان می‌دهند؛ کیسه‌ای از گزینه‌های بدون نوع برای حدس زدن وجود ندارد.

به عنوان مثال،, GltfSaveOptions.binaryMode یک نوع‌دار است boolean, بنابراین کامپایلر رد می‌کند saveOpts.binaryMode = 'yes' قبل از اجرای هر کدی. ویژگی‌های انیمیشن در AnimationClip,، کانال‌های متریال در PbrMaterial,، و انواع عناصر راس در VertexElement همگی به‌طور مشابهی تایپ شده‌اند و از طریق IntelliSense قابل کشف هستند بدون نیاز به مشورت با مستندات خارجی.

متن باز

این بسته تحت MIT License. کد منبع در GitHub در دسترس است. مشارکت‌ها، گزارش‌های باگ و درخواست‌های پشتیبانی از فرمت‌ها از طریق ردیاب مسائل مخزن خوش‌آمد می‌گویند.

این کتابخانه یک وابستگی زمان اجرا دارد: xmldom نسخه 0.9+، که فقط هنگام خواندن یا نوشتن فایل‌های COLLADA استفاده می‌شود. تمام تجزیه‌کننده‌ها و نوشتگرهای دیگر به‌صورت خودکفا پیاده‌سازی‌های pure-JavaScript هستند و هیچ مؤلفه باینری ندارند.

شروع کار

نتیجه‌گیری

@aspose/3d نسخه 24.12.0 یک پایهٔ پایدار، تایپ‌شده و با وابستگی کم برای پردازش فایل‌های سه‌بعدی در TypeScript و Node.js فراهم می‌کند. چه مورد استفاده تبدیل فرمت، بازرسی صحنه، استخراج هندسه یا یکپارچه‌سازی خط لوله باشد، این کتابخانه رایج‌ترین فرمت‌های تبادل سه‌بعدی را تحت یک مجوز منبع باز permissive پوشش می‌دهد.

امروز آن را نصب کنید و به ما بگویید چه می‌سازید.