티스토리 뷰
[3B1B 따라잡기 with Manim] 5. ValueTracker
벼랑끝과학자 2023. 5. 16. 03:57https://www.youtube.com/watch?v=KHGoFDB-raE
출처는 다음 영상입니다. 해당 포스팅은 파이썬에대한 기초적인 선행지식은 있다고 가정합니다.
[3B1B 따라잡기 list]
2023.05.11 - [Computer/코딩 개꿀팁] - [3B1B 따라잡기 with Manim] 1. Manim 설치 with vscode
2023.05.12 - [Computer/코딩 개꿀팁] - [3B1B 따라잡기 with Manim] 2. How to create Scene
2023.05.15 - [Computer/코딩 개꿀팁] - [3B1B 따라잡기 with Manim] 3. Error message 파악하기
2023.05.15 - [Computer/코딩 개꿀팁] - [3B1B 따라잡기 with Manim] 4. Animation Updaters
이번 포스팅에서는 숫자를 tracking하면서 변화시키는 ValueTracker를 만들어보자.
일단 숫자를 Create해서 play시켜보자.
class ValueTrackers(Scene):
def construct(self):
k = ValueTracker(3.5)
num = DecimalNumber(font_size=72).set_value(k.get_value())
self.play(FadeIn(num))
self.play(k.animate.set_value(0), run_time=3)
self.wait(duration=2)
처음 k를 ValueTracker Mobject로 할당하고, 그 값을 3.5로 initialization한뒤, num 변수에 DecimalNumber() 함수를 이용해서 소수형태의 값을 할당하려 한다. 이때 .set_value()를 이용해 num변수의 값을 할당하는데, k.get_value()를 이용해 k의 값을 가져와 num변수에 할당시켰다. font_size는 말그대로 font size이다.
FadeIn은 말 그대로 FadeIn function이다.
k.animate.set_value(0)를 이용해 ValueTracker인 k의 값을 3.5에서 0으로 낮추려한다. 실행 결과를 보자.
3.50이라는 DecimalNumber() Mobject는 play가 되지만 k.animate.set_value(0)는 실행이 되지 않는다. ValueTracker 역시 Updater 기능을 이용해야 비로소 animate가 동작한다. 따라서 코드를 다음과 같이 바꿔줘야한다.
class ValueTrackers(Scene):
def construct(self):
k = ValueTracker(3.5)
# 기존 코드 #
# num = DecimalNumber(font_size=72).set_value(k.get_value())
# 수정한 코드 #
num = always_redraw(lambda:DecimalNumber(font_size=72).set_value(k.get_value()))
self.play(FadeIn(num))
self.play(k.animate.set_value(0), run_time=3)
self.wait(duration=2)
4장에서 배웠던 것 처럼 always_redraw(labmda : ) 함수를 이용해 updater를 지정해주면 정상적으로 ValueTracking이 되는 것을 확인할 수 있다. 나중에 따로 포스팅 하겠지만 updater는 always_redraw뿐 아니라 다른종류도 많이 존재한다.
ValueTracker의 경우 frame동안에 계속해서 숫자의 변환이 발생해서 도형보다는 encoding시간이 긴 편이다.
자세히 보면 숫자가 변하는 속도가 일정하지 않다. 숫자의 변화를 시간의 흐름과 맞춰 일정하게 변화시키고 싶으면 다음과 같이 작성하면 된다.
class ValueTrackers(Scene):
def construct(self):
k = ValueTracker(5)
num = always_redraw(lambda:DecimalNumber(font_size=72).set_value(k.get_value()))
self.play(FadeIn(num))
# 수정된 코드 #
self.play(k.animate.set_value(0), run_time=5, rate_func=linear)
self.wait(duration=2)
rate_func=linear 옵션을 통해서 숫자의 변화량을 일정하게 맞출 수 있다. 실행결과를 확인해보자.
숫자가 시간 간격에 맞춰 일정하게 감소하는 것을 확인 할 수 있다.
'Computer > 3B1B 따라잡기 with ManimLibrary' 카테고리의 다른 글
[3B1B따라잡기 with Manim!][1일 1마님] 1. lag_ratio (0) | 2023.05.18 |
---|---|
[3B1B 따라잡기 with Manim] 6. Graphing (0) | 2023.05.16 |
[3B1B 따라잡기 with Manim] 4. Animation Updaters (0) | 2023.05.15 |
[3B1B 따라잡기 with Manim] 3. Error message 파악하기 (0) | 2023.05.15 |
[3B1B 따라잡기 with Manim] 2. How to create Scene (0) | 2023.05.12 |
- Total
- Today
- Yesterday
- MorganCircularfingerprint
- variational autoencoder
- kl divergence
- 파이썬
- marginal likelihood
- Manimlibrary
- 인공지능
- manim library
- manimtutorial
- 제한볼츠만머신
- elementry matrix
- MLE
- 최대우도추정
- 3b1b
- manim
- eigenvalue
- 이왜안
- eigenvector
- 3B1B따라잡기
- vae
- MatrixAlgebra
- 백준
- 오일석기계학습
- Matrix algebra
- 베이즈정리
- ai신약개발
- ai인공지능
- 기계학습
- 선형대수
- kld
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |