Hur man renderar 3D-scener till bilder i .NET
Hur man renderar 3D-scener till bilder i .NET
Den här artikeln förklarar hur man producerar en rasterbild från en 3D-scen med Aspose.3D för .NET. Den minsta konfigurationen kräver en Camera, minst en Light och ett anrop till Scene.Render.
Steg 1 — Installera paketet
dotnet add package Aspose.3D.FOSSSteg 2 — Ladda eller bygg en scen
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));Steg 3 — Lägg till en kamera
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 originSteg 4 — Lägg till ljus
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);Steg 5 — Rendera till en bildfil
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");Tips: JPEG producerar mindre filer för skärmdumpar. Använd
"jpg"istället för"png"när förlustfri kvalitet inte krävs.
Troubleshooting
| Symptom | Trolig orsak | Lösning |
|---|---|---|
| Svart utdata bild | Ingen belysning i scenen | Lägg till minst en Light nod |
| Objektet är inte synligt | Kameran pekar åt fel håll | Kontrollera LookAt målkoordinater |
| Scenen renderas tom | Geometri är inte fäst vid en nod | Anropa CreateChildNode(name, entity) |
Relaterade resurser
- Renderar 3D-scener — utvecklarguide med fullständiga API-detaljer
- Arbeta med material och skuggning — materialinställning påverkar renderingsutdata