如何在Manim的ThreeDScene中不移动相机旋转3D立方体绕Y轴?
解决Manim中立方体绕自身Y轴旋转(不移动相机)的问题
你当前代码里的Rotate动画默认是绕全局坐标系原点旋转,而非立方体自身中心,所以达不到预期的绕自身Y轴旋转效果。不用移动相机,有两种简单可行的实现方式:
方法1:使用animate.rotate(推荐)
animate方法默认以物体自身中心为旋转基准,直接指定旋转轴和角度即可:
class Intro(ThreeDScene): def construct(self): config.background_color = rgb_to_color(hex_to_rgb("#141414")) sq = Square().shift(LEFT) cu = Cube().shift(RIGHT) VGroup(sq, cu).arrange(RIGHT, buff=2) self.play(Write(sq), Write(cu), run_time=2) self.wait(1) # 绕自身Y轴(对应Manim的UP方向)旋转π弧度 self.play(cu.animate.rotate(PI, axis=UP), rate_func=linear) self.wait(2)
方法2:显式指定旋转中心
如果坚持使用Rotate类,需要通过about_point参数指定立方体的中心作为旋转基准点:
# 替换原旋转代码行 self.play(Rotate(cu, angle=PI, axis=UP, about_point=cu.get_center()), rate_func=linear)
补充说明
- Manim的3D坐标系中,
UP对应Y轴正方向,立方体自身的Y轴与全局Y轴方向一致,因此直接用UP作为旋转轴即可。 - 若要绕其他局部轴旋转,可替换为
RIGHT(X轴)或OUT(Z轴)。
内容的提问来源于stack exchange,提问作者GoodErnest64
相关产品推荐
相关产品推荐

