ManimCommunity / ManimCommunity/manim

config.quality value affects renderer.time math

Open
#2,471 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

issue:bug
Dominant language
Python
Stars
40.9k
Forks
3.1k
Avg merge
3d 12h
Merged PRs (30d)
25

Description

## Description of bug / unexpected behavior

A `Wait` of 0.25s results in a `scene.renderer.time` delta of _0.2s_ when `config.quality = low_quality`.

When `config.quality` is not set resulting time delta is 0.25s.

## Expected behavior

I expect for the elapsed video time of a 0.25s wait to be 0.25s.

## How to reproduce the issue

Code for reproducing the problem

```py
from manim import *
config.quality = "low_quality"
scene = Scene()
start_time = scene.renderer.time
scene.wait(0.25)
print(scene.renderer.time - start_time)
```
On my system, the above prints "0.2". If the `config.quality` line is commented out, it prints "0.25".

## Additional media files

Images/GIFs

## Logs
Terminal output

```
PASTE HERE OR PROVIDE LINK TO https://pastebin.com/ OR SIMILAR
```

## System specifications

System Details

- OS (with version, e.g Windows 10 v2004 or macOS 10.15 (Catalina)): Big Sur 11.6.2 (20G314)
- RAM:
- Python version (`python/py/python3 --version`): 3.9.9
- Installed modules (provide output from `pip list`):
```
Package Version Editable project location
------------------------------------------------- ------------- ---------------------------
aiohttp 3.8.1
aiosignal 1.2.0
alabaster 0.7.12
apipkg 1.5
appdirs 1.4.4
appnope 0.1.2
asttokens 2.0.5
async-timeout 4.0.1
asynctest 0.13.0
attrs 21.2.0
Babel 2.9.1
backcall 0.2.0
base58 2.1.1
bitarray 1.2.2
black 21.11b1
butterfly 3.2.5
cached-property 1.5.2
cachetools 4.2.4
certifi 2021.10.8
cffi 1.14.6
chardet 4.0.0
charset-normalizer 2.0.9
click 8.0.3
click-default-group 1.2.2
cloup 0.7.1
colorama 0.4.4
colour 0.1.5
commonmark 0.9.1
cryptography 3.4.7
Cython 0.29.26
cytoolz 0.11.2
dataclassy 0.11.1
decorator 5.0.9
docutils 0.17.1
eip712 0.1.0
eth-abi 2.1.1
eth-account 0.5.6
eth-bloom 1.0.4
eth-event 1.2.3
eth-hash 0.3.2
eth-keyfile 0.5.1
eth-keys 0.3.3
eth-rlp 0.2.1
eth-tester 0.6.0b4
eth-typing 2.2.2
eth-utils 1.10.0
execnet 1.9.0
frozenlist 1.2.0
gitdb 4.0.9
GitPython 3.1.26
glcontext 2.3.4
google-api-core 2.3.2
google-auth 2.3.3
google-cloud-texttospeech 2.9.0
googleapis-common-protos 1.54.0
grpcio 1.43.0
grpcio-status 1.43.0
hexbytes 0.2.2
hypothesis 6.27.3
idna 3.3
imagesize 1.3.0
importlib-metadata 4.8.2
inflection 0.5.0
iniconfig 1.1.1
ipdb 0.13.9
ipfshttpclient 0.8.0a2
ipython 7.24.0
ipython-genutils 0.2.0
isosurfaces 0.1.0
jedi 0.18.0
Jinja2 3.0.3
jsonschema 3.2.0
lazy-object-proxy 1.6.0
lru-dict 1.1.7
manim 0.14.0
ManimPango 0.4.0.post0
mapbox-earcut 0.12.11
MarkupSafe 2.0.1
matplotlib-inline 0.1.2
mnemonic 0.20
moderngl 5.6.4
moderngl-window 2.4.1
mpmath 1.2.1
multiaddr 0.0.9
multidict 5.2.0
multipledispatch 0.6.0
mutagen 1.45.1
mypy-extensions 0.4.3
mythx-models 1.9.1
netaddr 0.8.0
networkx 2.6.3
numpy 1.22.0
packaging 21.3
parsimonious 0.8.1
parso 0.8.2
pathspec 0.9.0
pexpect 4.8.0
pickleshare 0.7.5
Pillow 9.0.0
pip 21.3.1
platformdirs 2.4.0
pluggy 1.0.0
prompt-toolkit 3.0.23
proto-plus 1.19.8
protobuf 3.19.1
psutil 5.8.0
ptyprocess 0.7.0
pudb 2021.1
py 1.11.0
py-ecc 4.1.0
py-evm 0.5.0a1
py-geth 3.7.0
py-solc-ast 1.2.9
py-solc-x 1.1.1
pyasn1 0.4.8
pyasn1-modules 0.2.8
pycairo 1.20.1
pycoin 0.91.20210515
pycparser 2.20
pycrypto 2.6.1
pycryptodome 3.12.0
pydub 0.25.1
pyethash 0.1.27
pyglet 1.5.21
Pygments 2.10.0
pygments-lexer-solidity 0.7.0
PyJWT 1.7.1
pyobjc 8.1
pyobjc-core 8.1
pyobjc-framework-Accessibility 8.1
pyobjc-framework-Accounts 8.1
pyobjc-framework-AddressBook 8.1
pyobjc-framework-AdServices 8.1
pyobjc-framework-AdSupport 8.1
pyobjc-framework-AppleScriptKit 8.1
pyobjc-framework-AppleScriptObjC 8.1
pyobjc-framework-ApplicationServices 8.1
pyobjc-framework-AppTrackingTransparency 8.1
pyobjc-framework-AudioVideoBridging 8.1
pyobjc-framework-AuthenticationServices 8.1
pyobjc-framework-AutomaticAssessmentConfiguration 8.1
pyobjc-framework-Automator 8.1
pyobjc-framework-AVFoundation 8.1
pyobjc-framework-AVKit 8.1
pyobjc-framework-BusinessChat 8.1
pyobjc-framework-CalendarStore 8.1
pyobjc-framework-CallKit 8.1
pyobjc-framework-CFNetwork 8.1
pyobjc-framework-ClassKit 8.1
pyobjc-framework-CloudKit 8.1
pyobjc-framework-Cocoa 8.1
pyobjc-framework-Collaboration 8.1
pyobjc-framework-ColorSync 8.1
pyobjc-framework-Contacts 8.1
pyobjc-framework-ContactsUI 8.1
pyobjc-framework-CoreAudio 8.1
pyobjc-framework-CoreAudioKit 8.1
pyobjc-framework-CoreBluetooth 8.1
pyobjc-framework-CoreData 8.1
pyobjc-framework-CoreHaptics 8.1
pyobjc-framework-CoreLocation 8.1
pyobjc-framework-CoreMedia 8.1
pyobjc-framework-CoreMediaIO 8.1
pyobjc-framework-CoreMIDI 8.1
pyobjc-framework-CoreML 8.1
pyobjc-framework-CoreMotion 8.1
pyobjc-framework-CoreServices 8.1
pyobjc-framework-CoreSpotlight 8.1
pyobjc-framework-CoreText 8.1
pyobjc-framework-CoreWLAN 8.1
pyobjc-framework-CryptoTokenKit 8.1
pyobjc-framework-DeviceCheck 8.1
pyobjc-framework-DictionaryServices 8.1
pyobjc-framework-DiscRecording 8.1
pyobjc-framework-DiscRecordingUI 8.1
pyobjc-framework-DiskArbitration 8.1
pyobjc-framework-DVDPlayback 8.1
pyobjc-framework-EventKit 8.1
pyobjc-framework-ExceptionHandling 8.1
pyobjc-framework-ExecutionPolicy 8.1
pyobjc-framework-ExternalAccessory 8.1
pyobjc-framework-FileProvider 8.1
pyobjc-framework-FileProviderUI 8.1
pyobjc-framework-FinderSync 8.1
pyobjc-framework-FSEvents 8.1
pyobjc-framework-GameCenter 8.1
pyobjc-framework-GameController 8.1
pyobjc-framework-GameKit 8.1
pyobjc-framework-GameplayKit 8.1
pyobjc-framework-ImageCaptureCore 8.1
pyobjc-framework-IMServicePlugIn 8.1
pyobjc-framework-InputMethodKit 8.1
pyobjc-framework-InstallerPlugins 8.1
pyobjc-framework-InstantMessage 8.1
pyobjc-framework-Intents 8.1
pyobjc-framework-IOSurface 8.1
pyobjc-framework-iTunesLibrary 8.1
pyobjc-framework-KernelManagement 8.1
pyobjc-framework-LatentSemanticMapping 8.1
pyobjc-framework-LaunchServices 8.1
pyobjc-framework-libdispatch 8.1
pyobjc-framework-LinkPresentation 8.1
pyobjc-framework-LocalAuthentication 8.1
pyobjc-framework-MapKit 8.1
pyobjc-framework-MediaAccessibility 8.1
pyobjc-framework-MediaLibrary 8.1
pyobjc-framework-MediaPlayer 8.1
pyobjc-framework-MediaToolbox 8.1
pyobjc-framework-Metal 8.1
pyobjc-framework-MetalKit 8.1
pyobjc-framework-MetalPerformanceShaders 8.1
pyobjc-framework-MetalPerformanceShadersGraph 8.1
pyobjc-framework-MLCompute 8.1
pyobjc-framework-ModelIO 8.1
pyobjc-framework-MultipeerConnectivity 8.1
pyobjc-framework-NaturalLanguage 8.1
pyobjc-framework-NetFS 8.1
pyobjc-framework-Network 8.1
pyobjc-framework-NetworkExtension 8.1
pyobjc-framework-NotificationCenter 8.1
pyobjc-framework-OpenDirectory 8.1
pyobjc-framework-OSAKit 8.1
pyobjc-framework-OSLog 8.1
pyobjc-framework-PassKit 8.1
pyobjc-framework-PencilKit 8.1
pyobjc-framework-Photos 8.1
pyobjc-framework-PhotosUI 8.1
pyobjc-framework-PreferencePanes 8.1
pyobjc-framework-PushKit 8.1
pyobjc-framework-Quartz 8.1
pyobjc-framework-QuickLookThumbnailing 8.1
pyobjc-framework-ReplayKit 8.1
pyobjc-framework-SafariServices 8.1
pyobjc-framework-SceneKit 8.1
pyobjc-framework-ScreenSaver 8.1
pyobjc-framework-ScreenTime 8.1
pyobjc-framework-ScriptingBridge 8.1
pyobjc-framework-SearchKit 8.1
pyobjc-framework-Security 8.1
pyobjc-framework-SecurityFoundation 8.1
pyobjc-framework-SecurityInterface 8.1
pyobjc-framework-ServiceManagement 8.1
pyobjc-framework-Social 8.1
pyobjc-framework-SoundAnalysis 8.1
pyobjc-framework-Speech 8.1
pyobjc-framework-SpriteKit 8.1
pyobjc-framework-StoreKit 8.1
pyobjc-framework-SyncServices 8.1
pyobjc-framework-SystemConfiguration 8.1
pyobjc-framework-SystemExtensions 8.1
pyobjc-framework-UniformTypeIdentifiers 8.1
pyobjc-framework-UserNotifications 8.1
pyobjc-framework-UserNotificationsUI 8.1
pyobjc-framework-VideoSubscriberAccount 8.1
pyobjc-framework-VideoToolbox 8.1
pyobjc-framework-Virtualization 8.1
pyobjc-framework-Vision 8.1
pyobjc-framework-WebKit 8.1
pyOpenSSL 20.0.1
pyparsing 3.0.6
PyQt5 5.15.6
PyQt5-Qt5 5.15.2
PyQt5-sip 12.9.0
pyrr 0.10.3
pyrsistent 0.18.0
pysha3 1.0.2
pytest 6.2.5
pytest-forked 1.3.0
pytest-xdist 1.34.0
python-dateutil 2.8.1
python-dotenv 0.16.0
pythx 1.6.1
pytz 2021.3
PyYAML 5.4.1
regex 2021.11.10
requests 2.26.0
rich 10.16.2
rlp 2.0.1
rsa 4.8
scipy 1.7.3
screeninfo 0.6.7
secp256k1 0.14.0
semantic-version 2.8.5
setuptools 56.0.0
six 1.16.0
skia-pathops 0.7.2
smmap 5.0.0
snowballstemmer 2.2.0
sortedcontainers 2.4.0
Sphinx 4.3.1
sphinx-rtd-theme 1.0.0
sphinxcontrib-applehelp 1.0.2
sphinxcontrib-devhelp 1.0.2
sphinxcontrib-htmlhelp 2.0.0
sphinxcontrib-jsmath 1.0.1
sphinxcontrib-qthelp 1.0.3
sphinxcontrib-serializinghtml 1.1.5
srt 3.5.0
svgwrite 1.4.1
sympy 1.9
toml 0.10.2
tomli 1.2.2
toolz 0.11.2
tornado 6.1
tqdm 4.62.3
traitlets 5.0.5
trie 2.0.0a5
typed-ast 1.5.1
typing-extensions 3.10.0.2
urllib3 1.26.7
urwid 2.1.2
varint 1.0.2
vvm 0.1.0
vyper 0.3.1
watchdog 2.1.6
wcwidth 0.2.5
websockets 9.1
wheel 0.37.0
wrapt 1.13.3
yarl 1.7.2
zipp 3.6.0
```

LaTeX details

+ LaTeX distribution (e.g. TeX Live 2020): pdfTeX 3.141592653-2.6-1.40.22 (TeX Live 2021)
+ Installed LaTeX packages:

FFMPEG

Output of `ffmpeg -version`:

```
ffmpeg version 4.4.1 Copyright (c) 2000-2021 the FFmpeg developers
built with Apple clang version 13.0.0 (clang-1300.0.29.3)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.4.1_5 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-avresample --enable-videotoolbox
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
```

## Additional comments

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the difference using Scene, Scene.wait, config.quality, and renderer.time from the issue. Trace how the low-quality setting determines the wait's elapsed time and compare it with the default configuration. Done means a 0.25s wait reports a 0.25s renderer-time delta in both cases, with a regression test covering the behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
computer-graphics
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.