mirror of
https://github.com/3b1b/manim.git
synced 2025-07-28 20:43:56 +08:00
Added FadeTransform and FadeTransformPieces
This commit is contained in:
@ -1,5 +1,6 @@
|
|||||||
from manimlib.animation.animation import Animation
|
from manimlib.animation.animation import Animation
|
||||||
from manimlib.animation.transform import Transform
|
from manimlib.animation.transform import Transform
|
||||||
|
from manimlib.mobject.mobject import Group
|
||||||
from manimlib.constants import ORIGIN
|
from manimlib.constants import ORIGIN
|
||||||
from manimlib.utils.bezier import interpolate
|
from manimlib.utils.bezier import interpolate
|
||||||
from manimlib.utils.rate_functions import there_and_back
|
from manimlib.utils.rate_functions import there_and_back
|
||||||
@ -55,7 +56,57 @@ class FadeInFromPoint(FadeIn):
|
|||||||
super().__init__(mobject, shift=mobject.get_center() - point, **kwargs)
|
super().__init__(mobject, shift=mobject.get_center() - point, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
# Below will be deprecated
|
class FadeTransform(Transform):
|
||||||
|
CONFIG = {
|
||||||
|
"stretch": True,
|
||||||
|
"dim_to_match": 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
def __init__(self, mobject, target_mobject, **kwargs):
|
||||||
|
self.to_add_on_completion = target_mobject
|
||||||
|
super().__init__(
|
||||||
|
Group(mobject, target_mobject.copy()),
|
||||||
|
**kwargs
|
||||||
|
)
|
||||||
|
|
||||||
|
def begin(self):
|
||||||
|
self.ending_mobject = self.mobject.copy()
|
||||||
|
Animation.begin(self)
|
||||||
|
# Both 'start' and 'end' consists of the source and target mobjects.
|
||||||
|
# At the start, the traget should be faded replacing the source,
|
||||||
|
# and at the end it should be the other way around.
|
||||||
|
start, end = self.starting_mobject, self.ending_mobject
|
||||||
|
for m0, m1 in ((start[1], start[0]), (end[0], end[1])):
|
||||||
|
self.ghost_to(m0, m1)
|
||||||
|
|
||||||
|
def ghost_to(self, source, target):
|
||||||
|
source.replace(target, stretch=self.stretch, dim_to_match=self.dim_to_match)
|
||||||
|
source.set_opacity(0)
|
||||||
|
|
||||||
|
def get_all_mobjects(self):
|
||||||
|
return [
|
||||||
|
self.mobject,
|
||||||
|
self.starting_mobject,
|
||||||
|
self.ending_mobject,
|
||||||
|
]
|
||||||
|
|
||||||
|
def get_all_families_zipped(self):
|
||||||
|
return Animation.get_all_families_zipped(self)
|
||||||
|
|
||||||
|
def clean_up_from_scene(self, scene):
|
||||||
|
Animation.clean_up_from_scene(self, scene)
|
||||||
|
scene.remove(self.mobject)
|
||||||
|
scene.add(self.to_add_on_completion)
|
||||||
|
|
||||||
|
|
||||||
|
class FadeTransformPieces(FadeTransform):
|
||||||
|
def begin(self):
|
||||||
|
self.mobject[0].align_data(self.mobject[1])
|
||||||
|
super().begin()
|
||||||
|
|
||||||
|
def ghost_to(self, source, target):
|
||||||
|
for sm0, sm1 in zip(source.get_family(), target.get_family()):
|
||||||
|
super().ghost_to(sm0, sm1)
|
||||||
|
|
||||||
|
|
||||||
class VFadeIn(Animation):
|
class VFadeIn(Animation):
|
||||||
|
Reference in New Issue
Block a user