φυβλαςのβλογ
บล็อกของ phyblas



manim บทที่ ๘: การทำให้วัตถุปรากฏและหายไป
เขียนเมื่อ 2021/03/12 00:08
แก้ไขล่าสุด 2021/09/28 16:42

ต่อจาก บทที่ ๗

บทนี้จะยกตัวอย่างคลาสต่างๆที่ทำให้วัตถุในภาพค่อยๆปรากฏตัวขึ้นหรือถูกลบหายไป




FadeIn

วิธีการที่เข้าใจง่ายที่สุดในการทำให้วัตถุปรากฏขึ้นมานั่นคือค่อยๆปรับความทึบแสงโผล่ให้ขึ้นมาจากสภาพล่องหนจนมองเห็นชัดทั้งหมด ซึ่งสามารถทำได้โดยใช้คลาส FadeIn

ตัวอย่างการใช้
import manimlib as mnm

class Manimala(mnm.Scene):
    def construct(self):
        text = mnm.Text('มาแล้ว',size=6.2,color='#93b8d4')
        self.play(
            mnm.FadeIn(text),
            run_time=1.5
        )






FadeOut

ในทางตรงกันข้ามกับเวลาปรากฏตัว เวลาที่ต้องการให้หายไปก็ทำได้โดยให้ค่อยๆจางหายไปจนล่องหน ซึ่งทำได้โดยใช้คลาส FadeOut

ตัวอย่างการใช้
import manimlib as mnm

class Manimala(mnm.Scene):
    def construct(self):
        text = mnm.Text('ไปละนะ',size=4.7,color='#93d4c4')
        self.play(
            mnm.FadeOut(text),
            run_time=1.5
        )



คราวนี้ลองทำให้ปรากฏตัวเสร็จแล้วก็หายไป
import manimlib as mnm

class Manimala(mnm.Scene):
    def construct(self):
        text = mnm.Text('มาแล้วก็ไป',size=3.9,color='#eca7d4')
        self.play(
            mnm.FadeIn(text),
            run_time=1
        )
        self.play(
            mnm.FadeOut(text),
            run_time=1.5
        )






Write

หากต้องการให้มันปรากฏขึ้นมาทีละตัวตามลำดับเหมือนค่อยๆถูกเขียนขึ้นมาก็สามารถทำได้โดยใช้คลาส Write วิธีการใช้จะเหมือนกับ FadeIn แต่ต่างกันที่ลักษณะการปรากฏตัว

ตัวอย่าง
import manimlib as mnm

class Manimala(mnm.Scene):
    def construct(self):
        text = mnm.Text('เขียน',size=5.2,color='#cba7ec')
        self.play(
            mnm.Write(text),
            run_time=1.5
        )






DrawBorderThenFill

ที่จริงแล้ว Write เป็นคลาสย่อยของ DrawBorderThenFill อีกที คือการเริ่มจากการเขียนขอบแล้วจึงเติมด้านใน

โดยข้อแตกต่างคือ Write จะไล่ทำทีละตัวตามลำดับ แต่ DrawBorderThenFill จะทำพร้อมกันทั้งหมด

ตัวอย่าง
import manimlib as mnm

class Manimala(mnm.Scene):
    def construct(self):
        text = mnm.Text('วาดขอบ\n\nแล้วเติม',size=3.2,color='#f4c1b4')
        self.play(
            mnm.DrawBorderThenFill(text),
            run_time=1.5
        )






ShowCreation

อีกวิธีในการให้ปรากฏตัวขึ้นทีละตัวคือ ShowCreation ซึ่งจะคล้ายๆกับ Write แต่จะไม่ได้เริ่มจากวาดขอบก่อน

ลองดูตัวอย่างการใช้ เทียบความแตกต่าง
import manimlib as mnm

class Manimala(mnm.Scene):
    def construct(self):
        text = mnm.Text('แสดงการสร้าง',size=3.2,color='#969ec9')
        self.play(
            mnm.ShowCreation(text),
            run_time=1.5
        )






Uncreate

ในทางตรงกันข้ามกับ ShowCreation ก็คือเวลาต้องการให้วัตถุค่อยๆหายไปตามลำดับก็อาจทำได้โดยใช้คลาส Uncreate ซึ่งจะคล้ายกับ FadeOut แต่ต่างกันที่วิธีการหายไปของวัตถุ

ลองดูตัวอย่างเทียบกันดูได้
import manimlib as mnm

class Manimala(mnm.Scene):
    def construct(self):
        text = mnm.Text('แตกสลาย\n\nแหลกไป',color='#77aacc',size=3)
        self.play(
            mnm.Uncreate(text),
            run_time=1.5
        )







FadeInFromPoint

หากต้องการให้วัตถุค่อยๆถูกปรับความทึบแสงให้เห็นชัดขึ้นเรื่อยๆไปพร้อมกับให้ปรากฏมาจากจุดก็อาจใช้คลาส FadeInFromPoint โดยใช้ใส่ตำแหน่งจุดที่ต้องการให้เป็นจุดเริ่มต้น

ตัวอย่าง
import manimlib as mnm
import numpy as np

class Manimala(mnm.Scene):
    def construct(self):
        text = mnm.Text('เข้ามา',size=4.8,color='#dea7f3')
        point = np.array([-4,1,0])
        self.play(
            mnm.FadeInFromPoint(text,point),
            run_time=1.5
        )






FadeOutToPoint

ในทางตรงกันข้ามกับ FadeInFromPoint หากต้องการให้วัตถุจางหายเข้าไปในจุดจุดหนึ่งก็อาจใช้คลาส FadeOutToPoint
import manimlib as mnm
import numpy as np

class Manimala(mnm.Scene):
    def construct(self):
        text = mnm.Text('ออกไป',size=5.1,color='#ddf3a7')
        point = np.array([5,-2,0])
        self.play(
            mnm.FadeOutToPoint(text,point),
            run_time=1.5
        )






GrowFromPoint

คลาส GrowFromPoint จะคล้ายกับ FadeInFromPoint แต่จะแค่ขยายขึ้นมาจากจุด ไม่ได้เปลี่ยนแปลงความทึบแสง

ตัวอย่าง
import manimlib as mnm
import numpy as np

class Manimala(mnm.Scene):
    def construct(self):
        text = mnm.Text('โตมา',size=5.3,color='#a7def3')
        point = np.array([-4.5,-1.5,0])
        self.play(
            mnm.GrowFromPoint(text,point),
            run_time=1.5
        )






GrowFromCenter

GrowFromCenter คือ GrowFromPoint ในกรณีที่ให้โผล่มาจากจุดกึ่งกลางภาพ
import manimlib as mnm

class Manimala(mnm.Scene):
    def construct(self):
        text = mnm.Text('โตจากกลาง',size=3.3,color='#9f8fd1')
        self.play(
            mnm.GrowFromCenter(text),
            run_time=1.5
            )






GrowFromEdge

GrowFromEdge คือ GrowFromPoint ในกรณีที่ต้องการให้โผล่มาจากส่วนขอบของวัตถุ ในการใช้ให้ใส่ค่าทิศเพื่อระบุว่าจะให้ปรากฏจากมุมหรือขอบไหน

ตัวอย่าง
import manimlib as mnm

class Manimala(mnm.Scene):
    def construct(self):
        text = mnm.Text('โตจากซ้ายบน',size=2.9,color='#d1a88f')
        self.play(
            mnm.GrowFromEdge(text,mnm.UL),
            run_time=1.5
        )






ShrinkToCenter

ในทางตรงกันข้ามกับ GrowFromCenter เวลาต้องการให้ภาพค่อยๆย่อเล็กลงจนหายไปตรงกลางก็อาจใช้ ShrinkToCenter

ตัวอย่าง
import manimlib as mnm

class Manimala(mnm.Scene):
    def construct(self):
        text = mnm.Text('หดหายไป',size=3.3,color='#bbeeff')
        self.play(
            mnm.ShrinkToCenter(text),
            run_time=1.5
        )





อ่านบทถัดไป >> บทที่ ๙





-----------------------------------------

囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧

ดูสถิติของหน้านี้

หมวดหมู่

-- คอมพิวเตอร์ >> เขียนโปรแกรม >> python >> manim

ไม่อนุญาตให้นำเนื้อหาของบทความไปลงที่อื่นโดยไม่ได้ขออนุญาตโดยเด็ดขาด หากต้องการนำบางส่วนไปลงสามารถทำได้โดยต้องไม่ใช่การก๊อปแปะแต่ให้เปลี่ยนคำพูดเป็นของตัวเอง หรือไม่ก็เขียนในลักษณะการยกข้อความอ้างอิง และไม่ว่ากรณีไหนก็ตาม ต้องให้เครดิตพร้อมใส่ลิงก์ของทุกบทความที่มีการใช้เนื้อหาเสมอ

สารบัญ

รวมคำแปลวลีเด็ดจากญี่ปุ่น
มอดูลต่างๆ
-- numpy
-- matplotlib

-- pandas
-- manim
-- opencv
-- pyqt
-- pytorch
การเรียนรู้ของเครื่อง
-- โครงข่าย
     ประสาทเทียม
ภาษา javascript
ภาษา mongol
ภาษาศาสตร์
maya
ความน่าจะเป็น
บันทึกในญี่ปุ่น
บันทึกในจีน
-- บันทึกในปักกิ่ง
-- บันทึกในฮ่องกง
-- บันทึกในมาเก๊า
บันทึกในไต้หวัน
บันทึกในยุโรปเหนือ
บันทึกในประเทศอื่นๆ
qiita
บทความอื่นๆ

บทความแบ่งตามหมวด



ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ

  ค้นหาบทความ

  บทความแนะนำ

ตัวอักษรกรีกและเปรียบเทียบการใช้งานในภาษากรีกโบราณและกรีกสมัยใหม่
ที่มาของอักษรไทยและความเกี่ยวพันกับอักษรอื่นๆในตระกูลอักษรพราหมี
การสร้างแบบจำลองสามมิติเป็นไฟล์ .obj วิธีการอย่างง่ายที่ไม่ว่าใครก็ลองทำได้ทันที
รวมรายชื่อนักร้องเพลงกวางตุ้ง
ภาษาจีนแบ่งเป็นสำเนียงอะไรบ้าง มีความแตกต่างกันมากแค่ไหน
ทำความเข้าใจระบอบประชาธิปไตยจากประวัติศาสตร์ความเป็นมา
เรียนรู้วิธีการใช้ regular expression (regex)
การใช้ unix shell เบื้องต้น ใน linux และ mac
g ในภาษาญี่ปุ่นออกเสียง "ก" หรือ "ง" กันแน่
ทำความรู้จักกับปัญญาประดิษฐ์และการเรียนรู้ของเครื่อง
ค้นพบระบบดาวเคราะห์ ๘ ดวง เบื้องหลังความสำเร็จคือปัญญาประดิษฐ์ (AI)
หอดูดาวโบราณปักกิ่ง ตอนที่ ๑: แท่นสังเกตการณ์และสวนดอกไม้
พิพิธภัณฑ์สถาปัตยกรรมโบราณปักกิ่ง
เที่ยวเมืองตานตง ล่องเรือในน่านน้ำเกาหลีเหนือ
ตระเวนเที่ยวตามรอยฉากของอนิเมะในญี่ปุ่น
เที่ยวชมหอดูดาวที่ฐานสังเกตการณ์ซิงหลง
ทำไมจึงไม่ควรเขียนวรรณยุกต์เวลาทับศัพท์ภาษาต่างประเทศ

ไทย

日本語

中文