3Dプレゼンテーション
概要
Aspose.Slides 20.9以降、PowerPointの3Dモデルを作成および変更することが可能です。これは、2Dシェイプに一連の3D効果を追加することで実現できます。シェイプにカメラビューを作成することで、軸に沿って回転させることができます。シェイプに押し出しや深さを作成すると、2Dシェイプを3Dモデルに変換できます。3Dシェイプに光の効果を設定したり、マテリアルを変更することで、よりリアルなルックにすることができます。3Dモデルの色を3Dグラデーションに変更したり、シェイプの輪郭を修正したり、ベベルを追加することで、3Dモデルによりボリューム感を持たせることができます。すべての3D効果は、PowerPointの3Dモデルとテキストの両方に適用できます。
まず、上記のすべての機能を含む3Dモデル作成のサンプルを見てみましょう:
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
auto imageScale = 2;
auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 200.0f, 150.0f, 200.0f, 200.0f);
shape->get_TextFrame()->set_Text(u"3D");
shape->get_TextFrame()->get_Paragraphs()->idx_get(0)->get_ParagraphFormat()->get_DefaultPortionFormat()->set_FontHeight(64.0f);
shape->get_ThreeDFormat()->get_Camera()->set_CameraType(CameraPresetType::OrthographicFront);
shape->get_ThreeDFormat()->get_Camera()->SetRotation(20.0f, 30.0f, 40.0f);
shape->get_ThreeDFormat()->get_LightRig()->set_LightType(LightRigPresetType::ThreePt);
shape->get_ThreeDFormat()->get_LightRig()->set_Direction(LightingDirection::Top);
shape->get_ThreeDFormat()->set_Material(MaterialPresetType::Matte);
shape->get_ThreeDFormat()->set_ExtrusionHeight(100);
shape->get_ThreeDFormat()->get_ExtrusionColor()->set_Color(System::Drawing::Color::get_Blue());
auto thumbnail = slide->GetImage(imageScale, imageScale);
thumbnail->Save(u"sample_3d.png");
thumbnail->Dispose();
presentation->Save(u"sandbox_3d.pptx", Export::SaveFormat::Pptx);
presentation->Dispose();
作成されたPowerPointの3Dモデル:
3D回転
PowerPointのシェイプ回転は、次の手段で利用可能です:
PowerPointの3Dモデルを回転するには、シェイプにカメラビューを作成する必要があります。これは、IThreeDFormat.get_Camera()メソッドで行います。回転メソッドは、カメラクラスから呼び出され、カメラを回転させるように見えます。実際には、シェイプに対してカメラを回転させると、3D平面上のシェイプも回転します。
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 200.0f, 150.0f, 200.0f, 200.0f);
shape->get_ThreeDFormat()->get_Camera()->SetRotation(20.0f, 30.0f, 40.0f);
// ... 他の3Dシーンパラメータを設定
auto thumbnail = slide->GetImage(imageScale, imageScale);
thumbnail->Save(u"sample_3d.png");
thumbnail->Dispose();
3D深さと押し出し
PowerPointの3Dモデルに深さと押し出しを追加するには、IThreeDFormat.set_ExtrusionHeight()メソッドを使用します。 押し出しの色を変更するには、IThreeDFormat.get_ExtrusionColor()メソッドを使用します:
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 200.0f, 150.0f, 200.0f, 200.0f);
shape->get_ThreeDFormat()->get_Camera()->SetRotation(20.0f, 30.0f, 40.0f);
shape->get_ThreeDFormat()->set_ExtrusionHeight(100.0);
shape->get_ThreeDFormat()->get_ExtrusionColor()->set_Color(System::Drawing::Color::get_Purple());
// ... 他の3Dシーンパラメータを設定
auto thumbnail = slide->GetImage(imageScale, imageScale);
thumbnail->Save(u"sample_3d.png");
thumbnail->Dispose();
PowerPointの深さメニュー:
3Dグラデーション
PowerPointの3Dモデルに3Dグラデーションを描画するには、Shape.get_FillFormat().get_GradientFormat()メソッドを使用します:
using namespace Aspose::Slides;
auto imageScale = 2;
auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 200.0f, 150.0f, 250.0f, 250.0f);
shape->get_TextFrame()->set_Text(u"3Dグラデーション");
shape->get_TextFrame()->get_Paragraph(0)->get_ParagraphFormat()->get_DefaultPortionFormat()->set_FontHeight(64.0f);
shape->get_FillFormat()->set_FillType(FillType::Gradient);
shape->get_FillFormat()->get_GradientFormat()->get_GradientStops()->Add(0, System::Drawing::Color::get_Blue());
shape->get_FillFormat()->get_GradientFormat()->get_GradientStops()->Add(100.0f, System::Drawing::Color::get_Orange());
shape->get_ThreeDFormat()->get_Camera()->set_CameraType(CameraPresetType::OrthographicFront);
shape->get_ThreeDFormat()->get_Camera()->SetRotation(10.0f, 20.0f, 30.0f);
shape->get_ThreeDFormat()->get_LightRig()->set_LightType(LightRigPresetType::Flat);
shape->get_ThreeDFormat()->get_LightRig()->set_Direction(LightingDirection::Top);
shape->get_ThreeDFormat()->set_ExtrusionHeight(150.0);
shape->get_ThreeDFormat()->get_ExtrusionColor()->set_Color(System::Drawing::Color::get_DarkOrange());
auto thumbnail = slide->GetImage(imageScale, imageScale);
thumbnail->Save(u"sample_3d.png");
thumbnail->Dispose();
3Dグラデーションのある3Dモデル:
画像グラデーションを作成するには、Shape.get_FillFormat().get_PictureFillFormat()メソッドを使用します:
auto imageData = System::IO::File::ReadAllBytes(u"image.jpg");
auto image = presentation->get_Images()->AddImage(imageData);
shape->get_FillFormat()->set_FillType(FillType::Picture);
shape->get_FillFormat()->get_PictureFillFormat()->get_Picture()->set_Image(image);
shape->get_FillFormat()->get_PictureFillFormat()->set_PictureFillMode(PictureFillMode::Stretch);
// .. 3Dの設定:カメラ、LightRig、押し出し
auto thumbnail = slide->GetImage(imageScale, imageScale);
thumbnail->Save(u"sample_3d.png");
thumbnail->Dispose();
画像グラデーションのある3Dモデル:
3Dテキスト(WordArt)
回転、押し出し、光、グラデーションをテキストに適用し、3Dテキスト(WordArt)として作成するには、IAutoShape.get_TextFrame().get_TextFrameFormat().get_ThreeDFormat()メソッドにアクセスする必要があります:
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
auto imageScale = 2;
auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 200.0f, 150.0f, 250.0f, 250.0f);
shape->get_FillFormat()->set_FillType(FillType::NoFill);
shape->get_LineFormat()->get_FillFormat()->set_FillType(FillType::NoFill);
shape->get_TextFrame()->set_Text(u"3Dテキスト");
auto portion = shape->get_TextFrame()->get_Paragraph(0)->get_Portion(0);
portion->get_PortionFormat()->get_FillFormat()->set_FillType(FillType::Pattern);
portion->get_PortionFormat()->get_FillFormat()->get_PatternFormat()->get_ForeColor()->set_Color(System::Drawing::Color::get_DarkOrange());
portion->get_PortionFormat()->get_FillFormat()->get_PatternFormat()->get_BackColor()->set_Color(System::Drawing::Color::get_White());
portion->get_PortionFormat()->get_FillFormat()->get_PatternFormat()->set_PatternStyle(PatternStyle::LargeGrid);
shape->get_TextFrame()->get_Paragraph(0)->get_ParagraphFormat()->get_DefaultPortionFormat()->set_FontHeight(128.0f);
auto textFrameFormat = shape->get_TextFrame()->get_TextFrameFormat();
// "アーチアップ" WordArt変換効果を設定
textFrameFormat->set_Transform(TextShapeType::ArchUp);
textFrameFormat->get_ThreeDFormat()->set_ExtrusionHeight(3.5);
textFrameFormat->get_ThreeDFormat()->set_Depth(3.0);
textFrameFormat->get_ThreeDFormat()->set_Material(MaterialPresetType::Plastic);
textFrameFormat->get_ThreeDFormat()->get_LightRig()->set_Direction(LightingDirection::Top);
textFrameFormat->get_ThreeDFormat()->get_LightRig()->set_LightType(LightRigPresetType::Balanced);
textFrameFormat->get_ThreeDFormat()->get_LightRig()->SetRotation(0.0f, 0.0f, 40.0f);
textFrame->get_TextFrameFormat()->get_ThreeDFormat()->get_Camera()->set_CameraType(CameraPresetType::PerspectiveContrastingRightFacing);
auto thumbnail = slide->GetImage(imageScale, imageScale);
thumbnail->Save(u"text3d.png");
thumbnail->Dispose();
presentation->Save(u"text3d.pptx", SaveFormat::Pptx);
presentation->Dispose();
3Dテキスト(WordArt)の例:
サポートされていない - 近日公開
以下のPowerPointの3D機能はまだサポートされていません:
- ベベル
- マテリアル
- 輪郭
- 照明
私たちは3Dエンジンの改善を続けており、これらの機能は今後の実装の対象です。