Patches to Bf Blender for CAD development. https://tornavis.org/
Go to file
Christoph Lendenfeld f06fd85d97 Anim: Restrict range of fcurve_to_keylist
# Issue
Having a lot of keys in your scene can dramatically slow down the Dope Sheet.
That is because everytime the Dope Sheet is redrawn,
the Keylists have to be recomputed.
In the case of the summary channel, that means going through
all keyframes of all the `FCurves` and adding them to the keylist.
That eats up 95% of the time it takes to draw a frame.

# This PR
It's not a perfect solution, rather it solves the performance issue
for the case when you are not displaying all keys.
Instead of going through all the keys, only add the
keys visible in the view to the keylist.
This speeds up the Dope Sheet significantly
depending on the zoom level.

This also improves the responsiveness when selecting and transforming keyframes.

# Performance changes

The function measured is `ED_channel_list_flush`
which is responsible for building the keylists and drawing them.
The test setup contains 62 bones with all
10 channels keyed (location, rot quaternion, scale) on 6000 frames.
So 3.720.000 keys. The heavier the dataset the bigger the performance impact.

The data was recorded with only the Dope Sheet open, and 3 channels visible
* Summary
* Object
* Action

The more channels are visible, the greater the performance gain. This can be seen in the video.

| visible range | before | after |
| - | - | - |
| 200f | 250ms | 10ms |
| 400f | 250ms | 18ms |
| 3000f | 250ms | 130ms |
| 6000f | 250ms | 250ms |

Pull Request: https://projects.blender.org/blender/blender/pulls/114854
2023-11-23 16:37:32 +01:00
.gitea Gitea: add note that developers must opt-out of inclusion in AUTHORS 2023-08-18 09:23:43 +10:00
.github Docs: change Git URLs to point projects.blender.org instead of git.blender.org 2023-02-07 14:23:05 +01:00
build_files `install_linux_packages`: Add libdeflate library. 2023-11-22 15:32:39 +01:00
doc Initial exposure of compute dispatch and image store in Python API 2023-11-23 14:23:26 +01:00
extern Externals: update fmtlib to latest version (10.1.1) 2023-11-21 10:43:14 +02:00
intern Revert "Cycles: Added quality parameter for OIDN" 2023-11-23 13:50:00 +01:00
locale I18N: Updated UI translations from git/weblate repo (45f7411855b5a02). 2023-11-20 12:41:55 +01:00
release Anim: Insert keyframes without keying sets 2023-11-21 15:38:01 +01:00
scripts GPv3: Hide Others operator 2023-11-23 16:03:30 +01:00
source Anim: Restrict range of fcurve_to_keylist 2023-11-23 16:37:32 +01:00
tests RNA: Expose ID type identifier in ID structs, add coherence test. 2023-11-21 18:54:00 +01:00
tools Cleanup: Grammar in comments 2023-11-21 09:42:39 -05:00
.clang-format clang-format: set BraceWrapping::AfterControlStatement to "MultiLine" 2023-05-02 09:37:08 +10:00
.clang-tidy Clang-tidy: Ignore variable name length and .c/.cc include warnings 2022-05-06 15:26:54 +02:00
.editorconfig pyproject: add configuration for autopep8 2022-04-22 10:13:39 +10:00
.git-blame-ignore-revs Cleanup: add commit to .git-blame-ignore-revs 2023-05-03 20:31:11 +10:00
.gitignore Ignore build files for VS and VS Code 2023-03-07 17:38:34 +01:00
AUTHORS AUTHORS: add 3 new developers 2023-11-02 16:09:11 +11:00
CMakeLists.txt Tests: add WIITH_TESTS_BATCHED option to execute Blender once per test 2023-11-08 18:41:33 +01:00
COPYING
GNUmakefile Fix "make doc_man" not working, after changes in 61d99d45 2023-11-22 20:01:41 +01:00
README.md Update references to the new projects platform and main branch 2023-02-07 14:18:19 +01:00
make.bat Windows: Propagate errors in make.bat 2023-08-16 19:29:47 +02:00
pyproject.toml pyproject: remove tools/pyproject.toml 2023-03-01 22:18:28 +11:00

README.md

Blender

Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing.

Blender screenshot

Project Pages

Development

License

Blender as a whole is licensed under the GNU General Public License, Version 3. Individual files may have a different, but compatible license.

See blender.org/about/license for details.