مقدمه

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

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

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

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

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

سازگاری با Node.js نسخه‌های ۱۸ تا ۲۲+. این بسته در مقابل نسخه‌های LTS Node.js ۱۸، ۲۰ و ۲۲ تست شده است. هیچ افزونه بومی‌ای در هنگام نصب کامپایل نمی‌شود، بنابراین بر روی تمام پلتفرم‌هایی که 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 و باینری STL
3MF.3mfبلهبلهآرشیو Open Packaging Convention
FBX.fbxخیر*خیر*واردکننده/صادرکننده وجود دارد اما تشخیص خودکار فرمت وصل نشده است
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 استفاده می‌شود. تمام تجزیه‌کننده‌ها و نویسنده‌های دیگر به‌صورت خودکفا و پیاده‌سازی‌های خالص‑JavaScript هستند و هیچ مؤلفه باینری ندارند.

شروع کار

نتیجه‌گیری

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

آن را امروز نصب کنید و بگذارید بدانیم چه چیزی ساخته شده است.