Manim创建对象时强制指定z-index:如何将坐标轴淡入到现有物体后方
Manim坐标轴设置层级不生效问题解决方案
问题原因
- Axes是包含数轴、刻度、刻度标签等多个子元素的
VGroup组合容器,直接给ax.z_index赋值只会修改容器本身的层级,不会同步修改内部所有子元素的层级,子元素默认层级更高,就会出现容器层级低但内容盖在上方的问题。 - 之前给单一元素
Line直接修改z_index可以生效,是因为Line没有嵌套子元素,修改本身属性即可完全控制显示层级。
解决方法
调用Manim内置的set_z_index方法设置层级,该方法默认会递归修改所有子元素的z_index值,符合预期层级效果。
修改后的核心代码如下:
ax = Axes( x_range=[-7, 7, 1], y_range=[-5, 5, 1], ) # 替换原有直接修改z_index属性的写法 ax.set_z_index(myLine.z_index - 1) self.play( FadeIn(ax) )
如果后续你给Axes新增了自定义子元素,重新调用一次set_z_index即可更新所有元素的层级。
内容的提问来源于stack exchange,提问作者Bogdan Stăncescu
相关产品推荐
相关产品推荐

