Renderização de Cenas 3D
Renderizando Cenas 3D
Aspose.3D for .NET pode renderizar uma cena para uma imagem raster. O pipeline de renderização requer um Camera (ponto de vista), uma ou mais fontes Light, e ImageRenderOptions (resolução e formato de saída). A classe Renderer conduz a passagem de renderização.
Configurando uma Câmera
Adicione uma entidade Camera a um nó de cena. Defina a posição da câmera através do Transform do nó e a aponte para um alvo usando LookAt:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
using Aspose.ThreeD.Utilities;
var scene = new Scene();
// Create the camera entity
var camera = new Camera(ProjectionType.Perspective);
camera.NearPlane = 0.1;
camera.FarPlane = 1000.0;
camera.FieldOfViewY = 45.0;
// Attach to a node and position it
Node cameraNode = scene.RootNode.CreateChildNode("main_camera", camera);
cameraNode.Transform.Translation = new Vector3(0, 5, 10);
// Aim the camera toward the scene origin by rotating around the X axis
cameraNode.Transform.EulerAngles = new Vector3(-30, 0, 0);Para renderização ortográfica, defina ProjectionType.Orthographic e especifique OrthoHeight.
Adicionando Luzes
Cenas sem luzes são renderizadas completamente escuras. Adicione ao menos um Light para iluminar a geometria:
using Aspose.ThreeD.Entities;
// Directional (sun-like) light
var sunLight = new Light("sun");
sunLight.LightType = LightType.Directional;
sunLight.Color = new Vector3(1.0, 1.0, 0.95); // slightly warm white
Node sunNode = scene.RootNode.CreateChildNode("sun", sunLight);
sunNode.Transform.EulerAngles = new Vector3(45, -30, 0); // direction in degrees
// Point light
var pointLight = new Light("fill");
pointLight.LightType = LightType.Point;
pointLight.Intensity = 150.0;
Node pointNode = scene.RootNode.CreateChildNode("fill_light", pointLight);
pointNode.Transform.Translation = new Vector3(-3, 4, 3);Renderizando para um Arquivo de Imagem
Use Scene.Render com ImageRenderOptions para produzir uma imagem PNG, JPEG ou BMP:
using Aspose.ThreeD;
using Aspose.ThreeD.Utilities;
// Render to a PNG file at 1280x720 — size is Vector2, format is a string
scene.Render(camera, "output.png", new Vector2(1280, 720), "png");Dica: Para uso em produção, assegure que haja pelo menos uma luz direcional ou ambiente. Uma cena sem iluminação é renderizada como uma silhueta ou superfície totalmente preta, dependendo do material.
API Quick Reference
| Member | Descrição |
|---|---|
new Camera(projectionType) | Crie uma câmera; use ProjectionType.Perspective ou Orthographic |
camera.FieldOfViewY | Campo de visão vertical em graus (somente perspectiva) |
camera.NearPlane | Distância do plano de recorte próximo |
camera.FarPlane | Distância do plano de recorte distante |
new Light(name) | Criar uma fonte de luz |
light.LightType | Directional, Point, or Spot |
light.Intensity | Intensidade de luz (float positivo) |
light.Color | Cor RGB como Vector3 |
new ImageRenderOptions() | Configuração de saída de renderização (cor de fundo, sombras) |
scene.Render(camera, path, size, format) | Renderizar cena a partir do ponto de vista da câmera; size é Vector2, format é "png", "jpg", etc. |
Ver também
- Aspose.3D for .NET — Enterprise Documentation
- Trabalhando com materiais e sombreamento — Materiais PBR e Phong afetam a saída de renderização