3D hatások létrehozása prezentációkban Androidon

Áttekintés

Az Aspose.Slides for Android via Java képes létrehozni, szerkeszteni, megőrizni és megjeleníteni a PowerPoint-szerű 3D formázást alakzatok és szöveg számára. Ez a cikk a 3D hatásokat tárgyalja, mint például a forgatás, extrúzió, rézsút, megvilágítás, anyag, színátmenetes vagy képes kitöltések, valamint a 3D szöveg.

3D formázási fogalmak

Használja az IShape.getThreeDFormat metódust 3D formázás alkalmazásához egy alakzatra. A metódus visszaad egy IThreeDFormat objektumot, amely az adott alakzat 3D jelenetét vezérli.

Szöveg esetén használja az ITextFrameFormat.getThreeDFormat metódust. Ez a szövegkeretre alkalmaz 3D formázást az alakzat testének helyett.

A legfontosabb API tagok a következők:

API tag Mit vezérel Mikor használjuk
getCamera Nézetpont, előre beállított kamera típus, forgatás, nagyítás és perspektíva. Forgassa el az objektumot 3D térben vagy egyeztesse a PowerPoint 3D forgatás előre beállított értékével.
getLightRig Fény előbeállítás, irány és fény forgás. Megváltoztatja, hogyan jelennek meg a kiemelések és árnyékok a 3D felületen.
getMaterial és setMaterial Felület anyaga, például lapos, matt, műanyag vagy fém. Ugyanazt a geometriát laposabbá, puhábbá, fényesebbé vagy fémivé teszi.
getExtrusionHeight és setExtrusionHeight Milyen messzire nyúlik vissza az alakzat az első felületétől. Egy lapos alakzatot láthatóan vastag 3D objektummá alakít.
getExtrusionColor Az extrudált oldalak színe. Megjeleníti a mélységet, vagy az oldalszín összehangolja az első kitöltéssel.
getDepth és 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 Megemelt vagy lekerekített élek az első és hátsó felületeken. A lágyabb vagy formázott él hozzáadása ahelyett, hogy a szögletes lapos felülettel rendelkezne.
getContourColor, getContourWidth, é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égyféle beállítás szükséges, mielőtt hitelesen 3D-nak tűnik:

  • Kamera beállítások, mivel az alapértelmezett előre nézet elrejtheti az extrúziót.
  • Fény beállítások, mivel a megvilá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 lapos alakzatnak vastagságra van szüksége.

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

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

A renderelt dia kép a téglalapot egy vastag 3D blokként mutatja:

Megjelenített kék 3D téglalap fehér 3D szöveggel az első felületen

Alakzat forgatása a kamerával

PowerPointban a 3D forgatás a 3‑D forgatás panelen konfigurálható. Az X, Y és Z forgatási értékek megfelelnek annak a forgatásnak, amelyet a kamera API-val állít be.

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

Az Aspose.Slides‑ben a kameratípust és a forgatást a IThreeDFormat.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. Megváltoztatja a PowerPoint és az Aspose.Slides által a renderelés során használt 3D nézőpontot.

Extrúzió és mélység hozzáadása

Az extrúzió úgy teszi vastagabbá az alakzatot, hogy az első felület mögé nyúlik. PowerPointban a mélység vezérlő állítja be ezt a látható vastagságot, a szín vezérlő pedig az oldalfelületek színét.

PowerPoint mélység beállítások leképezve az extrúzió színre és extrúzió magasság tulajdonságokra

Állítsa be a IThreeDFormat.setExtrusionHeight segítségével a vastagságot, és a IThreeDFormat.getExtrusionColor segítségével az oldal színét:

shape.getThreeDFormat().getCamera().setRotation(20, 30, 40);
shape.getThreeDFormat().setExtrusionHeight(100);
shape.getThreeDFormat().getExtrusionColor().setColor(Color.rgb(128, 0, 128));

Használja a IThreeDFormat.setDepth metódust, amikor közvetlenül a PowerPoint mélység értékével kell dolgozni, vagy a mélységet rézsúttal, anyaggal és szöveghatásokkal kombinálni szeretné. Sok alakzatszituációban a setExtrusionHeight egyértelműbb beállítás, mivel közvetlenül a látható extrúziót fejezi ki.

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 egy egyszínű, színátmenetes, mintás vagy képes kitöltést az első felületre, miközben ugyanazokat a kamera, fény, anyag és extrúzió beállításokat használja.

Ez a példa színátmenetes kitöltést alkalmaz az alakzatra és sötétebb extrúzió színt az oldalakon:

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

A renderelt kimenet megtartja a színátmenetet az első felületen, és az extrúziót külön rendereli:

Renderelt 3D téglalap kék‑narancs színátmenetes kitöltéssel és narancssárga extrúzióval

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

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

A kép az első felületen jelenik meg, míg az extrúzió a 3D oldalfelületként renderelődik:

Renderelt 3D téglalap fényképes kitöltéssel az első felületen és narancssárga extrúzióval

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

Az alakzat 3D formázása az alakzat testére hat. A szöveg 3D formázása a szövegkeretre hat. Ez hasznos a WordArt‑szerű hatásokhoz, ahol a betűk maguknak szükségük van extrúzióra, 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 transzformációt alkalmaz, és 3D beállításokat konfigurál az ITextFrameFormat objektumon:

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

A szöveg ívelt, extrudált 3D betűként renderelődik:

Renderelt 3D szöveg ívelt WordArt transzformációval, narancssárga mintás kitöltéssel és sötét extrúzióval

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‑be 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 kereteket generál a video conversion számára.

Tartsa szem előtt a következő pontokat:

  • Az exportált képek és PDF‑ek nem interaktívak. Az objektumot a néző az export után nem tudja elforgatni.
  • A végső megjelenés a kamera, fényrig, anyag, extrúzió, kitöltés és a 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 effective shape properties.
  • Egyes kimeneti formátumok nem tudják tárolni a szerkeszthető PowerPoint 3D formázást. Ezekben a formátumokban a vizuális eredmény renderelt, nem szerkeszthető 3D beállításként megőrzött.

FAQ

Készíthet az Aspose.Slides interaktív 3D prezentációkat?

Az Aspose.Slides létrehozza és rendereli a PowerPoint 3D hatásokat alakzatokra és szövegre. Nem teszi interaktívvá az exportált képeket, PDF‑eket vagy HTML oldalakat 3D jelenetekké, amelyeket a néző elforgathat. PPTX‑ben a 3D formázás szerkeszthető marad a PowerPoint‑ban, ahol a formátum támogatja.

Mi a különbség egy 3D modell és egy 3D hatás között?

A 3D modell egy különálló, a prezentációba beszúrt 3D objektum. A 3D hatás egy szabványos PowerPoint alakzatra vagy szövegre alkalmazott formázás, mint például forgatás, extrúzió, rézsút, megvilágítás és anyag. Ez a cikk a 3D hatásokat tárgyalja.

Milyen beállításokra van szükség egy látható 3D alakzathoz?

Legalább egy kamera forgatást és az extrúziót vagy mélységet kell beállítani. Gyakorlatban a fényriget és az anyagot is be kell állítani, hogy a renderelt felületeknek legyenek könnyen látható kiemelések és árnyékok.

Alkalmazhatok 3D hatásokat alakzatokra és szövegre is?

Igen. Használja az IShape.getThreeDFormat metódust az alakzat testére, és az ITextFrameFormat.getThreeDFormat metódust a szövegre.

Megjelennek a 3D hatások képek, PDF, HTML vagy videó keretek exportálásakor?

Igen. Az Aspose.Slides a 3D hatásokat rendereli, amikor diaképeket, PDF‑et, HTML‑t és videókonvertálásra használt kereteket állít elő. Az exportált kimenet a renderelt megjelenést tartalmazza, nem szerkeszthető 3D objektumot.

Kiolvashatom a végső 3D értékeket az öröklődés és a sablonbeállítások alkalmazása után?

Igen. Használja a hatékony formázási API‑kat, amelyeket a Shape Effective Properties leírásában talál, a végső kamera, fényrig, rézsút és kapcsolódó 3D értékek kiolvasásához.