розділити сітку злиття

Ви можете розділити всі сітки 3D-сцени на кілька підсіток. Так само ви можете програмно об’єднати кілька сіток в одну за допомогою C#. У цій статті розглядається розділення та об’єднання 3D-сіток у різних сценаріях:

Роздільник або злиття сіток 3D-сцени – встановлення C# API

Aspose.3D for .NET API можна використовувати для програмного розділення або об’єднання 3D-сіток за допомогою C#. Ви можете налаштувати API, установивши його з розділу Завантаження або за допомогою наведеної нижче команди встановлення NuGet:

PM> Install-Package Aspose.3D

Розділіть сітки сцени на матеріал програмно за допомогою C#

3D-файл, як-от формат FBX, може містити кілька сіток сцени. Ви можете розділити всі сітки на кілька підсіток для кожного матеріалу, якщо сітці не було призначено жодного матеріалу. Щоб розділити сітки сцени на матеріал, виконайте наведені нижче дії.

  1. Завантажити вхідний 3D-файл.
  2. Розділіть усі сітки за допомогою методу SplitMesh.
  3. Збережіть вихідний файл із розділеними сітками.

Наступний код показує, як програмно розділити сітки сцени на матеріал за допомогою C#:

// Завантажити вхідний 3D-файл FBX
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);

Програмне об’єднання сіток у 3D-файлі в одну сітку в C#

Ви можете об’єднати різні сітки в одну дійсну сітку, виконавши наведені нижче дії.

  1. Завантажити вхідний файл 3D сцени.
  2. Об’єднати всі сітки.
  3. Нарешті, закодуйте об’єднану сітку.

У наведеному нижче коді описано, як програмно об’єднати сітки в одну сітку за допомогою C#:

// Завантажте вхідну 3D-сцену
Scene scene = new Scene("LAD-TOP.rvm");

// Об’єднати всі сітки
Mesh mesh = PolygonModifier.MergeMesh(scene);

// Закодуйте цю сітку у форматі PLY
FileFormat.PLY.Encode(mesh, "LAD-TOP.ply");

Отримайте безкоштовну тимчасову ліцензію

Ви можете отримати Ліцензію на безкоштовну оцінку для тестування API без будь-яких обмежень.

Висновок

Підсумовуючи, ви дізналися, як об’єднати або розділити сітку 3D-сцени. API надає різні методи поділу або об’єднання однієї чи кількох сіток, які ви можете використовувати відповідно до своїх вимог. Крім того, не соромтеся відвідати Документацію, де також пояснюється кілька інших функцій. Якщо виникнуть запитання, зв’яжіться з нами на безкоштовному форумі підтримки.

Дивись також