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

MemberDescrição
new Camera(projectionType)Crie uma câmera; use ProjectionType.Perspective ou Orthographic
camera.FieldOfViewYCampo de visão vertical em graus (somente perspectiva)
camera.NearPlaneDistância do plano de recorte próximo
camera.FarPlaneDistância do plano de recorte distante
new Light(name)Criar uma fonte de luz
light.LightTypeDirectional, Point, or Spot
light.IntensityIntensidade de luz (float positivo)
light.ColorCor 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

 Português