ویژگی‌ها و عملکردها

ویژگی‌ها و عملکردها

این صفحه تمام حوزه‌های ویژگی اصلی را پوشش می‌دهد Aspose.3D 26.1.0 با مثال‌های عملی C#.


بارگذاری و ذخیره‌سازی صحنه‌ها

Scene.Open() فایلی را بارگذاری می‌کند؛; Scene.Save() آن را صادر می‌کند. قالب از پسوند فایل شناسایی می‌شود:

using Aspose.ThreeD;

var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");

از کارخانهٔ ایستا استفاده کنید Scene.FromFile() به عنوان جایگزین:

var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");

گزینه‌های مخصوص فرمت

ارسال کنید LoadOptions یا SaveOptions زیرکلاس‌ها برای کنترل دقیق:

using Aspose.ThreeD;
using Aspose.ThreeD.Formats;

var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");

کلاس‌های گزینهٔ موجود:

کلاسجهتویژگی‌های کلیدی
ObjLoadOptionsوارد کردنFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsصادراتFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsوارد کردن(تنظیمات پیش‌فرض)
GltfLoadOptionsوارد کردن(تنظیمات پیش‌فرض)
GltfSaveOptionsصادرات(تنظیمات پیش‌فرض)
StlLoadOptionsوارد کردن(تنظیمات پیش‌فرض)
StlSaveOptionsصادر کردن(تنظیمات پیش‌فرض)
ColladaLoadOptionsوارد کردنFlipCoordinateSystem
ColladaSaveOptionsصادر کردنIndented, TransformStyle
PlyLoadOptionsوارد کردن(تنظیمات پیش‌فرض)

ساخت گراف صحنه

گره‌ها را ایجاد کنید و موجودیت‌ها را متصل کنید تا یک سلسله‌مراتب بسازید:

var scene = new Scene();
var root = scene.RootNode;

var boxNode = root.CreateChildNode("box", new Box(5, 5, 5));
var sphereNode = root.CreateChildNode("sphere", new Sphere(3));

دسترسی به فرزندان از طریق node.ChildNodes و موجودیت پیوست شده از طریق node.Entity.


Mesh و Primitiveها

یک را ایجاد کنید Mesh به‌صورت برنامه‌نویسی با نقاط کنترل و چندضلعی‌ها:

// Mesh.ControlPoints uses Aspose.ThreeD.Utilities.Vector4
// (double-precision, lowercase fields: x, y, z, w)
using Aspose.ThreeD.Utilities;

var mesh = new Mesh("custom");
mesh.ControlPoints.Add(new Vector4(0.0, 0.0, 0.0));   // w defaults to 1.0
mesh.ControlPoints.Add(new Vector4(10.0, 0.0, 0.0));
mesh.ControlPoints.Add(new Vector4(10.0, 10.0, 0.0));
mesh.ControlPoints.Add(new Vector4(0.0, 10.0, 0.0));
mesh.CreatePolygon(0, 1, 2, 3);

primitiveهای توکار (Box, Sphere, Cylinder) می‌تواند به Mesh:

var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();

عناصر راس

نرمال‌ها، UVها و رنگ‌های راس را به هندسه متصل کنید:

var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);

انواع عناصر راس موجود: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.


تبدیلات

هر Node دارای یک Transform با Translation, Rotation, و Scale:

var node = scene.RootNode.CreateChildNode("moved", new Box());
node.Transform.Translation = new FVector3(10, 0, 5);
node.Transform.Scale = new FVector3(2, 2, 2);

خواندن موقعیت فضای جهان از طریق node.GlobalTransform.Matrix یا node.EvaluateGlobalTransform().


مواد

مواد (materials) را به گره‌ها اختصاص دهید تا داده‌های سایه‌زنی فراهم شود:

var mat = new PhongMaterial("shiny");
mat.Diffuse = new Vector4(0.8, 0.2, 0.2, 1.0);
mat.Specular = new Vector4(1, 1, 1, 1);
mat.Shininess = 32;

scene.RootNode.CreateChildNode("red_box", new Box(), mat);

انواع متریال: LambertMaterial, PhongMaterial, PbrMaterial.


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

  • استفاده کنید Scene.FromFile() برای بارگذاری یک‌خطی وقتی که به سفارشی‌سازی نیاز ندارید LoadOptions
  • تبدیل primitive‌ها به Mesh با ToMesh() قبل از افزودن عناصر راس
  • استفاده کنید GltfSaveOptions با یک .glb افزونه برای خروجی باینری فشرده
  • بررسی node.Entity برای null قبل از تبدیل — هر گره‌ای هندسه ندارد
  • استفاده کنید PolygonModifier.Triangulate() برای تبدیل مش‌های چهارضلعی قبل از صادرات به فرمت‌های فقط‌مثلثی مانند STL

مشکلات رایج

مسئلهدلیلرفع
ImportException در زمان بارگذاریفایل پشتیبانی نشده یا خراباطمینان حاصل کنید که فایل در یک نمایشگر 3D باز می‌شود؛ فرمت را بررسی کنید که در فهرست پشتیبانی‌شده باشد
مواد گمشده پس از بارگذاری OBJ.mtl فایل یافت نشدقرار دهید .mtl فایل را در کنار .obj یا تنظیم کنید ObjLoadOptions.EnableMaterials = true
عدم تطابق مقیاس پس از وارد کردن FBXسیستم‌های واحد متفاوتاستفاده کنید ObjLoadOptions.Scale یا اعمال کنید Transform پس از بارگذاری

FAQ

چگونه می‌توانم فرمت یک فایل ناشناخته را تشخیص دهم؟?

استفاده کنید FileFormat.Detect():

var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);

آیا می‌توانم به‌جای مسیر فایل، از یک استریم بارگذاری کنم؟?

بله. Scene.Open() یک … می‌پذیرد Stream:

using var stream = File.OpenRead("model.glb");
scene.Open(stream);

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

OBJ، STL، glTF/GLB، FBX، COLLADA و 3MF هر دو جهت را پشتیبانی می‌کنند. PLY فقط واردات را پشتیبانی می‌کند (صادرکننده PLY متصل نیست).


خلاصه مرجع API

کلاس / متدتوضیح
Sceneمحفظه صحنهٔ سه‌بعدی سطح بالا
Scene.Open()یک فایل سه‌بعدی را بر اساس مسیر یا جریان بارگذاری کنید
Scene.Save()صحنه را به فایل یا جریان صادر کنید
Scene.FromFile()کارخانهٔ ایستا برای بارگذاری و بازگرداندن یک Scene
Nodeگرهٔ سلسله‌مراتبی صحنه که موجودیت‌ها و تبدیلات را در خود دارد
Node.CreateChildNode()ایجاد و الصاق یک گرهٔ فرزند
Meshمش چندضلعی با نقاط کنترل و فهرست‌های چهره
Mesh.CreatePolygon()تعریف یک چهرهٔ چندضلعی با شاخص‌های راس
Box / Sphere / Cylinderاشیای اولیه پارامتریک داخلی
Transformجابه‌جایی، چرخش و مقیاس محلی
FileFormatثبت و تشخیص‌گر برای قالب‌های پشتیبانی‌شده
LambertMaterial / PhongMaterial / PbrMaterialانواع مواد برای سایه‌زنی
 فارسی