ویژگیها و عملکردها
ویژگیها و عملکردها
این صفحه تمام حوزههای ویژگی اصلی را پوشش میدهد 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 | انواع مواد برای سایهزنی |