Crea effetti 3D nelle presentazioni usando .NET
Panoramica
Aspose.Slides per .NET può creare, modificare, conservare e rendere la formattazione 3D in stile PowerPoint per forme e testo. Questo articolo copre gli effetti 3D come rotazione, estrusione, smussature, illuminazione, materiale, riempimenti a gradiente o immagine e testo 3D.
Note
Questo articolo riguarda gli effetti di formattazione 3D su forme e testo di PowerPoint. Non tratta l’inserimento o la modifica di file di modelli 3D autonomi. Quando esporti una diapositiva in un’immagine, PDF o HTML, Aspose.Slides rende quegli effetti 3D nell’output 2D esportato.Concetti di Formattazione 3D
Usa la proprietà IShape.ThreeDFormat per applicare la formattazione 3D a una forma. La proprietà espone IThreeDFormat, che controlla la scena 3D per quella forma.
Per il testo, usa la proprietà ITextFrameFormat.ThreeDFormat. Questo applica la formattazione 3D al riquadro di testo invece che al corpo della forma.
Le proprietà più importanti sono:
| Proprietà | Cosa controlla | Quando usarla |
|---|---|---|
| Camera | Punto di vista, tipo di telecamera predefinito, rotazione, zoom e prospettiva. | Ruota l’oggetto nello spazio 3D o corrispondi a un preset di rotazione 3D di PowerPoint. |
| LightRig | Preset di illuminazione, direzione e rotazione della luce. | Modifica come appaiono le luci e le ombre sulla superficie 3D. |
| Material | Materiale della superficie, come piatto, opaco, plastica o metallo. | Rende la stessa geometria più piatta, morbida, lucida o metallica. |
| ExtrusionHeight | Quanto la forma si estende all’indietro dalla sua faccia frontale. | Trasforma una forma piatta in un oggetto 3D visibilmente spesso. |
| ExtrusionColor | Colore dei lati estrusi. | Rende la profondità visibile o coordina il colore dei lati con il riempimento frontale. |
| Depth | Profondità 3D aggiuntiva usata dalla formattazione 3D di PowerPoint. | Regola finemente la profondità per forme o testo, specialmente insieme alle impostazioni di smussatura e materiale. |
| BevelTop e BevelBottom | Bordi sollevati o arrotondati sulle facce frontale e posteriore. | Aggiungi un bordo smussato o modellato invece di una faccia piatta e affilata. |
| ContourColor e ContourWidth | Contorno intorno all’oggetto 3D. | Evidenzia il contorno dell’oggetto nell’output renderizzato. |
Crea una Forma 3D
Una forma solitamente necessita di quattro tipi di impostazioni prima di apparire convincente in 3D:
- Impostazioni della telecamera, perché la vista frontale predefinita può nascondere l’estrusione.
- Impostazioni di illuminazione, perché la luce rende leggibili le facce e i lati.
- Impostazioni del materiale, perché la superficie influisce su come la luce viene resa.
- Impostazioni di estrusione o profondità, perché una forma piatta ha bisogno di spessore.
Il seguente esempio crea un rettangolo, aggiunge testo alla sua faccia frontale e applica la formattazione 3D. I valori di rotazione della telecamera sono in gradi e l’altezza dell’estrusione è 100 punti. L’esempio rende la diapositiva in un’immagine PNG a dimensioni doppie rispetto al valore predefinito e salva la presentazione come PPTX.
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
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);
L’immagine della diapositiva renderizzata mostra il rettangolo come un blocco 3D spesso:

Ruota una Forma con la Telecamera
In PowerPoint, la rotazione 3D è configurata dal pannello Rotazione 3-D. I valori di rotazione X, Y e Z corrispondono alla rotazione impostata tramite l’API della telecamera.

In Aspose.Slides, accedi alla telecamera tramite IThreeDFormat.Camera. Questo esempio crea un rettangolo, seleziona una vista frontale ortografica e imposta le rotazioni X, Y e Z a 20, 30 e 40 gradi, rispettivamente. Configura la forma in memoria senza salvare un file:
using Aspose.Slides;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 200, 150, 200, 200);
shape.ThreeDFormat.Camera.CameraType = CameraPresetType.OrthographicFront;
shape.ThreeDFormat.Camera.SetRotation(20, 30, 40);
Usa la telecamera quando devi cambiare il modo in cui lo spettatore vede l’oggetto. Non modifica la geometria 2D della forma sulla diapositiva. Cambia il punto di vista 3D usato da PowerPoint e da Aspose.Slides durante il rendering.
Aggiungi Estrusione e Profondità
L’estrusione rende una forma spessa estendendola dietro la faccia frontale. In PowerPoint, il controllo della profondità imposta questo spessore visibile e il controllo del colore imposta il colore delle facce laterali.

Imposta IThreeDFormat.ExtrusionHeight per lo spessore e IThreeDFormat.ExtrusionColor per il colore laterale. Questo esempio assegna al rettangolo un’estrusione di 100 punti con lati viola e ruota la telecamera per mostrarne lo spessore. Configura la forma in memoria senza salvare un file:
using System.Drawing;
using Aspose.Slides;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 200, 150, 200, 200);
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.Purple;
La proprietà IThreeDFormat.Depth imposta la profondità di una forma 3D. La proprietà ExtrusionHeight controlla l’altezza dell’effetto di estrusione, come mostrato in questo esempio.
Usa Riempimenti a Gradiente o Immagine con Effetti 3D
La formattazione 3D è indipendente dal riempimento della forma. Puoi applicare un colore solido, un gradiente, un motivo o un riempimento immagine alla faccia frontale e continuare a usare le stesse impostazioni di telecamera, luce, materiale ed estrusione.
Questo esempio applica un gradiente dal blu all’arancione alla faccia frontale e un colore arancione scuro all’estrusione di 150 punti. Le fermate del gradiente a 0 e 100 marcano l’inizio e la fine del gradiente. I valori di rotazione della telecamera sono in gradi. La diapositiva è renderizzata in un’immagine PNG a dimensioni doppie rispetto al valore predefinito:
using System.Drawing;
using Aspose.Slides;
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");
L’output renderizzato mantiene il gradiente sulla faccia frontale e rende l’estrusione separatamente:

Per usare un riempimento immagine, aggiungi l’immagine alla presentazione e assegnala al riempimento della forma. Questo esempio richiede un file esistente denominato “image.jpg” nella directory di lavoro. Stira l’immagine per riempire il rettangolo, applica un’estrusione di 150 punti e imposta la rotazione della telecamera in gradi. Configura la forma in memoria senza salvare o renderizzare un file:
using System.Drawing;
using System.IO;
using Aspose.Slides;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 200, 150, 250, 250);
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.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;
L’immagine è renderizzata sulla faccia frontale, mentre l’estrusione è renderizzata come superficie laterale 3D:

Applica Formattazione 3D al Testo
La formattazione 3D della forma influisce sul corpo della forma. La formattazione 3D del testo influisce sul riquadro di testo. Questo è utile per effetti simili a WordArt dove le lettere stesse hanno bisogno di estrusione, materiale, illuminazione e impostazioni della telecamera.
Il seguente esempio crea testo con un motivo a griglia arancione‑bianco, applica un arco verso l’alto e configura le impostazioni 3D tramite ITextFrameFormat.ThreeDFormat. L’altezza dell’estrusione e la profondità sono in punti, e la rotazione della luce è in gradi. Il riempimento e il contorno della forma sono nascosti in modo che sia visibile solo il testo. L’esempio renderizza un’immagine PNG a dimensioni doppie rispetto alla diapositiva predefinita e salva la presentazione come PPTX:
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
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);
Il testo è renderizzato come lettere curvate ed estruse in 3D:

Mantieni il Testo Piatti su una Forma 3D
Per mantenere il testo leggibile preservando l’aspetto 3D della forma, imposta ITextFrameFormat.KeepTextFlat tramite ITextFrame.TextFrameFormat. Quando il valore è true, il testo rimane fuori dalla scena 3D. Quando è false, il testo partecipa alla scena e segue la sua orientazione 3D.
Questa impostazione non rimuove la formattazione 3D della forma: la sua telecamera, illuminazione, materiale ed estrusione rimangono configurati tramite IShape.ThreeDFormat. È anche diversa dalla rotazione ordinaria. IShape.Rotation ruota la forma nel piano della diapositiva, mentre ITextFrameFormat.RotationAngle controlla la rotazione personalizzata del testo all’interno del suo riquadro. Tenere il testo fuori dalla scena 3D non resetta nessuno di questi angoli.
Il seguente esempio autonomo crea un rettangolo blu con testo e lo clona accanto all’originale. Entrambe le forme hanno la stessa formattazione 3D; solo l’impostazione del testo differisce: false a sinistra e true a destra. Gli angoli della telecamera sono in gradi e l’altezza dell’estrusione è 40 punti. L’esempio salva la presentazione come PPTX e renderizza la diapositiva di confronto in PNG a dimensioni doppie rispetto al valore predefinito.
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 70, 160, 240, 140);
shape.TextFrame.Text = "Readable text";
shape.TextFrame.Paragraphs[0].ParagraphFormat.DefaultPortionFormat.FontHeight = 28;
shape.TextFrame.Paragraphs[0].ParagraphFormat.Alignment = TextAlignment.Center;
shape.TextFrame.TextFrameFormat.AnchoringType = TextAnchorType.Center;
shape.FillFormat.FillType = FillType.Solid;
shape.FillFormat.SolidFillColor.Color = Color.CornflowerBlue;
shape.ThreeDFormat.Camera.CameraType = CameraPresetType.OrthographicFront;
shape.ThreeDFormat.Camera.SetRotation(30, 30, 0);
shape.ThreeDFormat.LightRig.LightType = LightRigPresetType.Flat;
shape.ThreeDFormat.LightRig.Direction = LightingDirection.Top;
shape.ThreeDFormat.Material = MaterialPresetType.Flat;
shape.ThreeDFormat.ExtrusionHeight = 40;
shape.ThreeDFormat.ExtrusionColor.Color = Color.RoyalBlue;
shape.TextFrame.TextFrameFormat.KeepTextFlat = false;
var flatTextShape = (IAutoShape)slide.Shapes.AddClone(shape, 400, 160);
flatTextShape.TextFrame.TextFrameFormat.KeepTextFlat = true;
presentation.Save("keep_text_flat.pptx", SaveFormat.Pptx);
using var image = slide.GetImage(2, 2);
image.Save("keep_text_flat.png");
A sinistra, il testo segue l’orientazione 3D. A destra, rimane piatto e più facile da leggere. Entrambi i rettangoli mantengono la stessa estrusione visibile e orientazione 3D.

Comportamento di Esportazione e Rendering
Aspose.Slides conserva la formattazione 3D quando salva in formati PowerPoint come PPTX. Quando si renderizza o si esporta in formati a layout fisso, la scena 3D è rasterizzata o disegnata nell’output come risultato 2D. Ciò vale quando renderizzi diapositive in PNG, esporti in PDF, esporti in HTML, o generi frame per la video conversion.
- Le immagini e i PDF esportati non sono interattivi. L’oggetto non può essere ruotato dallo spettatore dopo l’esportazione.
- L’aspetto finale dipende dalla combinazione di telecamera, rig luce, materiale, estrusione, riempimento e scala della diapositiva.
- Se devi ispezionare i valori di formattazione ereditati o basati sul tema, leggi le proprietà effective della forma.
- Alcuni formati di output non possono memorizzare la formattazione 3D di PowerPoint editabile. In quei formati, il risultato visivo è renderizzato anziché conservato come impostazioni 3D modificabili.
FAQ
Aspose.Slides può creare presentazioni 3D interattive?
Aspose.Slides crea e rende gli effetti 3D di PowerPoint per forme e testo. Non rende le immagini, i PDF o le pagine HTML esportate in scene 3D interattive che lo spettatore può ruotare. In PPTX, la formattazione 3D rimane modificabile in PowerPoint dove il formato lo supporta.
Qual è la differenza tra un modello 3D e un effetto 3D?
Un modello 3D è un oggetto 3D separato inserito nella presentazione. Un effetto 3D è una formattazione applicata a una forma o a un testo PowerPoint regolare, come rotazione, estrusione, smussatura, illuminazione e materiale. Questo articolo tratta gli effetti 3D.
Quali impostazioni sono necessarie per una forma 3D visibile?
Al minimo, imposta una rotazione della telecamera e almeno estrusione o profondità. Nella pratica, imposta anche un rig luce e un materiale affinché le facce renderizzate abbiano luci e ombre chiare.
Posso applicare effetti 3D sia alle forme che al testo?
Sì. Usa IShape.ThreeDFormat per il corpo della forma e ITextFrameFormat.ThreeDFormat per il testo.
Gli effetti 3D appariranno quando si esporta in immagini, PDF, HTML o frame video?
Sì. Aspose.Slides rende gli effetti 3D quando produce immagini delle diapositive, output PDF, output HTML e frame usati per la conversione video. L’output esportato contiene l’aspetto renderizzato, non un oggetto 3D modificabile.
Posso leggere i valori 3D finali dopo che sono state applicate le impostazioni di eredità e del tema?
Sì. Usa le API di formattazione effective descritte nelle proprietà effective della forma per leggere la telecamera finale, il rig luce, la smussatura e i valori 3D correlati.