3D-Effekte in Präsentationen auf Android erstellen
Übersicht
Aspose.Slides für Android über Java kann 3D‑Formatierungen im PowerPoint‑Stil 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 sowie 3D‑Text.
Konzepte der 3D‑Formatierung
Verwenden Sie die Methode IShape.getThreeDFormat , um einer Form 3D‑Formatierungen zuzuweisen. Die Methode gibt ein IThreeDFormat zurück, das die 3D‑Szene für diese Form steuert.
Für Text verwenden Sie die Methode ITextFrameFormat.getThreeDFormat . Diese wendet 3D‑Formatierung auf den Textrahmen statt auf den Formkörper an.
Die wichtigsten API‑Mitglieder sind:
| API‑Mitglied | Was es steuert | Wann es zu verwenden ist |
|---|---|---|
| getCamera | Ansichtspunkt, voreingestellter Kameratyp, Drehung, Zoom und Perspektive. | Drehen Sie das Objekt im 3D‑Raum oder passen Sie es an eine PowerPoint‑3D‑Drehungs‑Voreinstellung an. |
| getLightRig | Lichtvoreinstellung, Richtung und Lichtrotation. | Ändern Sie, wie Lichtreflexe und Schatten auf der 3D‑Oberfläche erscheinen. |
| getMaterial und setMaterial | Oberflächenmaterial, z. B. flach, matt, Kunststoff oder Metall. | Lassen Sie dieselbe Geometrie flacher, weicher, glänzender oder metallisch wirken. |
| getExtrusionHeight und setExtrusionHeight | Wie weit die Form von ihrer Vorderseite nach hinten ausgedehnt ist. | Verwandeln Sie eine flache Form in ein sichtbar dickeres 3D‑Objekt. |
| getExtrusionColor | Farbe der extrudierten Seiten. | Machen Sie die Tiefe sichtbar oder koordinieren Sie die Seitenfarbe mit der Vorderseitenfüllung. |
| getDepth und setDepth | Zusätzliche 3D‑Tiefe, die von PowerPoint‑3D‑Formatierungen verwendet wird. | Feinabstimmung der Tiefe für Formen oder Text, insbesondere in Kombination mit Abschrägungs‑ und Materialeinstellungen. |
| getBevelTop und getBevelBottom | Erhobene oder abgerundete Kanten an Vorder‑ und Rückseite. | Fügen Sie eine weiche oder geformte Kante statt einer scharfen flachen Fläche hinzu. |
| getContourColor, getContourWidth, und setContourWidth | Umrandung um das 3D‑Objekt. | Betonen Sie die Objektgrenze in der gerenderten Ausgabe. |
Erstellen einer 3D‑Form
Eine Form benötigt in der Regel vier Arten von Einstellungen, bevor sie überzeugend 3D aussieht:
- Kameraeinstellungen, da die Standard‑Frontalansicht die Extrusion verbergen kann.
- Lichteinstellungen, da Beleuchtung die Flächen und Seiten sichtbar macht.
- Materialeinstellungen, da die Oberfläche beeinflusst, wie Licht gerendert wird.
- Extrusions‑ oder Tiefeneinstellungen, weil eine flache Form Dicke benötigt.
Das folgende Beispiel erstellt ein Rechteck, fügt Text zu seiner Vorderseite hinzu, wendet 3D‑Formatierung an, speichert die Präsentation als PPTX und rendert die Folie als PNG‑Bild.
final float imageScale = 2;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 150, 200, 200);
shape.getTextFrame().setText("3D");
shape.getTextFrame().getParagraphs().get_Item(0).getParagraphFormat().getDefaultPortionFormat().setFontHeight(64);
shape.getFillFormat().setFillType(FillType.Solid);
shape.getFillFormat().getSolidFillColor().setColor(Color.rgb(100, 149, 237));
shape.getThreeDFormat().getCamera().setCameraType(CameraPresetType.OrthographicFront);
shape.getThreeDFormat().getCamera().setRotation(20, 30, 40);
shape.getThreeDFormat().getLightRig().setLightType(LightRigPresetType.Flat);
shape.getThreeDFormat().getLightRig().setDirection(LightingDirection.Top);
shape.getThreeDFormat().setMaterial(MaterialPresetType.Flat);
shape.getThreeDFormat().setExtrusionHeight(100);
shape.getThreeDFormat().getExtrusionColor().setColor(Color.BLUE);
IImage thumbnail = slide.getImage(imageScale, imageScale);
try {
thumbnail.save("shape_3d.png", ImageFormat.Png);
} finally {
thumbnail.dispose();
}
presentation.save("shape_3d.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Das gerenderte Folienbild zeigt das Rechteck als dicken 3D‑Block:

Eine Form mit der Kamera drehen
In PowerPoint wird die 3D‑Drehung im Bereich 3‑D‑Drehung konfiguriert. Die X‑, Y‑ und Z‑Drehwerte entsprechen der Drehung, die Sie über die Kamera‑API festlegen.

Verwenden Sie in Aspose.Slides die Methode IThreeDFormat.getCamera :
shape.getThreeDFormat().getCamera().setCameraType(CameraPresetType.OrthographicFront);
shape.getThreeDFormat().getCamera().setRotation(20, 30, 40);
Verwenden Sie die Kamera, wenn Sie die Blickrichtung des Betrachters auf das Objekt ändern müssen. Sie verändert nicht die 2D‑Formgeometrie auf der Folie. Sie ändert den 3D‑Blickpunkt, den PowerPoint und Aspose.Slides beim Rendern verwenden.
Extrusion und Tiefe hinzufügen
Extrusion lässt eine Form dicker erscheinen, indem sie hinter der Vorderseite erweitert wird. In PowerPoint legt die Tiefen‑Steuerung diese sichtbare Dicke fest, und die Farb‑Steuerung bestimmt die Farbe der Seitenflächen.

Setzen Sie IThreeDFormat.setExtrusionHeight für die Dicke und IThreeDFormat.getExtrusionColor für die Seitenfarbe:
shape.getThreeDFormat().getCamera().setRotation(20, 30, 40);
shape.getThreeDFormat().setExtrusionHeight(100);
shape.getThreeDFormat().getExtrusionColor().setColor(Color.rgb(128, 0, 128));
Verwenden Sie IThreeDFormat.setDepth, wenn Sie den PowerPoint‑Tiefenwert direkt nutzen oder die Tiefe mit Abschrägung, Material und Texteffekten kombinieren möchten. In vielen Form‑Szenarien ist setExtrusionHeight die klarere 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 die Vorderseite mit einer Vollfarbe, einem Farbverlauf, einem Muster oder einer Bildfüllung versehen und dennoch dieselben Kamera‑, Licht‑, Material‑ und Extrusions‑Einstellungen verwenden.
Dieses Beispiel wendet einen Farbverlauf auf die Form und eine dunklere Extrusionsfarbe auf die Seiten an:
final float imageScale = 2;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 150, 250, 250);
shape.getTextFrame().setText("3D Gradient");
shape.getTextFrame().getParagraphs().get_Item(0).getParagraphFormat().getDefaultPortionFormat().setFontHeight(64);
shape.getFillFormat().setFillType(FillType.Gradient);
shape.getFillFormat().getGradientFormat().getGradientStops().add(0, Color.BLUE);
shape.getFillFormat().getGradientFormat().getGradientStops().add(100, Color.rgb(255, 165, 0));
shape.getThreeDFormat().getCamera().setCameraType(CameraPresetType.OrthographicFront);
shape.getThreeDFormat().getCamera().setRotation(10, 20, 30);
shape.getThreeDFormat().getLightRig().setLightType(LightRigPresetType.Flat);
shape.getThreeDFormat().getLightRig().setDirection(LightingDirection.Top);
shape.getThreeDFormat().setMaterial(MaterialPresetType.Flat);
shape.getThreeDFormat().setExtrusionHeight(150);
shape.getThreeDFormat().getExtrusionColor().setColor(Color.rgb(255, 140, 0));
IImage thumbnail = slide.getImage(imageScale, imageScale);
try {
thumbnail.save("gradient_3d.png", ImageFormat.Png);
} finally {
thumbnail.dispose();
}
} finally {
presentation.dispose();
}

Um stattdessen eine Bildfüllung zu verwenden, fügen Sie das Bild zur Präsentation hinzu und weisen es der Formfüllung zu:
IPPImage image;
try (FileInputStream imageStream = new FileInputStream("image.png")) {
image = presentation.getImages().addImage(imageStream);
}
shape.getFillFormat().setFillType(FillType.Picture);
shape.getFillFormat().getPictureFillFormat().getPicture().setImage(image);
shape.getFillFormat().getPictureFillFormat().setPictureFillMode(PictureFillMode.Stretch);
shape.getThreeDFormat().getCamera().setRotation(10, 20, 30);
shape.getThreeDFormat().setExtrusionHeight(150);
shape.getThreeDFormat().getExtrusionColor().setColor(Color.rgb(255, 140, 0));

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 Musterausfüllung, wendet eine WordArt‑Transformation an und konfiguriert 3D‑Einstellungen auf ITextFrameFormat :
final float imageScale = 2;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 150, 250, 250);
shape.getFillFormat().setFillType(FillType.NoFill);
shape.getLineFormat().getFillFormat().setFillType(FillType.NoFill);
shape.getTextFrame().setText("3D Text");
IPortion portion = shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0);
portion.getPortionFormat().getFillFormat().setFillType(FillType.Pattern);
portion.getPortionFormat().getFillFormat().getPatternFormat().getForeColor().setColor(Color.rgb(255, 140, 0));
portion.getPortionFormat().getFillFormat().getPatternFormat().getBackColor().setColor(Color.WHITE);
portion.getPortionFormat().getFillFormat().getPatternFormat().setPatternStyle(PatternStyle.LargeGrid);
shape.getTextFrame().getParagraphs().get_Item(0).getParagraphFormat().getDefaultPortionFormat().setFontHeight(128);
ITextFrameFormat textFrameFormat = shape.getTextFrame().getTextFrameFormat();
textFrameFormat.setTransform(TextShapeType.ArchUp);
textFrameFormat.getThreeDFormat().setExtrusionHeight(3.5);
textFrameFormat.getThreeDFormat().setDepth(3);
textFrameFormat.getThreeDFormat().setMaterial(MaterialPresetType.Plastic);
textFrameFormat.getThreeDFormat().getLightRig().setDirection(LightingDirection.Top);
textFrameFormat.getThreeDFormat().getLightRig().setLightType(LightRigPresetType.Balanced);
textFrameFormat.getThreeDFormat().getLightRig().setRotation(0, 0, 40);
textFrameFormat.getThreeDFormat().getCamera().setCameraType(CameraPresetType.PerspectiveContrastingRightFacing);
IImage thumbnail = slide.getImage(imageScale, imageScale);
try {
thumbnail.save("text_3d.png", ImageFormat.Png);
} finally {
thumbnail.dispose();
}
presentation.save("text_3d.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}

Export‑ und Render‑Verhalten
Aspose.Slides erhält die 3D‑Formatierung beim Speichern in PowerPoint‑Formate wie PPTX. Beim Rendern oder Exportieren in feste Layout‑Formate wird die 3D‑Szene rasterisiert bzw. in die Ausgabe als 2D‑Ergebnis gezeichnet. Dies gilt, wenn Sie Folien zu PNG rendern, zu PDF exportieren, zu HTML exportieren oder Frames für video conversion erzeugen.
Beachten Sie folgende Punkte:
- Exportierte Bilder und PDFs sind nicht interaktiv. Das Objekt kann nach dem Export nicht vom Betrachter gedreht werden.
- Das endgültige Aussehen 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 effective shape properties.
- Einige Ausgabformate können nicht editierbare PowerPoint‑3D‑Formatierungen speichern. In diesen Formaten wird das visuelle Ergebnis gerendert, anstatt als editierbare 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‑Szenen, die ein Betrachter drehen könnte. In PPTX bleibt die 3D‑Formatierung in PowerPoint editierbar, 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, z. B. Drehung, Extrusion, Abschrägung, Beleuchtung und Material. Dieser Artikel behandelt 3D‑Effekte.
Welche Einstellungen sind für eine sichtbare 3D‑Form erforderlich?
Mindestens sollte eine Kameradrehung und entweder Extrusion oder Tiefe gesetzt werden. In der Praxis sollten zudem ein Licht‑Rig und Material gesetzt werden, damit die gerenderten Flächen klare Highlights und Schatten besitzen.
Kann ich 3D‑Effekte sowohl auf Formen als auch auf Text anwenden?
Ja. Verwenden Sie IShape.getThreeDFormat für den Formkörper und ITextFrameFormat.getThreeDFormat für den 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 Videokonvertierung erzeugt werden. Die exportierte Ausgabe enthält das gerenderte Aussehen, nicht ein editierbares 3D‑Objekt.
Kann ich die endgültigen 3D‑Werte nach Anwendung von Vererbung und Themainstellungen auslesen?
Ja. Verwenden Sie die effektiven Format‑APIs, die in Shape Effective Properties beschrieben sind, um die finalen Kamera‑, Licht‑Rig‑, Abschrägungs‑ und zugehörigen 3D‑Werte zu lesen.