Vytváření 3D efektů v prezentacích pomocí .NET
Přehled
Aspose.Slides pro .NET může vytvářet, upravovat, zachovávat a vykreslovat 3D formátování ve stylu PowerPointu pro tvary a text. Tento článek se zabývá 3D efekty, jako jsou otáčení, extruze, zkosení, osvětlení, materiál, gradientní nebo obrázkové výplně a 3D text.
Koncepty 3D formátování
Pomocí vlastnosti IShape.ThreeDFormat aplikujete 3D formátování na tvar. Vlastnost poskytuje IThreeDFormat, který řídí 3D scénu pro tento tvar.
Pro text použijte vlastnost ITextFrameFormat.ThreeDFormat. Tím se 3D formátování použije na textový rámec místo těla tvaru.
Nejdůležitější vlastnosti jsou:
| Vlastnost | Co řídí | Kdy použít |
|---|---|---|
| Camera | Pohled, přednastavený typ kamery, otáčení, zoom a perspektiva. | Otáčení objektu ve 3D prostoru nebo odpovídání přednastavenému otáčení PowerPointu. |
| LightRig | Přednastavení světla, směr a otáčení světla. | Změna vzhledu světelných odlesků a stínů na 3D povrchu. |
| Material | Materiál povrchu, jako plochý, matný, plastový nebo kovový. | Udělat stejnou geometrii vzhledově plošší, měkčí, lesklejší nebo kovovější. |
| ExtrusionHeight | Jak daleko tvar vystupuje dozadu od své přední plochy. | Proměnit plochý tvar na viditelně tlustý 3D objekt. |
| ExtrusionColor | Barva extrudovaných stran. | Zviditelnit hloubku nebo sladit barvu stran s přední výplní. |
| Depth | Dodatečná 3D hloubka používaná formátováním 3D v PowerPointu. | Doladit hloubku tvarů nebo textu, zejména spolu s nastavením zkosení a materiálu. |
| BevelTop a BevelBottom | Vytýčené nebo zaoblené hrany na přední a zadní straně. | Přidat změkčený nebo formovaný okraj místo ostré ploché plochy. |
| ContourColor a ContourWidth | Obrys kolem 3D objektu. | Zdůraznit hranice objektu ve vykresleném výstupu. |
Vytvoření 3D tvaru
Tvar obvykle potřebuje čtyři typy nastavení, aby vypadal věrohodně 3D:
- Nastavení kamery, protože výchozí přední pohled může skrýt extruzi.
- Nastavení osvětlení, protože osvětlení umožňuje rozpoznat plochy a strany.
- Nastavení materiálu, protože povrch ovlivňuje, jak se světlo vykresluje.
- Nastavení extruze nebo hloubky, protože plochý tvar potřebuje tloušťku.
Následující příklad vytvoří obdélník, přidá text na jeho přední stranu, aplikuje 3D formátování, uloží prezentaci jako PPTX a vykreslí snímek do PNG obrázku.
const float imageScale = 2;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 200, 150, 200, 200);
shape.TextFrame.Text = "3D";
shape.TextFrame.Paragraphs[0].ParagraphFormat.DefaultPortionFormat.FontHeight = 64;
shape.FillFormat.FillType = FillType.Solid;
shape.FillFormat.SolidFillColor.Color = Color.CornflowerBlue;
shape.ThreeDFormat.Camera.CameraType = CameraPresetType.OrthographicFront;
shape.ThreeDFormat.Camera.SetRotation(20, 30, 40);
shape.ThreeDFormat.LightRig.LightType = LightRigPresetType.Flat;
shape.ThreeDFormat.LightRig.Direction = LightingDirection.Top;
shape.ThreeDFormat.Material = MaterialPresetType.Flat;
shape.ThreeDFormat.ExtrusionHeight = 100;
shape.ThreeDFormat.ExtrusionColor.Color = Color.Blue;
using var thumbnail = slide.GetImage(imageScale, imageScale);
thumbnail.Save("shape_3d.png");
presentation.Save("shape_3d.pptx", SaveFormat.Pptx);
Vykreslený snímek ukazuje obdélník jako tlustý 3D blok:

Otáčení tvaru pomocí kamery
V PowerPointu se 3D otáčení nastavuje v panelu 3‑D Rotation. Hodnoty otáčení X, Y a Z odpovídají otáčení, které nastavíte pomocí rozhraní kamery.

V Aspose.Slides nastavte typ kamery a otáčení pomocí IThreeDFormat.Camera:
shape.ThreeDFormat.Camera.CameraType = CameraPresetType.OrthographicFront;
shape.ThreeDFormat.Camera.SetRotation(20, 30, 40);
Kameru použijte, když potřebujete změnit, jak divák vidí objekt. Nemění geometrii 2D tvaru na snímku. Mění 3D pohledový úhel, který používá PowerPoint i Aspose.Slides při renderování.
Přidání extruze a hloubky
Extruze způsobí, že tvar vypadá tlustě tím, že se protáhne za přední stranu. V PowerPointu ovládací prvek hloubky určuje tuto viditelnou tloušťku a ovládací prvek barvy určuje barvu bočních ploch.

Nastavte IThreeDFormat.ExtrusionHeight pro tloušťku a IThreeDFormat.ExtrusionColor pro barvu boků:
shape.ThreeDFormat.Camera.SetRotation(20, 30, 40);
shape.ThreeDFormat.ExtrusionHeight = 100;
shape.ThreeDFormat.ExtrusionColor.Color = Color.Purple;
Použijte IThreeDFormat.Depth, když potřebujete pracovat přímo s hodnotou hloubky v PowerPointu nebo kombinovat hloubku se zkosením, materiálem a textovými efekty. V mnoha situacích je nastavení ExtrusionHeight přehlednější, protože přímo vyjadřuje viditelnou extruzi.
Použití gradientových nebo obrázkových výplní s 3D efekty
3D formátování je nezávislé na výplni tvaru. Můžete použít jednolitou barvu, gradient, vzor nebo obrázkovou výplň na přední stranu a stále používat stejné nastavení kamery, osvětlení, materiálu a extruze.
Tento příklad použije gradientní výplň na tvar a tmavší barvu extruze na boky:
const float imageScale = 2;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 200, 150, 250, 250);
shape.TextFrame.Text = "3D Gradient";
shape.TextFrame.Paragraphs[0].ParagraphFormat.DefaultPortionFormat.FontHeight = 64;
shape.FillFormat.FillType = FillType.Gradient;
shape.FillFormat.GradientFormat.GradientStops.Add(0, Color.Blue);
shape.FillFormat.GradientFormat.GradientStops.Add(100, Color.Orange);
shape.ThreeDFormat.Camera.CameraType = CameraPresetType.OrthographicFront;
shape.ThreeDFormat.Camera.SetRotation(10, 20, 30);
shape.ThreeDFormat.LightRig.LightType = LightRigPresetType.Flat;
shape.ThreeDFormat.LightRig.Direction = LightingDirection.Top;
shape.ThreeDFormat.Material = MaterialPresetType.Flat;
shape.ThreeDFormat.ExtrusionHeight = 150;
shape.ThreeDFormat.ExtrusionColor.Color = Color.DarkOrange;
using var thumbnail = slide.GetImage(imageScale, imageScale);
thumbnail.Save("gradient_3d.png");

Chcete‑li místo toho použít obrázkovou výplň, přidejte obrázek do prezentace a přiřaďte jej výplni tvaru:
var imageData = File.ReadAllBytes("image.jpg");
var image = presentation.Images.AddImage(imageData);
shape.FillFormat.FillType = FillType.Picture;
shape.FillFormat.PictureFillFormat.Picture.Image = image;
shape.FillFormat.PictureFillFormat.PictureFillMode = PictureFillMode.Stretch;
shape.ThreeDFormat.Camera.SetRotation(10, 20, 30);
shape.ThreeDFormat.ExtrusionHeight = 150;
shape.ThreeDFormat.ExtrusionColor.Color = Color.DarkOrange;

Použití 3D formátování na text
3D formátování tvaru ovlivňuje tělo tvaru. 3D formátování textu ovlivňuje textový rámec. Toto je užitečné pro efekty podobné WordArt, kde samotná písmena potřebují extruzi, materiál, osvětlení a nastavení kamery.
Následující příklad vytvoří text s vzorovou výplní, aplikuje transformaci WordArt a nastaví 3D parametry na ITextFrameFormat:
const float imageScale = 2;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 200, 150, 250, 250);
shape.FillFormat.FillType = FillType.NoFill;
shape.LineFormat.FillFormat.FillType = FillType.NoFill;
shape.TextFrame.Text = "3D Text";
var portion = shape.TextFrame.Paragraphs[0].Portions[0];
portion.PortionFormat.FillFormat.FillType = FillType.Pattern;
portion.PortionFormat.FillFormat.PatternFormat.ForeColor.Color = Color.DarkOrange;
portion.PortionFormat.FillFormat.PatternFormat.BackColor.Color = Color.White;
portion.PortionFormat.FillFormat.PatternFormat.PatternStyle = PatternStyle.LargeGrid;
shape.TextFrame.Paragraphs[0].ParagraphFormat.DefaultPortionFormat.FontHeight = 128;
var textFrameFormat = shape.TextFrame.TextFrameFormat;
textFrameFormat.Transform = TextShapeType.ArchUp;
textFrameFormat.ThreeDFormat.ExtrusionHeight = 3.5f;
textFrameFormat.ThreeDFormat.Depth = 3;
textFrameFormat.ThreeDFormat.Material = MaterialPresetType.Plastic;
textFrameFormat.ThreeDFormat.LightRig.Direction = LightingDirection.Top;
textFrameFormat.ThreeDFormat.LightRig.LightType = LightRigPresetType.Balanced;
textFrameFormat.ThreeDFormat.LightRig.SetRotation(0, 0, 40);
textFrameFormat.ThreeDFormat.Camera.CameraType = CameraPresetType.PerspectiveContrastingRightFacing;
using var thumbnail = slide.GetImage(imageScale, imageScale);
thumbnail.Save("text_3d.png");
presentation.Save("text_3d.pptx", SaveFormat.Pptx);

Chování exportu a renderování
Aspose.Slides zachovává 3D formátování při ukládání do formátů PowerPointu, jako je PPTX. Při renderování nebo exportu do formátů s pevnou rozlohou se 3D scéna rasterizuje nebo nakreslí do výstupu jako 2D výsledek. To platí při renderování snímků do PNG, exportu do PDF, exportu do HTML, nebo při generování snímků pro video conversion.
Mějte na paměti následující body:
- Exportované obrázky a PDF nejsou interaktivní. Objekt není možné po exportu otáčet v prohlížeči.
- Konečný vzhled závisí na kombinaci kamery, osvětlení, materiálu, extruze, výplně a škálování snímku.
- Pokud potřebujete prozkoumat zděděné nebo tématem definované hodnoty formátování, přečtěte si effective shape properties.
- Některé výstupní formáty nemohou uložit upravitelná 3D formátování PowerPointu. V těchto formátech je vizuální výsledek vykreslený místo toho, aby byl uložen jako upravitelná 3D nastavení.
Často kladené otázky
Může Aspose.Slides vytvořit interaktivní 3D prezentace?
Aspose.Slides vytváří a vykresluje 3D efekty PowerPointu pro tvary a text. Nevytváří interaktivní 3D scény v exportovaných obrázcích, PDF ani HTML stránkách, které by uživatel mohl otáčet. V PPTX zůstává 3D formátování editovatelné v PowerPointu, kde je formát podporován.
Jaký je rozdíl mezi 3D modelem a 3D efektem?
3D model je samostatný 3D objekt vložený do prezentace. 3D efekt je formátování aplikované na běžný tvar nebo text v PowerPointu, jako je otáčení, extruze, zkosení, osvětlení a materiál. Tento článek se zabývá právě 3D efekty.
Jaká nastavení jsou požadována pro viditelný 3D tvar?
Minimálně nastavte otáčení kamery a buď extruzi, nebo hloubku. V praxi je také vhodné nastavit osvětlení a materiál, aby měly vykreslené plochy jasné odlesky a stíny.
Mohu použít 3D efekty jak na tvary, tak na text?
Ano. Použijte IShape.ThreeDFormat pro tělo tvaru a ITextFrameFormat.ThreeDFormat pro text.
Zobrazí se 3D efekty při exportu do obrázků, PDF, HTML nebo video snímků?
Ano. Aspose.Slides vykreslí 3D efekty při tvorbě obrázků snímků, PDF výstupu, HTML výstupu i snímků používaných pro převod do videa. Exportovaný výstup obsahuje vykreslený vzhled, nikoli editovatelný 3D objekt.
Mohu přečíst konečné 3D hodnoty po aplikaci dědičnosti a nastavení motivu?
Ano. Použijte API pro efektivní formátování popsané v Shape Effective Properties, abyste získali konečné hodnoty kamery, osvětlení, zkosení a souvisejících 3D parametrů.