Características e funcionalidades
Características e funcionalidades
Esta página abrange todas as principais áreas de interesse da Comunidade Europeia. Aspecto.3D 26.1.0 com exemplos de C# em funcionamento.
Carregamento e Salvamento de cenas
Scene.Open() Carregar um ficheiro; Scene.Save() O formato é detectado a partir da extensão de arquivo:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");Use a fábrica estática . Scene.FromFile() Em alternativa:
var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");Opções específicas de formato
Passagem . LoadOptions ou a) SaveOptions Subclasses para ajustar o comportamento de importação ou exportação para um formato específico de ficheiro:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");Classe de opções disponíveis:
| Classe: | Direcção | Principais propriedades |
|---|---|---|
ObjLoadOptions | Importação | FlipCoordinateSystem, EnableMaterials, Scale |
ObjSaveOptions | Exportação | FlipCoordinateSystem, EnableMaterials, PointCloud |
FbxLoadOptions | Importação | (configurações padrão) |
GltfLoadOptions | Importação | (configurações padrão) |
GltfSaveOptions | Exportação | (configurações padrão) |
StlLoadOptions | Importação | (configurações padrão) |
StlSaveOptions | Exportação | (configurações padrão) |
ColladaLoadOptions | Importação | FlipCoordinateSystem |
ColladaSaveOptions | Exportação | Indented, TransformStyle |
PlyLoadOptions | Importação | (configurações padrão) |
Construir um gráfico de cena
Chama-me . CreateChildNode() no nó raiz para criar nós nomeados e anexar entidades para construir uma hierarquia de cena:
var scene = new Scene();
var root = scene.RootNode;
var boxNode = root.CreateChildNode("box", new Box(5, 5, 5));
var sphereNode = root.CreateChildNode("sphere", new Sphere(3));Acesso a crianças através de: node.ChildNodes e a entidade anexada através de: node.Entity.
Melas e primitivos
Adicionar pontos de controlo usando: mesh.ControlPoints.Add() e definir a topologia da face com: CreatePolygon() Para criar uma malha personalizada de forma programática:
// Mesh.ControlPoints uses Aspose.ThreeD.Utilities.Vector4
// (double-precision, lowercase fields: x, y, z, w)
using Aspose.ThreeD.Utilities;
var mesh = new Mesh("custom");
mesh.ControlPoints.Add(new Vector4(0.0, 0.0, 0.0)); // w defaults to 1.0
mesh.ControlPoints.Add(new Vector4(10.0, 0.0, 0.0));
mesh.ControlPoints.Add(new Vector4(10.0, 10.0, 0.0));
mesh.ControlPoints.Add(new Vector4(0.0, 10.0, 0.0));
mesh.CreatePolygon(0, 1, 2, 3);Primitivos integrados (Box, Sphere, Cylinder) pode ser convertida em: Mesh:
var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();Elements de Vértice
Criar uma instância de elemento vertex com um MappingMode e a) ReferenceMode,Então , liga-me . mesh.AddElement() Para anexar cores normais, UV ou vértices à geometria:
var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);Tipos de elementos verticais disponíveis: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.
Transformações
Cada um. Node carregado com um Transform com: Translation, Rotation, e Scale:
var node = scene.RootNode.CreateChildNode("moved", new Box());
node.Transform.Translation = new FVector3(10, 0, 5);
node.Transform.Scale = new FVector3(2, 2, 2);Leia a posição do mundo no espaço através de: node.GlobalTransform.Matrix ou a) node.EvaluateGlobalTransform().
Materiais
Crie um material, defina sua cor difusa, cores especulares e propriedades de brilho, então atribua-o a um nó para controlar o sombreamento em visores 3D:
var mat = new PhongMaterial("shiny");
mat.DiffuseColor = new Vector3(0.8, 0.2, 0.2);
mat.SpecularColor = new Vector3(1, 1, 1);
mat.Shininess = 32;
scene.RootNode.CreateChildNode("red_box", new Box(), mat);Tipos de materiais: LambertMaterial, PhongMaterial, PbrMaterial.
Dicas e melhores práticas
- Utilização:
Scene.FromFile()para uma carga de chamada única quando não necessitar do customizadoLoadOptions - Converter primitivos para
Meshcom:ToMesh()antes de adicionar elementos do vértice - Utilização:
GltfSaveOptionse salvar com uma extensão binária para produzir saída binário compacto - Verificação
node.Entitypara onullantes de lançar nem todo nó carrega geometria - Utilização:
PolygonModifier.Triangulate()para converter quad-meshes antes da exportação a formatos de triângulo como STL.
Problemas comuns
| Emissão | Causa da morte | Correção |
|---|---|---|
ImportException em carga | Arquivo não suportado ou corrompido | Verifique se o arquivo é aberto em um visualizador 3D; verifique que o formato está na lista de suporte |
| Materiais perdidos após carga OBJ | .mtl Arquivo não encontrado | Colocar o .mtl Arquivo ao lado do .obj ou conjunto ObjLoadOptions.EnableMaterials = true |
| Desconcordância de escala após a importação do FBX | Sistemas de unidades diferentes | Utilização: ObjLoadOptions.Scale ou aplicar um Transform após a carga |
FAQ
Como posso detectar o formato de um arquivo desconhecido?
Chama-me . FileFormat.Detect() com um caminho de arquivo para identificar o formato sem carregar a cena completa:
var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);Posso carregar a partir de um fluxo em vez de uma rota para o arquivo?
Sim, passa um. Stream a) para o Scene.Open() Carregar um ficheiro 3D a partir de qualquer fonte de fluxo em vez de uma rota para o ficheir:
using var stream = File.OpenRead("model.glb");
scene.Open(stream);Quais os formatos que suportam tanto a importação como a exportação?
Os seguintes formatos suportam tanto a importação como a exportação: OBJ, STL, glTF/GLB, FBX, COLLADA e 3MF. O PLY suporta apenas a importância.
Resumo de referência da API
| Classe / Método | Descrição: |
|---|---|
Scene | Container de cena 3D do nível superior |
Scene.Open() | Carregar um arquivo 3D por caminho ou fluxo |
Scene.Save() | Exportar cena para arquivo ou transmissão |
Scene.FromFile() | Estação de fábrica para carregar e devolver um Scene |
Node | Núcleo de hierarquia de cena que mantém entidades e transformações |
Node.CreateChildNode() | Criar e anexar um nó filho |
Mesh | Melas de polígonos com pontos de controlo e listas de faces |
Mesh.CreatePolygon() | Defina uma face de polígono por índices dos vértices. |
Box / Sphere / Cylinder | Primitivos paramétricos incorporados |
Transform | Tradução local, rotação e escala |
FileFormat | Registo e detector para formatos suportados |
LambertMaterial / PhongMaterial / PbrMaterial | Tipos de materiais para sombreamento |