مقدمه
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');