Como Renderizar Cenas 3D para Imagens em .NET
Como Renderizar Cenas 3D em Imagens no .NET
Este artigo explica como produzir uma imagem raster a partir de uma cena 3D usando Aspose.3D para .NET. A configuração mínima requer um Camera, pelo menos um Light e uma chamada a Scene.Render.
Passo 1 — Instalar o Pacote
dotnet add package Aspose.3D.FOSSPasso 2 — Carregar ou Construir uma Cena
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
// Load an existing model
var scene = Scene.FromFile("model.fbx");
// Or build a scene in code
var scene = new Scene();
scene.RootNode.CreateChildNode("box", new Box(1, 1, 1));Passo 3 — Adicionar uma Câmera
using Aspose.ThreeD.Entities;
using Aspose.ThreeD.Utilities;
var camera = new Camera(ProjectionType.Perspective);
camera.FieldOfViewY = 45.0;
camera.NearPlane = 0.1;
camera.FarPlane = 500.0;
Node camNode = scene.RootNode.CreateChildNode("camera", camera);
camNode.Transform.Translation = new Vector3(0, 5, 10);
camNode.Transform.EulerAngles = new Vector3(-30, 0, 0); // tilt down toward originPasso 4 — Adicionar Luzes
var sun = new Light("sun") { LightType = LightType.Directional };
Node sunNode = scene.RootNode.CreateChildNode("sun", sun);
sunNode.Transform.EulerAngles = new Vector3(45, -30, 0);
var fill = new Light("fill") { LightType = LightType.Point, Intensity = 100 };
Node fillNode = scene.RootNode.CreateChildNode("fill", fill);
fillNode.Transform.Translation = new Vector3(-4, 6, 4);Etapa 5 — Renderizar para um Arquivo de Imagem
using Aspose.ThreeD.Utilities;
// size is Vector2; format is a string ("png", "jpg", "bmp")
scene.Render(camera, "output.png", new Vector2(1280, 720), "png");
Console.WriteLine("Rendered: output.png");Dica: JPEG produz arquivos menores para capturas de tela. Use
"jpg"em vez de"png"quando a qualidade sem perdas não é necessária.
Troubleshooting
| Symptom | Causa Provável | Correção |
|---|---|---|
| Imagem de saída preta | Nenhuma luz na cena | Adicione ao menos um nó Light |
| Objeto não visível | Câmera apontando na direção errada | Verifique as coordenadas do alvo LookAt |
| A cena renderiza vazia | Geometria não anexada a um nó | Chame CreateChildNode(name, entity) |
Recursos Relacionados
- Renderizando cenas 3D — guia do desenvolvedor com detalhes completos do API
- Trabalhando com Materiais e Sombreamento — a configuração do material afeta a saída de renderização