Object 생성
manim은 기본적으로 Class 안에 함수가 모두 실행하는것 같다.
정확하게 말하자면 같은 동작을 수행하는 code가 동일하게 존재 하는 것 같다. 조금더 공부를 하면 차이를 알수도 있겟지만 현재로써는 차이가 없는 듯 하다.
예시를 들어서 설명하면 manim Tutorial 가이드는 보통 Class안에 construct 라는 함수를 만들고 거기에 Object 선언부터 생성까지 수행한다.
바로 아래 Code 처럼
class manimExample( Scene ):
def construct(self):
circle0 = Circle()
self.play(Create(circle0))
self.wait()
그러나 동일한 동작을 __init__에 넣어도 상관없다.
class manimExample( Scene ):
def __init__(self ):
super().__init__() # 필수적으로 필요하다
self.circle0 = Circle()
self.play(Create(self.circle0))
self.wait()
Object 선언을 init에서 하고 생성 및 동작을 construct 에서 하는 컨셉도 가능하다.
class manimExample( Scene ):
def __init__(self ):
super().__init__() # 필수적으로 필요하다
self.circle0 = Circle()
def construct(self):
self.play(Create(self.circle0))
self.wait()
manim -pql scene.py manimExample 를 실행하면 모두 같은 결과가 나온다. 특별히 Class안의 어떤 함수만 실행하는것이 아니라 전부다 실행하는것 처럼 생각된다.
어느정도 규약이 자유로운 만큼 Class를 잘 이해하고 있다면 생각 나는 대로 코드를 작성하여도 잘 동작 할 것이다.
그러나 나는 3번째 방법으로 하는 것을 규약처럼 할 것이다.
3번째 방법, 즉 선언부와 구현부의 함수를 나누는 것은 코드가 명확해 진다는 장점이있다.
아래 예시를 보면 init 부분만 보더라도 3개의 Object가 어떻게 나올것임을 명확하게 알 수 있다.
class manimExample( Scene ):
def __init__(self ):
super().__init__() # 필수적으로 필요하다
self.A = Circle()
self.B = Square()
self.C = Triangle()
def construct(self):
self.play(Create(self.A))
self.play(Create(self.B))
self.play(Create(self.C))
self.wait()
따라서 앞으로 최대한 위와 같은 방식을 따라 볼 것이다.
반응형
'Manim > Tutorial' 카테고리의 다른 글
| [Manim] Tutorial 3 - Object 애니메이트 (0) | 2022.05.29 |
|---|---|
| [manim] Function and Method (0) | 2022.05.29 |
| [Manim] Tutorial 1 - manim의 동작 방식 (0) | 2022.05.23 |
| Manim 설치 방법 (0) | 2022.04.13 |