مدیریت صحنه

مدیریت صحنه

کلاس Scene نقطهٔ ورودی برای تمام محتوای سه‌بعدی در Aspose.3D برای .NET است. این کلاس روش‌هایی برای ایجاد صحنه‌ها از ابتدا، بارگذاری فایل‌های موجود در هر فرمت پشتیبانی‌شده، ذخیره به هر فرمت هدف و بررسی متادیتای صحنه فراهم می‌کند.


ایجاد و باز کردن صحنه‌ها

یک صحنهٔ خالی را با new Scene() ایجاد کنید، یا از یک فایل بارگذاری کنید:

using Aspose.ThreeD;

// Empty scene
var empty = new Scene();

// Load from file — format is detected automatically
var scene = Scene.FromFile("model.fbx");

// Load using Scene.Open with explicit format
var scene2 = new Scene();
scene2.Open("model.obj", FileFormat.WavefrontOBJ);

// Load from a stream (useful when reading from memory or network)
using var stream = System.IO.File.OpenRead("model.stl");
var scene3 = new Scene();
scene3.Open(stream, FileFormat.STLBinary);

Scene.FromFile به‌صورت خودکار فرمت را از پسوند فایل و بایت‌های جادویی تشخیص می‌دهد. وقتی پسوند مبهم یا غیربه‌وجود باشد، از overload FileFormat استفاده کنید.


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

یک صحنه را در یک فایل یا جریان به هر فرمت خروجی پشتیبانی‌شده ذخیره کنید:

// Save to file — format determined from extension
scene.Save("output.gltf");

// Save with explicit format
scene.Save("output.bin", FileFormat.GLTF2_Binary);

// Save to a stream
using var output = System.IO.File.Create("output.fbx");
scene.Save(output, FileFormat.FBX7700Binary);

// Save with format-specific options
var opts = new Aspose.ThreeD.Formats.ObjSaveOptions();
opts.PointCloud = false;
scene.Save("output.obj", opts);

پاک‌سازی محتوای صحنه

برای حذف تمام گره‌ها و دارایی‌ها از یک صحنه در حالی که شی Scene را حفظ می‌کنید:

// Remove all direct children of the root node
scene.RootNode.ChildNodes.Clear();

// Or replace the scene entirely
scene = new Scene();

Scene.Clear() در دسترس است و محتوای صحنه را پاک می‌کند، تنظیمات پیش‌فرض را باز می‌گرداند؛ به‌جای آن، یک نمونه جدید از Scene را همان‌طور که در بالا نشان داده شد ایجاد کنید.


متادیتا صحنه

ویژگی AssetInfo در یک Scene متادیتایی را که در فرمت‌های پشتیبانی‌شده (FBX، Collada، glTF) تعبیه شده است، نمایش می‌دهد:

var info = scene.AssetInfo;
Console.WriteLine("Author:       " + info.Author);
Console.WriteLine("Creation UTC: " + info.CreationTime);
Console.WriteLine("Units:        " + info.UnitName + " @ " + info.UnitScaleFactor);

متادیتا را قبل از ذخیره‌سازی تنظیم کنید تا در فایل خروجی حفظ شود:

scene.AssetInfo.ApplicationName = "My Application 1.0";
scene.AssetInfo.UnitName = "meter";
scene.AssetInfo.UnitScaleFactor = 1.0;
scene.Save("output_with_meta.fbx");

API Quick Reference

Memberتوضیح
new Scene()یک صحنه خالی ایجاد کنید
Scene.FromFile(path)کمک‌کنندهٔ ایستاتیک: فایل را باز کنید و صحنهٔ بارگذاری‌شده را برگردانید
scene.Open(path, format?)فایلی را به یک صحنه موجود بارگذاری کنید
scene.Open(stream, format)بارگذاری از یک جریان
scene.Save(path, format?)ذخیره به یک فایل
scene.Save(stream, format)ذخیره به یک جریان
scene.RootNodeریشه Node از سلسله‌مراتب صحنه
scene.AssetInfoبلوک متادیتا (سازنده، زمان‌سنجی‌ها، واحدها)
scene.AssetInfo.ApplicationNameنام برنامه جاسازی شده در فایل
scene.AssetInfo.UnitScaleFactorمقیاس واحد صحنه نسبت به مترها

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

 فارسی