Вы можете разделить все сетки 3D-сцены на несколько подсетей. Точно так же вы можете программно объединить несколько сеток в одну сетку с помощью C#. В этой статье рассматривается разделение и объединение 3D-сетей в различных сценариях:
- Разделение или слияние сеток 3D-сцены — установка C# API
- Программное разделение мешей сцены по материалам с использованием C#
- Разделить сетку по определенному материалу программно с использованием C#
- Объединить сетки в 3D-файле в одну сетку программно на C#
Разделение или слияние сеток 3D-сцены — установка C# API
Aspose.3D for .NET API можно использовать для разделения или объединения 3D-сетей программным путем с помощью C#. Вы можете настроить API, установив его из раздела Загрузки или с помощью приведенной ниже команды установки NuGet:
PM> Install-Package Aspose.3D
Программное разделение мешей сцены по материалам с использованием C#
Трехмерный файл, такой как формат FBX, может содержать несколько сеток сцены. Вы можете разделить все сетки на несколько вложенных сеток для каждого материала, если сетке не был назначен один материал. Пожалуйста, следуйте инструкциям ниже для разделения мешей сцены по материалам:
- Загрузите исходный 3D-файл.
- Разделите все сетки методом SplitMesh.
- Сохраните выходной файл с разделенными сетками.
В следующем коде показано, как программно разделить сетки сцены по материалам с помощью C#:
// Загрузить входной файл FBX 3D
Scene scene = new Scene("test.fbx");
// Разделить все сетки
PolygonModifier.SplitMesh(scene, SplitMeshPolicy.CloneData);
// Сохраните выходной файл с разделенными сетками
scene.Save("test-splitted.fbx", FileFormat.FBX7500ASCII);
Разделить сетку по определенному материалу программно с использованием C#
Вы можете разделить сетку, вручную указав материал. Таким образом, вы можете создать несколько объектов, содержащих только один материал. В демонстрационных целях приведенный ниже код создает сетку коробки с 6 плоскостями. Затем вы разделите примитивную сетку, вручную указав материал, выполнив следующие шаги:
- Создайте сетку коробки с шестью плоскостями.
- Во-вторых, создайте элемент материала и укажите индексы для каждой плоскости.
- Разделите сетку, используя перечисление 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#
Вы можете объединить разные сетки в одну допустимую сетку, выполнив следующие шаги:
- Загрузите исходный файл 3D-сцены.
- Объединить все сетки.
- Наконец, закодируйте объединенную сетку.
В следующем коде показано, как объединить сетки в одну сетку программным путем с помощью 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 предоставляет различные методы для разделения или объединения одной или нескольких сеток, которые вы можете использовать в соответствии со своими требованиями. Кроме того, не стесняйтесь посетить Документацию, где также объясняются некоторые другие функции. Если у вас возникнут вопросы, свяжитесь с нами на Форуме бесплатной поддержки.