Características e funcionalidades

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çãoPrincipais propriedades
ObjLoadOptionsImportaçãoFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsExportaçãoFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsImportação(configurações padrão)
GltfLoadOptionsImportação(configurações padrão)
GltfSaveOptionsExportação(configurações padrão)
StlLoadOptionsImportação(configurações padrão)
StlSaveOptionsExportação(configurações padrão)
ColladaLoadOptionsImportaçãoFlipCoordinateSystem
ColladaSaveOptionsExportaçãoIndented, TransformStyle
PlyLoadOptionsImportaçã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 customizado LoadOptions
  • Converter primitivos para Mesh com: ToMesh() antes de adicionar elementos do vértice
  • Utilização: GltfSaveOptions e salvar com uma extensão binária para produzir saída binário compacto
  • Verificação node.Entity para o null antes 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ãoCausa da morteCorreção
ImportException em cargaArquivo não suportado ou corrompidoVerifique 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 encontradoColocar o .mtl Arquivo ao lado do .obj ou conjunto ObjLoadOptions.EnableMaterials = true
Desconcordância de escala após a importação do FBXSistemas de unidades diferentesUtilizaçã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étodoDescrição:
SceneContainer 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
NodeNúcleo de hierarquia de cena que mantém entidades e transformações
Node.CreateChildNode()Criar e anexar um nó filho
MeshMelas 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 / CylinderPrimitivos paramétricos incorporados
TransformTradução local, rotação e escala
FileFormatRegisto e detector para formatos suportados
LambertMaterial / PhongMaterial / PbrMaterialTipos de materiais para sombreamento

Ver também:

 Português