Vytvoření 3D efektů v prezentacích pomocí Pythonu

Přehled

Aspose.Slides for Python via .NET může vytvářet, upravovat, zachovávat a renderovat 3D formátování ve stylu PowerPointu pro tvary a text. Tento článek popisuje 3D efekty jako rotaci, extruzi, zkosení, osvětlení, materiál, gradientní nebo obrázkové výplně a 3D text.

Koncepty 3D formátování

Použijte vlastnost Shape.three_d_format k aplikaci 3D formátování na tvar. Tato vlastnost poskytuje ThreeDFormat, která řídí 3D scénu pro tento tvar.

Pro text použijte vlastnost TextFrameFormat.three_d_format. Tím se aplikuje 3D formátování na textový rámeček místo těla tvaru.

Nejdůležitější vlastnosti jsou:

Vlastnost Co řídí Kdy použít
camera Pohled, přednastavený typ kamery, rotace, zoom a perspektiva. Otočte objekt ve 3D prostoru nebo použijte přednastavený 3D rotaci PowerPointu.
light_rig Přednastavení světla, směr a rotace světla. Změňte, jak se odlesky a stíny objevují na 3D povrchu.
material Materiál povrchu, např. plochý, matný, plastový nebo kovový. Nechte stejnou geometrii vypadat plochěji, měkčeji, leskleji nebo kovově.
extrusion_height Jak daleko tvar zasahuje dozadu od své přední plochy. Přeměňte plochý tvar na viditelně tlustý 3D objekt.
extrusion_color Barva extrudovaných stran. Zobrazte hloubku nebo sladěte barvu stran s výplní přední plochy.
depth Další 3D hloubka používaná v PowerPoint 3D formátování. Jemně doladit hloubku pro tvary nebo text, zejména ve spojení s nastavením zkosení a materiálu.
bevel_top a bevel_bottom Vyvýšené nebo zaoblené hrany na přední a zadní ploše. Přidejte zjemněný nebo tvarovaný okraj místo ostré ploché stěny.
contour_color a contour_width Obrys kolem 3D objektu. Zdůrazněte hranici objektu ve vykresleném výstupu.

Vytvoření 3D tvaru

Tvar obvykle potřebuje čtyři typy nastavení, aby vypadal přesvědčivě 3D:

  • Nastavení kamery, protože výchozí přední pohled může skrýt extruzi.
  • Nastavení osvětlení, protože osvětlení zpřehlední plochy a strany.
  • Nastavení materiálu, protože povrch ovlivňuje, jak se světlo vykresluje.
  • Nastavení extruze nebo hloubky, protože plochý tvar potřebuje tloušťku.

Následující příklad vytvoří obdélník, přidá text na jeho přední plochu, aplikuje 3D formátování, uloží prezentaci jako PPTX a vykreslí snímek do PNG obrázku.

import aspose.pydrawing as drawing
import aspose.slides as slides

image_scale = 2

with slides.Presentation() as presentation:
    slide = presentation.slides[0]
    shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 200, 150, 200, 200)
    shape.text_frame.text = "3D"
    shape.text_frame.paragraphs[0].paragraph_format.default_portion_format.font_height = 64

    shape.fill_format.fill_type = slides.FillType.SOLID
    shape.fill_format.solid_fill_color.color = drawing.Color.cornflower_blue

    shape.three_d_format.camera.camera_type = slides.CameraPresetType.ORTHOGRAPHIC_FRONT
    shape.three_d_format.camera.set_rotation(20, 30, 40)
    shape.three_d_format.light_rig.light_type = slides.LightRigPresetType.FLAT
    shape.three_d_format.light_rig.direction = slides.LightingDirection.TOP
    shape.three_d_format.material = slides.MaterialPresetType.FLAT
    shape.three_d_format.extrusion_height = 100
    shape.three_d_format.extrusion_color.color = drawing.Color.blue

    with slide.get_image(image_scale, image_scale) as thumbnail:
        thumbnail.save("shape_3d.png")

    presentation.save("shape_3d.pptx", slides.export.SaveFormat.PPTX)

Vykreslený obrázek snímku ukazuje obdélník jako tlustý 3D blok:

Vykreslený modrý 3D obdélník s bílým 3D textem na přední ploše

Otočení tvaru pomocí kamery

V PowerPointu se 3D rotace nastavuje v podokně 3‑D Rotace. Hodnoty rotace X, Y a Z odpovídají rotaci nastavené pomocí API kamery.

Podokno 3‑D rotace v PowerPointu se zvýrazněnými hodnotami rotace X, Y a Z

V Aspose.Slides nastavte typ kamery a rotaci pomocí ThreeDFormat.camera:

shape.three_d_format.camera.camera_type = slides.CameraPresetType.ORTHOGRAPHIC_FRONT
shape.three_d_format.camera.set_rotation(20, 30, 40)

Použijte kameru, když potřebujete změnit, jak divák objekt vidí. Nemění 2D geometrii tvaru na snímku. Mění 3D úhel pohledu, který používá PowerPoint i Aspose.Slides při vykreslování.

Přidání extruze a hloubky

Extruze způsobí, že tvar vypadá tlustě tím, že se rozšíří za přední plochu. V PowerPointu ovládací prvek hloubky nastavuje tuto viditelnou tloušťku a ovládací prvek barvy nastavuje barvu bočních ploch.

Ovládací prvky hloubky v PowerPointu mapované na vlastnosti barvy extruze a výšky extruze

Nastavte ThreeDFormat.extrusion_height pro tloušťku a ThreeDFormat.extrusion_color pro barvu stran:

shape.three_d_format.camera.set_rotation(20, 30, 40)
shape.three_d_format.extrusion_height = 100
shape.three_d_format.extrusion_color.color = drawing.Color.purple

Použijte ThreeDFormat.depth, když potřebujete pracovat přímo s hodnotou hloubky v PowerPointu nebo kombinovat hloubku s zkosením, materiálem a textovými efekty. V mnoha scénářích tvarů je ThreeDFormat.extrusion_height přehlednější nastavení, protože přímo vyjadřuje viditelnou extruzi.

Použití gradientových nebo obrázkových výplní s 3D efekty

3D formátování je nezávislé na výplni tvaru. Na přední plochu můžete aplikovat plnou barvu, gradient, vzor nebo obrázkovou výplň a přitom používat stejná nastavení kamery, světla, materiálu a extruze.

Tento příklad aplikuje gradientní výplň na tvar a tmavší barvu extruze na strany:

import aspose.pydrawing as drawing
import aspose.slides as slides

image_scale = 2

with slides.Presentation() as presentation:
    slide = presentation.slides[0]
    shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 200, 150, 250, 250)
    shape.text_frame.text = "3D Gradient"
    shape.text_frame.paragraphs[0].paragraph_format.default_portion_format.font_height = 64

    shape.fill_format.fill_type = slides.FillType.GRADIENT
    shape.fill_format.gradient_format.gradient_stops.add(0, drawing.Color.blue)
    shape.fill_format.gradient_format.gradient_stops.add(100, drawing.Color.orange)

    shape.three_d_format.camera.camera_type = slides.CameraPresetType.ORTHOGRAPHIC_FRONT
    shape.three_d_format.camera.set_rotation(10, 20, 30)
    shape.three_d_format.light_rig.light_type = slides.LightRigPresetType.FLAT
    shape.three_d_format.light_rig.direction = slides.LightingDirection.TOP
    shape.three_d_format.material = slides.MaterialPresetType.FLAT
    shape.three_d_format.extrusion_height = 150
    shape.three_d_format.extrusion_color.color = drawing.Color.dark_orange

    with slide.get_image(image_scale, image_scale) as thumbnail:
        thumbnail.save("gradient_3d.png")

Vykreslený výstup zachová gradient na přední ploše a extruzi vykreslí zvlášť:

Vykreslený 3D obdélník s modro‑oranžovým gradientem výplně a oranžovou extruzí

Chcete‑li místo toho použít obrázkovou výplň, přidejte obrázek do prezentace a přiřaďte jej jako výplň tvaru:

with open("image.jpg", "rb") as image_file:
    image_data = image_file.read()

image = presentation.images.add_image(image_data)

shape.fill_format.fill_type = slides.FillType.PICTURE
shape.fill_format.picture_fill_format.picture.image = image
shape.fill_format.picture_fill_format.picture_fill_mode = slides.PictureFillMode.STRETCH

shape.three_d_format.camera.set_rotation(10, 20, 30)
shape.three_d_format.extrusion_height = 150
shape.three_d_format.extrusion_color.color = drawing.Color.dark_orange

Obrázek je vykreslen na přední ploše, zatímco extruze je vykreslena jako 3D boční povrch:

Vykreslený 3D obdélník s fotografickou výplní na přední ploše a oranžovou extruzí

Aplikace 3D formátování na text

3D formátování tvaru ovlivňuje tělo tvaru. 3D formátování textu ovlivňuje textový rámeček. To je užitečné pro efekty podobné WordArt, kde samotná písmena potřebují extruzi, materiál, osvětlení a nastavení kamery.

Následující příklad vytvoří text s výplní vzorem, aplikuje WordArt transformaci a nastaví 3D parametry na TextFrameFormat:

import aspose.pydrawing as drawing
import aspose.slides as slides

image_scale = 2

with slides.Presentation() as presentation:
    slide = presentation.slides[0]
    shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 200, 150, 250, 250)
    shape.fill_format.fill_type = slides.FillType.NO_FILL
    shape.line_format.fill_format.fill_type = slides.FillType.NO_FILL
    shape.text_frame.text = "3D Text"

    portion = shape.text_frame.paragraphs[0].portions[0]
    portion.portion_format.fill_format.fill_type = slides.FillType.PATTERN
    portion.portion_format.fill_format.pattern_format.fore_color.color = drawing.Color.dark_orange
    portion.portion_format.fill_format.pattern_format.back_color.color = drawing.Color.white
    portion.portion_format.fill_format.pattern_format.pattern_style = slides.PatternStyle.LARGE_GRID

    shape.text_frame.paragraphs[0].paragraph_format.default_portion_format.font_height = 128

    text_frame_format = shape.text_frame.text_frame_format
    text_frame_format.transform = slides.TextShapeType.ARCH_UP
    text_frame_format.three_d_format.extrusion_height = 3.5
    text_frame_format.three_d_format.depth = 3
    text_frame_format.three_d_format.material = slides.MaterialPresetType.PLASTIC
    text_frame_format.three_d_format.light_rig.direction = slides.LightingDirection.TOP
    text_frame_format.three_d_format.light_rig.light_type = slides.LightRigPresetType.BALANCED
    text_frame_format.three_d_format.light_rig.set_rotation(0, 0, 40)
    text_frame_format.three_d_format.camera.camera_type = slides.CameraPresetType.PERSPECTIVE_CONTRASTING_RIGHT_FACING

    with slide.get_image(image_scale, image_scale) as thumbnail:
        thumbnail.save("text_3d.png")

    presentation.save("text_3d.pptx", slides.export.SaveFormat.PPTX)

Text je vykreslen jako zakřivené, extrudované 3D písmo:

Vykreslený 3D text s obloukovou WordArt transformací, oranžovou výplní vzoru a tmavou extruzí

Chování exportu a renderování

Aspose.Slides zachovává 3D formátování při ukládání do formátů PowerPointu, jako je PPTX. Při renderování nebo exportu do formátů s pevnou rozvržením se 3D scéna rasterizuje nebo nakreslí do výstupu jako 2D výsledek. To platí, když renderujete snímky do PNG, exportujete do PDF, exportujete do HTML, nebo generujete snímky pro video conversion.

Mějte na paměti následující body:

  • Exportované obrázky a PDF nejsou interaktivní. Objekt nelze po exportu otáčet.
  • Konečný vzhled závisí na kombinaci kamery, osvětlení, materiálu, extruze, výplně a škálování snímku.
  • Pokud potřebujete zkontrolovat zděděné nebo tématem podmíněné hodnoty formátování, přečtěte effective shape properties.
  • Některé výstupní formáty nemohou uložit editovatelné PowerPoint 3D formátování. V těchto formátech je vizuální výsledek renderován místo toho, aby byl zachován jako editovatelné 3D nastavení.

Často kladené otázky

Může Aspose.Slides vytvářet interaktivní 3D prezentace?

Aspose.Slides vytváří a renderuje 3D efekty PowerPointu pro tvary a text. Nevytváří interaktivní 3D scény v exportovaných obrázcích, PDF nebo HTML stránkách, které by divák mohl otáčet. V PPTX zůstává 3D formátování editovatelné v PowerPointu, pokud formát tuto možnost podporuje.

Jaký je rozdíl mezi 3D modelem a 3D efektem?

3D model je samostatný 3D objekt vložený do prezentace. 3D efekt je formátování aplikované na běžný tvar nebo text v PowerPointu, například rotace, extruze, zkosení, osvětlení a materiál. Tento článek se zabývá 3D efekty.

Jaká nastavení jsou potřeba pro viditelný 3D tvar?

Minimálně nastavte rotaci kamery a buď extruzi nebo hloubku. V praxi také nastavte osvětlení a materiál, aby vykreslené plochy měly zřetelné odlesky a stíny.

Mohu použít 3D efekty jak na tvary, tak na text?

Ano. Použijte Shape.three_d_format pro tělo tvaru a TextFrameFormat.three_d_format pro text.

Zobrazí se 3D efekty při exportu do obrázků, PDF, HTML nebo video snímků?

Ano. Aspose.Slides renderuje 3D efekty při vytváření obrázků snímků, výstupu PDF, HTML a snímků použitého pro konverzi videa. Exportovaný výstup obsahuje vykreslený vzhled, nikoli editovatelný 3D objekt.

Mohu přečíst konečné 3D hodnoty po aplikaci dědičnosti a nastavení motivu?

Ano. Použijte API efektivního formátování popsané v Shape Effective Properties pro získání konečných hodnot kamery, osvětlení, zkosení a souvisejících 3D hodnot.