Aplicando efeitos visuais em viewports 3D

Introdução

Melhorar o apelo visual das cenas 3D é um aspecto crucial da criação de experiências envolventes. Aspose.3D for .NET fornece um poderoso conjunto de ferramentas para aplicar efeitos visuais a viewports 3D. Neste tutorial, percorreremos o processo de aplicação de vários efeitos a uma cena 3D, incluindo pixelização, escala de cinza, detecção de bordas e desfoque.

Pré-requisitos

Antes de mergulhar no tutorial, certifique-se de ter o seguinte:

  • Conhecimento prático de desenvolvimento em C# e .NET.
  • Biblioteca Aspose.3D para .NET instalada. Você pode baixá-lo em aqui .
  • Um arquivo de cena 3D (por exemplo, “scene.obj”) para experimentação.

Importar namespaces

Para começar, importe os namespaces necessários para Aspose.3D e outras dependências. Adicione as seguintes linhas ao seu código:

using System;
using System.IO;
using System.Collections;
using Aspose.ThreeD;
using System.Drawing;
using System.Drawing.Imaging;
using Aspose.ThreeD.Entities;
using Aspose.ThreeD.Render;
using Aspose.ThreeD.Utilities;

Etapa 1: carregar uma cena 3D existente

Scene scene = new Scene(RunExamples.GetDataFilePath("scene.obj"));

Carregue sua cena 3D usando oScene aula.

Etapa 2: crie uma câmera

Camera camera = new Camera();
scene.RootNode.CreateChildNode("camera", camera).Transform.Translation = new Vector3(2, 44, 66);
camera.LookAt = new Vector3(50, 12, 0);

Crie uma instância de câmera e defina sua posição e alvo.

Etapa 3: adicione luz à cena

scene.RootNode.CreateChildNode("light", new Light() { Color = new Vector3(Color.White), LightType = LightType.Point }).Transform.Translation = new Vector3(26, 57, 43);

Introduza iluminação para aprimorar os efeitos visuais.

Etapa 4: criar um renderizador e um destino de renderização

using (var renderer = Renderer.CreateRenderer())
{
    // Definir configurações do renderizador
    renderer.EnableShadows = false;

    // Crie um destino de renderização
    using (IRenderTexture rt = renderer.RenderFactory.CreateRenderTexture(new RenderParameters(), 1, 1024, 1024))
    {
        // Configurar janela de visualização
        Viewport vp = rt.CreateViewport(camera, new RelativeRectangle() { ScaleWidth = 1, ScaleHeight = 1 });

        // Renderizar a cena para textura
        renderer.Render(rt);

        // Salve a textura renderizada em um arquivo
        ((ITexture2D)rt.Targets[0]).Save("Your Output Directory" + "Original_viewport_out.png", ImageFormat.Png);

        // Continue com os efeitos de pós-processamento...
    }
}

Crie um renderizador e um destino de renderização para capturar a cena.

Etapa 5: aplicar efeitos de pós-processamento

Etapa 5.1 Efeito de pixelização

// Crie efeito de pixelização
PostProcessing pixelation = renderer.GetPostProcessing("pixelation");
renderer.PostProcessings.Add(pixelation);
renderer.Render(rt);
((ITexture2D)rt.Targets[0]).Save("Your Output Directory" + "VisualEffect_pixelation_out.png", ImageFormat.Png);

Aplique o efeito de pixelização e salve o resultado.

Etapa 5.2 Efeito em escala de cinza

// Crie efeito de escala de cinza
PostProcessing grayscale = renderer.GetPostProcessing("grayscale");
renderer.PostProcessings.Clear();
renderer.PostProcessings.Add(grayscale);
renderer.Render(rt);
((ITexture2D)rt.Targets[0]).Save("Your Output Directory" + "VisualEffect_grayscale_out.png", ImageFormat.Png);

Aplique o efeito de escala de cinza e salve o resultado.

Etapa 5.3 Combinar efeitos

// Combine efeitos de escala de cinza e pixelização
renderer.PostProcessings.Clear();
renderer.PostProcessings.Add(grayscale);
renderer.PostProcessings.Add(pixelation);
renderer.Render(rt);
((ITexture2D)rt.Targets[0]).Save("Your Output Directory" + "VisualEffect_grayscale+pixelation_out.png", ImageFormat.Png);

Combine vários efeitos para resultados únicos.

Passo 5.4 Efeito de Detecção de Borda

// Crie efeito de detecção de borda
PostProcessing edgedetection = renderer.GetPostProcessing("edge-detection");
renderer.PostProcessings.Clear();
renderer.PostProcessings.Add(edgedetection);
renderer.Render(rt);
((ITexture2D)rt.Targets[0]).Save("Your Output Directory" + "VisualEffect_edgedetection_out.png", ImageFormat.Png);

Aplique o efeito de detecção de borda e salve o resultado.

Etapa 5.5 Efeito de desfoque

// Crie efeito de desfoque
PostProcessing blur = renderer.GetPostProcessing("blur");
renderer.PostProcessings.Clear();
renderer.PostProcessings.Add(blur);
renderer.Render(rt);
((ITexture2D)rt.Targets[0]).Save("Your Output Directory" + "VisualEffect_blur_out.png", ImageFormat.Png);

Aplique o efeito de desfoque e salve o resultado.

Conclusão

Experimentar efeitos visuais em viewports 3D adiciona profundidade e criatividade às suas cenas. Aspose.3D for .NET simplifica esse processo, oferecendo uma variedade de efeitos de pós-processamento para elevar seus projetos.

Perguntas frequentes

Q1: Posso aplicar vários efeitos simultaneamente?

A1: Sim, você pode combinar diferentes efeitos de pós-processamento para obter resultados únicos e complexos.

Q2: Como posso ajustar a intensidade dos efeitos visuais?

A2: Cada efeito pode ter parâmetros que você pode ajustar para controlar sua intensidade. Consulte a documentação para obter detalhes específicos.

Q3: O Aspose.3D é adequado para desenvolvimento de jogos?

R3: Embora o Aspose.3D seja projetado principalmente para modelagem e renderização 3D, ele pode ser usado em certos aspectos do desenvolvimento de jogos.

Q4: Existem efeitos adicionais de pós-processamento disponíveis?

A4: Aspose.3D oferece uma variedade de efeitos de pós-processamento integrados e você pode criar efeitos personalizados usando a biblioteca.

Q5: Posso usar Aspose.3D para projetos comerciais?

A5: Sim, você pode usar Aspose.3D para fins comerciais. Consulte o página de compra para detalhes de licenciamento.