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#
- Dividir malhas de uma cena por material programaticamente usando C#
- Dividir uma malha por um material específico programaticamente usando C#
- Mesclar malhas em um arquivo 3D em uma malha única programaticamente em C#
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:
- Carregue o arquivo 3D de entrada.
- Divida todas as malhas com o método SplitMesh.
- 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:
- Crie uma malha de uma caixa com seis planos.
- Em segundo lugar, crie um elemento de material e especifique índices para cada plano.
- 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:
- Carregar arquivo de cena 3D de entrada.
- Mesclar todas as malhas.
- 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.