مدل‌های سه‌بعدی را با Aspose.3D رندر کنید

بررسی کلی

Aspose.3D امکان رندر و دستکاری مدل‌های سه‌بعدی را در برنامه‌های Python فراهم می‌کند. این کلاس‌های اصلی را ارائه می‌دهد از جمله Scene, Node, Mesh, Geometry, Camera,، و Light برای ساخت و تغییر محتوای سه‌بعدی برای python 3d visualization، python 3d game، و 3d python library موارد استفاده.

API از پشتیبانی می‌کند scene ساخت گراف از طریق Node و Entity سلسله‌مراتب، تعریف هندسه از طریق Mesh و Geometry,، و تنظیم دوربین/نور برای رندر. قابلیت‌های انیمیشن شامل AnimationClip, AnimationNode, AnimationChannel,، و KeyframeSequence برای حرکت مبتنی بر فریم‌کلید (دسترسی فقط‑خواندنی؛ خروجی انیمیشن هنوز پیاده‌سازی نشده است). متادیتای دارایی از طریق AssetInfo,، در حالی که scene اشیاء از A3DObject و INamedObject برای نام‌گذاری و property مدیریت.

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

Aspose.3D یک API Python برای کار با مدل‌های سه‌بعدی فراهم می‌کند، که عملیات اصلی را از طریق کلاس‌هایی مانند Scene, Mesh, Node, Geometry,، و AnimationClip. این امکان را به توسعه‌دهندگان می‌دهد تا محتواهای 3D را بارگذاری، دستکاری و صادر کنند برای python 3d visualization، python 3d game، و 3d python engine workflows.

  • پشتیبانی از چندین فرمت فایل 3D شامل GLTF2 و WAVEFRONT_OBJ از طریق FileFormat کلاس امکان واردات و صادرات یکپارچه را در پروژه‌های بازی پایتون 3d و تجسم پایتون 3d فراهم می‌کند. پشتیبانی از FBX به صورت آزمایشی است (فقط توکنایزر؛ تجزیه‌گر کامل در حال پیشرفت است).
  • دستکاری مستقیم هندسه مش از طریق Mesh و Geometry کلاس‌ها امکان کنترل دقیق بر رئوس، چندضلعی‌ها و ویژگی‌های رندر مانند سایه‌ها و قابلیت مشاهده را فراهم می‌کند.
  • ساختارهای انیمیشن از طریق AnimationClip, AnimationNode,، و KeyframeSequence کلاس‌ها می‌توانند بررسی و ساخته شوند؛ توجه داشته باشید که صادرات انیمیشن هنوز در این نسخه پیاده‌سازی نشده است.
  • مدیریت سلسله‌مراتب صحنه با استفاده از Node, Entity,، و A3DObject سازماندهی ساختاری از اشیاء 3D، دوربین‌ها و نورها را برای صحنه‌های پیچیدهٔ تجسم سه‌بعدی پایتون فراهم می‌کند.
  • مدیریت ویژگی‌ها و فراداده‌ها از طریق PropertyCollection, AssetInfo,، و INamedObject از ویژگی‌های سفارشی و فراداده‌های سطح سند مانند عنوان، نویسنده و کلیدواژه‌ها پشتیبانی می‌کند.

پیش‌نیازها

برای استفاده از Aspose.3D برای تجسم سه‌بعدی پایتون، اطمینان حاصل کنید که Python 3.7 یا بالاتر نصب شده باشد. بستهٔ library با pip و با فرمان pip install aspose-3d-foss. این بسته کلاس‌های اصلی مانند Scene, Mesh, Node, Entity, Geometry, Camera, Light,، و FileFormat برای کار با گردش‌کارهای بازی پایتون سه‌بعدی و موتور پایتون سه‌بعدی.

pip install aspose-3d-foss
import aspose.threed
print('Installation successful')

نمونه‌های کد

در Aspose.3D برای Python، «رندر» یک صحنهٔ 3D به معنای خروجی گرفتن آن به قالب خروجی پشتیبانی‌شده‌ای مانند OBJ، GLTF2 یا STL است. رسترایزیشن مبتنی بر پیکسل پشتیبانی نمی‌شود؛ از scene.save() برای تولید فایل‌های خروجی 3D.

from aspose.threed import Scene, FileFormat, Mesh, Node

# Load a scene from file
scene = Scene.from_file("model.obj")

# Inspect the root node
root = scene.root_node
for child in root.child_nodes:
    if isinstance(child.entity, Mesh):
        print(f"Mesh: {child.name}, control points: {len(child.entity.control_points)}")

# Export to GLTF 2.0 binary — use extension-based detection or FileFormat.GLTF2() factory
# Note: FileFormat.GLTF2_BINARY is None (stub constant, not implemented).
# Use the .glb extension for auto-detection, or FileFormat.GLTF2() for explicit format.
scene.save("output.glb")
print("Scene exported to output.glb")

بهترین شیوه‌ها

هنگام استفاده از Aspose.3D برای تجسم 3D پایتون یا ساخت یک موتور بازی 3D پایتون، کارایی حافظه را با استفاده مجدد در اولویت قرار دهید Scene و Mesh نمونه‌ها را در صورت امکان استفاده کنید. از ایجاد اشیاء تکراری در حلقه‌های تنگ‌دست خودداری کنید، به‌ویژه هنگام پردازش تعداد زیادی فایل برای تبدیل دسته‌ای 3d پایتون.

  • دوباره استفاده کنید Scene اشیاء را در طول چرخه‌های خروجی به‌جای ایجاد جدید برای هر فایل، مجدداً استفاده کنید.
  • ترجیح دهید Mesh استفاده مجدد با نقاط کنترل مشترک برای هندسه ثابت به‌منظور کاهش هزینه تخصیص.
  • از گزینه‌های ذخیره‌سازی مخصوص فرمت (مثلاً., GltfSaveOptions, StlSaveOptions) برای کنترل حالت خروجی و مدیریت مختصات.
  • برای جریان‌های خروجی در حافظه از استریم‌های BytesIO استفاده کنید تا از گلوگاه‌های I/O دیسک در خطوط لولهٔ تجسم سه‌بعدی پایتون جلوگیری شود.

عیب‌یابی

این بخش به مشکلات رایجی که هنگام استفاده از Aspose.3D برای تجسم سه‌بعدی پایتون و جریان‌های کاری توسعه بازی که شامل Scene, Node, Mesh, و AnimationClip کلاس‌ها.

عملیات‌های پشتیبانی‌نشده NotImplementedError را برمی‌انگیزند

عملیات‌هایی مانند صادرات از طریق برخی صادرکننده‌ها و روش‌های مرتبط با رندرینگ مانند get_entity_renderer_key() پیاده‌سازی نشده‌اند و NotImplementedError را برمی‌گردانند. این به این دلیل است که عملکرد اصلی در نسخهٔ فعلی version از Aspose.3D برای Python ناقص است. برای جلوگیری از شکست‌های زمان اجرا، قبل از فراخوانی روش‌های پشتیبانی‌نشده، در دسترس بودن متدها را نسبت به سطح API بررسی کنید. از Scene.from_file() و scene.save() برای جریان‌های کاری بارگذاری و صادرات پشتیبانی‌شده.

متدهای Mesh که NotImplementedError را برمی‌انگیزند

موارد زیر Mesh متدها در سطح API اعلام شده‌اند اما برمی‌گردانند NotImplementedError در این نسخه. آنها را بر روی هر نمونه بارگذاری‌شده یا ساخته‌شده صدا نزنید Mesh نمونه:

متدنکات
mesh.optimize()بهینه‌سازی مش — هنوز پیاده‌سازی نشده
mesh.do_boolean(...)عملیات بولی عمومی — از متدهای خاص زیر استفاده کنید
mesh.union(other)اتحاد CSG — هنوز پیاده‌سازی نشده
mesh.difference(other)تفاضل CSG — هنوز پیاده‌سازی نشده
mesh.intersect(other)اشتراک CSG — هنوز پیاده‌سازی نشده
mesh.is_manifold()آزمون منیفولد — هنوز پیاده‌سازی نشده
Mesh(height_map, ...)نوع سازنده نقشه ارتفاع — هنوز پیاده‌سازی نشده

اگر جریان کاری شما به این عملیات‌ها نیاز دارد، هندسه را در کتابخانه‌ای مانند trimesh یا open3d و نتیجه را با استفاده از Scene.from_file() یا با ساخت یک Mesh از داده‌های خام control_points و polygons.

ویژگی‌های انیمیشن فقط برای خواندن هستند

کلاس‌های مرتبط با انیمیشن مانند AnimationClip, AnimationNode, AnimationChannel,، و KeyframeSequence قابل بررسی هستند اما خروجی انیمیشن کار نمی‌کند. توسعه‌دهندگانی که موتورهای بازی python 3d یا ابزارهای تجسم python 3d می‌سازند باید داده‌های انیمیشن را به‌عنوان فقط‑خواندنی در نظر بگیرند تا زمانی که پشتیبانی کامل از خروجی ارائه شود.

بارگذاری تصویر بافت پشتیبانی نمی‌شود

بارگذاری تصاویر بافت برای materials در Aspose.3D پیاده‌سازی نشده است. حتی اگر material properties از طریق تنظیم شوند Mesh یا Geometry,، نقشه‌برداری بافت به‌درستی رندر نخواهد شد. برای خروجی مدل‌های ثابت، به‌جای بافت‌های مبتنی بر تصویر، از رنگ‌های ثابت یا سایه‌زنی مبتنی بر راس استفاده کنید.

Camera و Geometry رندر پشتیبانی نمی‌شود

این Camera و Geometry کلاس‌ها NotImplementedError را برای متدهای مرتبط با رندرینگ مانند get_entity_renderer_key(). در حالی که می‌توان این کلاس‌ها را نمونه‌سازی و پیکربندی کرد، نمی‌توان از آن‌ها در خطوط لوله پیکسل‑رسترایزیشن استفاده کرد. از Node و Mesh برای scene جریان‌های ترکیب و صادرات.

FAQ

آیا Aspose.3D برای Python خروجی تصویر رستر شده (PNG، JPEG) را پشتیبانی می‌کند؟?

خیر. Aspose.3D برای Python رسترایزیشن مبتنی بر پیکسل انجام نمی‌دهد. “Rendering” در این کتابخانه به معنای صادرات یک صحنه به یک فرمت خروجی 3D مانند OBJ، GLTF2، STL یا 3MF با استفاده از scene.save(). برای خروجی تصویر، با یک موتور رندرینگ جداگانه یکپارچه شوید.

کدام فرمت‌های صادراتی پشتیبانی می‌شوند؟?

فرمت‌های صادراتی پشتیبانی‌شده شامل OBJ، glTF 2.0 / GLB، STL (باینری و ASCII)، COLLADA (DAE) و 3MF هستند. هنگام فراخوانی، از پسوند فایل استفاده کنید scene.save() برای تشخیص خودکار فرمت. برای کنترل صریح فرمت، از متدهای کارخانه‌ای استفاده کنید FileFormat.WAVEFRONT_OBJ(), FileFormat.GLTF2(),، و FileFormat.MICROSOFT_3MF_FORMAT(). توجه: ثابت‌های به‑صورت‑ویژگی مانند FileFormat.GLTF2_BINARY, FileFormat.GLTF, FileFormat.STLASCII, FileFormat.STL_BINARY,، و FileFormat.MICROSOFT_3MF هستند None قالب‌های جایگزین هستند و نباید استفاده شوند. خروجی FBX خطا می‌دهد NotImplementedError در نسخهٔ فعلی.

آیا می‌توانم داده‌های انیمیشن را از یک فایل 3D بارگذاری‌شده بخوانم؟?

ساختارهای انیمیشن در فایل‌های بارگذاری‌شده می‌توانند از طریق AnimationClip, AnimationNode,، و کلاس‌های مرتبط، اما تغییر یا خروجی‌گیری مجدد داده‌های انیمیشن هنوز پشتیبانی نمی‌شود و خطای NotImplementedError را ایجاد خواهد کرد.

خلاصه مرجع API

Aspose.3D کلاس‌های اصلی برای دستکاری صحنه‌های 3D در Python فراهم می‌کند، شامل Scene, Node, Mesh,، و Geometry. توسعه‌دهندگانی که بر روی پروژه‌های بازی 3D پایتون، موتور 3D پایتون یا تجسم 3D پایتون کار می‌کنند می‌توانند از این کلاس‌ها برای ساخت و تغییر محتوای 3D به‌صورت برنامه‌نویسی استفاده کنند. The Scene کلاس به عنوان محفظه ریشه عمل می‌کند، در حالی که Node اشیاء ساختار را scene سلسله‌مراتبی گراف، و Mesh نمونه‌ها اشکال هندسی را با Geometry داده‌ها.

پشتیبانی از انیمیشن در Aspose.3D به AnimationClip, AnimationNode, AnimationChannel,، و KeyframeSequence برای تعریف time-based transformations. اگرچه خروجی انیمیشن هنوز پیاده‌سازی نشده است، توسعه‌دهندگان همچنان می‌توانند ساختارهای انیمیشن را با استفاده از این کلاس‌ها بررسی کنند. The Extrapolation کلاس و ExtrapolationType enum اجازه می‌دهد تا رفتار خارج از بازه‌های کلیدفریم را کنترل کنید.

Entity-level properties مانند قابلیت دید و ایجاد سایه از طریق Geometry.visible, Geometry.cast_shadows,، و Geometry.receive_shadows. Scene روابط گراف از طریق Entity.parent_node و Entity.parent_nodes,، در حالی که Node اشیاء ارائه می‌دهند GlobalTransform برای translation, rotation,، و scale. Camera و Light entities ارث‌بری از Entity و پشتیبانی از حذف از طریق excluded.

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

Aspose.3D کلاس‌های اصلی برای دستکاری مدل‌های سه‌بعدی در Python، شامل Scene, Mesh, Node, Geometry,، و AnimationClip. این کلاس‌ها از python 3d visualization، python 3d game development و 3d python workflows از طریق یک سطح API سازگار پشتیبانی می‌کنند.

 فارسی