مقدمه

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

این کتابخانه فرمت‌های تبادل اصلی را پشتیبانی می‌کند — glTF 2.0 / GLB، STL، 3MF و COLLADA برای هر دو واردات و صادرات، و OBJ فقط برای واردات. کلاس‌های واردکننده/صادرکننده FBX وجود دارند اما هنوز به تشخیص خودکار فرمت متصل نشده‌اند. API گراف صحنه مدل مشابهی را که در ابزارهای نویسندگی 3D آشناست، بازتاب می‌دهد: یک Scene دارای یک rootNode,، هر Node می‌تواند گره‌های فرزند و اشیای موجودیت (Mesh, Camera, Light)، و سلسله‌مراتب تبدیل به‌صورت کامل برای خواندن و نوشتن در دسترس است.

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

  • ورودی/خروجی چندفرمت: وارد کردن OBJ (با .mtl مواد، فقط وارد کردن)، glTF 2.0 / GLB، STL (باینری و ASCII)، 3MF، و COLLADA از هر دو مسیرهای فایل و اشیاء در حافظه Buffer اشیاء. glTF، STL، 3MF، و COLLADA همچنین از خروجی پشتیبانی می‌کنند. پشتیبانی از FBX هنوز به تشخیص خودکار متصل نشده است.
  • API گراف صحنه: Scene, Node, Mesh, Camera, Light سلسله‌مراتبی با مدیریت کامل والد/فرزند؛ پیمایش گره‌ها به‌صورت بازگشتی از طریق node.childNodes
  • سیستم مواد PBR: مواد Lambert، Phong و PBR (متالیک/خشکی) قابل دسترسی از طریق node.entity.material
  • عملیات مش: دسترسی به داده‌های خام راس از طریق mesh.controlPoints (آرایه‌ای از Vector4), شاخص‌های چندضلعی از طریق mesh.polygonCount, و کانال‌های عنصر راس از طریق mesh.getElement()
  • ابزارهای ریاضی: Vector2, Vector3, Vector4, Matrix4, Quaternion, و انواع جعبه‌محیط برای محاسبات فضایی
  • سیستم انیمیشن:انیمیشن فریم کلیدی با AnimationClip, AnimationChannel, و منحنی‌های درون‌یابی (خطی، Bezier، TCB spline)
  • گزینه‌های مخصوص به فرمت: مخصوص هر فرمت LoadOptions / SaveOptions کلاس‌ها کنترل وارونگی مختصات، مقیاس، بارگذاری مواد، و موارد بیشتر را بر عهده دارند

شروع کار

از npm نصب کنید. Node.js نسخه ۱۸ یا بالاتر مورد نیاز است؛ TypeScript 5.0+ توصیه می‌شود.

npm install @aspose/3d

یک فایل OBJ را بارگذاری کنید و صحنه را بررسی کنید:

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

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

for (const node of scene.rootNode.childNodes) {
    if (node.entity && 'controlPoints' in node.entity) {
        const mesh = node.entity as any;
        console.log(`Mesh "${node.name}": ${mesh.controlPoints.length} vertices`);
    }
}

صادرات به glTF

هر صحنه بارگذاری‌شده یا ساخته‌شده را به باینری glTF 2.0 (GLB) ذخیره کنید:

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

const scene = new Scene();
scene.open('input.obj', new ObjLoadOptions());
scene.save('output.glb');
console.log('Exported to output.glb');

کتابخانه به‌صورت خودکار فرمت خروجی را از پسوند فایل تشخیص می‌دهد. یک GltfSaveOptions نمونه برای کنترل تعبیه مواد PBR، بافت‌ها، و رمزگذاری باینری در مقابل JSON.

ساخت صحنه

یک صحنه را به‌صورت برنامه‌نویسی ساخته و آن را صادر کنید:

import { Scene, Node } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';

const scene = new Scene();
const mesh = new Mesh();
// ... populate mesh.controlPoints and polygons ...
const node = new Node('myMesh');
node.entity = mesh;
scene.rootNode.addChildNode(node);
scene.save('programmatic.glb');

موارد مرتبط