3D hatások létrehozása prezentációkban C++ használatával

Áttekintés

Az Aspose.Slides for C++ képes 3D formázást létrehozni, szerkeszteni, megőrizni és megjeleníteni PowerPoint‑stílusú alakzatokra és szövegre. Ez a cikk a 3D hatásokat tárgyalja, például forgatás, kitüremkedés, lekerekítések, megvilágítás, anyag, színátmenetes vagy képes kitöltés, valamint 3D szöveg.

3D formázási fogalmak

Használja az IShape interfész get_ThreeDFormat metódusát a 3D formázás alkalmazásához egy alakzaton. A metódus egy IThreeDFormat objektumot ad vissza, amely az adott alakzat 3D jelenetét vezérli.

Szöveg esetén használja az ITextFrameFormat interfész get_ThreeDFormat metódusát. Ez a 3D formázást a szövegkeretre alkalmazza, nem az alakzat testére.

A legfontosabb metódusok:

Metódus Mit irányít Mikor használjuk
get_Camera Kamera nézetpont, előre beállított kamera típusa, forgatás, zoom és perspektíva. Forgassa az objektumot 3D térben vagy illessze egy PowerPoint 3D forgatás előre beállított értékéhez.
get_LightRig Fény előre beállított érték, irány és fényforgatás. Módosítsa, hogyan jelennek meg a fények és árnyékok a 3D felületen.
set_Material Felület anyaga, például lapos, matt, műanyag vagy fém. A geometria laposabbá, puhábbá, fényesebbé vagy fémesebbé tétele.
set_ExtrusionHeight Mennyi távolságra nyúlik ki a forma a frontális felületétől hátrafelé. Átalakít egy lapos alakzatot láthatóan vastag 3D objektummá.
get_ExtrusionColor Az extrudált oldalak színe. Láthatóvá teszi a mélységet vagy a színt egyezteti a frontális kitöltéssel.
set_Depth További 3D mélység, amelyet a PowerPoint 3D formázás használ. Finomhangolja a mélységet alakzatok vagy szöveg esetén, különösen a lekerekítés és anyag beállításokkal együtt.
get_BevelTop és get_BevelBottom Emelt vagy lekerekített élek a front és hátoldalon. Lágyabb vagy formázott élt ad a szúrós lapos felület helyett.
get_ContourColor és set_ContourWidth Körvonal a 3D objektum körül. Kiemeli az objektum határát a renderelt kimenetben.

3D alakzat létrehozása

Egy alakzathoz általában négyféle beállítás szükséges, hogy meggyőzően 3D‑nek tűnjön:

  • Kamera beállítások, mert az alapértelmezett elülső nézet elrejtheti az extrudálást.
  • Fény beállítások, mert a megvilágítás teszi olvashatóvá a felületeket és oldalakat.
  • Anyag beállítások, mert a felület befolyásolja, hogyan jelenik meg a fény.
  • Extrudálás vagy mélység beállítások, mert egy lapos alakzathoz vastagságra van szükség.

A következő példa egy téglalapot hoz létre, szöveget ad a frontális felülethez, alkalmaz 3D formázást, PPTX‑ként menti a prezentációt, és a diát PNG‑képként rendereli.

const float imageScale = 2.0f;

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_Paragraph(0)->get_ParagraphFormat()->get_DefaultPortionFormat()->set_FontHeight(64.0f);

auto frontColor = System::Drawing::Color::get_CornflowerBlue();
shape->get_FillFormat()->set_FillType(FillType::Solid);
shape->get_FillFormat()->get_SolidFillColor()->set_Color(frontColor);

auto extrusionColor = System::Drawing::Color::get_Blue();
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::Flat);
shape->get_ThreeDFormat()->get_LightRig()->set_Direction(LightingDirection::Top);
shape->get_ThreeDFormat()->set_Material(MaterialPresetType::Flat);
shape->get_ThreeDFormat()->set_ExtrusionHeight(100.0);
shape->get_ThreeDFormat()->get_ExtrusionColor()->set_Color(extrusionColor);

auto thumbnail = slide->GetImage(imageScale, imageScale);
thumbnail->Save(u"shape_3d.png");
thumbnail->Dispose();

presentation->Save(u"shape_3d.pptx", SaveFormat::Pptx);
presentation->Dispose();

A renderelt dia képén a téglalap vastag 3D blokkként jelenik meg:

Megjelenített kék 3D téglalap fehér 3D szöveggel a frontális felületen

Alakzat forgatása a kamerával

PowerPointban a 3D forgatás a 3‑D Forgatás panelen állítható be. Az X, Y és Z forgatási értékek megfelelnek a kamera API‑val beállított forgatásnak.

PowerPoint 3‑D Forgatás panel X, Y és Z forgatási értékek kiemelve

Aspose.Slides‑ban a kamera típusa és forgatása a IThreeDFormat segítségével állítható:

shape->get_ThreeDFormat()->get_Camera()->set_CameraType(CameraPresetType::OrthographicFront);
shape->get_ThreeDFormat()->get_Camera()->SetRotation(20.0f, 30.0f, 40.0f);

A kamerát akkor használja, amikor meg akarja változtatni, hogyan látja a néző az objektumot. Nem módosítja a 2D alakzati geometriát a dián. A PowerPoint és az Aspose.Slides által a renderelésnél használt 3D nézetpontot változtatja.

Extrudálás és mélység hozzáadása

Az extrudálás egy alakzatot vastagnak láttat, ha kiterjeszti a frontális felület mögé. PowerPointban a mélység szabályozó állítja be ezt a látható vastagságot, a szín szabályozó pedig az oldalfelületek színét határozza meg.

PowerPoint mélység szabályozók leképezve az extrudálás színére és magasságára vonatkozó tulajdonságokra

Állítsa be a set_ExtrusionHeight‑et a vastagsághoz és a get_ExtrusionColor‑t az oldal színéhez:

shape->get_ThreeDFormat()->get_Camera()->SetRotation(20.0f, 30.0f, 40.0f);
shape->get_ThreeDFormat()->set_ExtrusionHeight(100.0);

auto extrusionColor = System::Drawing::Color::get_Purple();
shape->get_ThreeDFormat()->get_ExtrusionColor()->set_Color(extrusionColor);

Használja a set_Depth‑et, ha közvetlenül a PowerPoint mélységértékével szeretne dolgozni, vagy a mélységet lekerekítéssel, anyaggal és szöveghatásokkal kombinálni kívánja. Sok alakzati esetben a set_ExtrusionHeight egyértelműbb, mert közvetlenül kifejezi a látható extrudálást.

Színátmenetes vagy képes kitöltés használata 3D hatásokkal

A 3D formázás független az alakzat kitöltésétől. Alkalmazhat szilárd színt, színátmenetet, mintát vagy képet a frontális felületre, miközben ugyanazokat a kamera, fény, anyag és extrudálás beállításokat használja.

Ez a példa színátmenetes kitöltést alkalmaz az alakzatra és sötétebb extrudálási színt a oldalakra:

const float imageScale = 2.0f;

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 Gradient");
shape->get_TextFrame()->get_Paragraph(0)->get_ParagraphFormat()->get_DefaultPortionFormat()->set_FontHeight(64.0f);

auto firstGradientColor = System::Drawing::Color::get_Blue();
auto secondGradientColor = System::Drawing::Color::get_Orange();
shape->get_FillFormat()->set_FillType(FillType::Gradient);
shape->get_FillFormat()->get_GradientFormat()->get_GradientStops()->Add(0.0f, firstGradientColor);
shape->get_FillFormat()->get_GradientFormat()->get_GradientStops()->Add(100.0f, secondGradientColor);

auto extrusionColor = System::Drawing::Color::get_DarkOrange();
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_Material(MaterialPresetType::Flat);
shape->get_ThreeDFormat()->set_ExtrusionHeight(150.0);
shape->get_ThreeDFormat()->get_ExtrusionColor()->set_Color(extrusionColor);

auto thumbnail = slide->GetImage(imageScale, imageScale);
thumbnail->Save(u"gradient_3d.png");
thumbnail->Dispose();

presentation->Dispose();

A renderelt eredmény megtartja a színátmenetet a frontális felületen, és az extrudálást külön rendereli:

Megjelenített 3D téglalap kék‑narancssárga színátmenetes kitöltéssel és narancssárga extrudálással

Képes kitöltés használatához adja hozzá a képet a prezentációhoz, és rendelje hozzá az alakzat kitöltéséhez:

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);

auto extrusionColor = System::Drawing::Color::get_DarkOrange();
shape->get_ThreeDFormat()->get_Camera()->SetRotation(10.0f, 20.0f, 30.0f);
shape->get_ThreeDFormat()->set_ExtrusionHeight(150.0);
shape->get_ThreeDFormat()->get_ExtrusionColor()->set_Color(extrusionColor);

A kép a frontális felületen jelenik meg, míg az extrudálás a 3D oldalfelületként renderelődik:

Megjelenített 3D téglalap fotó kitöltéssel a frontális felületen és narancssárga extrudálással

3D formázás alkalmazása szövegre

Az alakzat 3D formázása az alakzat testét érinti. A szöveg 3D formázása a szövegkeretet. Ez hasznos WordArt‑szerű hatásokhoz, ahol maguk a betűknek is szükségük van extrudálásra, anyagra, megvilágításra és kamera beállításokra.

A következő példa mintás kitöltésű szöveget hoz létre, WordArt átalakítást alkalmaz, és 3D beállításokat konfigurál az ITextFrameFormat-on:

const float imageScale = 2.0f;

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 Text");

auto portion = shape->get_TextFrame()->get_Paragraph(0)->get_Portion(0);
portion->get_PortionFormat()->get_FillFormat()->set_FillType(FillType::Pattern);

auto foregroundColor = System::Drawing::Color::get_DarkOrange();
auto backgroundColor = System::Drawing::Color::get_White();
portion->get_PortionFormat()->get_FillFormat()->get_PatternFormat()->get_ForeColor()->set_Color(foregroundColor);
portion->get_PortionFormat()->get_FillFormat()->get_PatternFormat()->get_BackColor()->set_Color(backgroundColor);
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();
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);
textFrameFormat->get_ThreeDFormat()->get_Camera()->set_CameraType(CameraPresetType::PerspectiveContrastingRightFacing);

auto thumbnail = slide->GetImage(imageScale, imageScale);
thumbnail->Save(u"text_3d.png");
thumbnail->Dispose();

presentation->Save(u"text_3d.pptx", SaveFormat::Pptx);
presentation->Dispose();

A szöveg íves, extrudált 3D betűként jelenik meg:

Megjelenített 3D szöveg íves WordArt átalakítással, narancssárga minta kitöltéssel és sötét extrudálással

Exportálási és renderelési viselkedés

Az Aspose.Slides megőrzi a 3D formázást, amikor PowerPoint formátumokba (például PPTX) ment,. Fix elrendezésű formátumokba történő renderelés vagy exportálás során a 3D jelenet raszterizálódik vagy 2D‑ként kerül be a kimenetbe. Ez akkor is érvényes, amikor a diákat PNG-ra rendereli, PDF-ra exportálja, HTML-ra exportálja, vagy videókonverzió kereteket generál.

Figyelje a következőkre:

  • Az exportált képek és PDF‑ek nem interaktívak. Az objektumot a néző nem forgathatja a exportálás után.
  • A végső megjelenés a kamera, fényrig, anyag, extrudálás, kitöltés és dia méretezés kombinációjától függ.
  • Ha meg kell vizsgálnia az örökölt vagy sablon‑alapú formázási értékeket, olvassa el a hatékony alakzatel属性‑et.
  • Néhány kimeneti formátum nem képes szerkeszthető PowerPoint 3D formázást tárolni. Ilyen formátumok esetén a vizuális eredmény renderelt, nem szerkeszthető 3D beállítás.

GYIK

Készíthet-e az Aspose.Slides interaktív 3D prezentációkat?
Az Aspose.Slides PowerPoint 3D hatásokat hoz létre és renderel alakzatokra és szövegre. Nem tesz exportált képeket, PDF‑eket vagy HTML‑oldalakat interaktív 3D jelenetekké, amelyet a néző forgathat. PPTX‑ben a 3D formázás szerkeszthető marad a PowerPoint‑ban, ha a formátum támogatja.

Mi a különbség egy 3D modell és egy 3D effektus között?
A 3D modell egy különálló 3D objektum, amelyet a prezentációba szúrnak be. A 3D effektus egy szabványos PowerPoint alakzatra vagy szövegre alkalmazott formázás, mint például forgatás, extrudálás, lekerekítés, megvilágítás és anyag. Ez a cikk a 3D effektusokról szól.

Milyen beállítások szükségesek egy látható 3D alakzathoz?
Legalább egy kamera forgatás és vagy extrudálás vagy mélység beállítása kötelező. Gyakran használják a fényriget és az anyagot is, hogy a renderelt felületeknek tiszta kiemelései és árnyékai legyenek.

Alkalmazhatok‑e 3D hatásokat alakzatokra és szövegre egyaránt?
Igen. Használja az IShape-t az alakzat testéhez és az ITextFrameFormat-t a szöveghez.

Megjelennek‑e a 3D hatások képekre, PDF‑re, HTML‑re vagy videókeretekre exportáláskor?
Igen. Az Aspose.Slides a 3D hatásokat rendereli dia képek, PDF‑kimenet, HTML‑kimenet és videókonverzióhoz használt keretek előállítása során. Az exportált kimenet a renderelt megjelenést tartalmazza, nem szerkeszthető 3D objektumot.

Kiolvashatom‑e a végső 3D értékeket az öröklődés és a sablon beállítások után?
Igen. Használja a Shape Effective Properties‑ben leírt hatékony formázási API‑kat a végső kamera, fényrig, lekerekítés és kapcsolódó 3D értékek olvasásához.