Almost BETA - Blender Today LIVE #248
Changelog
261 commits in total, of which 26 are fixes and 66 cleanup.
Add an optional "frame" & "tile_index" argument to Image.scale()
- Add an optional "frame" & "tile_index" argument to Image.scale() - Philipp Oeser
Addon
Anim
- Anim: Armature, move notifiers from setters to updaters - Sybren A. Stüvel
- Anim: Change tooltip for Insert Needed and Insert Available - Christoph Lendenfeld
- Anim: bone collections, store expanded/collapsed state in DNA - Sybren A. Stüvel
- Anim: Properties Dialog Titles - Harley Acheson
BLI
- BLI: improve BitVector move constructor - Jacques Lucke
- BLI: Avoid computing size when referencing std::string - Hans Goudey
- BLI: support formatting StringRef with the fmt library - Jacques Lucke
Build
- Build: Bump OpenColorIO to 2.3.2 - Brecht Van Lommel
- Build: upgrade Level Zero to 1.15.8 - Xavier Hallade
- Build: upgrade OIDN to 2.2-rc - Xavier Hallade
- Build: Cycles: Backport a DPC++ fix for caching of GPU binaries - Nikita Sirgienko
CMake
- CMake: Disable unity builds on cmake 2.28.2 - Ray Molenkamp
Cleanup
-
Cleanup: add missing
#pragma oncetoANIM_animdata.hh- Sybren A. Stüvel - Cleanup: anim, add newlines between groups of includes - Sybren A. Stüvel
- Cleanup: Rename function to ensure button operator properties - Hans Goudey
- Cleanup: Use std::string for WM API function return values - Hans Goudey
- Cleanup: Move BKE_deform.h to C++ - Hans Goudey
- Cleanup: use a dictionary for add-on lookups - Campbell Barton
- Cleanup: use std::optional instead of empty strings for return values - Campbell Barton
- Cleanup: add PyC_UnicodeFromStdStr utility function - Campbell Barton
-
Cleanup: Anim, simplify
animviz_verify_motionpaths()- Sybren A. Stüvel - Cleanup: Fix warning of deprecated value in Paint struct - Hans Goudey
- Cleanup: make format - Jacques Lucke
- Cleanup: EEVEE-Next: Fix compilation warnings in shadow tests - Clément Foucault
- Cleanup: EEVEE-Next: Replace unused Gbuffer struct - Clément Foucault
- Cleanup: Move BKE_key.h to C++ - Hans Goudey
- Cleanup: Remove unnecessary keywords in C++ headers - Hans Goudey
- Cleanup: quiet warning - Jacques Lucke
- Cleanup: Use std::string for some RNA function return values - Hans Goudey
- Cleanup: Move internal RNA headers to C++ - Hans Goudey
- Cleanup: General C++ cleanup for internal RNA headers - Hans Goudey
- Cleanup: Use std::string for RNA path functions - Hans Goudey
- Cleanup: UI: Remove unnecessary function for setting button string - Hans Goudey
- Cleanup: UI: Remove unused button creation functions - Hans Goudey
- Cleanup: Move BLF headers to C++ - Hans Goudey
- Cleanup: Small changes to asset shelf code - Hans Goudey
- Cleanup: Make format - Hans Goudey
- Cleanup: Perform cleanup on sculpt_automasking.cc - Sean Kim
- Cleanup: Move remaining spreadsheet editor code to C++ namespace - Hans Goudey
- Cleanup: Use StringRef arguments for some UI button functions - Hans Goudey
- Cleanup: Replace most used of SWAP macro with std::swap - Hans Goudey
- Cleanup: Pass const context to asset function - Hans Goudey
- Cleanup: Make format - Hans Goudey
- Cleanup: rename add-on related variables for clarity - Campbell Barton
- Cleanup: Geometry Nodes: merge repeat zone node files - Jacques Lucke
- Cleanup: merge simulation input and output nodes and extract mix geometries function - Jacques Lucke
- Cleanup: Incorrect Parameter Order for Expect - Jeroen Bakker
- Cleanup: GPU: Fix shader builder compilation warning - Clément Foucault
- Cleanup: move some geometry field inputs to more correct header - Jacques Lucke
-
Cleanup: RNA, do early return in
RNA_path_from_struct_to_idproperty- Sybren A. Stüvel - Cleanup: Move GPU_material.h to C++ - Hans Goudey
- Cleanup: UI: Remove a1 and a2 unused arguments from uiDefButF function - Hans Goudey
- Cleanup: make format - Brecht Van Lommel
- Cleanup: strip trailing space - Campbell Barton
- Cleanup: various non-functional changes for C++ - Campbell Barton
- Cleanup: spelling in comments - Campbell Barton
- Cleanup: remove empty statements - Philipp Oeser
-
Cleanup: document
CTX_wm_operator_poll_msg_set- Sybren A. Stüvel - Cleanup: Correctly name bokeh blur shaders - Omar Emara
- Cleanup: Remove unused capture - Sergey Sharybin
- Cleanup: EEVEE-Next: Shadow: Wrap loop condition in function - Clément Foucault
- Cleanup: make format - Brecht Van Lommel
- Cleanup: improve method name - Jacques Lucke
- Cleanup: Remove unnecessary std::string braces for default construction - Hans Goudey
- Cleanup: Reduce indentation in UI tooltip function - Hans Goudey
- Cleanup: move hash and ghash utils to C++ - Jacques Lucke
- Cleanup: Store space types in vector of unique_ptr - Hans Goudey
- Cleanup: correct type info in check_docs_code_layout - Campbell Barton
- Cleanup: Use fmtlib instead of streams when creating USD collection name - Jesse Yurkovich
- Cleanup: Use CLOG instead of printf for USD logging - Jesse Yurkovich
- Cleanup: CMake: Modernize extern_fmtlib dependencies - Ray Molenkamp
- Cleanup: remove accidental include leftovers - Aras Pranckevicius
- Cleanup: quiet GCC undef warning - Campbell Barton
- Cleanup: add forward declaration header for IndexMask and VArray - Jacques Lucke
- Cleanup: various non-functional C++ changes - Campbell Barton
- Cleanup: more C++ constructs in VSE render.hh and friends - Aras Pranckevicius
- Cleanup: Compiler warnings - Brecht Van Lommel
- Cleanup: GPv3: Use scoped defer to free allocated string - Falk David
Compositor
- Compositor: Use SMAA for anti-aliasing in all nodes - Omar Emara
- Compositor: Unify behavior of Z Combine node across CPU and GPU - Omar Emara
- Compositor: Rewrite and optimize Double Edge Mask node - Omar Emara
- Compositor: Allow early abort of OIDN denoiser - Sergey Sharybin
- Compositor: Unify Bilateral Blur across CPU and GPU - Omar Emara
Curves edit mode
Cycles
- Cycles: Separate the caustics controls for Generalized Schlick - Alaska
- Cycles: increase min Intel GPU driver version on Windows - Xavier Hallade
- Cycles: set num_sort_partition_elements to 8192 for oneAPI - Xavier Hallade
- Cycles: Use high value for Transparent BSDF PDF - Lukas Stockner
- Cycles: Remove workaround for failing bake tests - Brecht Van Lommel
- Cycles: Remove incorrect dead code for CUDA 32bit textures - Nikita Sirgienko
DRW
- DRW: Workaround Mesa shader compilation - Clément Foucault
Depsgraph
-
Depsgraph: add explanation to
evaluated_getRNA function - Sybren A. Stüvel
Draw
- Draw: Remove Unused Refine Shaders - Jeroen Bakker
- Draw: Fix 'draw_resource_id_gen' test - Jeroen Bakker
EEVEE-Next
- EEVEE-Next: Add missing translucent weight in deferred - Clément Foucault
- EEVEE-Next: Move some renderpass to deferred combined pass - Clément Foucault
- EEVEE-Next: Add normal layer reuse - Clément Foucault
Extensions
- Extensions: change the manifest filename - Campbell Barton
- Extensions: move repositories into a popover - Campbell Barton
- Extensions: remove additional Extensions section in the preferences - Campbell Barton
- Extensions: support authors as a list from the TOML manifest - Campbell Barton
- Extensions: only hide the add-ons UI when the panel has been extended - Campbell Barton
- Extensions: detect time-stamp changes to extensions manifest on refresh - Campbell Barton
- Extensions: support addon_utils.module_bl_info() for enabled extensions - Campbell Barton
- Extensions: update manifest to bl_info conversion - Campbell Barton
- Extensions: improve UI for adding/removing repositories - Campbell Barton
- Extensions: default to paths in {BLENDER_RESOURCE_PATH_USER}/extensions - Campbell Barton
Fix
- Fix: blender-softwaregl on Linux not working - Brecht Van Lommel
- Fix: Mask node has an output even with no mask - Omar Emara
- Fix: Compositor lighten mix mode is wrong for factors < 1 - Omar Emara
- Fix: EEVEE-Next: Hair material flags - Miguel Pozo
- Fix: Geometry Nodes: Leak of 4+ items of enum - Iliya Katueshenock
- Fix: EEVEE-Next: Crash on GP render test - Miguel Pozo
- Fix: EEVEE render tests python syntax - Miguel Pozo
- Fix: Sort Index Switch node alphabetically in add menu - Hans Goudey
- Fix: Warning about string use after scope in macro - Hans Goudey
- Fix: GPv3: Don't ignore influence in thickness modifier - Hans Goudey
- Fix: EEVEE-Next: Shader compilation warnings in surfel list - Clément Foucault
- Fix: Z Combine node switches inputs when changing Use Alpha - Omar Emara
- Fix: EEVEE-Next: Add missing translucent weight - Miguel Pozo
- Fix: Adjust alert_icons export-width - Sean Kim
- Fix: EEVEE-Next: Shader compilation of test shader - Clément Foucault
- Fix: Output of Color Ramp node is slightly off - Omar Emara
- Fix: EEVEE-Next: Remove duplicated translucent weight - Miguel Pozo
- Fix: Memory leak in gizmo tooltip function - Hans Goudey
- Fix: EEVEE-Next: Unitialized variable in denoise temporal - Clément Foucault
- Fix: Regression of Python API for anim.keyframe_insert - Christoph Lendenfeld
- Fix: build failure with WITH_UNITY_BUILD=OFF - Aras Pranckevicius
- Fix: correctly set active/render UV maps when realizing instances - Eugene Kuznetsov
- Fix: Missing translation for asset catalog tooltip - Hans Goudey
- Fix: Missing translation in 3D view vertex group panel - Hans Goudey
- Fix: Cycles MIS disabled unnecessarily with transparency, causing fireflies - Brecht Van Lommel
- Fix: EEVEE-Next: Artifacts with volume + motion blur - Clément Foucault
- Fix: EEVEE-Next: Wrong lightcache bake command - Clément Foucault
- Fix: OpenColorIO deps build not finding pystring header - Brecht Van Lommel
- Fix: EEVEE-Next: Shadow: Fix infinite loop in shadow rendering - Clément Foucault
- Fix: Crash when expected method on Python class is None - Eric Cosky
- Fix: DRW: Missing pointcloud dummy binding - Clément Foucault
- Fix: Exception thrown when displaying spreadsheet - Hans Goudey
- Fix: Adjust Grease Pencil invert icon - Sean Kim
- Fix: crash when adding geometry socket to Bake node while it's baked - Jacques Lucke
- Fix: 2D tri/quad vs point intersection tests edge cases - Aras Pranckevicius
- Fix: EEVEE-Next: Artifacts caused by volumes and Motion blur - Clément Foucault
- Fix: MaterialX export of less than math node slightly off - Pablo Delgado Krämer
- Fix: Build error when not using unity build - Brecht Van Lommel
- Fix: Missing owner ID in color ramp and sequencer metadata pointers - Brecht Van Lommel
- Fix #106326: Add scale-bias processing for UsdUVTexture - Jesse Yurkovich
- Fix #113774: Select objects doesn't work for multiple selected Collections - Pratik Borhade
- Fix #114691: EEVEE-Next: Dithered transparency closure weights - Miguel Pozo
- Fix #116411: Sound animation not working correctly - Richard Antalik
- Fix #117547: RBD Bake to Keyframes no longer working - Philipp Oeser
- Fix #117586: Cycles: World Lightgroup not updated when creating/deleting LGs - Lukas Stockner
- Fix #117611: Cycles NaN in microfacet BSDF with IOR 1.0 - Alaska
- Fix #117612: Crash for incorrect Menu propagation - Iliya Katueshenock
- Fix #117636: Update check code layout script for new docs - Prikshit singh
- Fix #117661: Knife Project crashes - Hans Goudey
- Fix #117672: Translation of enum button tooltips broken - Philipp Oeser
- Fix #117674: stereoscopy rendering with overwrite disabled broken - Philipp Oeser
- Fix #117679: operator_menu_enum crashes for an unfound property - Philipp Oeser
- Fix #117720: Crash when selecting these two armatures - Sybren A. Stüvel
- Fix #117771: Incorrect Cycles texture position on emissive triangles - Alaska
- Fix #54554: missing colorspace calling paint.image_paint() from python - Philipp Oeser
- Fix #92140: Can't assign shortcuts to tools - Richard Antalik
- Fix Cycles baking forcing denoising of combined pass - Sergey Sharybin
- Fix ID template not respecting hide_buttons regarding overrides - Brecht Van Lommel
- Fix build error when compiling without OpenImage denoiser - Sybren A. Stüvel
- Fix building errors - Dalai Felinto
- Fix building with Python 3.12 - Campbell Barton
- Fix crash when calculating the RNA path failed for property buttons - Campbell Barton
- Fix default weight in grease pencil modifiers when vertex group not set - Lukas Tönne
- Fix is_extended method for UI classes (menu, panel, headers... etc) - Campbell Barton
- Fix text editor exceptions showing twice in the console - Campbell Barton
GL
- GL: Remove fixed restart index workaround - Clément Foucault
- GL: Remove base instance workaround - Clément Foucault
- GL: Remove image load/store workaround - Clément Foucault
- GL: Remove copy image workaround - Clément Foucault
- GL: Remove vertex attrib binding workaround - Clément Foucault
- GL: Remove texture storage workaround - Clément Foucault
- GL: Remove cube map array workaround - Clément Foucault
- GL: Remove texture gather workaround - Clément Foucault
- GL: Remove geometry shader invocations workaround - Clément Foucault
GPU
- GPU: Fixed Assert when running Specialization Constants test - Jeroen Bakker
- GPU: Disable Unsupported OpenGL test cases. - Jeroen Bakker
- GPU: Optimize OpenGL indirect drawing overhead - Miguel Pozo
GPv3
- GPv3: Noise modifier - YimingWu
- GPv3: Mirror modifier - Lukas Tönne
- GPv3: Thickness modifier - YimingWu
- GPv3: Use RNA properties for modifier influence panels - Lukas Tönne
- GPv3: Basic vertex group operators - Lukas Tönne
-
GPv3: Add
stroke_reorderoperator - casey bianco-davis - GPv3: Array modifier - YimingWu
- GPv3: Dopesheet UI template - Pratik Borhade
- GPv3: Move to Layer - Matias Mendiola
- GPv3: Isolate Layers - Pratik Borhade
Geometry Nodes
- Geometry Nodes: Fix memory leak when using empty menu switch nodes. - Lukas Tönne
- Geometry Nodes: Improve extrude node vertex group performance - Hans Goudey
- Geometry Nodes: fix linked bake is not loaded - Jacques Lucke
- Geometry Nodes: add two default items to the Menu Switch node - Jacques Lucke
- Geometry Nodes: Improve attribute text overlay readability - Julian Plak
- Geometry Nodes: support baking data block references - Jacques Lucke
- Geometry Nodes: extract geometry transform functions to separate file - Jacques Lucke
- Geometry Nodes: extract separate geometry code to separate file - Jacques Lucke
- Geometry Nodes: Add Rotate Rotation node - Hans Goudey
- Geometry Nodes: simplify default label in zone nodes - Jacques Lucke
- Geometry Nodes: store bake item names on disk - Jacques Lucke
- Geometry Nodes: split sharing utility for reading and writing - Jacques Lucke
- Geometry Nodes: deduplicate arrays in baked data - Jacques Lucke
- Geometry Nodes: avoid writing empty blob files when baking - Jacques Lucke
- Geometry Nodes: support baking volume geometry - Jacques Lucke
Grease Pencil
- Grease Pencil: Fix opacity modifier vertex weight factor - Lukas Tönne
I18N
- I18N: updated UI translations from git/weblate repo (90f9b86ebe2e6b0). - Bastien Montagne
LibOverride
- LibOverride: don't compare PoseBone.is_in_ik_chain property - Jacques Lucke
Makefile
- Makefile: update code-layout checking target - Campbell Barton
MaterialX
- MaterialX: Enable blackbody and randomfloat nodes - Pablo Delgado Krämer
- MaterialX: Add remaining float/vector math operations - Pablo Delgado Krämer
Realtime Compositor
Refactor
-
Refactor: reduce indentation of
ui_but_anim_flag()- Sybren A. Stüvel - Refactor: extract add-on preferences drawing into a static method - Campbell Barton
- Refactor: UI: Use derived struct for number slider buttons - Hans Goudey
- Refactor: Change functions to retrieve GPU textures from images - Brecht Van Lommel
- Refactor: UI: Pass StringRef to more button definition functions - Hans Goudey
RenderTest
- RenderTest: GPU Render Tests Pass Silently - Jeroen Bakker
RenderTests
- RenderTests: Enable EEVEE-Next Raytracing - Jeroen Bakker
Revert "Fix building with Python 3.12"
- Revert "Fix building with Python 3.12" - Campbell Barton
Revert "GPv3
- Revert "GPv3: Array modifier" - Falk David
Sculpt
- Sculpt: Add global automasking propagation steps - Sean Kim
- Sculpt: Add per-brush input samples - Sean Kim
Support for enum
items
parameter in
rna_idprop_ui_create
-
Support for enum
itemsparameter inrna_idprop_ui_create- Lukas Tönne
Tests
- Tests: Temporarily increase OpenImageDenoise test threshold for upgrade - Brecht Van Lommel
UI
- UI: Operator Confirm Dialog Changes - Harley Acheson
- UI: Tree view, no longer auto-expand clicked item - Sybren A. Stüvel
- UI: simplify layout panels C++ API - Jacques Lucke
- UI: Remove Blender Logo Alert Icon - Harley Acheson
- UI: Consistent Use of Chevron Disclosure Icons - Harley Acheson
- UI: Panel Chevron Positioning - Harley Acheson
- UI: Show folders when selecting font - Richard Antalik
- UI: Image Rotate - Harley Acheson
- UI: Preferences: Sort widget label style settings - Jun Mizutani
- UI: Multiple Interface Icon Additions and Changes - Harley Acheson
- UI: Spreadsheet Icons for Face Corner and Pointcloud Point - Harley Acheson
- UI: Update default mask icon - Sean Kim
- UI: Gizmo Button for Lock Camera to View - Harley Acheson
- UI: Two Misc Prop Dialog Title Changes - Harley Acheson
- UI: Add visual indicator for automasking state - Sean Kim
- UI: TreeView Changes - Harley Acheson
- UI: edit-source operator prints the location to the output again - Campbell Barton
- UI: Tooltip when bone collections are linked - Pratik Borhade
- UI: use consistent naming for an extensions "Remote" repository - Campbell Barton
- UI: Add 'Channels' region toggle in animation editors - Nika Kutsniashvili
- UI: VSE: Move Onion Skin properties inside Annotations panel - Nika Kutsniashvili
- UI: Remove empty space in Custom Properties panel - Nika Kutsniashvili
USD
- USD: PointInstancer import support - Ashley Ruglys
- USD: basic support for on_import USD hooks - Michael Kowalski
VSE
- VSE: replace Subsampled3x3 filter by a general Box filter - Aras Pranckevicius
- VSE: bilinear upscaling no longer adds transparent border around the image - Aras Pranckevicius
- VSE: tweak look of Vectorscope to match upcoming Image vectorscope - Aras Pranckevicius
Vulkan
- Vulkan: Use Generic Buffer to Store DrawList Commands - Jeroen Bakker
WM
- WM: restart auto-save timer when saving manually - Jacques Lucke
mypy
- mypy: update checker config, report missing paths - Campbell Barton
12 Comments
Oi, Pablo!
I just want to say thank you for your help. You couldn't know this, but your livestreams have given me time every week where nothing else but seeing something I love grow and evolve needs to matter. It was a bit of heartbreak, hearing it would end. You better believe I'm tuning into blender hoy.
I want to take this moment to, if you really intend to end the show, ask for your blessings, for the community to continue it. I'm barely beginning with c++ and python, I'm probably not qualified yet, so I'm asking for the community. I promise if I do it, I won't call it blender today. that's yours and blender's~... I just worry, because we can only get a peek inside the blender foundation through you. You provide something that a forum or meeting could never replace.
Now, on a less somber note-! how is the planning for advanced sims in geo nodes going? I may or may not be studying simulation systems and physics in general.. and when geo nodes gets easy physics, it's going to explode (probably literally). I'm excited!
Hi Pablo,
Thanks for making such a great tool. The Save Increment feature is very nice. Are differences captured in each increment? I would like to add a means of checking the changes into a PDM (Product Data Management) server. This way, we can track changes in a vault or file system.
Does this make sense?
Hellooo Pablo, we will miss u and the great mondays. Just an improvement tipp/wish for the Principal BSDF....It´s nice that it is small and cute now but it would be great if when I come with an output to the Specular-Input e.g. it would pop up automatically (when I´m hovering over). It makes me crazy that I have to open it first.
As a workaround, you could use the Node Wrangler add-on shortcut to select output&input sockets, by pressing Shift+Alt RMB-drag between two nodes: when you release the mouse button, the blu outline surrounding both nodes and the linking straight line disappear, a first brief selection list pops-up presenting the list of output sockets on the first node, select the desired one and a second (usually larger) list is presented with all the input sockets of the second node; by selecting a socket the link is set. The whole flow takes a few instants, if you train your muscles-memory. Unfortunately lists do not visually group entries by subpanels, but the order seems respected.
Hi Pablo, Out of curiosity, would it be possible when rendering with eevee to get a progressive rendering displayed on render window panel? currently when rendering with eevee it's totally blank until the render are fully finished to display the render output.
Also is there a way to get the geometry nodes output value displayed so it can be used as drivers?
Hello Pablo!
How was your day? I hope it was good! I was sad to hear about the end of Blender Today but I was wondering if you would still maybe do special case "Blender Todays" (Blender Once-In-A-Whiles?) for special updates like the new Extensions Platform or larger additions to Blender. Apologies if you mentioned something like this earlier and I missed it. Thanks for all your work the past years on Blender Today and everything else you and the devs have done!
Hi Pablo, hope you are well and you decide to keep going with Blender today Live for long! I would like to gather your opinion about this Blender feature suggestion> blender.community/c/rightclickselect/492x/ Its basically a node system for Blender to manage scene data procedurally and unlock the full Blender potential, something like Solaris or Katana currently allows.
Cheers
Nuno
Hey :) Question about the user interface. Why are there still global transform settings among Active tool settings? Seems very obviously misplaced. Seems like a no-brainer to put these among the other global transform settings, no?
Image from devtalk: devtalk.blender.org/uploads/default/original/3X/4/d/4db78b239437ddbe525e332a84cb08965d60c3d8.png
This misplacement is especially evident, when these appear in the N-Shelf or the properties editor, among active tool settings... Like, should the active tool "Selection" have "Automerge", as a setting, for example? No. That's completely unrelated...
Any chance this will get organised any time?
@pablovazquez 1:09:05 "They depend on the active tool" False. These options are GLOBAL transform options, exactly like the row of options in the middle of the header. They have nothing to do with the active tools at all. Exactly like the row in the middle of the header, everything under the "Options" menu is global, and what is displayed there is MODE context-specific, not active tool context-specific.
To explain in higher detail, Notice: In OBJECT mode, This is what's under the "Options" menu: Transform; Affect only: Origins, Locations, Parents. That's it.
No matter what the active tool is (The ruler, the selection tool, or the 3D cursor or whatever), this "Transform options" menu is always the same and is always displayed.
In edit mode, those global transform options relate to EDIT mode, specifically, such as Preserving attributes when transforming, auto-merging vertexes after transforming, or auto-unwrapping UVs when transforming, etc. They are still global transform options, just like the row in the middle of the header, and have nothing to do with the Active tool. The same goes for any other mode.
Hey Pablo! Thanks for making the process of development such an exciting show!
I only have a question about a mild issue with RCS. Do you know why a post would get stuck in "processing" state after it was public for a while and was voted on? (it's invisible). Some automatic moderation system? I already had such issue before and you already answered, it was due to untrusted external links. This newer post of mine obeys the rules that I know of, but let me know if I am still missing something.
The post: blender.community/c/rightclickselect/p25m/
Cheers!
Your url seems to point to a page that no longer exists FYI
Because it's hidden. It only opens up to me because I'm the author I guess. And possibly to administrators (Pablo)? ...that's the problem :/