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



manim บทที่ ๗: การจัดการสีและความทึบแสง
เขียนเมื่อ 2021/03/12 00:07
แก้ไขล่าสุด 2021/09/28 16:42
manim บทที่ ๗: การจัดการสีและความทึบแสง

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

ในบทนี้จะว่าด้วยเรื่องของการจัดการกับสีและความทึบแสงของวัตถุ




การเปลี่ยนสีด้วยเมธอด .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
        )





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





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

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

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

หมวดหมู่

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

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

สารบัญ

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

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

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



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

  ค้นหาบทความ

  บทความแนะนำ

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

ไทย

日本語

中文