首页 > 其他分享 >manim边做边学--缩放变换

manim边做边学--缩放变换

时间:2025-01-16 12:03:20浏览次数:1  
标签:ScaleInPlace 动画 缩放 -- self ShrinkToCenter 边学 logo

使用 Manim 进行动画创作时,缩放变换是一项强大且实用的功能。

当我们处理复杂的科学模型可视化、数学原理演示时,缩放变换可以帮助我们在不改变元素位置关系的基础上,突出关键信息,引导观众聚焦于特定的细节。

比如在数学教学动画中,通过对几何图形的缩放,可以清晰地展示图形的比例变化与性质特征。

本篇将介绍Manim中的两个用于缩放变换的类:

  1. ScaleInPlace:用于原地的缩放强调,侧重于对象大小的改变而位置不变
  2. ShrinkToCenter:侧重于将对象向屏幕中心收缩直至消失,适用于场景转换、元素移除等

1. 动画概述

1.1. ScaleInPlace

当你想要强调某个对象的放大或缩小效果,同时保持该对象在原位置进行缩放操作时,可以使用 ScaleInPlace

例如,在讲解数学公式的推导过程中,需要突出显示某个公式的一部分,你可以将这部分进行原地缩放,以吸引观众的注意力。

它也适用于一些元素的局部放大展示,使观众能更清楚地看到细节。

该类实现的是原地缩放效果,对象的中心点不会发生位移,仅在大小上进行缩放。

可以通过调整缩放比例来控制缩放的程度,能够灵活地将对象放大或缩小到所需的尺寸。

它的参数主要有:

参数名称 类型 说明
mobject Mobject 要进行缩放操作的对象
scale_factor float 缩放比例因子

1.2. ShrinkToCenter

ShrinkToCenter适合用于物体消失时的动画效果,它能让对象从当前大小逐渐缩小直至消失在屏幕的中心位置。

例如,在展示一个元素被移除或销毁的过程中,ShrinkToCenter 可以生动地表现出该元素被 “收纳” 或 “吸收” 到屏幕中心的效果。

对于一些具有层级关系的元素,如果想要表示下层元素被上层元素吸收或覆盖时,也可以使用 ShrinkToCenter 让下层元素平滑地收缩到中心,模拟这种层级覆盖的视觉感受。

该类的特点是对象在收缩过程中向屏幕中心收缩,给人一种被 “吸进” 屏幕中心的视觉效果。

它的动画过程是渐进的,会逐渐缩小对象,直到对象完全消失或达到最小尺寸(可根据配置),这个过程的视觉效果可以根据持续时间和缩放速度的设置而有所不同。

它的参数主要有:

参数名称 类型 说明
mobject Mobject 要进行向中心收缩操作的对象

2. 使用示例

ScaleInPlaceShrinkToCenter使用起来比较简单直观,也没有什么复杂的参数。

下面的示例主要演示在哪些实际的场景中可以使用这两个类。

2.1. 原子核的展示

这个示例创建了一个代表原子核的蓝色圆形。

先将其显示,随后使用 ScaleInPlace 动画将其放大 3 倍,以此突出原子核,帮助观众更清晰地关注重点内容。

nucleus = Circle(
    radius=0.5,
    fill_opacity=1,
    color=BLUE,
)
self.play(Create(nucleus))
self.wait()
# 放大原子核,使其更加突出
self.play(ScaleInPlace(nucleus, 3))

2.2. Logo的展示

这个示例针对公司 logo 展示场景,通过 ImageMobject 加载 logo 并设为 0.5 倍初始大小后淡入。

等待 1 秒,利用 ScaleInPlace 动画将 logo 放大 3 倍,从而在开场时吸引观众目光。

logo = ImageMobject("./common/亚原logo.jpg")
logo.scale(0.5)  # 初始缩放比例
self.play(FadeIn(logo))
self.wait()
# 放大 logo 以吸引观众的注意力
self.play(ScaleInPlace(logo, 3))

2.3. 游戏中的生命值

这个示例演示在游戏结束的情境下,创建红色正方形代表生命值方块。

先显示出来,1 秒后使用 ShrinkToCenter 动画使其收缩至中心消失,模拟了生命值损失的效果。

life_block = Square(
    side_length=2,
    fill_opacity=0.6,
    color=RED,
)
self.play(Create(life_block))
self.wait()
# 让生命值方块收缩到中心消失,模拟失去生命值的效果
self.play(ShrinkToCenter(life_block))

2.4. 提示消息的消失

这个示例演示了信息提示场景,先创建白色文本作为提示信息并写出。

等待 2 秒后,运用 ShrinkToCenter 动画让文本收缩至中心消失,实现了提示信息自然消失的动画效果。

s = "这个一个提示信息"
info_text = Text(
    f"{s} !",
    t2g={s: [BLUE, GREEN, YELLOW]},
)
self.play(Write(info_text))
self.wait()
# 使提示文本收缩至中心消失
self.play(ShrinkToCenter(info_text))

3. 附件

文中的代码只是关键部分的截取,完整的代码共享在网盘中(scale.py),

下载地址: 完整代码 (访问密码: 6872)

标签:ScaleInPlace,动画,缩放,--,self,ShrinkToCenter,边学,logo
From: https://www.cnblogs.com/wang_yb/p/18674709

相关文章

  • Cyber Security 101-Offensive Security-SQLMap: The Basics(sqlmap基础)
    了解SQL注入并通过SQLMap工具利用此漏洞。任务1:介绍SQL 注入是一个普遍存在的漏洞,长期以来一直是热门网络安全主题。要了解这个漏洞,我们必须首先了解什么是数据库以及网站如何与数据库交互。数据库是可以存储、修改和检索。它将来自多个应用程序的数据存储在结构化......
  • docker 入门到实战
    一、Docker能解决什么问题?Docker作为一种容器化技术,能够解决多种软件开发和运维中的问题,主要包括:1.环境一致性:确保开发、测试和生产环境的一致性,避免“在我机器上可以运行”的问题。2.依赖管理:容器封装了应用及其所有依赖,使得应用可以在任何支持Docker的环境中运行,无需担......
  • HarmonyOSNext 端云一体化(1)
    HarmonyOSNext端云一体化(1)​CloudFoundationKit(云开发服务)可以按需为应用提供云函数、云数据库、云存储等云端服务。应用运行所需的服务器和环境可以皆由云端平台提供,开发者只需关注应用的业务逻辑,而无需关心基础设施(例如:服务器、操作系统、容器等)。​DevEcoStudio......
  • 移除clock tree的don‘t touch属性
    我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?拾陆楼知识星球入口 为了让clocktree不被绕线或优化影响,我们会使用mark_clock_tree-dont_touch-freeze_routing,但是route阶段可能会产生全局范围内的绕线问题,集中出现在clocknet与signalnet相关绕线上。这里可以......
  • Android 简单实现写入日志信息到日志文件功能
    android简单实现写入日志信息到日志文件功能 1)AppLogHelper.java定义publicclassAppLogHelper{privatestaticfinalStringLOG_DIR="appLog";//日志文件夹名privatestaticfinalStringLOG_NAME="log.txt";//日志文件名privatestaticSimpleD......
  • 职场人如何学好AI?探星AI研习社提供全面内容
    探星AI研习社:职场人学习人工智能的黄金之路一、探星AI研习社简介探星AI研习社,是由探潜学堂联合各行业专家共同发起的平台。该平台致力于为职场人提供全面、系统的人工智能(AI)学习资源与培训服务。通过专业的培养计划,我们旨在帮助职场人提升在人工智能领域的专业知识和技能水平......
  • 渗透测试中如何反编译JAR
    反编译是渗透测试中的重要环节之一。通过反编译,我们可以得到程序的项目结构、相关资源以及配置的数据库等信息。本文以常见SpringBoot项目为例,对其进行反编译。SpringBoot是一个基于Spring的框架,旨在简化Spring应用的配置和开发过程,通过自动配置和约定大于配置的原则,使开......
  • 为什么你的内容没人点赞
    这是阻碍很多人继续写作的大石头。经常听到有人说自己发朋友圈,都没人点赞,于是不想发了。发了公众号没人看,发到星球没人点赞,然后就没动力写了,不想发了。今天不聊动力,不聊反馈的问题,而是聊为什么有人看到但不给你点赞,或者为什么看的人少。一篇文章包括:选题,标题/开头,内容。......
  • 合合信息名片全能王上架原生鸿蒙应用市场,成为首批数字名片类应用
    长期以来,名片都是企业商务沟通的重要工具。随着企业数字化转型,相较于传统的纸质名片,数字名片对于企业成员拓展业务、获取商机、提升企业形象等方面发挥着重要作用。近期,合合信息旗下名片全能王正式上线原生鸿蒙应用市场,成为首批上线的数字名片类应用,帮助用户用AI扫描、识别和管理......
  • 专项训练2
    贪心专题1.[NOIP2015普及组]推销员link:https://www.luogu.com.cn/problem/P2672思路跟正解大差不差,但想的有点复杂了。先把所有的按疲劳值排个序,(这样省却了找最大疲劳值的过程),然后只用考虑第x大的和后面距离+疲劳值最大值的比较即可(累了,不想写了)2.TwoHeapslink:https://......