مش ادغام تقسیم

شما می توانید تمام مش های یک صحنه سه بعدی را به چندین شبکه فرعی تقسیم کنید. به همین ترتیب، می توانید با استفاده از سی شارپ، چندین مش را در یک مش واحد ادغام کنید. این مقاله تقسیم و ادغام مش های سه بعدی را در سناریوهای مختلف پوشش می دهد:

3D Scene Meshes Splitter or Merger – C# API Installation

Aspose.3D for .NET API را می توان برای تقسیم یا ادغام مش های سه بعدی به صورت برنامه نویسی با استفاده از C# استفاده کرد. می‌توانید API را با نصب آن از بخش Downloads یا با دستور نصب زیر NuGet پیکربندی کنید:

PM> Install-Package Aspose.3D

تقسیم مش های صحنه در هر متریال به صورت برنامه ریزی شده با استفاده از C#

یک فایل سه بعدی مانند فرمت FBX می تواند حاوی چندین مش از یک صحنه باشد. اگر به مش یک ماده اختصاص داده نشده باشد، می‌توانید همه مش‌ها را به چند مش زیر در هر ماده تقسیم کنید. لطفاً مراحل زیر را برای تقسیم مش های یک صحنه در هر ماده دنبال کنید:

  1. فایل 3 بعدی ورودی را بارگیری کنید.
  2. همه مش ها را با روش SplitMesh تقسیم کنید.
  3. فایل خروجی را با مش های تقسیم شده ذخیره کنید.

کد زیر نشان می دهد که چگونه مش های یک صحنه را به صورت برنامه نویسی با استفاده از C# تقسیم کنید:

// فایل ورودی FBX 3D را بارگیری کنید
Scene scene = new Scene("test.fbx");

// همه مش ها را تقسیم کنید
PolygonModifier.SplitMesh(scene, SplitMeshPolicy.CloneData);

// فایل خروجی را با مش های تقسیم شده ذخیره کنید
scene.Save("test-splitted.fbx", FileFormat.FBX7500ASCII);

تقسیم مش توسط یک ماده خاص به صورت برنامه ریزی شده با استفاده از C#

شما می توانید یک مش را با تعیین دستی مواد تقسیم کنید. به این ترتیب شما می توانید چندین شیء حاوی تنها یک ماده ایجاد کنید. برای اهداف نمایشی، کد زیر شبکه ای از یک جعبه با 6 صفحه را ایجاد می کند. سپس با مشخص کردن دستی مواد با استفاده از مراحل زیر، یک مش اولیه را تقسیم خواهید کرد:

  1. یک جعبه مشبک با شش صفحه ایجاد کنید.
  2. ثانیاً، یک عنصر ماده ایجاد کنید و برای هر صفحه شاخص ها را مشخص کنید.
  3. مش را با استفاده از شمارش SplitMeshPolicy تقسیم کنید.

کد زیر نحوه تقسیم مش را بر اساس مواد خاص به صورت برنامه نویسی با استفاده از C# توضیح می دهد:

// یک مش از جعبه ایجاد کنید (یک جعبه توسط 6 صفحه تشکیل شده است)
Mesh box = (new Box()).ToMesh();

// یک عنصر متریال روی این مش ایجاد کنید
VertexElementMaterial mat = (VertexElementMaterial)box.CreateElement(VertexElementType.Material, MappingMode.Polygon, ReferenceMode.Index);

// و برای هر صفحه شاخص مواد متفاوتی را مشخص کنید
mat.Indices.AddRange(new int[] { 0, 1, 2, 3, 4, 5 });

// حالا آن را به 6 مش زیر تقسیم کنید، ما 6 ماده مختلف را در هر صفحه مشخص کردیم، هر صفحه به یک مش زیر تبدیل می شود.
// ما از خط مشی CloneData استفاده کردیم، هر صفحه دارای همان اطلاعات نقطه کنترل یا اطلاعات عنصر راس مبتنی بر نقطه کنترل است.
Mesh[] planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CloneData);

mat.Indices.Clear();
mat.Indices.AddRange(new int[] { 0, 0, 0, 1, 1, 1 });

// اکنون آن را به 2 مش فرعی تقسیم کنید، مش اول شامل صفحات 0/1/2 و مش دوم شامل صفحات 3/4/5 خواهد بود.
// ما از خط مشی CompactData استفاده کردیم، هر صفحه اطلاعات نقطه کنترل یا اطلاعات عنصر راس مبتنی بر نقطه کنترل خود را دارد.
planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CompactData);

ادغام مش ها در یک فایل سه بعدی به یک مش تک به صورت برنامه نویسی در سی شارپ

با مراحل زیر می توانید مش های مختلف را در یک مش معتبر ادغام کنید:

  1. فایل صحنه سه بعدی ورودی را بارگیری کنید.
  2. همه مش ها را ادغام کنید.
  3. در نهایت، مش ادغام شده را رمزگذاری کنید.

کد زیر نحوه ادغام مش ها را به صورت برنامه نویسی با استفاده از سی شارپ در یک مش تک توضیح می دهد:

// صحنه 3 بعدی ورودی را بارگیری کنید
Scene scene = new Scene("LAD-TOP.rvm");

// همه مش ها را ادغام کنید
Mesh mesh = PolygonModifier.MergeMesh(scene);

// این مش را در قالب PLY کدگذاری کنید
FileFormat.PLY.Encode(mesh, "LAD-TOP.ply");

مجوز موقت رایگان دریافت کنید

شما می توانید برای آزمایش API بدون هیچ محدودیتی، یک مجوز ارزیابی رایگان دریافت کنید.

نتیجه

در خاتمه، شما یاد گرفته اید که چگونه مش یک صحنه سه بعدی را ادغام یا تقسیم کنید. API روش‌های مختلفی را برای تقسیم یا ادغام یک یا چند مش ارائه می‌کند که می‌توانید براساس نیاز خود از آنها استفاده کنید. علاوه بر این، لطفاً از اسناد دیدن کنید که در آن چندین ویژگی دیگر نیز توضیح داده شده است. لطفاً در صورت وجود هرگونه سؤال در [تالار گفتمان پشتیبانی رایگان8 با ما تماس بگیرید.

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