马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 不二如是 于 2022-12-6 20:15 编辑
通过和小甲鱼老师的讨论,后续课程我就基于上一节课的 Jupyter 来演示。
本节课我们就从 Manim 中最基础的 Mobject 来谈起。
重点:
Mobject 是 Manim 中很多类的父类,例如:
VMobject、ImageMobject、PMobject、ValueTracker、Group/VGroup
这些类都是继承自 Mobject 哦,其中最有趣的就是 VMobject。
它的本质就是贝塞尔曲线(Bézier curve/贝兹曲线):
在 Manim 中看到的任何图像,像“直线、圆、正方形,椭圆形”等等,都是 VMobject 贝塞尔曲线构成。
甚至文本其实也是由 VMobject 构成的哦~
这些方法,随着我们课程的深入,遇到再来讲解。
必知方法
我们先来创建一个最简单的图形和文字案例:
from manim import *
config.medir_width = "100%"
通过上节课说的指令来运行下面的代码:
%%manim -qh MyScene
class MyScene(Scene):
def construct(self):
t = Triangle()
s = Square()
c = Circle()
text = Text("我爱鱼C")
self.add(text) #添加文本
self.wait(0.5) #暂停0.5秒
self.add(t) #添加三角形
self.wait() #暂停1秒
self.add(s,c)#添加矩形和圆形
self.wait(2) #暂停2秒
self.remove(s) #移除矩形
self.wait(0.5)
结果:
代码中的 add(),wait(),remove() 都是很常用的方法。
add() 像屏幕中添加一个或者多个 Mobjec。
wait(t) 等待 t 时长,默认是“秒”单位。默认 1 秒。
remove() 从屏幕中删除一个或多个对象。
关于时间暂停,这里有个小建议。
对于真正的项目来说,我们会使用很多次 wait()。
但为了代码整齐和日后代码的可优化,往往只会几种不同状态的暂停。
例如:
当然,这些值大家根据实际需求去定义修改,上面只是参考~
然后我们自己定义 4 个类,方便后续调用和修改:
这样后续我们直接调用即可,也方便批量修改。
最后的暂停是为了让“最后一个动画彻底结束”,如果你不想加短暂停,直接写 wait() 也可以~
好了,本节课就到这里,一定要动手写代码哦 |