ต่อจาก
บทที่ ๖
ในบทนี้จะว่าด้วยเรื่องของการจัดการกับสีและความทึบแสงของวัตถุ
การเปลี่ยนสีด้วยเมธอด .set_color()
สีของวัตถุสามารถกำหนดได้ตั้งแต่ตอนสร้างโดยใส่ที่คีย์เวิร์ด color และนอกจากนี้หากต้องการปรับในภายหลังก็ทำได้โดบใช้เมธอด .set_color()
เมธอด .set_color() สามารถใช้กับ .animate เพื่อทำเป็นภาพเคลื่อนไหวได้
ตัวอย่าง
import manimlib as mnm
class Manimala(mnm.Scene):
def construct(self):
text = mnm.Text('แดงขึ้น',color='#11ff33',size=4)
self.play(
text.animate.set_color('#ff0000'),
run_time=1.5
)
self.wait(0.5)
การเปลี่ยนสีด้วย FadeToColor
.animate.set_color() นั้นอาจเขียนแทนได้ด้วย FadeToColor โดยใส่ออบเจ็กต์ตัววัตถุและสีที่ต้องการแปลงลงไป
ตัวอย่าง
import manimlib as mnm
class Manimala(mnm.Scene):
def construct(self):
text = mnm.Text('เขียวขึ้น',color='#aa44ff',size=4)
self.play(
mnm.FadeToColor(text,'#00ff00'),
run_time=1.5
)
self.wait(0.5)
การปรับความทึบแสงโดยเมธอด .set_opacity()
ค่าความทึบแสงของวัตถุนั้นหากไม่ได้กำหนดไว้ โดยตั้งต้นก็จะเป็น 1 คือมองเห็นทั้งหมด ถ้าค่าเป็น 0 ก็คือล่องหน
การปรับค่าความทึบแสงสามารถทำได้โดยใช้เมธอด .set_opacity() ซึ่งก็สามารถใช้กับ .animate เพื่อทำเป็นภาพเคลื่อนไหวได้
ตัวอย่าง
import manimlib as mnm
class Manimala(mnm.Scene):
def construct(self):
text = mnm.Text('เลือนราง\n\nจนเกือบหายไป',color='#d8d9ff',size=3)
self.add(text)
self.play(
text.animate.set_opacity(0.1),
run_time=1.5,
lag_ratio=0.5
)
การทำให้เลือนรางลงโดยเมธอด .fade()
เมธอด .fade() จะคล้ายกับ .set_opacity() แต่จะต่างกันตรงที่ค่าที่ใส่ไปจะเป็นความโปร่งใส (= 1 - ค่าความทึบแสง) แทน
ตัวอย่าง
import manimlib as mnm
class Manimala(mnm.Scene):
def construct(self):
text = mnm.Text('เลือนราง\n\nลงนิดนึง',color='#d8fff6',size=3)
self.add(text)
self.play(
text.animate.fade(0.15),
run_time=1.5,
lag_ratio=0.5
)
การปรับสีให้เหมือนวัตถุอื่นด้วยเมธอด .match_color()
ถ้ามีวัตถุตัวหนึ่งที่มีสีอยู่แล้วต้องการเปลี่ยนให้อีกวัตถุเป็นสีเดียวกันตามก็อาจใช้เมธอด .match_color()
ตัวอย่าง
import manimlib as mnm
class Manimala(mnm.Scene):
def construct(self):
text1 = mnm.Text('แดงกลายเป็นฟ้า',size=2,color='#ff3333')
text2 = mnm.Text('ฟ้า',size=4,color='#33ffff')
vg = mnm.VGroup(text1,text2)
vg.arrange(mnm.UP)
self.add(vg)
self.play(
text1.animate.match_color(text2),
run_time=1.5,
lag_ratio=0.9
)
การทำไล่สีโดยใช้เมธอด .set_color_by_gradient()
สำหรับวัตถุที่เป็นกลุ่มมีหลายๆตัวสามารถใส่สีให้ไล่เรียงกันไปตามวัตถุแต่ละตัวได้ด้วยเมธอด .set_color_by_gradient() ใส่สีที่ต้องการไล่ไปตามลำดับ
เช่น ลองใช้กับวัตถุตัวหนังสือ
import manimlib as mnm
class Manimala(mnm.Scene):
def construct(self):
text = mnm.Text('ไล่สีจากแดง\n\nไปเขียว',color='#000033',size=3)
self.add(text)
self.play(
text.animate.set_color_by_gradient('#ff0000','#00ff00'),
run_time=1.5
)
self.wait(0.5)
จะใส่มากกว่า ๒ สีก็ได้ เช่นลอง ๓ สีก็จะไล่เป็น ๓ สีนั้น
import manimlib as mnm
class Manimala(mnm.Scene):
def construct(self):
text = mnm.Text('oooooooo\noooooooo\noooooooo\noooooooo',color='#000033',size=3)
text.set_color_by_gradient('#ff0000','#00ff00','#0000ff')
self.add(text)
self.play(
text.animate.set_color_by_gradient('#00ffff','#ff00ff','#ffff00'),
run_time=1.5,
lag_ratio=0.8
)
อ่านบทถัดไป >>
บทที่ ๘