manim
的主要功能就是制作影片,因此它提供了各類豐富的影片效果,
本篇主要介紹其中最常用的幾種影片效果,
至于特殊的影片效果,以及自定義影片效果的方法以后再另外介紹,
1. 創建效果
展示某個元素或者文字時,一下子就全顯示出來會顯得比較突兀,通過創建效果的影片,讓各個元素的出現更加的自然,
常用的創建效果影片主要有:Create
,Write
和FadeIn
三個方法,
1.1 Create
Create
一般用在創建圖形上,繪制時圖形逐步顯示出來,
比如:
s = Square(side_length=2, color=BLUE)
self.play(Create(s))
運行效果:
1.2 Write
Write
用在文字的創建上,繪制文字時逐個顯示文字,
比如:
t = Text(
"Welcome to Manim",
t2c={"Welcome": BLUE, "Manim": RED},
t2f={"Manim": "STCaiyun"},
)
self.play(Write(t))
運行效果:
1.3 FadeIn
FadeIn
是一種逐漸由模糊到清晰的顯示方式,
比如:
s = Square(side_length=2, color=BLUE, fill_opacity=0.6)
self.play(FadeIn(s))
運行效果:
2. 銷毀效果
銷毀的效果一般用在移除圖形和文字的場合,
2.1 Uncreate
Uncreate
一般用在擦除圖形,
比如:
s = Square(side_length=2, color=BLUE)
self.add(s)
self.wait(0.5)
self.play(Uncreate(s))
運行效果:
2.2 Unwrite
Unwrite
一般用在擦除文字,
比如:
t = Text(
"Welcome to Manim",
t2c={"Welcome": BLUE, "Manim": RED},
t2f={"Manim": "STCaiyun"},
)
self.add(t)
self.wait(0.5)
self.play(Unwrite(t))
運行效果:
2.3 FadeOut
FadeOut
是一種逐漸消失的顯示方式,
比如:
s = Square(side_length=2, color=BLUE, fill_opacity=0.6)
self.add(s)
self.wait(0.5)
self.play(FadeOut(s))
運行效果:
3. 移動效果
移動的影片有兩個函式:
- shift:移動制定的距離
- move_to:移動到指定點
比如:
s = Square(side_length=1, color=BLUE, fill_opacity=0.6)
self.add(s)
self.play(s.animate.shift(RIGHT)) # 右移1個單位
self.play(s.animate.shift(UP)) # 上移1個單位
self.play(s.animate.shift(LEFT * 2)) # 左移2個單位
self.play(s.animate.shift(DOWN * 3)) # 下移3個單位
self.play(s.animate.move_to(ORIGIN)) # 移動到中心處
運行效果:
4. 旋轉效果
旋轉 Rotate
,通過設定角度和旋轉的中心來控制旋轉效果,
比如:(原地自轉)
s = Square(side_length=2, color=BLUE, fill_opacity=0.6)
self.add(s)
self.play(Rotate(s, angle=2 * PI), run_time=2) # 自旋轉1周
self.wait(0.5)
運行效果:
再比如:(繞某個中心點旋轉)
s = Square(side_length=1, color=BLUE, fill_opacity=0.6).shift(UP)
self.add(s)
# 繞螢屏中心旋轉1周
self.play(Rotate(s, angle=2 * PI, about_point=ORIGIN), run_time=2)
self.wait(0.5)
運行效果:
5. 變換效果
變換也是使用的比較多的一種影片效果,
尤其是在數學視頻中,經常遇到隨著引數的變化,圖形隨之變形;或者反之,
5.1 圖形變換
變換時既可以保留原圖形(TransformFromCopy
),
也可以從原圖形直接變換成新的圖形(ReplacementTransform
),
比如:(保留原圖形)
s = Square(side_length=1, color=BLUE, fill_opacity=0.6).shift(LEFT * 2)
c = Circle(radius=1, color=RED, fill_opacity=0.6).shift(RIGHT * 2)
self.add(s)
self.wait(0.5)
self.play(TransformFromCopy(s, c))
運行效果:
再比如:(不保留原圖形)
s = Square(side_length=1, color=BLUE, fill_opacity=0.6).shift(LEFT * 2)
c = Circle(radius=1, color=RED, fill_opacity=0.6).shift(RIGHT * 2)
self.add(s)
self.wait(0.5)
self.play(ReplacementTransform(s, c))
運行效果:
5.2 文字變換
文字變換與圖形變換類似,
比如:(保留原文字)
t1 = Tex(r"$(a+b)^2$").shift(UP)
t2 = Tex(r"$a^2 + 2ab + b^2$")
self.add(t1)
self.wait(0.5)
self.play(TransformFromCopy(t1, t2))
運行效果:
再比如:(不保留原文字)
t1 = Tex(r"$(a+b)^2$").shift(UP)
t2 = Tex(r"$a^2 + 2ab + b^2$")
self.add(t1)
self.wait(0.5)
self.play(ReplacementTransform(t1, t2))
運行效果:
6. 總結回顧
本篇介紹的是常用的影片,其實 manim
中還提供了其他多種效果的影片,
也提供了影片的底層函式,可以用來封裝自己定制的影片效果,
本篇介紹的常用的影片效果有:
- 創建元素時的影片效果
- 銷毀元素時的影片效果
- 移動元素的影片效果
- 旋轉元素的影片效果
- 不同元素之間變換的的影片效果
本文關聯的微信視頻號短視頻:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/549835.html
標籤:Python