manim
manim copied to clipboard
TransformMatchingShapes uses shapes outside transformation
Description of bug / unexpected behavior
I have two different MarkupTexts arranged in a column: one up and one down.
Each text gets transformed via TransformMatchingShapes. The text above gets replaced with another one above, and the same for the texts below.
However, some of the letters from the upper text get transformed to letters on the lower text, and viceversa.
Expected behavior
I was expecting to only match shapes (or in this case, letters) inside the two elements of the transformation, not to shapes belonging to objects not involved in the transformation.
How to reproduce the issue
Code for reproducing the problem
import manim
class TestTransformMatchingShapesTwoTexts(manim.Scene):
def construct(self):
mtext1 = manim.MarkupText('Nereak ogia jaten du').shift(manim.UP)
mtext2 = manim.MarkupText('Maitanek Mikeli eskua hartzen dio').shift(manim.DOWN)
self.play(manim.Write(mtext1), manim.Write(mtext2))
mtext3 = manim.MarkupText('Nerea ogia jaten ari da').shift(manim.UP)
mtext4 = manim.MarkupText('Maitane Mikeli eskua hartzen zaio').shift(manim.DOWN)
self.play(manim.TransformMatchingShapes(mtext1, mtext3))
self.play(manim.TransformMatchingShapes(mtext2, mtext4))
Additional media files
Images/GIFs
https://user-images.githubusercontent.com/33621634/182633701-8a119178-02cc-4874-8287-bb7d46e4c57c.mp4
System specifications
System Details
- Windows 10 Home 21H1
- RAM: 8 GB
- Python version: 3.10.5
- Installed modules:
Package Version
------------------- ------------
certifi 2022.6.15
charset-normalizer 2.1.0
click 8.1.3
click-default-group 1.2.2
cloup 0.13.1
colorama 0.4.5
colour 0.1.5
commonmark 0.9.1
decorator 5.1.1
glcontext 2.3.6
idna 3.3
isosurfaces 0.1.0
manim 0.16.0.post0
ManimPango 0.4.1
mapbox-earcut 0.12.11
moderngl 5.6.4
moderngl-window 2.4.1
multipledispatch 0.6.0
networkx 2.8.4
numpy 1.23.0
Pillow 9.1.1
pip 22.2.1
pycairo 1.21.0
pydub 0.25.1
pyglet 1.5.26
Pygments 2.12.0
pyrr 0.10.3
requests 2.28.1
rich 12.4.4
scipy 1.8.1
screeninfo 0.8
setuptools 58.1.0
six 1.16.0
skia-pathops 0.7.2
srt 3.5.2
tqdm 4.64.0
urllib3 1.26.9
watchdog 2.1.9
wheel 0.37.1
FFMPEG
Output of ffmpeg -version:
ffmpeg version 5.0.1-essentials_build-www.gyan.dev Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 11.2.0 (Rev7, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
libavutil 57. 17.100 / 57. 17.100
libavcodec 59. 18.100 / 59. 18.100
libavformat 59. 16.100 / 59. 16.100
libavdevice 59. 4.100 / 59. 4.100
libavfilter 8. 24.100 / 8. 24.100
libswscale 6. 4.100 / 6. 4.100
libswresample 4. 3.100 / 4. 3.100
libpostproc 56. 3.100 / 56. 3.100