不二如是 发表于 2022-12-11 21:20:37

11 - 图层 & 透明度

本帖最后由 不二如是 于 2022-12-13 18:22 编辑

这一节课我们看两个超级简单的概念。

重点:


[*]set_z_index()
[*]set_opacity()
[*]fade()

如果你有经常 p 图,那么本节课对你来说超级容易。


set_z_index()

“图层”概念和我们在编辑软件中的“图层”是一样的,是对象的前后关系。

默认 z_index 的值为 0,所以数字越大越靠前,就会“挡”住数字小的对象。

我们先默认创建多个对象:

rect = Rectangle(width=2, height=3, fill_color=BLUE, fill_opacity=1)
      circle = Circle(radius=1.5, fill_color=RED, fill_opacity=1)
      text = Text("FishC", font_size=100)
      self.add(rect, circle, text)
效果:



默认矩形在最后,然后是圆形,字体在最前面。

如果想指定图形背景色一定要额外加上 fill_opacity 属性指定透明度为 1,即不透明。

我们通过 set_z_index() 来调整图层,让矩形在前最前,然后是圆形,文字在最后:

text.set_z_index(1)
      circle.set_z_index(2)
      rect.set_z_index(3)
效果:



set_z_index() 值越大就越靠前。


set_opacity()

set_opacity() 属性设置不透明度。

该属性值介于 0 到 1 之间。

如果为 0 即完全透明,1 为完全不透明:

rect = Rectangle(width=2, height=3, fill_color=BLUE, fill_opacity=1)
      circle = Circle(radius=1.5, fill_color=RED, fill_opacity=1)

      rect.set_opacity(0.6)
      circle.set_opacity(0)
效果:



矩形透明度为 0.6 即 60%。

圆形为 0 即完全透明。

相对于 set_opacity() 这样设置绝对数值,fade() 是相对值。

如果 fade(0) 则会使用对象默认的透明度。如果 fade(1) 则完全透明。

就是根据现有透明度来逐步降低:

circle.fade(0.6)
      circle.fade(0.5)
效果:



矩形还是保持 set_opacity(0.6)。

圆形 circle.fade(0.6) 先将为 60% 透明度,然后再此基础上降低 50%,变成 0.3 的透明度。

如果删除透明度,那么只能使用 set_opacity()。

hornwong 发表于 2022-12-12 00:53:23

Manim 越来越好玩了

las6040 发表于 2022-12-12 12:53:08

Manim 越来越好玩了

AhrimanSefid 发表于 2022-12-12 16:04:33

Manim 越来越好玩了

wxm1324 发表于 2022-12-12 17:20:08

Manim 越来越好玩了

liuhongrun2022 发表于 2022-12-13 13:29:23

Manim 越来越好玩了
页: [1]
查看完整版本: 11 - 图层 & 透明度