티스토리 뷰

 

https://www.youtube.com/watch?v=KHGoFDB-raE 

출처는 다음 영상입니다. 해당 포스팅은 파이썬에대한 기초적인 선행지식은 있다고 가정합니다.

 

[3B1B 따라잡기 list]

1. 2023.05.11 - [Computer/코딩 개꿀팁] - [3B1B 따라잡기] 1. Manim 설치 with vscode

 

지난 시간에 Manim 설치하는 방법에 대해서 포스팅했다. 천리길도 딱따구리부터랬나 아무튼 파이썬도 제일 처음 시작하면 배우는게 무엇인가? hello world아니겠는가? 이번시간에는 정말 간단한 도형을 그리는 방법부터 공부해보자.

from manim import * # import manim modules

class Pith(Scene):
    def construct(self):

        sq = Square(
            side_length=5, stroke_color=GREEN, fill_color=BLUE, fill_opacity=0.75
            )

        self.play(Create(sq), run_time=3)
        self.wait()
        
# 코드 실행은 terminal에서 [manim ./yourpythonfile.py YourClassName -pqm] 입력한다.
# 여기서는 manim ./Mypythonfile.py Pith -pqm

 

일단 위 코드에서 class는 항상 Scene을 상속해야한다. def construction(self)와 self.play(Create(your_object)), self.wait()는 정형화된 실행코드로 보인다.

sq = Square()코드를 통해 사각형을 만들 수 있다. Square를 한번 클릭하고 F12를 누르면 construction 아래 다양한 모듈들을 확인할 수 있다. 세세한 코드들은 나도 공부하면서 배워야하니까 일단 넘어가자.

HTML과 CSS등에 익숙하다면 대충 어떤 느낌인지는 생각할 수 있을 것임.

감격 감격 또 감격

크... 천리길도 만만세라고 한걸음 떼었다. 네모난 그림을 하나 그렸다. 멋있다. 3b1b가 된 기분이다. 이번에는 조금 효과를 달리해서 다시 그려보자

class Pith(Scene):
    def construct(self):

        sq = Square(
            side_length=2, stroke_color=RED, fill_color=WHITE, fill_opacity=0.25
            )

        self.play(Create(sq), run_time=5)
        self.wait()

다른 애니메이션이 만들어졌다.

 

이번에는 애니메이션에 글자와 함께 약간 더 복잡한 애니메이션을 만들어보자. 

class Testing(Scene):
    def construct(self):

        name = Tex("Hello World!").to_edge(UL, buff=0.3)
        sq = Square(side_length = 5, fill_color=RED, fill_opacity=1).shift(LEFT * 2)
        tri = Triangle().scale(0.6).to_edge(DR)

        self.play(Write(name))
        # self.play(DrawBorderThenFill(sq), run_time=4)
        self.play(Create(sq), run_time=4)
        self.play(Create(tri))
        self.wait()

 

Tex() 안에 text를 넣는다, object 뒤에 .to_edge()를 이용하면 그 object를 위치시킬 곳을 선택할 수 있다. UL은 Upper Left buff는 margin을 얼마나 떨어트릴지를 결정한다.

.shift는 도형의 위치를 얼마나 옮길지를 결정한다. fill_color는 도형의 색을 결정하고 fill_opacity는 색의 진하기를 나타낸다. 0이면 칠해지지 않고 1에 가까울수록 진하게 칠해진다.

.scale()은 말그대로 도형의 크기를 설정한다. DR은 Down Right이다.

도형은 Create()였던 것과  달리 텍스트를 표현하기 위해서는 self.play()내부에 Write()를 이용한다. 결과를 확인해보자.

 

좋다. 오늘 여기까지 공부하고 이만 마치도록 하자. 앞으로 꾸준히, Manim은 공부해서 나만의 시각화 툴로 완벽히 다룰 수 있도록 공부할 것이다.

댓글