Introdução
3D FOSS é uma biblioteca .NET de código aberto gratuita para trabalhar com formatos de arquivos 3d. Ele fornece um conjunto abrangente de classes de utilitários que vão além da simples conversão de ficheiros, permitindo aos desenvolvedores manipular malhas, transformar e gerar geometria primitiva programaticamente. A biblioteca é lançada sob a licença MIT, tornando-a adequada tanto para projetos pessoais quanto comerciais sem restrições.
Este post se concentra nos recursos de utilidade dentro da biblioteca: as classes e métodos que você alcança quando precisa triangular uma malha, construir uma matriz de transformação passo a passo ou criar geometria paramétrica. Estes blocos de construção complementam o fluxo de trabalho principal de carregamento de cena e salvação de cenas coberto no post introdutório .
Se você está processando ativos 3D em um pipeline de construção, preparando geometria para um motor de jogo ou convertendo entre formatos, esses utilitários lidam com as tarefas comuns que surgem nos fluxos de trabalho 3d do mundo real.
O que está incluído
Operações de malha
A Comissão Mesh class representa geometria baseada em polígonos. Você pode criar polígonos a partir de índices de vértices, pesquisar tamanhos de polígoes, triangular faces e otimizar dados de vertientes. ControlPoints Propriedade fornece acesso direto às posições dos vértices, enquanto que Polygons expõe as matrizes de índice de face.
using Aspose.3D.Converter;
var scene = new Scene();
var mesh = new Mesh("CustomMesh");
// Add control points (vertices)
mesh.ControlPoints.Add(new Vector4(0, 0, 0));
mesh.ControlPoints.Add(new Vector4(10, 0, 0));
mesh.ControlPoints.Add(new Vector4(10, 10, 0));
mesh.ControlPoints.Add(new Vector4(0, 10, 0));
// Create a quad polygon from four vertices
mesh.CreatePolygon(0, 1, 2, 3);
// Triangulate all polygons in the mesh
mesh.Triangulate();
Transformador de Construção
A Comissão TransformBuilder class fornece uma interface fluente para a construção de matrizes de transformação através de uma sequência de operações translate, rotate e escala. Você controla a ordem da composição (apend ou prepend) e pode redefinir o construtor para iniciar uma nova cadeia.
using Aspose.3D.Converter;
var builder = new TransformBuilder(ComposeOrder.Append);
// Build a combined transform: translate, then rotate, then scale
builder.Translate(5, 0, 3);
builder.RotateDegree(45, new Vector3(0, 1, 0));
builder.Scale(2, 2, 2);
// Retrieve the composed 4x4 matrix
Matrix4 result = builder.Matrix;
Modificador de polígonos
A Comissão PolygonModifier A classe oferece métodos de utilidade estática para o processamento da malha. Triangulate O método converte qualquer malha de polígonos com n lados em geometria apenas triangular, que é a entrada necessária para a maioria dos motores de renderização e simulações físicas.
using Aspose.3D.Converter;
var scene = new Scene();
var box = new Box(2, 2, 2);
Mesh boxMesh = box.ToMesh();
// Convert all polygons to triangles
Mesh triangulated = PolygonModifier.Triangulate(boxMesh);
Geração de Geometria Primitiva
A biblioteca inclui classes de geometria paramétrica, tais como: Box, Sphere, e Cylinder.Cada primitivo pode ser configurado com dimensões e contagens de segmentos, então convertido para um sistema de cálculo. Mesh através do ToMesh() método de transformação ou exportação.
using Aspose.3D.Converter;
// Create a parameterized sphere
var sphere = new Sphere(5.0, 32, 16);
Mesh sphereMesh = sphere.ToMesh();
// Create a cylinder (cone when one radius is zero)
var cone = new Cylinder(0, 3.0, 6.0);
Mesh coneMesh = cone.ToMesh();
Computação de caixa de conexão
Cada um. Entity Subclasse expõe a GetBoundingBox() método que retorna a caixa de limitação alinhada ao eixo da geometria. BoundingBox estrutura fornece Minimum e a) Maximum Vectores de canto, úteis para consultas espaciais e enquadramento de câmeras.
using Aspose.3D.Converter;
var box = new Box(4, 2, 6);
BoundingBox bounds = box.GetBoundingBox();
FVector3 min = bounds.Minimum;
FVector3 max = bounds.Maximum;
Começo rápido
Instalar o pacote a partir do NuGet:
dotnet add package Aspose.3D.FOSSCarregar um arquivo, triangular cada malha e salvar o resultado:
using Aspose.3D.Converter;
// Load a scene from an OBJ file
var scene = new Scene();
scene.Open("input.obj");
// Walk child nodes and triangulate each mesh entity
foreach (var node in scene.RootNode.ChildNodes)
{
foreach (var entity in node.Entities)
{
if (entity is Mesh mesh)
{
mesh.Triangulate();
}
}
}
// Save the triangulated scene as glTF
scene.Save("output.glb");
Formatos suportados
| Formatos de imagem | Extensão | Leia. | Escrever . |
|---|---|---|---|
| Collada | .- Olá . | - Sim , sim . | - Sim , sim . |
| FBX | .fbx | - Sim , sim . | - Sim , sim . |
| GLB/GTF | .gltf / .GLB | - Sim , sim . | - Sim , sim . |
| 3MF | .3mf | - Sim , sim . | Não, não. |
| OBJ de frente a onda | .obj. (em inglês) | - Sim , sim . | - Sim , sim . |
| PLY | .plata | - Sim , sim . | Não, não. |
| STL | .stl | - Sim , sim . | - Sim , sim . |
| TMF | .tmf | Não, não. | - Sim , sim . |
Open Source & Licenciamento
O código-fonte completo está disponível no GitHub em: http://www.gitehub.com/pc/index.php?title=PLACEHOLDER_0&oldid=3DFOSS&ldor=9186 Aspose-3d-foss/Aspose.3D-FOSS-for-.NET.
Começar a Fazer
- Guia de Desenvolvedores – documentação completa que abrange gestão de cenas, opções de formato e recursos avançados.
- Base de conhecimento – artigos de instruções e perguntas frequentes.
- Referência API – referência classe por classe com assinaturas de método e detalhes das propriedades.