Crear Escena 3D usando C#

Una escena 3D simple es una representación gráfica tridimensional de datos geométricos. En este artículo, aprenderemos cómo crear una escena 3D usando C# desde cero sin necesidad de instalar ningún software de renderizado o modelado 3D. Guardaremos la escena 3D en formato de archivo FBX, un formato de archivo 3D popular utilizado para intercambiar formatos 3D. El FBX se puede guardar en un disco como un archivo de datos binario o ASCII.

En este artículo se tratarán los siguientes temas:

  1. API de C# para crear escenas 3D - Descarga gratuita
  2. Crear una escena 3D simple en C#
  3. Leer escena 3D usando C#

C# API para crear escena 3D - Descarga gratuita

Para crear y leer una escena 3D, usaremos la API Aspose.3D para .NET. Permite crear y guardar una escena 3D en los formatos admitidos. También permite trabajar con geometría y jerarquía de escena, animar objetos en una escena y convertir formatos de archivo 3D.

La API proporciona la clase Scene, que es un objeto de nivel superior que contiene nodos, geometrías, materiales, texturas, animaciones, poses, subescenas, etc. El método CreateChildNode(Entity) crea un nuevo nodo secundario con una entidad determinada adjunta. La API proporciona el modelo de sombreado para LambertMaterial, PhongMaterial y ShaderMaterial. La luz ilumina la escena, la clase Light de la API permite agregar algo de luz a la escena.

Descargue la DLL de la API o instálela usando NuGet.

PM> Install-Package Aspose.3D

Crear una escena 3D simple en C#

Podemos crear una escena 3D simple siguiendo los pasos que se detallan a continuación:

  1. Cree una instancia de la clase Escena.
  2. Llame al método CreateChildNode() para agregar algo de geometría, una forma para mostrar en la pantalla, por ejemplo, Cilindro.
  3. Establezca las propiedades del nodo secundario, como Material.
  4. Inicializa un objeto de clase Light.
  5. Llame al método CreateChildNode() para agregar la entidad Light.
  6. Finalmente, guarde la escena como FBX usando el método Save(). Toma la ruta del archivo de salida y FileFormat.FBX7500ASCII como argumentos.

El siguiente ejemplo de código muestra cómo crear una escena 3D simple usando C#.

// Este ejemplo de código demuestra cómo crear una escena 3D simple en un archivo FBX.
// Inicializar escena 3D
var scene = new Scene();

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

// Cree un nodo secundario y agregue el objeto Cilindro
var node = scene.RootNode.CreateChildNode(cylinder);

// Establecer propiedades de nodo secundario
var material = new LambertMaterial() { DiffuseColor = new Vector3(Color.LightBlue) };
material.Name = "Lambert";
node.Material = material;

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

// Ruta del archivo de salida
var output = @"C:\Files\3D\document.fbx";

// Guardar documento de escena 3D
scene.Save(output, FileFormat.FBX7500ASCII);

Leer Escena 3D usando C#

Podemos leer una escena 3D del documento FBX siguiendo los pasos que se indican a continuación:

  1. Cree una instancia de la clase Escena.
  2. Cargue un documento 3D existente utilizando el método Open().
  3. Recorrer las propiedades de ChildNodes
  4. Finalmente, muestre los valores de propiedad.

El siguiente ejemplo de código muestra cómo cargar y leer una escena 3D usando C#.

// Este ejemplo de código demuestra cómo leer una escena 3D desde un archivo FBX
// Inicializar un objeto de clase Escena
Scene scene = new Scene();

// Cargar un 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 las propiedades usando foreach
        foreach (var prop in props)
        {
            Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
        }
        //o usando ordinal para bucle
        for (int i = 0; i < props.Count; i++)
        {
            var prop = props[i];
            Console.WriteLine("{0} = {1}", prop.Name, prop.Value);
        }
    }
}

Obtenga una Licencia Temporal Gratis

Puede obtener una licencia temporal gratuita para probar Aspose.3D para .NET sin limitaciones de evaluación.

Conclusión

En este artículo, hemos aprendido a:

  • crear una escena 3D programáticamente;
  • agregar objetos/entidades a la escena 3D como Cilindro, material, luz, etc.;
  • Lea las notas y propiedades secundarias de la escena 3D en C#.

Además, puede obtener más información sobre Aspose.3D para la API de .NET utilizando la documentación. En caso de cualquier ambigüedad, no dude en contactarnos en nuestro foro.

Ver también