3D hatások létrehozása prezentációkban PHP-vel
Áttekintés
Az Aspose.Slides for PHP via Java képes létrehozni, szerkeszteni, megőrizni és renderelni a PowerPoint‑szerű 3D formázást alakzatokra és szövegre. Ez a cikk a 3D hatásokat tárgyalja, például a forgatást, extrúziót, rézsút, világítást, anyagot, színátmenetes vagy képtöltést, valamint a 3D szöveget.
3D formázási koncepciók
Használja a Shape osztályt és a Shape::getThreeDFormat metódust a 3D formázás alkalmazásához egy alakzatra. A metódus egy ThreeDFormat objektumot ad vissza, amely az adott alakzat 3D jelenetét irányítja.
Szöveg esetén használja a TextFrameFormat osztályt és a TextFrameFormat::getThreeDFormat metódust. Ez a szövegkeretre alkalmaz 3D formázást a forma testének helyett.
A legfontosabb beállítások:
| Metódus vagy beállítás | Mit szabályoz | Mikor kell használni |
|---|---|---|
| getCamera | Nézőpont, előre beállított kamera típus, forgatás, nagyítás és perspektíva. | Az objektum forgatása 3D térben vagy egy PowerPoint 3D forgatási előbeállítás használata. |
| getLightRig | Fény előbeállítás, irány és fény forgatás. | Megváltoztatja, hogyan jelennek meg a fénycsúcsok és árnyékok a 3D felületen. |
| setMaterial | Felület anyaga, például sima, matt, műanyag vagy fém. | Ugyanazt a geometriát laposabbá, puhábbá, fényesebbé vagy fémivé teszi. |
| setExtrusionHeight | Milyen messze nyúlik visszafelé az alakzat az első felületétől. | Egy sík alakzatot láthatóan vastag 3D objektummá alakít. |
| getExtrusionColor | Az extrudált oldalak színe. | Mélységet láthatóvá teszi vagy összhangot teremt az oldalszín és az első felület töltése között. |
| setDepth | 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 rézsút és anyag beállításokkal együtt. |
| getBevelTop és getBevelBottom | Emelt vagy lekerekített élek az első és hátsó felületeken. | Lágyabb vagy formázott szegély hozzáadása egy éles sík felület helyett. |
| getContourColor és setContourWidth | 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égy típusú beállításra van szükség, mielőtt meggyőzően 3D‑snek tűnik:
- Kamera beállítások, mivel az alapértelmezett előnézet elrejtheti az extrudálást.
- Fény beállítások, mivel a világítás teszi olvashatóvá az felületeket és oldalakat.
- Anyag beállítások, mivel a felület befolyásolja, hogyan jelenik meg a fény.
- Extrúzió vagy mélység beállítások, mivel egy sík alakzathoz vastagságra van szükség.
Az alábbi példa egy téglalapot hoz létre, szöveget ad az első felülethez, 3D formázást alkalmaz, PPTX‑ként menti a prezentációt, és a diát PNG képre rendereli.
$imageScale = 2;
$presentation = new Presentation();
try {
$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->getFillFormat()->setFillType(FillType::Solid);
$shape->getFillFormat()->getSolidFillColor()->setColor(new Java("java.awt.Color", 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(java("java.awt.Color")->BLUE);
$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();
}
A renderelt diakép a téglalapot egy vastag 3D blokkként mutatja:

Alakzat forgatása a kamerával
PowerPointban a 3D forgatást a 3‑D forgatás panelből konfigurálják. Az X, Y és Z forgatási értékek megfelelnek a kamera API‑n keresztül beállított forgatásnak.

Aspose.Slides‑ben a kamera típusát és forgatását a ThreeDFormat::getCamera segítségével állíthatja be:
$shape->getThreeDFormat()->getCamera()->setCameraType(CameraPresetType::OrthographicFront);
$shape->getThreeDFormat()->getCamera()->setRotation(20, 30, 40);
Használja a kamerát, amikor meg kell változtatni, hogy a néző hogyan látja az objektumot. Nem módosítja a 2D alakzat geometriáját a dián. A PowerPoint és az Aspose.Slides által a rendereléskor használt 3D nézőpontot változtatja.
Extrúzió és mélység hozzáadása
Az extrúzió egy alakzatot vastagnak mutat azáltal, hogy kiterjeszti az első felület mögé. PowerPointban a mélység vezérlő állítja be ezt a látható vastagságot, a szín vezérlő pedig az oldalfalak színét.

Állítsa be a ThreeDFormat::setExtrusionHeight értéket a vastagságra, és a ThreeDFormat::getExtrusionColor értéket az oldalszínre:
$shape->getThreeDFormat()->getCamera()->setRotation(20, 30, 40);
$shape->getThreeDFormat()->setExtrusionHeight(100);
$shape->getThreeDFormat()->getExtrusionColor()->setColor(new Java("java.awt.Color", 128, 0, 128));
Használja a ThreeDFormat::setDepth metódust, amikor közvetlenül a PowerPoint mélységértékével szeretne dolgozni, vagy a mélységet rézsúttal, anyaggal és szövegeffektusokkal kombinálni. Sok alakzatos esetben a setExtrusionHeight egyértelműbb beállítás, mivel közvetlenül kifejezi a látható extrudálást.
Gradiens vagy képtö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 az első felületre, és továbbra is használhatja ugyanazt a kamerát, világítást, anyagot és extrúziót.
Ez a példa színátmenetes kitöltést alkalmaz az alakzaton, és sötétebb extrúziószínt ad az oldalaknak:
$imageScale = 2;
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
$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, 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()->setMaterial(MaterialPresetType::Flat);
$shape->getThreeDFormat()->setExtrusionHeight(150);
$shape->getThreeDFormat()->getExtrusionColor()->setColor(new Java("java.awt.Color", 255, 140, 0));
$thumbnail = $slide->getImage($imageScale, $imageScale);
try {
$thumbnail->save("gradient_3d.png", ImageFormat::Png);
} finally {
$thumbnail->dispose();
}
} finally {
$presentation->dispose();
}
A renderelt kimenet megtartja a gradienst az első felületen, és az extrúziót külön rendereli:

Képtöltés használatához adja hozzá a képet a prezentációhoz, és rendelje az alakzat kitöltéséhez:
$image = Images::fromFile("image.jpg");
try {
$picture = $presentation->getImages()->addImage($image);
} finally {
$image->dispose();
}
$shape->getFillFormat()->setFillType(FillType::Picture);
$shape->getFillFormat()->getPictureFillFormat()->getPicture()->setImage($picture);
$shape->getFillFormat()->getPictureFillFormat()->setPictureFillMode(PictureFillMode::Stretch);
$shape->getThreeDFormat()->getCamera()->setRotation(10, 20, 30);
$shape->getThreeDFormat()->setExtrusionHeight(150);
$shape->getThreeDFormat()->getExtrusionColor()->setColor(new Java("java.awt.Color", 255, 140, 0));
A kép az első felületen jelenik meg, míg az extrúzió a 3D oldalfelületként renderelődik:

3D formázás alkalmazása szövegre
Az alakzat 3D formázása a forma testére hat. A szöveg 3D formázása a szövegkeretre. Ez hasznos WordArt‑szerű effektusokhoz, ahol maguknak a betűknek kell extrúzió, anyag, világítás és kamera beállítások.
A következő példa mintatöltésű szöveget hoz létre, WordArt átalakítást alkalmaz, és 3D beállításokat konfigurál a TextFrameFormat osztályon:
$imageScale = 2;
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
$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");
$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();
$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);
try {
$thumbnail->save("text_3d.png", ImageFormat::Png);
} finally {
$thumbnail->dispose();
}
$presentation->save("text_3d.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
A szöveg ívelt, extrudált 3D betűként jelenik meg:

Exportálási és renderelési viselkedés
Az Aspose.Slides megőrzi a 3D formázást, amikor PPTX‑hez hasonló PowerPoint formátumba ment. Renderelés vagy exportálás rögzített elrendezésű formátumokba esetén a 3D jelenet raszterizálódik vagy 2D eredményként kerül a kimenetre. Ez akkor is érvényes, amikor a diákat PNG, PDF, HTML formátumba rendereli vagy videó átalakítás kereteket generál.
Vegye figyelembe a következőket:
- Az exportált képek és PDF‑ek nem interaktívak. Az objektumot az export után a néző nem forgathatja.
- A végső megjelenés a kamera, fényrendszer, anyag, extrúzió, kitöltés és dia méretezés kombinációjától függ.
- Ha meg kell vizsgálnia a örökölt vagy téma alapú formázási értékeket, olvassa el a hatékony alakzat tulajdonságok leírását.
- Néhány kimeneti formátum nem tudja tárolni a szerkeszthető PowerPoint 3D formázást. Ilyen formátumokban a vizuális eredmény renderelődik, nem pedig szerkeszthető 3D beállításként marad meg.
GYIK
Készíthet‑e az Aspose.Slides interaktív 3D prezentációkat?
Az Aspose.Slides PowerPoint 3D effektusokat hoz létre és renderel alakzatokra és szövegre. Nem teszi az exportált képeket, PDF‑eket vagy HTML‑oldalakat interaktív 3D jelenetté, amelyet a néző forgathat. PPTX‑ben a 3D formázás szerkeszthető marad a PowerPointban, ahol a formátum támogatja.
Mi a különbség egy 3D modell és egy 3D effekt között?
A 3D modell egy különálló 3D objektum, amely a prezentációba van beszúrva. A 3D effektus a szabványos PowerPoint alakzatra vagy szövegre alkalmazott formázás, például forgatás, extrúzió, rézsút, világítás és anyag. Ez a cikk a 3D effektusokat tárgyalja.
Milyen beállítások szükségesek egy látható 3D alakzathoz?
Minimum egy kamera forgatásra és vagy extrúzióra, vagy mélységre van szükség. Gyakorlati szempontból érdemes beállítani a fényrendszert és az anyagot is, hogy a renderelt felületeknek legyenek kiemelkedő fény- és árnyékhatásai.
Alkalmazhatok‑e 3D effektusokat alakzatokra és szövegre egyaránt?
Igen. Használja a Shape::getThreeDFormat metódust a forma testére, és a TextFrameFormat::getThreeDFormat metódust a szövegre.
Megjelennek‑e a 3D effektusok, amikor képekre, PDF‑re, HTML‑re vagy videókeretekre exportálok?
Igen. Az Aspose.Slides a 3D effektusokat rendereli, amikor dia képeket, PDF‑kimenetet, HTML‑kimenetet vagy videókonvertáláshoz használt kereteket állít elő. Az exportált kimenet a renderelt megjelenést tartalmazza, nem pedig szerkeszthető 3D objektumot.
Olvashatom‑e a végső 3D értékeket öröklődés és téma beállítások alkalmazása után?
Igen. Használja a hatékony alakzat tulajdonságok API‑kat a végső kamera, fényrendszer, rézsút és egyéb 3D értékek beolvasásához.