This is part two of an article about how Blender Studio integrated Kitsu into Sprite Fright's production pipeline. In this piece you will learn how the animation and lookdev departments interact with Kitsu from within Blender.
It helps when a .blend file is connected to a task on Kitsu. This way, the .blend "knows" what's currently being worked on. Is it a shot or an asset? Which shot is it and what sequence does it belong to? If we know the answers to these questions, we can offer the artists many useful tools.
For this reason the Blender-Kitsu add-on has a context browser that works like this:
The artists can directly browse the data structure that is stored on Kitsu and either manually select what they are working on or automatically detect it via the filepath.
One very important aspect of animation is the review process. Animators do playblasts of their work and get feedback. Kitsu lets you upload attachments to a specific task and offers paintover and annotation features for videos -- both of which are very useful for the review process.
To upload their work to Kitsu, animators have to go through multiple steps manually, which takes up a considerable amount of time. This is especially true if you have to do multiple playblasts in one day. Luckily, the Blender-Kitsu add-on has a playblast feature built-in, alleviating a lot of this struggle.
With the add-on you don't have to leave Blender to upload a playblast to Kitsu. The animators can even provide a little information on what they did and set the status of the task. In the add-on preferences there are two options that can be enabled:
Open web browser after playblast which opens the default system web browser which in turn points to the active shot after the playblast so the animators can immediately review their work on Kitsu.
Open Sequence Editor after playblast which loads the exported playblast in the Sequence Editor in a new scene and plays back instantly.
Maybe you also noticed that the add-on warns you if the frame range of your current scene is out of date (this is after you connected the .blend file to a shot). This gets checked on scene load and makes sure that the frame range of the animation scene always matches the one on Kitsu. It is not unlikely that frame ranges change during the production and they need to be communicated at every production step.
While the lookdev department also has the frame range check on scene load enabled, they have another small tool to quickly apply render settings. These are just python files that get executed when they click the run button.
This was a quick overview of the context features of the Blender-Kitsu add-on. It is now part of the Blender Studio Tools repository, which you can find here.
Hi! I'm wondering if it still working? because I have some errors:
Traceback (most recent call last): File "C:\Program Files\Blender Foundation\Blender 3.3\3.3\scripts\addons\blender_kitsu\auth\ops.py", line 71, in execute cache.init_startup_variables(context) File "C:\Program Files\Blender Foundation\Blender 3.3\3.3\scripts\addons\blender_kitsu\cache.py", line 456, in init_startup_variables load_user_all_tasks(context) File "C:\Program Files\Blender Foundation\Blender 3.3\3.3\scripts\addons\blender_kitsu\cache.py", line 363, in load_user_all_tasks tasks = _user_active.all_tasks_to_do() File "C:\Program Files\Blender Foundation\Blender 3.3\3.3\scripts\addons\blender_kitsu\types.py", line 984, in all_tasks_to_do task_list = [Task(**task_dict) for task_dict in gazu.user.all_tasks_to_do()] File "C:\Program Files\Blender Foundation\Blender 3.3\3.3\scripts\addons\blender_kitsu\types.py", line 984, in task_list = [Task(**task_dict) for task_dict in gazu.user.all_tasks_to_do()] TypeError: Task.init() got an unexpected keyword argument 'nb_assets_ready' Error: Python: Traceback (most recent call last): File "C:\Program Files\Blender Foundation\Blender 3.3\3.3\scripts\addons\blender_kitsu\auth\ops.py", line 71, in execute cache.init_startup_variables(context) File "C:\Program Files\Blender Foundation\Blender 3.3\3.3\scripts\addons\blender_kitsu\cache.py", line 456, in init_startup_variables load_user_all_tasks(context) File "C:\Program Files\Blender Foundation\Blender 3.3\3.3\scripts\addons\blender_kitsu\cache.py", line 363, in load_user_all_tasks tasks = _user_active.all_tasks_to_do() File "C:\Program Files\Blender Foundation\Blender 3.3\3.3\scripts\addons\blender_kitsu\types.py", line 984, in all_tasks_to_do task_list = [Task(**task_dict) for task_dict in gazu.user.all_tasks_to_do()] File "C:\Program Files\Blender Foundation\Blender 3.3\3.3\scripts\addons\blender_kitsu\types.py", line 984, in task_list = [Task(**task_dict) for task_dict in gazu.user.all_tasks_to_do()] TypeError: Task.init() got an unexpected keyword argument 'nb_assets_ready'
i want to use this but for my layout task i dont get the shot publishing tools that i get in anim, but even in anim the blender studio folder structure seems to be hardcoded
I am also having problems while trying to upload thumbnail to Kitsu. the log is below... please help using blender version 3.2.0 on windows. the mdeta data version does come in i.e In Out duration shot name etc..
INFO:blender-kitsu:-START- Pushing shot thumbnails INFO:blender-kitsu:Strip: SH001. Is linked to ID: d9f2ae68-aaab-444e-8d6a-63dc9edb2c4c INFO:blender-kitsu:Strip: SH001 Shot SH001 exists on server (ID: d9f2ae68-aaab-444e-8d6a-63dc9edb2c4c) INFO:blender-kitsu:Saved thumbnail of shot SH001 to C:/Users/TitanWs/AppData/Roaming/blender_kitsu/thumbnails/97b301407d81759ae1d1430612ffe172/d9f2ae68-aaab-444e-8d6a-63dc9edb2c4c_34.jpg Traceback (most recent call last): File "c:\Program Files\Blender Foundation\Blender 3.2\3.2\scripts\addons\blender_kitsu\sqe\ops.py", line 1192, in execute opsdata.upload_preview( File "c:\Program Files\Blender Foundation\Blender 3.2\3.2\scripts\addons\blender_kitsu\sqe\opsdata.py", line 186, in upload_preview task = Task.new_task(shot, task_type, task_status=task_status) File "c:\Program Files\Blender Foundation\Blender 3.2\3.2\scripts\addons\blender_kitsu\types.py", line 813, in new_task task_dict = gazu.task.new_task( File "c:\Program Files\Blender Foundation\Blender 3.2\3.2\scripts\addons\blender_kitsu\gazu\task.py", line 552, in new_task "assignees": normalize_list_of_models_for_links(assignees), File "c:\Program Files\Blender Foundation\Blender 3.2\3.2\scripts\addons\blender_kitsu\gazu\helpers.py", line 59, in normalize_list_of_models_for_links return [normalize_model_parameter(model)["id"] for model in models] File "c:\Program Files\Blender Foundation\Blender 3.2\3.2\scripts\addons\blender_kitsu\gazu\helpers.py", line 59, in return [normalize_model_parameter(model)["id"] for model in models] TypeError: 'NoneType' object is not subscriptable Error: Python: Traceback (most recent call last): File "c:\Program Files\Blender Foundation\Blender 3.2\3.2\scripts\addons\blender_kitsu\sqe\ops.py", line 1192, in execute opsdata.upload_preview( File "c:\Program Files\Blender Foundation\Blender 3.2\3.2\scripts\addons\blender_kitsu\sqe\opsdata.py", line 186, in upload_preview task = Task.new_task(shot, task_type, task_status=task_status) File "c:\Program Files\Blender Foundation\Blender 3.2\3.2\scripts\addons\blender_kitsu\types.py", line 813, in new_task task_dict = gazu.task.new_task( File "c:\Program Files\Blender Foundation\Blender 3.2\3.2\scripts\addons\blender_kitsu\gazu\task.py", line 552, in new_task "assignees": normalize_list_of_models_for_links(assignees), File "c:\Program Files\Blender Foundation\Blender 3.2\3.2\scripts\addons\blender_kitsu\gazu\helpers.py", line 59, in normalize_list_of_models_for_links return [normalize_model_parameter(model)["id"] for model in models] File "c:\Program Files\Blender Foundation\Blender 3.2\3.2\scripts\addons\blender_kitsu\gazu\helpers.py", line 59, in return [normalize_model_parameter(model)["id"] for model in models] TypeError: 'NoneType' object is not subscriptable
Firstable, thank you for your hardwork. I wonder what version of Blender you are using? I use both Blender 2.93 and 3.00 both resulting in error message when i try to log in
Python: Traceback (most recent call last): File "/home/johantri/.config/blender/2.93/scripts/addons/blender_kitsu/auth/ops.py", line 71, in execute cache.init_startup_variables(context) File "/home/johantri/.config/blender/2.93/scripts/addons/blender_kitsu/cache.py", line 456, in init_startup_variables load_user_all_tasks(context) File "/home/johantri/.config/blender/2.93/scripts/addons/blender_kitsu/cache.py", line 363, in load_user_all_tasks tasks = _user_active.all_tasks_to_do() File "/home/johantri/.config/blender/2.93/scripts/addons/blender_kitsu/types.py", line 984, in all_tasks_to_do task_list = [Task(**task_dict) for task_dict in gazu.user.all_tasks_to_do()] File "/home/johantri/.config/blender/2.93/scripts/addons/blender_kitsu/types.py", line 984, in task_list = [Task(**task_dict) for task_dict in gazu.user.all_tasks_to_do()] TypeError: init() got an unexpected keyword argument 'nb_assets_ready'
location: :-1
@Johan Tri Handoyo would be nice to implement studio tools- but kitsu-blender compability of new versions seems to be off...
This is awesome, great job !
Join to comment publicly.