مقدمه

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

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

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

  • ورودی/خروجی چندفرمت: واردات و صادرات OBJ (با .mtl مواد)، glTF 2.0 / GLB، STL (باینری و ASCII)، 3MF، و COLLADA از هر دو مسیر فایل و حافظه Buffer اشیاء. پشتیبانی از 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, و منحنی‌های درون‌یابی (linear, Bezier, TCB spline)
  • گزینه‌های مخصوص فرمت: به‌ازای هر فرمت LoadOptions / SaveOptions کلاس‌ها کنترل وارونگی مختصات، مقیاس، بارگذاری مواد و موارد دیگر را بر عهده دارند

شروع کار

نصب از npm. Node.js نسخه 18 یا بالاتر مورد نیاز است؛ 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');

همچنین ببینید