สร้างเอฟเฟกต์ 3D ในการนำเสนองานด้วย Python
ภาพรวม
Aspose.Slides for Python via .NET สามารถสร้าง, แก้ไข, รักษา และเรนเดอร์การจัดรูปแบบ 3D แบบ PowerPoint สำหรับรูปร่างและข้อความได้ บทความนี้ครอบคลุมเอฟเฟกต์ 3D เช่น การหมุน, การดันสู่ภาคลึก, การทำ bevel, แสงสว่าง, วัสดุ, การเติมสีไล่สีหรือภาพ, และข้อความ 3D.
แนวคิดการจัดรูปแบบ 3D
ใช้คุณสมบัติ Shape.three_d_format เพื่อทำการจัดรูปแบบ 3D ให้กับรูปร่าง คุณสมบัตินี้เปิดเผย ThreeDFormat, ซึ่งควบคุมฉาก 3D สำหรับรูปร่างนั้น
สำหรับข้อความ, ใช้คุณสมบัติ TextFrameFormat.three_d_format การทำเช่นนี้จะจัดรูปแบบ 3D ให้กับกรอบข้อความแทนส่วนของรูปร่าง
คุณสมบัติที่สำคัญที่สุดคือ:
| คุณสมบัติ | สิ่งที่ควบคุม | เมื่อใดที่ใช้ |
|---|---|---|
| camera | มุมมอง, ประเภทกล้องที่กำหนดไว้ล่วงหน้า, การหมุน, การซูม, และมุมมองเชิงมิติ | หมุนวัตถุในพื้นที่ 3D หรือจับคู่กับการตั้งค่าการหมุน 3D ของ PowerPoint ที่กำหนดไว้ล่วงหน้า |
| light_rig | การตั้งค่าแสงล่วงหน้า, ทิศทาง, และการหมุนของแสง | เปลี่ยนลักษณะของไฮไลท์และเงาบนพื้นผิว 3D |
| material | วัสดุพื้นผิว เช่น แบน, แมท, พลาสติก, หรือโลหะ | ทำให้รูปทรงเดียวกันดูแบนขึ้น, นุ่มขึ้น, เงางาม, หรือเป็นโลหะ |
| extrusion_height | ระยะที่รูปร่างยืดออกไปด้านหลังจากหน้า | เปลี่ยนรูปร่างแบนให้เป็นวัตถุ 3D ที่มีความหนาชัดเจน |
| extrusion_color | สีของด้านที่ดันออก | ทำให้ความลึกเห็นได้หรือประสานสีด้านกับการเติมหน้าตรง |
| depth | ความลึก 3D เพิ่มเติมที่ใช้โดยการจัดรูปแบบ 3D ของ PowerPoint | ปรับความลึกอย่างละเอียดสำหรับรูปร่างหรือข้อความ, โดยเฉพาะเมื่อใช้ร่วมกับการตั้งค่า bevel และ material |
| bevel_top and bevel_bottom | ขอบที่ยกขึ้นหรือโค้งมนบนหน้าและด้านหลัง | เพิ่มขอบที่นุ่มหรือหล่อแทนหน้าที่แบนและคม |
| contour_color and contour_width | เส้นรอบนอกของวัตถุ 3D | เน้นขอบวัตถุในผลลัพธ์ที่เรนเดอร์ |
สร้างรูปร่าง 3D
โดยทั่วไปรูปร่างต้องการการตั้งค่าสี่ประเภทก่อนที่จะดูเหมือน 3D อย่างเชื่อมั่น:
- การตั้งค่ากล้อง, เนื่องจากมุมมองหน้าเริ่มต้นอาจซ่อนการดันสู่ภาคลึก
- การตั้งค่าแสง, เนื่องจากแสงทำให้ด้านและขอบสามารถมองเห็นได้
- การตั้งค่าเนื้อวัสดุ, เนื่องจากพื้นผิวมีผลต่อการเรนเดอร์แสง
- การตั้งค่าการดันสู่ภาคลึกหรือความลึก, เนื่องจากรูปร่างแบนต้องการความหนา
ตัวอย่างต่อไปนี้สร้างสี่เหลี่ยมผืนผ้า, เพิ่มข้อความไปยังหน้า, ใส่การจัดรูปแบบ 3D, บันทึกการนำเสนอเป็น PPTX, และเรนเดอร์สไลด์เป็นภาพ PNG.
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)
ภาพสไลด์ที่เรนเดอร์จะแสดงสี่เหลี่ยมผืนผ้าเป็นบล็อก 3D ที่หนา:

หมุนรูปร่างด้วยกล้อง
ใน PowerPoint การหมุน 3D ตั้งค่าจากแผง 3-D Rotation ค่า X, Y, และ Z ของการหมุนสอดคล้องกับการหมุนที่คุณตั้งค่าผ่าน API ของกล้อง.

ใน Aspose.Slides, ตั้งค่าชนิดกล้องและการหมุนผ่าน ThreeDFormat.camera:
shape.three_d_format.camera.camera_type = slides.CameraPresetType.ORTHOGRAPHIC_FRONT
shape.three_d_format.camera.set_rotation(20, 30, 40)
ใช้กล้องเมื่อคุณต้องการเปลี่ยนวิธีที่ผู้ชมมองเห็นวัตถุ ไม่ได้เปลี่ยนรูปทรง 2D ของรูปร่างบนสไลด์ แต่จะเปลี่ยนมุมมอง 3D ที่ PowerPoint และ Aspose.Slides ใช้เมื่อทำการเรนเดอร์.
เพิ่มการดันสู่ภาคลึกและความลึก
การดันสู่ภาคลึกทำให้รูปร่างดูหนาโดยขยายไปด้านหลังของหน้า ใน PowerPoint ควบคุมความลึกจะตั้งความหนาที่มองเห็นได้และควบคุมสีจะตั้งสีของด้านข้าง.

ตั้งค่า ThreeDFormat.extrusion_height เพื่อกำหนดความหนาและ ThreeDFormat.extrusion_color เพื่อกำหนดสีของด้านข้าง:
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
ใช้ ThreeDFormat.depth เมื่อคุณต้องการทำงานกับค่าความลึกของ PowerPoint โดยตรงหรือรวมความลึกกับ bevel, material, และเอฟเฟกต์ข้อความ ในหลายสถานการณ์ของรูปร่าง, ThreeDFormat.extrusion_height เป็นการตั้งค่าที่ชัดเจนกว่าเพราะมันแสดงการดันสู่ภาคลึกที่มองเห็นได้โดยตรง.
ใช้การเติมไล่สีหรือรูปภาพกับเอฟเฟกต์ 3D
การจัดรูปแบบ 3D แยกจากการเติมสีของรูปร่าง คุณสามารถใช้สีทึบ, ไล่สี, ลวดลาย หรือการเติมรูปภาพบนหน้าและยังคงใช้การตั้งค่ากล้อง, แสง, วัสดุ, และการดันสู่ภาคลึกเดียวกัน
ตัวอย่างนี้ใช้การเติมไล่สีให้กับรูปร่างและสี extrusion ที่มืดกว่าบนด้านข้าง:
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")
ผลลัพธ์ที่เรนเดอร์จะคงไล่สีบนหน้าและเรนเดอร์การดันสู่ภาคลึกแยกกัน:

หากต้องการใช้การเติมรูปภาพแทน, เพิ่มรูปภาพลงในงานนำเสนอและกำหนดให้เป็นการเติมรูปร่าง:
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
รูปภาพจะถูกเรนเดอร์บนหน้า ในขณะที่ extrusion จะถูกเรนเดอร์เป็นพื้นผิวด้าน 3D:

ใช้การจัดรูปแบบ 3D กับข้อความ
การจัดรูปแบบ 3D ของรูปร่างส่งผลต่อส่วนของรูปร่าง ส่วนของการจัดรูปแบบ 3D ของข้อความส่งผลต่อกรอบข้อความ สิ่งนี้เป็นประโยชน์สำหรับเอฟเฟกต์แบบ WordArt ที่ตัวอักษรต้องการการดันสู่ภาคลึก, วัสดุ, แสงสว่าง, และการตั้งค่ากล้อง
ตัวอย่างต่อไปนี้สร้างข้อความด้วยการเติมลวดลาย, ใช้การแปลง WordArt, และกำหนดค่าการตั้งค่า 3D บน 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)
ข้อความจะถูกเรนเดอร์เป็นตัวอักษร 3D โค้งและดันสู่ภาคลึก:

การส่งออกและพฤติกรรมการเรนเดอร์
Aspose.Slides จะคงการจัดรูปแบบ 3D ไว้เมื่อบันทึกเป็นรูปแบบ PowerPoint เช่น PPTX เมื่อทำการเรนเดอร์หรือส่งออกเป็นรูปแบบ Layout คงที่, ฉาก 3D จะถูกแปลงเป็นราสเตอร์หรือวาดลงในผลลัพธ์เป็นผลลัพธ์ 2D นี้ใช้เมื่อคุณเรนเดอร์สไลด์เป็น PNG, ส่งออกเป็น PDF, ส่งออกเป็น HTML, หรือสร้างเฟรมสำหรับ video conversion.
จดจำประเด็นต่อไปนี้:
- ภาพและ PDF ที่ส่งออกไม่ใช่แบบโต้ตอบ วัตถุไม่สามารถหมุนโดยผู้ชมหลังการส่งออกได้.
- รูปลักษณ์สุดท้ายขึ้นอยู่กับการผสมผสานของกล้อง, light rig, material, extrusion, การเติมสี, และการปรับขนาดสไลด์.
- หากคุณต้องการตรวจสอบค่าการจัดรูปแบบที่สืบทอดหรืออิงธีม, อ่าน คุณสมบัติรูปร่างที่มีผล.
- รูปแบบผลลัพธ์บางอย่างไม่สามารถเก็บการจัดรูปแบบ 3D ของ PowerPoint ที่แก้ไขได้ ในรูปแบบเหล่านั้นผลลัพธ์ที่มองเห็นจะถูกเรนเดอร์แทนการเก็บเป็นการตั้งค่า 3D ที่แก้ไขได้.
คำถามที่พบบ่อย
Aspose.Slides สามารถสร้างการนำเสนอ 3D แบบโต้ตอบได้หรือไม่?
Aspose.Slides สร้างและเรนเดอร์เอฟเฟกต์ 3D ของ PowerPoint สำหรับรูปร่างและข้อความ แต่ไม่ได้ทำให้ภาพที่ส่งออก, PDF, หรือหน้า HTML เป็นฉาก 3D แบบโต้ตอบที่ผู้ชมสามารถหมุนได้ ใน PPTX การจัดรูปแบบ 3D ยังคงเป็นแบบแก้ไขได้ใน PowerPoint หากรูปแบบนั้นรองรับ
ความแตกต่างระหว่างโมเดล 3D กับเอฟเฟกต์ 3D คืออะไร?
โมเดล 3D คือวัตถุ 3D แยกที่ถูกแทรกเข้าไปในงานนำเสนอ ส่วนเอฟเฟกต์ 3D คือการจัดรูปแบบที่ใช้กับรูปร่างหรือข้อความของ PowerPoint ปกติ เช่น การหมุน, การดันสู่ภาคลึก, bevel, แสง, และวัสดุ บทความนี้ครอบคลุมเอฟเฟกต์ 3D
การตั้งค่าใดบ้างที่จำเป็นสำหรับรูปร่าง 3D ที่มองเห็นได้?
อย่างน้อยต้องตั้งค่าการหมุนของกล้องและการดันสู่ภาคลึกหรือความลึก ในการปฏิบัติ ควรตั้งค่า light rig และ material ด้วยเพื่อให้ด้านที่เรนเดอร์มีไฮไลท์และเงาชัดเจน
ฉันสามารถใช้เอฟเฟกต์ 3D กับรูปร่างและข้อความได้หรือไม่?
ได้ ใช้ Shape.three_d_format สำหรับส่วนของรูปร่างและ TextFrameFormat.three_d_format สำหรับข้อความ
เอฟเฟกต์ 3D จะปรากฏเมื่อส่งออกเป็นรูปภาพ, PDF, HTML หรือเฟรมวิดีโอหรือไม่?
ใช่ Aspose.Slides เรนเดอร์เอฟเฟกต์ 3D เมื่อผลิตภาพสไลด์, PDF, HTML และเฟรมที่ใช้ในการแปลงวิดีโอ ผลลัพธ์ที่ส่งออกจะมีลักษณะการเรนเดอร์ ไม่ใช่วัตถุ 3D ที่แก้ไขได้
ฉันสามารถอ่านค่าขั้นสุดท้ายของ 3D หลังจากการสืบทอดและการตั้งค่าธีมถูกนำไปใช้ได้หรือไม่?
ใช่ ใช้ API การจัดรูปแบบที่มีผลที่อธิบายไว้ใน คุณสมบัติรูปร่างที่มีผล เพื่ออ่านค่ากล้อง, light rig, bevel, และค่าที่เกี่ยวข้องของ 3D ที่สุดท้าย.