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