Skip to content

Mobject created from TransformFromCopy has no start #4510

@strniko

Description

@strniko

Description of bug / unexpected behavior

Mobjects being drawn to the screen by TransformFromCopy with the source mobject being Text or Tex seem to have no points when mobject.get_start() is run and it throws an Exception. I tested it with the source beign some others and it worked fine.

Expected behavior

Well, it's not supposed to throw an exception...

How to reproduce the issue

Code for reproducing the problem
from manim import *

class Main(Scene):
    def construct(self):
        mobject = Circle()
        text = Text("Hello, World!")
        self.add(text)
        self.play(TransformFromCopy(text, mobject))
        print(f"points: {mobject.get_all_points()}")  # this works fine
        print(f"start: {mobject.get_start()}")  # this fails for some reason

Additional media files

Images/GIFs None ☹️

Logs

Terminal output

☝️: The logs include the print message for the points of the mobject, these are obviously not part of the actual logs.

~> manim -ql -v DEBUG ./main.py Main
Manim Community v0.19.1

[12/12/25 18:05:22] DEBUG    Hashing ...                                                                                                                                                                               hashing.py:360
                    DEBUG    Hashing done in 0.014841 s.                                                                                                                                                               hashing.py:372
                    DEBUG    Hash generated :  1584795214_3128665868_2853280237                                                                                                                                        hashing.py:375
                    INFO     Animation 0 : Using cached data (hash : 1584795214_3128665868_2853280237)                                                                                                           cairo_renderer.py:94
                    DEBUG    List of the first few animation hashes of the scene: ['1584795214_3128665868_2853280237']                                                                                          cairo_renderer.py:103
points: [[ 1.00000000e+00  0.00000000e+00  0.00000000e+00]                                                                                                                                                                           
 [ 1.00000000e+00  4.42027483e-02  0.00000000e+00]
 [ 9.97073421e-01  8.81037584e-02  0.00000000e+00]
 ...
 [ 1.00000000e+00 -2.44929360e-16  0.00000000e+00]
 [ 1.00000000e+00 -2.44929360e-16  0.00000000e+00]
 [ 1.00000000e+00 -2.44929360e-16  0.00000000e+00]]
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /home/user/Projects/testing_Manim/.venv/lib/python3.12/site-packages/manim/cli/render/commands.p │
│ y:125 in render                                                                                  │
│                                                                                                  │
│   122 │   │   │   try:                                                                           │
│   123 │   │   │   │   with tempconfig({}):                                                       │
│   124 │   │   │   │   │   scene = SceneClass()                                                   │
│ ❱ 125 │   │   │   │   │   scene.render()                                                         │
│   126 │   │   │   except Exception:                                                              │
│   127 │   │   │   │   error_console.print_exception()                                            │
│   128 │   │   │   │   sys.exit(1)                                                                │
│                                                                                                  │
│ /home/user/Projects/testing_Manim/.venv/lib/python3.12/site-packages/manim/scene/scene.py:260 in │
│ render                                                                                           │
│                                                                                                  │
│    257 │   │   """                                                                               │
│    258 │   │   self.setup()                                                                      │
│    259 │   │   try:                                                                              │
│ ❱  260 │   │   │   self.construct()                                                              │
│    261 │   │   except EndSceneEarlyException:                                                    │
│    262 │   │   │   pass                                                                          │
│    263 │   │   except RerunSceneException:                                                       │
│                                                                                                  │
│ /home/user/Projects/testing_Manim/main.py:11 in construct                                        │
│                                                                                                  │
│    8 │   │   self.add(text)                                                                      │
│    9 │   │   self.play(TransformFromCopy(text, line))                                            │
│   10 │   │   print(f"points: {line.get_all_points()}")  # this works fine                        │
│ ❱ 11 │   │   print(line.get_start())  # this fails for some reason                               │
│   12                                                                                             │
│                                                                                                  │
│ /home/user/Projects/testing_Manim/.venv/lib/python3.12/site-packages/manim/mobject/geometry/arc. │
│ py:297 in get_start                                                                              │
│                                                                                                  │
│    294 │   │   if self.has_start_tip():                                                          │
│    295 │   │   │   return self.start_tip.get_start()                                             │
│    296 │   │   else:                                                                             │
│ ❱  297 │   │   │   return super().get_start()                                                    │
│    298 │                                                                                         │
│    299 │   def get_length(self) -> float:                                                        │
│    300 │   │   start, end = self.get_start_and_end()                                             │
│                                                                                                  │
│ /home/user/Projects/testing_Manim/.venv/lib/python3.12/site-packages/manim/mobject/mobject.py:22 │
│ 87 in get_start                                                                                  │
│                                                                                                  │
│   2284 │                                                                                         │
│   2285 │   def get_start(self) -> Point3D:                                                       │
│   2286 │   │   """Returns the point, where the stroke that surrounds the :class:`~.Mobject` sta  │
│ ❱ 2287 │   │   self.throw_error_if_no_points()                                                   │
│   2288 │   │   return np.array(self.points[0])                                                   │
│   2289 │                                                                                         │
│   2290 │   def get_end(self) -> Point3D:                                                         │
│                                                                                                  │
│ /home/user/Projects/testing_Manim/.venv/lib/python3.12/site-packages/manim/mobject/mobject.py:32 │
│ 03 in throw_error_if_no_points                                                                   │
│                                                                                                  │
│   3200 │   def throw_error_if_no_points(self) -> None:                                           │
│   3201 │   │   if self.has_no_points():                                                          │
│   3202 │   │   │   caller_name = sys._getframe(1).f_code.co_name                                 │
│ ❱ 3203 │   │   │   raise Exception(                                                              │
│   3204 │   │   │   │   f"Cannot call Mobject.{caller_name} for a Mobject with no points",        │
│   3205 │   │   │   )                                                                             │
│   3206                                                                                           │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
Exception: Cannot call Mobject.get_start for a Mobject with no points

System specifications

System Details
  • OS (with version, e.g., Windows 10 v2004 or macOS 10.15 (Catalina)): Debian 6.12.57-1 (2025-11-05) x86_64 GNU/Linux
  • RAM: 64 GB DDR 5
  • Python version (python/py/python3 --version): Python 3.12.12
    • I use UV for a virtual environment: uv 0.9.9
  • Installed modules (provide output from pip list):
    • I used uv pip list, as I don't have a global installation of pip
Package           Version
----------------- -------
av                13.1.0
beautifulsoup4    4.14.3
click             8.3.1
cloup             3.0.8
decorator         5.2.1
glcontext         3.0.0
isosurfaces       0.1.2
manim             0.19.1
manimpango        0.6.1
mapbox-earcut     2.0.0
markdown-it-py    4.0.0
mdurl             0.1.2
moderngl          5.12.0
moderngl-window   3.1.1
networkx          3.6
numpy             2.3.5
pillow            12.0.0
pycairo           1.29.0
pydub             0.25.1
pyglet            2.1.11
pyglm             2.8.3
pygments          2.19.2
rich              14.2.0
scipy             1.16.3
screeninfo        0.8.1
skia-pathops      0.9.0
soupsieve         2.8
srt               3.5.3
svgelements       1.9.6
tqdm              4.67.1
typing-extensions 4.15.0
watchdog          6.0.0
LaTeX details
  • LaTeX distribution (e.g. TeX Live 2020): texlive-full (from the apt repos)
  • Installed LaTeX packages:
    None:
(running on Debian, switching to user mode!)
(see /usr/share/doc/texlive-base/README.tlmgr-on-Debian.md)
TLPDB: not a directory, not loading: /home/user/texmf
tlmgr: user mode not initialized, please read the documentation!

Additional comments

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    🆕 New

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions