Présentation 3D
Vue d’ensemble
Depuis Aspose.Slides Java 20.9, il est possible de créer des 3D dans les présentations. PowerPoint 3D est un moyen de donner vie aux présentations. Montrez des objets du monde réel avec une présentation 3D, démontrez le modèle 3D de votre projet d’entreprise futur, le modèle 3D du bâtiment ou de son intérieur, le modèle 3D d’un personnage de jeu, ou simplement une représentation 3D de vos données.
Les modèles 3D PowerPoint peuvent être créés à partir de formes 2D, en appliquant des effets tels que : rotation 3D, profondeur 3D et extrusion, dégradé 3D, texte 3D, etc. La liste des fonctionnalités 3D appliquées aux formes peut être trouvée dans la classe ThreeDFormat. L’instance de la classe peut être obtenue par :
- Shape.getThreeDFormat() méthode pour créer un modèle 3D PowerPoint.
- TextFrameFormat.getThreeDFormat() méthode pour créer un texte 3D (WordArt).
Tous les effets implémentés dans ThreeDFormat peuvent être utilisés pour les formes et le texte. Jetons un coup d’œil rapide aux principales méthodes de la classe ThreeDFormat. Dans l’exemple suivant, nous créons une forme rectangulaire 2D avec un texte dessus. En obtenant la vue de la caméra sur la forme, nous changeons sa rotation et la faisons ressembler à un modèle 3D. En réglant une lumière plate et sa direction vers le haut du modèle 3D, nous apportons plus de volume au modèle. Des matériaux changés, une hauteur d’extrusion et une couleur rendent le modèle 3D plus vivant.
$imageScale = 2;
$presentation = new Presentation();
$slide = $presentation->getSlides()->get_Item(0);
$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->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(java("java.awt.Color")->BLUE);
$thumbnail = $slide->getImage($imageScale, $imageScale);
$thumbnail->save("sample_3d.png", ImageFormat::Png);
$thumbnail->dispose();
$presentation->save("sandbox_3d.pptx", SaveFormat::Pptx);
$presentation->dispose();
Voici le modèle 3D résultant :
Rotation 3D
La rotation du modèle 3D dans PowerPoint peut être effectuée via le menu :
Pour faire pivoter le modèle 3D avec l’API Aspose.Slides, utilisez IThreeDFormat.getCamera() méthode, définissez la rotation de la caméra par rapport à la forme 3D :
$shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 200, 150, 200, 200);
$shape->getThreeDFormat()->getCamera()->setRotation(20, 30, 40);
// ... définir d'autres paramètres de scène 3D
$thumbnail = $slide->getImage($imageScale, $imageScale);
$thumbnail->save("sample_3d.png", ImageFormat::Png);
$thumbnail->dispose();
Profondeur et Extrusion 3D
IThreeDFormat.getExtrusionHeight() et IThreeDFormat.getExtrusionColor() méthodes sont utilisées pour créer une extrusion sur une forme :
$shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 200, 150, 200, 200);
$shape->getThreeDFormat()->getCamera()->setRotation(20, 30, 40);
$shape->getThreeDFormat()->setExtrusionHeight(100);
$shape->getThreeDFormat()->getExtrusionColor()->setColor(new java("java.awt.Color", 128, 0, 128));
# ... définir d'autres paramètres de scène 3D
$thumbnail = $slide->getImage($imageScale, $imageScale);
$thumbnail->save("sample_3d.png", ImageFormat::Png);
$thumbnail->dispose();
Dans PowerPoint, la profondeur de la forme est réglée via :
Dégradé 3D
Le dégradé 3D peut apporter plus de volume à la forme 3D PowerPoint :
$imageScale = 2;
$presentation = new Presentation();
$slide = $presentation->getSlides()->get_Item(0);
$shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 200, 150, 250, 250);
$shape->getTextFrame()->setText("3D");
$shape->getTextFrame()->getParagraphs()->get_Item(0)->getParagraphFormat()->getDefaultPortionFormat()->setFontHeight(64);
$shape->getFillFormat()->setFillType(FillType::Gradient);
$shape->getFillFormat()->getGradientFormat()->getGradientStops()->add(0, java("java.awt.Color")->BLUE);
$shape->getFillFormat()->getGradientFormat()->getGradientStops()->add(100, java("java.awt.Color")->ORANGE);
$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()->setExtrusionHeight(150);
$shape->getThreeDFormat()->getExtrusionColor()->setColor(new java("java.awt.Color", 255, 140, 0));
$thumbnail = $slide->getImage($imageScale, $imageScale);
$thumbnail->save("sample_3d.png", ImageFormat::Png);
$thumbnail->dispose();
$presentation->dispose();
Voici à quoi cela ressemble :
Vous pouvez également créer un dégradé d’image :
$shape->getFillFormat()->setFillType(FillType::Picture);
$image = Images->fromFile("image.png");
$picture = $presentation->getImages()->addImage($image);
$image->dispose();
$shape->getFillFormat()->getPictureFillFormat()->getPicture()->setImage($picture);
$shape->getFillFormat()->getPictureFillFormat()->setPictureFillMode(PictureFillMode->Stretch);
# ... configurer 3D : shape.ThreeDFormat.Camera, shape.ThreeDFormat.LightRig, shape.ThreeDFormat.Extrusion* propriétés
$thumbnail = $slide->getImage($imageScale, $imageScale);
$thumbnail->save("sample_3d.png", ImageFormat::Png);
$thumbnail->dispose();
Voici le résultat :
Texte 3D (WordArt)
Pour créer un texte 3D (WordArt), faites comme suit :
$imageScale = 2;
$presentation = new Presentation();
$slide = $presentation->getSlides()->get_Item(0);
$shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 200, 150, 200, 200);
$shape->getFillFormat()->setFillType(FillType::NoFill);
$shape->getLineFormat()->getFillFormat()->setFillType(FillType::NoFill);
$shape->getTextFrame()->setText("Texte 3D");
$portion = $shape->getTextFrame()->getParagraphs()->get_Item(0)->getPortions()->get_Item(0);
$portion->getPortionFormat()->getFillFormat()->setFillType(FillType::Pattern);
$portion->getPortionFormat()->getFillFormat()->getPatternFormat()->getForeColor()->setColor(new java("java.awt.Color", 255, 140, 0));
$portion->getPortionFormat()->getFillFormat()->getPatternFormat()->getBackColor()->setColor(java("java.awt.Color")->WHITE);
$portion->getPortionFormat()->getFillFormat()->getPatternFormat()->setPatternStyle(PatternStyle::LargeGrid);
$shape->getTextFrame()->getParagraphs()->get_Item(0)->getParagraphFormat()->getDefaultPortionFormat()->setFontHeight(128);
$textFrameFormat = $shape->getTextFrame()->getTextFrameFormat();
# configurer l'effet de transformation "Arc vers le haut"
$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);
$thumbnail = $slide->getImage($imageScale, $imageScale);
$thumbnail->save("text3d.png", ImageFormat::Png);
$thumbnail->dispose();
$presentation->save("text3d.pptx", SaveFormat::Pptx);
$presentation->dispose();
Voici le résultat :
Non supporté - À venir
Les fonctionnalités 3D suivantes de PowerPoint ne sont pas encore prises en charge :
- Biseau
- Matériau
- Contour
- Éclairage