malha de mesclagem dividida

Você pode dividir todas as malhas de uma cena 3D em várias submalhas. Da mesma forma, você pode mesclar várias malhas em uma única malha programaticamente usando C#. Este artigo aborda a divisão e a mesclagem de malhas 3D em diferentes cenários:

Divisor ou Fusão de Malhas de Cena 3D – Instalação da API C#

Aspose.3D for .NET API pode ser usada para dividir ou mesclar malhas 3D programaticamente usando C#. Você pode configurar a API instalando-a na seção Downloads ou com o comando de instalação NuGet abaixo:

PM> Install-Package Aspose.3D

Dividir malhas de uma cena por material programaticamente usando C#

Um arquivo 3D como o formato FBX pode conter várias malhas de uma cena. Você pode dividir todas as malhas em várias submalhas por material se a malha não tiver sido atribuída a um único material. Por favor, siga os passos abaixo para dividir as malhas de uma cena por material:

  1. Carregue o arquivo 3D de entrada.
  2. Divida todas as malhas com o método SplitMesh.
  3. Salve o arquivo de saída com as malhas divididas.

O código a seguir mostra como dividir malhas de uma cena por material programaticamente usando C#:

// Carregar arquivo FBX 3D de entrada
Scene scene = new Scene("test.fbx");

// Dividir todas as malhas
PolygonModifier.SplitMesh(scene, SplitMeshPolicy.CloneData);

// Salvar arquivo de saída com malhas divididas
scene.Save("test-splitted.fbx", FileFormat.FBX7500ASCII);

Dividir uma malha por um material específico programaticamente usando C#

Você pode dividir uma malha especificando manualmente o material. Desta forma, você pode criar vários objetos contendo apenas um material. Para fins de demonstração, o código abaixo cria uma malha de uma caixa com 6 planos. Em seguida, você dividirá uma malha primitiva especificando manualmente o material usando as seguintes etapas:

  1. Crie uma malha de uma caixa com seis planos.
  2. Em segundo lugar, crie um elemento de material e especifique índices para cada plano.
  3. Divida a malha usando a enumeração SplitMeshPolicy.

O código abaixo explica como dividir uma malha por material específico programaticamente usando C#:

// Crie uma malha de caixa(Uma caixa é composta por 6 planos)
Mesh box = (new Box()).ToMesh();

// Crie um elemento de material nesta malha
VertexElementMaterial mat = (VertexElementMaterial)box.CreateElement(VertexElementType.Material, MappingMode.Polygon, ReferenceMode.Index);

// E especifique o índice de material diferente para cada plano
mat.Indices.AddRange(new int[] { 0, 1, 2, 3, 4, 5 });

// Agora divida em 6 submalhas, especificamos 6 materiais diferentes em cada plano, cada plano se tornará uma submalha.
// Usamos a política CloneData, cada plano terá as mesmas informações de ponto de controle ou informações de elemento de vértice baseado em ponto de controle.
Mesh[] planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CloneData);

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

// Agora divida-o em 2 submalhas, a primeira malha conterá 0/1/2 planos e a segunda malha conterá os 3/4/5 planos.
// Usamos a política CompactData, cada plano terá suas próprias informações de ponto de controle ou informações de elemento de vértice baseado em ponto de controle.
planes = PolygonModifier.SplitMesh(box, SplitMeshPolicy.CompactData);

Mesclar malhas em um arquivo 3D em uma malha única programaticamente em C#

Você pode mesclar diferentes malhas em uma única malha válida com as etapas abaixo:

  1. Carregar arquivo de cena 3D de entrada.
  2. Mesclar todas as malhas.
  3. Finalmente, codifique a malha mesclada.

O código a seguir elabora como mesclar malhas em uma única malha programaticamente usando C#:

// Carregar a cena 3D de entrada
Scene scene = new Scene("LAD-TOP.rvm");

// Mesclar todas as malhas
Mesh mesh = PolygonModifier.MergeMesh(scene);

// Codifique esta malha no formato PLY
FileFormat.PLY.Encode(mesh, "LAD-TOP.ply");

Obtenha Licença Temporária Gratuita

Você pode obter uma Licença de avaliação gratuita para testar a API sem quaisquer limitações.

Conclusão

Concluindo, você aprendeu como mesclar ou dividir uma malha de uma cena 3D. A API expõe diferentes métodos para dividir ou mesclar uma ou várias malhas, que você pode utilizar de acordo com seus requisitos. Além disso, sinta-se à vontade para visitar a Documentação, onde vários outros recursos também são explicados. Entre em contato conosco no Fórum de suporte gratuito em caso de dúvidas.

Veja também