مقدمه

ما در حال انتشار Aspose.3D FOSS برای Python, یک کتابخانهٔ pure-Python برای خواندن، نوشتن و تبدیل فرمت‌های رایج 3D. کتابخانه در PyPI به عنوان aspose-3d-foss,، دارای مجوز MIT است و هیچ وابستگی خارجی ندارد.

اگر تا به حال نیاز داشته‌اید که فایل‌های 3D را به‌صورت برنامه‌نویسی بررسی یا تبدیل کنید (تعداد رئوس مش را استخراج کنید، هندسه OBJ را به یک اسکریپت پردازش منتقل کنید، یا به‌صورت دسته‌ای فایل‌های STL را به glTF برای یک نمایشگر وب تبدیل کنید)، این کتابخانه برای چنین مورد استفاده‌ای ساخته شده است. این کتابخانه نیازی به درایور گرافیکی، ماژول بسط بومی یا هرگونه اتصال ابری ندارد.


چه چیزهایی گنجانده شده است

نمودار صحنه اصلی

هر فایل به یک Scene شیء که ساختار گره‌ای فایل اصلی را بازتاب می‌دهد. گره‌ها حامل Transform (translation, rotation, scale) و یک یا چند موجودیت پیوست‌شده مانند Mesh, Camera, یا Light. گراف صحنه صرف‌نظر از فرمت منبع یکسان است، بنابراین کدی که برای پیمایش و پردازش هندسه نوشته شده است، بدون تغییر در تمام فرمت‌های پشتیبانی‌شده کار می‌کند.

دسترسی به هندسه

Mesh objects موارد زیر را در دسترس می‌گذارند:

  • control_points: فهرست موقعیت‌های راس به صورت Vector4 (x, y, z, w)
  • polygons:فهرست لیست‌های face index lists (آریتی دلخواه چندضلعی، نه فقط مثلث‌ها)
  • get_element(VertexElementType):لایه‌های دادهٔ رأس نام‌گذاری‌شده را برای normals, UVs, vertex colours, and smoothing groups بازیابی می‌کند

مواد

LambertMaterial و PhongMaterial ویژگی‌های متریال خوانده‌شده از OBJ را حمل می‌کند .mtl فایل‌ها (ambient, diffuse, specular, emissive, transparency, shininess). مواد در دور سفر بارگذاری‑ذخیره برای قالب‌هایی که از آن‌ها پشتیبانی می‌کنند، باقی می‌مانند.

ابزارهای ریاضی

Vector2, Vector3, Vector4, FVector3, Quaternion, Matrix4, و BoundingBox به عنوان انواع مقدار سبک برای محاسبات هندسی گنجانده شده‌اند.

انیمیشن

این AnimationClip, AnimationNode, KeyframeSequence,، و KeyFrame کلاس‌ها دسترسی به داده‌های انیمیشن کلیدفریم را از فرمت‌هایی که این داده‌ها را حمل می‌کنند، مانند glTF و COLLADA، فراهم می‌کنند.


شروع سریع

pip install aspose-3d-foss

یک فایل 3D را بارگذاری کنید و تعداد رئوس هر مش را چاپ کنید:

from aspose.threed import Scene
from aspose.threed.entities import Mesh

scene = Scene.from_file("model.obj")

def visit(node):
    for entity in node.entities:
        if isinstance(entity, Mesh):
            print(f"{node.name}: {len(entity.control_points)} vertices, "
                  f"{len(entity.polygons)} polygons")
    for child in node.child_nodes:
        visit(child)

visit(scene.root_node)

فایل یکسان را به glTF تبدیل کنید:

from aspose.threed import Scene
from aspose.threed.formats import GltfSaveOptions

scene = Scene.from_file("model.obj")
scene.save("model.gltf", GltfSaveOptions())

این برنامه کامل است. هیچ فایل پیکربندی، هیچ کلید API، هیچ تماس شبکه‌ای وجود ندارد.


فرمت‌های پشتیبانی‌شده

قالبExtension(s)بارگذاریذخیرهیادداشت‌ها
Wavefront OBJ.objبلهبله.mtl پشتیبانی از بارگذاری مواد
STL.stlبلهبلهباینری و ASCII؛ گزینهٔ وارونگی سیستم مختصات
glTF 2.0.gltf, .glbبلهبلهپشتیبانی از GLB (باینری خودمحافظت)
COLLADA.daeبلهبلهColladaSaveOptions در دسترس با flip_coordinate_system, enable_materials, indented
3MF.3mfبلهبلهمناسب برای فرآیندهای چاپ سه‌بعدی
FBX.fbxجزئیN/Aفقط توکن‌ساز؛ تجزیه‌گر کامل در حال پیشرفت

تشخیص قالب به‌صورت خودکار از پسوند فایل انجام می‌شود. گزینه‌های بارگذاری و ذخیره‌سازی مخصوص قالب (ObjLoadOptions, StlSaveOptions, GltfSaveOptions, ThreeMfSaveOptions) برای کنترل دقیق در دسترس هستند.


منبع باز و رایگان

این کتابخانه تحت مجوز MIT است. می‌توانید آن را در برنامه‌های تجاری استفاده کنید، تغییر دهید و بدون محدودیت توزیع کنید. کد منبع در گیت‌هاب تحت سازمان Aspose موجود است.

هیچ سطوح استفاده‌ای، هیچ محدودیت توکنی و هیچ تله‌متری وجود ندارد. کتابخانه تمام پردازش‌ها را به‌صورت محلی انجام می‌دهد.

وابستگی‌ها: هیچ. بسته به‌صورت یک pure-Python wheel بدون افزونه‌های C و بدون نیازهای زمان اجرا از طرف سوم نصب می‌شود.


شروع کار


نتیجه‌گیری

نسخه 26.1.0 Aspose.3D FOSS برای Python شامل رایج‌ترین فرمت‌های فایل سه‌بعدی مورد استفاده در ابزارها، خطوط لوله و برنامه‌های وب (OBJ، STL، glTF، COLLADA و 3MF) با یک API یکپارچه Python و بدون مشکل نصب است. اگر با باگی مواجه شدید، یک مورد لبه‌ای پشتیبانی‌نشده یا فرمت مورد نیاز برای افزودن داشتید، لطفاً یک issue در گیت‌هاب باز کنید. ما به‌طور فعال کتابخانه را نگهداری می‌کنیم و از مشارکت‌ها استقبال می‌کنیم.