Dizzy999
dizzy-theme
Dizzy999
전체 방문자
오늘
어제
  • 분류 전체보기 (34)
    • Machine Learning (1)
      • 논문 리뷰 (0)
      • 수학통계 이론 (1)
      • 짧은글 (0)
    • 알고리즘 (22)
      • 알고리즘 이론 (1)
      • 알고리즘 문제 (20)
      • 짧은글 (1)
    • 프로그램 (2)
      • 프로그래밍 용어 및 상식 (1)
      • C++ (1)
    • 미니프로젝트 (0)
      • Moon Tracker (0)
    • Theme (0)
      • 짧은글 (0)
    • 아두이노&라즈베리파이 (1)
      • 아두이노 (0)
      • 라즈베리파이 (1)
    • Miscellaneous (3)
      • 이과가 이해한 Color (3)
    • OpenCV (0)
      • Tutorial (0)
    • Manim (5)
      • Tutorial (5)

블로그 메뉴

  • 홈
  • 방명록
  • 태그

공지사항

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dizzy999

dizzy-theme

Manim/Tutorial

[Manim] Tutorial 2 - Object 생성

2022. 5. 25. 23:22

 

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
    'Manim/Tutorial' 카테고리의 다른 글
    • [Manim] Tutorial 3 - Object 애니메이트
    • [manim] Function and Method
    • [Manim] Tutorial 1 - manim의 동작 방식
    • Manim 설치 방법
    Dizzy999
    Dizzy999

    티스토리툴바