Criar cena 3D usando C#

Uma cena 3D simples é uma representação gráfica tridimensional de dados geométricos. Neste artigo, aprenderemos como criar uma cena 3D usando C# do zero sem precisar instalar nenhum software de modelagem ou renderização 3D. Salvaremos a cena 3D no formato de arquivo FBX, um formato de arquivo 3D popular usado para trocar formatos 3D. O FBX pode ser salvo em um disco como um arquivo de dados binário ou ASCII.

Os seguintes tópicos serão abordados neste artigo:

  1. API C# para criar cena 3D - download gratuito
  2. Criar uma cena 3D simples em C#
  3. Leia a cena 3D usando C#

API C# para criar cena 3D - Download grátis

Para criar e ler uma cena 3D, usaremos a API Aspose.3D for .NET. Ele permite criar e salvar uma cena 3D nos formatos suportados. Ele também permite trabalhar com geometria e hierarquia de cena, animar objetos em uma cena e conversão de formatos de arquivo 3D.

A API fornece a classe Scene que é um objeto de nível superior que contém os nós, geometrias, materiais, texturas, animação, poses, sub-cenas, etc. O método CreateChildNode(Entity) cria um novo nó filho com uma determinada entidade anexada. A API fornece o modelo de sombreamento para LambertMaterial, PhongMaterial e ShaderMaterial. A luz ilumina a cena, a classe Light da API permite a adição de alguma luz à cena.

Por favor, faça o download da DLL da API ou instale-a usando NuGet.

PM> Install-Package Aspose.3D

Crie uma cena 3D simples em C#

Podemos criar uma cena 3D simples seguindo os passos abaixo:

  1. Crie uma instância da classe Scene.
  2. Chame o método CreateChildNode() para adicionar alguma geometria, uma forma para mostrar na tela, por exemplo, Cilindro.
  3. Defina as propriedades do nó filho, como Material.
  4. Inicialize um objeto da classe Light.
  5. Chame o método CreateChildNode() para adicionar a entidade Light.
  6. Finalmente, salve a cena como FBX usando o método Save(). Ele usa o caminho do arquivo de saída e FileFormat.FBX7500ASCII como argumentos.

O exemplo de código a seguir mostra como criar uma cena 3D simples usando C#.

// Este exemplo de código demonstra como criar uma cena 3D simples no arquivo FBX.
// Inicialize a cena 3D
var scene = new Scene();

// Inicializar o objeto Cilindro
var cylinder = new Cylinder();
cylinder.Name = "Cylinder";

// Crie um nó filho e adicione o objeto Cylinder
var node = scene.RootNode.CreateChildNode(cylinder);

// Definir as propriedades do nó filho
var material = new LambertMaterial() { DiffuseColor = new Vector3(Color.LightBlue) };
material.Name = "Lambert";
node.Material = material;

// Adicionar entidade Light
var light = new Light() { LightType = LightType.Point };
light.Name = "Light";
scene.RootNode.CreateChildNode(light).Transform.Translation = new Vector3(10, 0, 10);

// Caminho do arquivo de saída
var output = @"C:\Files\3D\document.fbx";

// Salvar documento de cena 3D
scene.Save(output, FileFormat.FBX7500ASCII);

Ler cena 3D usando C#

Podemos ler uma cena 3D do documento FBX seguindo os passos abaixo:

  1. Crie uma instância da classe Scene.
  2. Carregue um documento 3D existente usando o método Open().
  3. Percorrer as propriedades ChildNodes
  4. Por fim, exiba os valores das propriedades.

O exemplo de código a seguir mostra como carregar e ler uma cena 3D usando C#.

// Este exemplo de código demonstra como ler uma cena 3D do arquivo FBX
// Inicializar um objeto da classe Scene
Scene scene = new Scene();

// Carregar um documento 3D existente
scene.Open(@"C:\Files\3D\document.fbx");

foreach(var node in scene.RootNode.ChildNodes)
{
    var entity = node.Entity;
    Console.WriteLine("{0}", entity.Name); 

    if (node.Material != null)
    {
        Material material = node.Material;
        Console.WriteLine("{0}", material.Name);

        PropertyCollection props = material.Properties;
        //Listar todas as propriedades usando foreach
        foreach (var prop in props)
        {
            Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
        }
        //ou usando ordinal for loop
        for (int i = 0; i < props.Count; i++)
        {
            var prop = props[i];
            Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
        }
    }
}

Obtenha Licença Temporária Gratuita

Você pode obter uma licença temporária gratuita para experimentar o Aspose.3D para .NET sem limitações de avaliação.

Conclusão

Neste artigo, aprendemos como:

  • criar uma cena 3D programaticamente;
  • adicionar objetos/entidades à cena 3D como Cilindro, material, luz, etc.;
  • leia as notas e propriedades filhas da cena 3D em C#.

Além disso, você pode aprender mais sobre Aspose.3D para .NET API usando a documentação. Em caso de qualquer ambiguidade, não hesite em contactar-nos no nosso fórum.

Veja também