ต่อจาก
บทที่ ๗
บทนี้จะยกตัวอย่างคลาสต่างๆที่ทำให้วัตถุในภาพค่อยๆปรากฏตัวขึ้นหรือถูกลบหายไป
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
)
อ่านบทถัดไป >>
บทที่ ๙