3D-Effekte in Präsentationen mit Python erstellen
Überblick
Aspose.Slides für Python via .NET kann PowerPoint‑ähnliche 3D‑Formatierungen für Formen und Text erstellen, bearbeiten, erhalten und rendern. Dieser Artikel behandelt 3D‑Effekte wie Drehung, Extrusion, Abschrägungen, Beleuchtung, Material, Farbverlauf‑ oder Bildfüllungen und 3D‑Text.
3D-Formatierungskonzepte
Verwenden Sie die Eigenschaft Shape.three_d_format, um einer Form eine 3D‑Formatierung zuzuweisen. Die Eigenschaft gibt ThreeDFormat zurück, das die 3D‑Szene für diese Form steuert.
Für Text verwenden Sie die Eigenschaft TextFrameFormat.three_d_format. Diese wendet die 3D‑Formatierung auf den Textrahmen anstatt auf den Formkörper an.
Die wichtigsten Eigenschaften sind:
| Eigenschaft | Was es steuert | Wann zu verwenden |
|---|---|---|
| camera | Sichtpunkt, voreingestellter Kameratyp, Drehung, Zoom und Perspektive. | Drehen Sie das Objekt im 3D‑Raum oder passen Sie es an eine PowerPoint‑3D‑Drehungsvoreinstellung an. |
| light_rig | Lichtvoreinstellung, Richtung und Lichtdrehung. | Ändern Sie, wie Highlights und Schatten auf der 3D‑Oberfläche erscheinen. |
| material | Oberflächenmaterial, wie flach, matt, Kunststoff oder Metall. | Lassen Sie dieselbe Geometrie flacher, weicher, glänzender oder metallisch wirken. |
| extrusion_height | Wie weit die Form von ihrer Vorderseite nach hinten ausgedehnt ist. | Verwandeln Sie eine flache Form in ein deutlich dickes 3D‑Objekt. |
| extrusion_color | Farbe der extrudierten Seiten. | Machen Sie die Tiefe sichtbar oder koordinieren Sie die Seitenfarbe mit der Vordergrundfüllung. |
| depth | Zusätzliche 3D‑Tiefe, die von PowerPoint‑3D‑Formatierung verwendet wird. | Feinabstimmung der Tiefe für Formen oder Text, besonders in Kombination mit Abschrägung‑ und Materialeinstellungen. |
| bevel_top und bevel_bottom | Erhöhte oder abgerundete Kanten an den Vorder‑ und Rückseiten. | Fügen Sie einen weichen oder geformten Rand statt einer scharfen flachen Fläche hinzu. |
| contour_color und contour_width | Umriss um das 3D‑Objekt. | Betonen Sie die Objektgrenze in der gerenderten Ausgabe. |
Erstellen einer 3D‑Form
Eine Form benötigt normalerweise vier Arten von Einstellungen, bevor sie überzeugend 3D wirkt:
- Kameraeinstellungen, da die standardmäßige Vorderansicht die Extrusion verdecken kann.
- Lichteinstellungen, weil die Beleuchtung die Flächen und Seiten sichtbar macht.
- Materialeinstellungen, weil die Oberfläche beeinflusst, wie das Licht gerendert wird.
- Extrusions‑ oder Tiefe‑Einstellungen, weil eine flache Form Dicke benötigt.
Das folgende Beispiel erstellt ein Rechteck, fügt seiner Vorderseite Text hinzu, wendet 3D‑Formatierung an, speichert die Präsentation als PPTX und rendert die Folie zu einem PNG‑Bild.
import aspose.pydrawing as drawing
import aspose.slides as slides
image_scale = 2
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 200, 150, 200, 200)
shape.text_frame.text = "3D"
shape.text_frame.paragraphs[0].paragraph_format.default_portion_format.font_height = 64
shape.fill_format.fill_type = slides.FillType.SOLID
shape.fill_format.solid_fill_color.color = drawing.Color.cornflower_blue
shape.three_d_format.camera.camera_type = slides.CameraPresetType.ORTHOGRAPHIC_FRONT
shape.three_d_format.camera.set_rotation(20, 30, 40)
shape.three_d_format.light_rig.light_type = slides.LightRigPresetType.FLAT
shape.three_d_format.light_rig.direction = slides.LightingDirection.TOP
shape.three_d_format.material = slides.MaterialPresetType.FLAT
shape.three_d_format.extrusion_height = 100
shape.three_d_format.extrusion_color.color = drawing.Color.blue
with slide.get_image(image_scale, image_scale) as thumbnail:
thumbnail.save("shape_3d.png")
presentation.save("shape_3d.pptx", slides.export.SaveFormat.PPTX)
Das gerenderte Folienbild zeigt das Rechteck als dicken 3D‑Block:

Drehen einer Form mit der Kamera
In PowerPoint wird die 3D‑Drehung über das Fenster 3‑D‑Drehung konfiguriert. Die X‑, Y‑ und Z‑Drehwerte entsprechen der Drehung, die Sie über die Kamera‑API festlegen.

In Aspose.Slides setzen Sie den Kameratyp und die Drehung über ThreeDFormat.camera:
shape.three_d_format.camera.camera_type = slides.CameraPresetType.ORTHOGRAPHIC_FRONT
shape.three_d_format.camera.set_rotation(20, 30, 40)
Verwenden Sie die Kamera, wenn Sie ändern müssen, wie der Betrachter das Objekt sieht. Sie verändert nicht die 2D‑Formgeometrie auf der Folie. Sie ändert die 3D‑Ansicht, die von PowerPoint und von Aspose.Slides beim Rendern verwendet wird.
Extrusion und Tiefe hinzufügen
Extrusion lässt eine Form dick wirken, indem sie hinter der Vorderfläche verlängert wird. In PowerPoint legt die Tiefen‑Steuerung diese sichtbare Dicke fest, und die Farb‑Steuerung bestimmt die Farbe der Seitenflächen.

Setzen Sie ThreeDFormat.extrusion_height für die Dicke und ThreeDFormat.extrusion_color für die Seitenfarbe:
shape.three_d_format.camera.set_rotation(20, 30, 40)
shape.three_d_format.extrusion_height = 100
shape.three_d_format.extrusion_color.color = drawing.Color.purple
Verwenden Sie ThreeDFormat.depth, wenn Sie direkt mit dem PowerPoint‑Tiefenwert arbeiten oder Tiefe mit Abschrägung, Material und Texteffekten kombinieren müssen. In vielen Form‑Szenarien ist ThreeDFormat.extrusion_height die eindeutigere Einstellung, da sie die sichtbare Extrusion direkt ausdrückt.
Verwenden von Farbverlauf‑ oder Bildfüllungen mit 3D‑Effekten
3D‑Formatierung ist unabhängig von der Formfüllung. Sie können eine Vollfarbe, einen Farbverlauf, ein Muster oder eine Bildfüllung auf die Vorderfläche anwenden und dennoch dieselben Kamera‑, Licht‑, Material‑ und Extrusions‑Einstellungen verwenden.
Dieses Beispiel wendet eine Farbverlauf‑Füllung auf die Form und eine dunklere Extrusionsfarbe auf die Seiten an:
import aspose.pydrawing as drawing
import aspose.slides as slides
image_scale = 2
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 200, 150, 250, 250)
shape.text_frame.text = "3D Gradient"
shape.text_frame.paragraphs[0].paragraph_format.default_portion_format.font_height = 64
shape.fill_format.fill_type = slides.FillType.GRADIENT
shape.fill_format.gradient_format.gradient_stops.add(0, drawing.Color.blue)
shape.fill_format.gradient_format.gradient_stops.add(100, drawing.Color.orange)
shape.three_d_format.camera.camera_type = slides.CameraPresetType.ORTHOGRAPHIC_FRONT
shape.three_d_format.camera.set_rotation(10, 20, 30)
shape.three_d_format.light_rig.light_type = slides.LightRigPresetType.FLAT
shape.three_d_format.light_rig.direction = slides.LightingDirection.TOP
shape.three_d_format.material = slides.MaterialPresetType.FLAT
shape.three_d_format.extrusion_height = 150
shape.three_d_format.extrusion_color.color = drawing.Color.dark_orange
with slide.get_image(image_scale, image_scale) as thumbnail:
thumbnail.save("gradient_3d.png")
Das gerenderte Ergebnis behält den Farbverlauf auf der Vorderfläche bei und rendert die Extrusion separat:

Um stattdessen eine Bildfüllung zu verwenden, fügen Sie das Bild zur Präsentation hinzu und weisen es der Formfüllung zu:
with open("image.jpg", "rb") as image_file:
image_data = image_file.read()
image = presentation.images.add_image(image_data)
shape.fill_format.fill_type = slides.FillType.PICTURE
shape.fill_format.picture_fill_format.picture.image = image
shape.fill_format.picture_fill_format.picture_fill_mode = slides.PictureFillMode.STRETCH
shape.three_d_format.camera.set_rotation(10, 20, 30)
shape.three_d_format.extrusion_height = 150
shape.three_d_format.extrusion_color.color = drawing.Color.dark_orange
Das Bild wird auf der Vorderseite gerendert, während die Extrusion als 3D‑Seitenfläche gerendert wird:

3D‑Formatierung auf Text anwenden
Die 3D‑Formatierung einer Form wirkt auf den Formkörper. Die 3D‑Formatierung von Text wirkt auf den Textrahmen. Dies ist nützlich für WordArt‑ähnliche Effekte, bei denen die Buchstaben selbst Extrusion, Material, Beleuchtung und Kameraeinstellungen benötigen.
Das folgende Beispiel erstellt Text mit einer Musterfüllung, wendet eine WordArt‑Transformation an und konfiguriert 3D‑Einstellungen auf TextFrameFormat:
import aspose.pydrawing as drawing
import aspose.slides as slides
image_scale = 2
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 200, 150, 250, 250)
shape.fill_format.fill_type = slides.FillType.NO_FILL
shape.line_format.fill_format.fill_type = slides.FillType.NO_FILL
shape.text_frame.text = "3D Text"
portion = shape.text_frame.paragraphs[0].portions[0]
portion.portion_format.fill_format.fill_type = slides.FillType.PATTERN
portion.portion_format.fill_format.pattern_format.fore_color.color = drawing.Color.dark_orange
portion.portion_format.fill_format.pattern_format.back_color.color = drawing.Color.white
portion.portion_format.fill_format.pattern_format.pattern_style = slides.PatternStyle.LARGE_GRID
shape.text_frame.paragraphs[0].paragraph_format.default_portion_format.font_height = 128
text_frame_format = shape.text_frame.text_frame_format
text_frame_format.transform = slides.TextShapeType.ARCH_UP
text_frame_format.three_d_format.extrusion_height = 3.5
text_frame_format.three_d_format.depth = 3
text_frame_format.three_d_format.material = slides.MaterialPresetType.PLASTIC
text_frame_format.three_d_format.light_rig.direction = slides.LightingDirection.TOP
text_frame_format.three_d_format.light_rig.light_type = slides.LightRigPresetType.BALANCED
text_frame_format.three_d_format.light_rig.set_rotation(0, 0, 40)
text_frame_format.three_d_format.camera.camera_type = slides.CameraPresetType.PERSPECTIVE_CONTRASTING_RIGHT_FACING
with slide.get_image(image_scale, image_scale) as thumbnail:
thumbnail.save("text_3d.png")
presentation.save("text_3d.pptx", slides.export.SaveFormat.PPTX)
Der Text wird als gekrümmte, extrudierte 3D‑Beschriftung gerendert:

Export‑ und Renderverhalten
Aspose.Slides bewahrt 3D‑Formatierung beim Speichern in PowerPoint‑Formaten wie PPTX. Beim Rendern oder Exportieren in feste Layout‑Formate wird die 3D‑Szene rasterisiert oder als 2D‑Ergebnis in die Ausgabe gezeichnet. Das gilt, wenn Sie Folien zu PNG rendern, zu PDF exportieren, zu HTML exportieren oder Frames für die Video‑Konvertierung erzeugen.
- Exportierte Bilder und PDFs sind nicht interaktiv. Das Objekt kann nach dem Export nicht vom Betrachter gedreht werden.
- Das endgültige Erscheinungsbild hängt von der Kombination aus Kamera, Licht‑Rig, Material, Extrusion, Füllung und Folien‑Skalierung ab.
- Wenn Sie geerbte oder themenbasierte Formatierungswerte prüfen müssen, lesen Sie die effektiven Formeigenschaften.
- Einige Ausgabeformate können die bearbeitbare PowerPoint‑3D‑Formatierung nicht speichern. In diesen Formaten wird das visuelle Ergebnis gerendert, anstatt als bearbeitbare 3D‑Einstellungen erhalten zu bleiben.
FAQ
Kann Aspose.Slides interaktive 3D‑Präsentationen erstellen?
Aspose.Slides erstellt und rendert PowerPoint‑3D‑Effekte für Formen und Text. Es macht exportierte Bilder, PDFs oder HTML‑Seiten nicht zu interaktiven 3D‑Szenerien, die ein Betrachter drehen kann. In PPTX bleibt die 3D‑Formatierung in PowerPoint bearbeitbar, sofern das Format dies unterstützt.
Was ist der Unterschied zwischen einem 3D‑Modell und einem 3D‑Effekt?
Ein 3D‑Modell ist ein separates 3D‑Objekt, das in eine Präsentation eingefügt wird. Ein 3D‑Effekt ist eine Formatierung, die auf eine reguläre PowerPoint‑Form oder -Text angewendet wird, wie Drehung, Extrusion, Abschrägung, Beleuchtung und Material. Dieser Artikel behandelt 3D‑Effekte.
Welche Einstellungen sind für eine sichtbare 3D‑Form erforderlich?
Mindestens müssen Sie eine Kameradrehung sowie entweder Extrusion oder Tiefe festlegen. In der Praxis sollten Sie außerdem ein Licht‑Rig und ein Material setzen, damit die gerenderten Flächen klare Lichtreflexe und Schatten aufweisen.
Kann ich 3D‑Effekte sowohl auf Formen als auch auf Text anwenden?
Ja. Verwenden Sie Shape.three_d_format für den Formkörper und TextFrameFormat.three_d_format für Text.
Werden 3D‑Effekte beim Export in Bilder, PDF, HTML oder Video‑Frames angezeigt?
Ja. Aspose.Slides rendert 3D‑Effekte, wenn Folienbilder, PDF‑Ausgabe, HTML‑Ausgabe und Frames für die Video‑Konvertierung erzeugt werden. Die exportierte Ausgabe enthält das gerenderte Erscheinungsbild, nicht ein bearbeitbares 3D‑Objekt.
Kann ich die endgültigen 3D‑Werte nach Anwendung von Vererbung und Theme‑Einstellungen auslesen?
Ja. Verwenden Sie die effektiven Formatierungs‑APIs, die in Shape Effective Properties beschrieben sind, um die endgültigen Kamera‑, Licht‑Rig‑, Abschrägungs‑ und zugehörigen 3D‑Werte auszulesen.