Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-07-18Use the new dissolve function for all operators.temp-nodes-intersect-alt-keyLukas Tönne
2021-07-17Improved link dissolve method that supports multiple nodes.Lukas Tönne
The new functions keep links between the selected nodes intact when disconnecting them from their surroundings.
2021-07-17Removed the NODE_OT_duplicate_move_keep_inputs operator.Lukas Tönne
This is a variation of NODE_OT_duplicate_move with the "keep_inputs" property set. This can be done in keymaps instead.
2021-07-17Ensure that link hilites are cleared when the alt key is pressed.Lukas Tönne
2021-07-17Removed the NODE_OT_translate_attach_remove_on_cancel operator.Lukas Tönne
This is just a variation of NODE_OT_translate_attach with the "remove_on_cancel" property set. This can be done from keymaps instead.
2021-07-16Use a modal keymap entry to toggle node unlinking with ALT.Lukas Tönne
2021-07-16Add operator properties to transform for toggling node link intersect.Lukas Tönne
2021-07-16Rename the ED_node_link_intersect_test function for clarity.Lukas Tönne
2021-07-16Fix T89861: Checking face selection breaks UV stitch operatorCampbell Barton
2021-07-16Fix T70356: Scaling up 1x1 pixel image reads past buffer boundsCampbell Barton
Also resolve a crash when when displaying thumbnails, see T89868.
2021-07-16Cleanup: reduce variable scope in task_iterator.cCampbell Barton
Would have prevented the error in 15cdcb4e9085c3cf35528c2f7e559955b4ff531a.
2021-07-16Fix error using uninitialized state in BLI_task_parallel_mempoolCampbell Barton
Single threaded operation used the state before it had variables written into it. Error in 15cdcb4e9085c3cf35528c2f7e559955b4ff531a.
2021-07-16Cleanup: sort struct declarationsCampbell Barton
2021-07-16Cleanup: remove redundant parenthesesCampbell Barton
2021-07-16Cleanup: spelling in commentsCampbell Barton
2021-07-16Cleanup: compiler warningsCampbell Barton
2021-07-15Fix T49944: Compositor ID Mask Anti-Aliasing not workingAidan Haile
Replaces current ID Mask node Anti-Aliasing operation by SMAA operations with default settings as proposed by Jeroen Bakker. SMAA produces smoother edges. Reviewed By: manzanilla Differential Revision: https://developer.blender.org/D11881
2021-07-15UI: Flip driver editor debug linesRed Mser
In driver editor, vertically flip the value debug lines to align them with the timeline header values. This makes it easier to read the values. Also set the line width explicitly, which was incorrect in some cases. Differential Revision: https://developer.blender.org/D8877
2021-07-15Cleanup: Clang tidyHans Goudey
2021-07-15Cleanup: Remove use of designated initializers in C++ codeHans Goudey
Does not compile on Windows.
2021-07-15Cleanup: Move UI list template code to own file (C++)Julian Eisel
This move was already prepared with 788d38046032 and 26b098c04fbe. The template is quite big already, better to give it its own file. Plus it could use some C++ features like RAII and maybe some more object oriented code. I plan further refactoring there.
2021-07-15Fix failing tests from vertex group name parameter copyHans Goudey
It turns out `BKE_mesh_copy_parameters` can be called while other tools are running calculations, which meant that it was called at the same time as `armature_deform_coords_impl`. Beause of that, we shouldn't do any freeing (of the old vertex group names) there. Since the materials are copied in the "for_eval" version anyway, it seems to make sense to copy the vertex group name list there also. Fixes T89877, and also the failing `deform_modifiers` test. Differential Revision: https://developer.blender.org/D11936
2021-07-15Cleanup: unused variable captureJacques Lucke
2021-07-15Animation/add-ons: Enable the poselib add-on by defaultSybren A. Stüvel
The new Asset Browser-based pose library is partially implemented in an add-on. This commit enables the add-on by default, as the old pose library was built-in and thus always enabled. The ability to disable the add-on is there mostly for cases where people/studios want to use their own custom pose library.
2021-07-15Fix T88281: Pose Library 'flip pose' sometimes flips wrongSybren A. Stüvel
Correct cases where the X-axis of the bone (in pose space) aligns with the pose-space Y or Z-axis. In these cases the decomposition of the matrix fails, and a negative scale of the X-axis turns into a 180° rotation around the Y-axis. An extra -1 scale to the X and Z axes of the resulting matrix seems to fix things.
2021-07-15Asset Browser: Python mixin utility for category-specific panelsSybren A. Stüvel
Using this mixin for a panel definition, it's possible to set in which categories the panel should appear. This is used by the Pose Library add-on.
2021-07-15UI/Assets: Initial Asset View UI templateJulian Eisel
The asset view UI template is a mini-version of the Asset Browser that can be placed in regular layouts, regions or popups. At this point it's made specifically for placement in vertical layouts, it can be made more flexible in the future. Generally the way this is implemented will likely change a lot still as the asset system evolves. The Pose Library add-on will use the asset view to display pose libraries in the 3D View sidebar. References: * https://developer.blender.org/T86139 * https://code.blender.org/2021/06/asset-browser-project-update/#what-are-we-building * https://code.blender.org/2021/05/pose-library-v2-0/#use-from-3d-viewport Notes: * Important limitation: Due to the early & WIP implementation of the asset list, all asset views showing the same library will show the same assets. That is despite the ID type filter option the template provides. The first asset view created will determine what's visible. Of course this should be made to work eventually. * The template supports passing an activate and a drag operator name. The former is called when an asset is clicked on (e.g. to apply the asset) the latter when dragging (e.g. to .blend a pose asset). If no drag operator is set, regular asset drag & drop will be executed. * The template returns the properties for both operators (see example below). * The argument list for using the template is quite long, but we can't avoid that currently. The UI list design requires that we pass a number of RNA or custom properties to work with, that for the Pose Libraries should be registered at the Pose Library add-on level, not in core Blender. * Idea is that Python scripts or add-ons that want to use the asset view can register custom properties, to hold data like the list of assets, and the active asset index. Maybe that will change in future and we can manage these internally. As an example, the pose library add-on uses it like this: ``` activate_op_props, drag_op_props = layout.template_asset_view( "pose_assets", workspace, "active_asset_library", wm, "pose_assets", workspace, "active_pose_asset_index", filter_id_types={"filter_action"}, activate_operator="poselib.apply_pose_asset", drag_operator="poselib.blend_pose_asset", ) drag_op_props.release_confirm = True drag_op_props.flipped = wm.poselib_flipped activate_op_props.flipped = wm.poselib_flipped ```
2021-07-15Cleanup: Use const for UI icon getter functionJulian Eisel
2021-07-15UI: Support defining UI lists in CJulian Eisel
So far all UI lists had to be defined in Python, this makes it possible to define them in C as well. Note that there is a whole bunch of special handling for the Python API that isn't there for C. I think most importantly custom properties support, which currently can't be added for C defined UI lists. The upcoming asset view UI template will use this, which needs to be defined in C. Adds a new file `interface_template_list.cc`, which at this point is mostly a dummy to have a place for the `ED_uilisttypes_ui()` definition. I plan a separate cleanup to move the UI-list template to that file.
2021-07-15UI: New button/widget type for Asset Browser like preview tilesJulian Eisel
This button type shows a preview image above centered text, similar to the File Browser files in Thumbnail Display Mode or the default Asset Browser display. In fact we may want to port these over to use the new button type at some point. Will be used by the asset view UI template that will be added in a following commit. That is basically a mini version of the Asset Browser that can be displayed elsewhere in the UI.
2021-07-15UI: Auto-scroll to keep active text buttons in viewJulian Eisel
If a text button is activated that is not in view (i.e. scrolled away), the scrolling will now be adjusted to have it in view (with some small additional margin). While entering text, the view may also be updated should the button move out of view, for whatever reason. For the most part, this feature shouldn't be needed and won't kick in, except when a clicked on text button is partially out of view or very close to the region edge. It's however quite important for the previously committed feature, that is, pressing Ctrl+F to start searching in a UI list. The end of the list where the scroll button appears may not be in view. Plus while filtering the number of visible items changes so the scrolling has to be updated to keep the search button visible. Note that I disabled the auto-scrolling for when the text button spawned an additional popup, like for search-box buttons. That is because current code assumes the button to have a fixed position while the popup is open. There is no code to update the popup position together with the button/scrolling. I also think that the logic added here could be used in more places, e.g. for the "ensure file in view" logic the File Browser does.
2021-07-15UI: Support pressing Ctrl+F over UI lists to searchJulian Eisel
Adds an operator invoked by default with Ctrl+F that while hovering a UI list, opens the search field of the list and enables text input for it. With this commit the search button may actually be out of view after Ctrl+F still. The following commit adds auto-scroll to solve that. A downside is that in the Properties, there also is Ctrl+F to start the editor-wide search. That's not unusual in Blender though (e.g. scolling with the mouse over a UI list also scrolls the list, not the region).
2021-07-15UI: Support UI list tooltips, defined via Python scriptsJulian Eisel
Makes it possible to create tooltips for UI list rows, which can be filled in .py scripts, similar to how they can extend other menus. This is used by the (to be committed) Pose Library add-on to display pose operations (selecting bones of a pose, blending a pose, etc). It's important that the Python scripts check if the UI list is the correct one by checking the list ID. For this to work, a new `bpy.context.ui_list` can be checked. For example, the Pose Library add-on does the following check: ``` def is_pose_asset_view() -> bool: # Important: Must check context first, or the menu is added for every kind of list. list = getattr(context, "ui_list", None) if not list or list.bl_idname != "UI_UL_asset_view" or list.list_id != "pose_assets": return False if not context.asset_handle: return False return True ```
2021-07-15UI: Support left-right arrow key walk navigation in UI listsNathan Craddock
Add improved arrow key walk navigation in grid layout UI List templates. Pressing up or down walks the active item to the adjacent row in that direction, while left and right walk through the items along the columns wrapping at the rows. Note from Julian: In combination with the following commit, this has the important limitation that the list's custom activate operator won't be called when "walking over" an item that is scrolled out of the list. That is because we don't actually create any buttons for those that could be used for the handling logic. For our purposes of the pose libraries that should be fine since the asset view list is always made big enough to display all items. Solving this might be difficult, we don't properly support nesting boxes with proper scrolling in regular layouts. It's all just hacked a bit for UI-lists to work. Overlaps quite a bit with T86149. Differential Revision: https://developer.blender.org/D11063
2021-07-15UI: Internal support for custom UI list item drag & activate operatorsJulian Eisel
For pose libraries, we need to be able to apply a pose whenever activating (clicking) an item in the Pose Library asset view and blend it by dragging (press & move). And since we want to allow Python scripts to define what happens at least when activating an asset (so they can define for example a custom "Apply" operator for preset assets), it makes sense to just let them pass an operator name to the asset view template. The template will be introduced in a following commit.
2021-07-15UI: New UI list layout type for big preview tilesJulian Eisel
This new layout type is meant for the upcoming asset view UI template. With it it is possible to show big asset previews with their names in a responsive grid layout. Notes: * The layout is only available for C defined UI lists. We could expose it to Python, but I think there are still some scrolling issues to be fixed first. (The asset view template doesn't use scrolling for the UI list.) * I'd consider this a more usable version of the existing `GRID` layout type. We may remove that in favor of the new one in future.
2021-07-15UI: UI list refactor & preparations for asset view templateJulian Eisel
This is more of a first-pass refactor for the UI list template. More improvements could be done, but that's better done separately. Main purpose of this is to make the UI list code more manageable and ready for the asset view template. No functional changes for users. * Split the huge template function into more manageable functions, with clear names and a few structs with high coherency. * Move runtime data management to the template code, with a free callback called from BKE. This is UI data and should be managed at that level. * Replace boolean arguments with bit-flags (easily extendable and more readable from the caller). * Allow passing custom-data to the UI list for callbacks to access. * Make list grip button for resizing optional. * Put logic for generating the internal UI list identifier (stored in .blends) into function. This is a quite important bit and a later commit adds a related function. Good to have a clear API for this. * Improve naming, comments, etc. As part of further cleanups I'd like to move this to an own file.
2021-07-15Assets: temporarily apply pose when generating preview imageSybren A. Stüvel
When generating a preview image for a pose, temporarily apply it to the armature. Contrary to the usual pose application, this ignores the selected bones and always applies the entire pose.
2021-07-15Animation: new pose library based on Asset BrowserSybren A. Stüvel
Introduce new pose library, based on the Asset Browser. Contrary to the old pose library (in `editors/armature/pose_lib.c`), which stored an entire library of poses in an `Action`, in the new library each pose is its own `Action` datablock. This is done for compatibility with the asset browser, and also to make it easier to attach preview images, share datablocks, etc. Furthermore, it opens the door to having animation snippets in the pose library as well. This commit contains the C code for the pose library; in order to fully use it, an addon is required as well (which will be committed shortly).
2021-07-15Animation: add function to blend Action into poseSybren A. Stüvel
Add function `BKE_pose_apply_action_blend()`, which blends a given Action into current pose. The Action is evaluated at a specified frame, and the result is applied to the armature's pose. A blend factor can be given to blend between the current pose and the one in the Action. Quaternions are interpolated with SLERP; it is assumed that their FCurves are consecutively stored in the Action. This function will be used in the upcoming new Pose Library.
2021-07-15Animation: apply pose to all or selected bones of armatureSybren A. Stüvel
New function `BKE_pose_apply_action_all_bones()`, which will be necessary for the upcoming pose library v2.0. This renames the function `BKE_pose_apply_action` to `BKE_pose_apply_action_selected_bones`, to reflect that it only works on selected bones, to contrast it to the new function.
2021-07-15Assets: Open Blend File operatorSybren A. Stüvel
Add operator 'Open Blend File' to the Asset Browser. This operator: - starts a new Blender process, - opens the blend file containing the asset, - monitors the new Blender process, and when it stops, - reloads the assets to show any changes made.
2021-07-15Assets: Abstraction for temporary loading of asset data-blocksJulian Eisel
This is an editor-level abstraction for the `BLO_library_temp_xxx()` API for temporary loading of data-blocks from another Blend file. It abstracts away the asset specific code, like asset file-path handling and local asset data-block handling. Main use-case for this is applying assets as presets that are based on data-blocks, like poses. Such preset assets are an important part of the asset system design, so such an abstraction will likely find more usage in the future.
2021-07-15File/Asset Browser: Extend file-entry and asset handle Python APIJulian Eisel
Adds the following to `bpy.types.FileSelectEntry`: * `id_type`: The data-block type the file represenets, if any. * `local_id`: The local data-block it represents, if any (assets only). And the following to `bpy.types.AssetHandle`: * `local_id`: The local data-block the asset represents, if any. This kind of information and the references are important for asset related operators and UIs. They will be used by upcoming Pose Library features.
2021-07-15Assets: Initial Asset List as part of the Asset System designJulian Eisel
Implements a basic, WIP version of the asset list. This is needed to give the asset view UI template asset reading and displaying functionality. See: * Asset System: Data Storage, Reading & UI Access - https://developer.blender.org/T88184 Especially the asset list internals should change. It uses the File/Asset Browser's `FileList` API, which isn't really meant for access from outside the File Browser. But as explained in T88184, it does a lot of the stuff we currently need, so we (Sybren Stüvel and I) decided to go this route for now. Work on a file-list rewrite which integrates well with the asset system started in the `asset-system-filelist` branch. Further includes: * Operator to reload the asset list. * New `bpy.types.AssetHandle.get_full_library_path()` function, which gets the full path of the asset via the asset-list. * Changes to preview loading to prevent the preview loading job to run eternally for asset views. File Browsers have this issue too, but should be fixed separately.
2021-07-15Assets: Show asset path in asset browser sidebarJulian Eisel
It's useful to know where an asset is stored in, before this there was no way to tell this. This could probably be displayed nicer in the UI but we're currently unsure how. But at least the information is there now.
2021-07-15Assets: AssetHandle type as temporary design to reference assetsJulian Eisel
With temporary I mean that this is not intended to be part of the eventual asset system design. For that we are planning to have an `AssetRepresentation` instead, see T87235. Once the `AssetList` is implemented (see T88184), that would be the owner of the asset representations. However for the upcoming asset system, asset browser, asset view and pose library commits we need some kind of asset handle to pass around. That is what this commit introduces. Idea is a handle to wrap the `FileDirEntry` representing the asset, and an API to access its data (currently very small, will be extended in further commits). So the fact that an asset is currently a file internally is abstracted away. However: We have to expose it as file in the Python API, because we can't return the asset-handle directly there, for reasons explained in the code. So the active asset file is exposed as `bpy.context.asset_file_handle`.
2021-07-15Assets: Expose active asset library in contextJulian Eisel
For the Asset Browser, this returns the active asset library of the Asset Browser, otherwise it returns the one active in the workspace. This gives simple access to the active asset library from UI code and Python scripts. For example the upcoming Pose Library add-on uses this, as well as the upcoming asset view template.
2021-07-15Assets: Add an active asset library per workspace, for the UI to useJulian Eisel
This per-workspace active asset library will be used by the asset views later. Note that Asset Browsers have their own active asset library, overriding the one from the workspace. As part of this the `FileSelectAssetLibraryUID` type gets replaced by `AssetLibraryReference` which is on the asset level now, not the File/Asset Browser level. But some more work is needed to complete that, which is better done in a separate commit. This also moves the asset library from/to enum-value logic from RNA to the editor asset level, which will later be used by the asset view.
2021-07-15Fix T88188: Allow keyframing vertex mass in cloth simRobert Sheldon
Update vertex weights between simulation steps if they have changed. This allows for animated vertex weights in the cloth sim. Reviewed By: Sebastian Parborg Differential Revision: http://developer.blender.org/D11640