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
2022-06-14Cleanup: remove the need for image scale using a contextCampbell Barton
Scaling an image shouldn't depend on the current context.
2022-06-13UI: Use "bl_order" for UI child panelsErik
The "bl_order" property on add-on UI panels can be used to put them in a specific order regardless of the order of registering. This patch makes this ordering also possible for panels inside panels. Differential Revision: https://developer.blender.org/D15174
2022-06-13GPencil: Use better sampling limits.Yiming Wu
The problem with T98683 is that sampling interval can be set to very small, resulting in very dense points. This patch attempts to optimize that a little bit. Reviewed By: Antonio Vazquez (antoniov) Differential Revision: https://developer.blender.org/D15180
2022-06-10RNA path: add util to find the char in an RNA path where the array indexing ↵Bastien Montagne
starts. Usefull to easily trim away the 'aray index' part of an RNA path, e.g. when searching for an FCurve (which never contains that index part in its RNA path).
2022-06-09Fix T78815: Redraw UV Editor on collection visibility changeChris Blackbourn
2022-06-09Cleanup: spelling in comments & variablesCampbell Barton
2022-06-08LibOverride: Make 'image/movieclip user` properties editable.Bastien Montagne
2022-06-08Fix (unreported) missing rna path for some background image properties.Bastien Montagne
RNA camera code did not handle path for its image/movieclip users sub-data, and moviclip RNA struct definition did not have a rna path function at all.
2022-06-08RNA nodetree: improve ImageUser path helper.Bastien Montagne
Refactor the code, and optimize it slightly (no need e.g. to check for nodes when the nodetree is of a type that cannot have image user nodes).
2022-06-08Curves: Port set type node to new data-blockHans Goudey
This commit ports the "Set Spline Type" node to the new curves type. Performance should be improved in similar ways to the other refactors from the conversion task (T95443). Converting to and from Catmull Rom curves is now supported. There are a few cases where a lot of work can be skipped: when the number of points doesn't change, and when the types already match the goal type. The refactor has a few other explicit goals as well: - Don't count on initialization of attribute arrays when they are first allocated. - Avoid copying the entire data-block when possible. - Make decisions about which attributes to copy when changing curves more obvious. - Use higher-level methods to copy data between curve points. - Optimize for the common cases of single types and full selections. - Process selected curves of the same types in the same loop. The Bezier to NURBS conversion is written by Piotr Makal (@pmakal). Differential Revision: https://developer.blender.org/D14769
2022-06-08Attributes: Use names instead of layers for some functionsHans Goudey
This mirrors the C++ attribute API better, separates the implementation of attributes from CustomData slightly, and makes functions simpler, clearer, and safer. Also fix an issue with removing an attribute caused by 97712b018df71c meant the first attribute with the given type was removed instead of the attribute with the given name.
2022-06-07Cleanup: Use const pointers in attribute APIHans Goudey
2022-06-07Cleanup: spelling in comments, minor formatting tweaksCampbell Barton
2022-06-06Refactor: Snap-related. Clarified attribute names and refactored #defines ↵jon denning
into enums The transformation snapping code contains a bunch of `#define`s, some ambiguously or incorrectly named attributes. This patch contains refactored code to improve this. This patch does (should) not change functionality of snapping. Clarified ambiguously / incorrectly named attributes. - "Target" is used to refer to the part of the source that is to be snapped (Active, Median, Center, Closest), but several other areas of Blender use the term "target" to refer to the thing being snapped to and "source" to refer to the thing getting snapped. Moreover, the implications of the previous terms do not match the descriptions. For example: `SCE_SNAP_TARGET_CENTER` does not snap the grabbed geometry to the center of the target, but instead "Snap transforamtion center onto target". - "Select" refers to the condition for an object to be a possible target for snapping. - `SCE_SNAP_MODE_FACE` is renamed to `SCE_SNAP_MODE_FACE_RAYCAST` to better describe its affect and to make way for other face snapping methods (ex: nearest). Refactored related `#define` into `enum`s. In particular, constants relating to... - `ToolSettings.snap_flag` are now in `enum eSnapFlag` - `ToolSettings.snap_mode` are now in `enum eSnapMode` - `ToolSettings.snap_source` (was `snap_target`) are now in `enum eSnapSourceSelect` - `ToolSettings.snap_flag` (`SCE_SNAP_NO_SELF`) and `TransSnap.target_select` are now in `enum eSnapTargetSelect` As the terms became more consistent and the constants were packed together into meaningful enumerations, some of the attribute names seemed ambiguous. For example, it is unclear whether `SnapObjectParams.snap_select` referred to the target or the source. This patch also adds a small amount of clarity. This patch also swaps out generic types (ex: `char`, `short`, `ushort`) and unclear hard coded numbers (ex: `0`) used with snap-related enumerations with the actual `enum`s and values. Note: I did leave myself some comments to follow-up with further refactoring. Specifically, using "target" and "source" consistently will mean the Python API will need to change (ex: `ToolSettings.snap_target` is not `ToolSettings.snap_source`). If the API is going to change, it would be good to make sure that the used terms are descriptive enough. For example, `bpy.ops.transform.translate` uses a `snap` argument to determine if snapping should be enabled while transforming. Perhaps `use_snap` might be an improvement that's more consistent with other conventions. This patch is (mostly) a subset of D14591, as suggested by @mano-wii. Task T69342 proposes to separate the `Absolute Grid Snap` option out from `Increment` snapping method into its own method. Also, there might be reason to create additional snapping methods or options. (Indeed, D14591 heads in this direction). This patch can work along with these suggestions, as this patch is trying to clarify the snapping code and to prompt more work in this area. Reviewed By: mano-wii Differential Revision: https://developer.blender.org/D15037
2022-06-04D15041: Sculpt: Elastic TransformPablo Dobarro
This implements transform modes for the transform tool and Elastic Transform. This mode uses the Kelvinlets from elastic deform to apply the transformation to the mesh, using the cursor radius to control the elasticity falloff. {F9269771} In order for this to work, the transform tool uses incremental mode when elastic transform is enabled. This allows to integrate the displacement of the Kelvinet in multiple steps. Review By: Sergey Sharbin & Daniel Bystedt & Julian Kaspar & Campbell Barton Differential Revision: https://developer.blender.org/D9653 Ref D15041
2022-06-03Merge remote-tracking branch 'origin/blender-v3.2-release'Dalai Felinto
2022-06-03Spreadsheet Editor: Support int 8 attributeDalai Felinto
This was leading to some crashes and warnings such as: "Code marked as unreachable has been executed. Please report this as a bug." Differential Revision: https://developer.blender.org/D15116
2022-06-03Curves: Add surface UV map name propertyHans Goudey
In the latest discussions about curves/hair mesh attachement information (T95776), it was decided to use UV coordinates to store where on the mesh each root is. For that, we have to specify which of the UV map attributes to use for UV lookups. This property isn't used yet, but it will be shortly when refactoring the attachement information in the add brush and the to particle system conversion. Differential Revision: https://developer.blender.org/D15115
2022-06-03Constraints: introduce wrapper functions to access target lists.Alexander Gavrilov
Instead of directly accessing constraint-specific callbacks in code all over blender, introduce two wrappers to retrieve and free the target list. This incidentally revealed a place within the Collada exporter in BCAnimationSampler.cpp that didn't clean up after retrieving the targets, resulting in a small memory leak. Fixing this should be the only functional change in this commit. This was split off from D9732. Differential Revision: https://developer.blender.org/D13844
2022-06-03Cycles: Fix rendering of packed UDIM tiles with different sizesSergey Sharybin
The packed image loader was not aware of the fact that UDIM tiles can be of a different size. Exposed Python API required to access this information. It has the same complexity as the "regular" packed files: in both cases the ImBuf will be acquired and released to access the information. While the current workflow of packing UDIMs is not very streamlined, it is still possible and is something what the studio is using here. Test file: {F13130516} Expected behavior achieved with this patch: a bigger checker board pattern in viewport render Actual behavior prior to this patch: either memory corruption, or wrong/black render result on the plane Differential Revision: https://developer.blender.org/D15111
2022-06-03Merge branch 'blender-v3.2-release'Philipp Oeser
2022-06-03Fix T98573: Rescaling Image by python wrongPhilipp Oeser
This did not refresh the Image editor, but more importantly this now appeared cropped (a regression from the partial image updater). Solved in the RNA function by: - calling BKE_image_partial_update_mark_full_update - sending appropriate notifier Maniphest Tasks: T98573 Differential Revision: https://developer.blender.org/D15110
2022-06-03Compositor: add pre/post/cancel handlers and background job infoPhilipp Oeser
Main motivation is from T54314 where there was no way to read from a Viewer image datablock after the compositor has run. The only solution there was to do a full rerender (which obviously takes much longer). Adding a handler avoids having to rerender. This uses new syntax from rBf4456a4d3c97 and also adds "COMPOSITE" as a job type that can be queried by `bpy.app.is_job_running`. NOTE: there is another issue when multiple viewers are used and these get active via RNA (compo execution is not triggered there yet -- unlike when a viewer is selected in the Editor -- this is an issue of `ED_node_set_active` vs. only `nodeSetActive`, but this will be tackled separately) Maniphest Tasks: T54314 Differential Revision: https://developer.blender.org/D15078
2022-06-03Cleanup: spelling in commentsCampbell Barton
2022-06-02Expose background job info to PythonSybren A. Stüvel
Add `bpy.app.is_job_running(job_type)` as high-level indicator. Job types currently exposed are `WM_JOB_TYPE_RENDER`, `WM_JOB_TYPE_RENDER_PREVIEW`, and `WM_JOB_TYPE_OBJECT_BAKE`, as strings with the `WM_JOB_TYPE_` prefix removed. The functions can be polled by Python code to determine whether such background work is still ongoing or not. Furthermore, new app handles are added for `object_bake_{pre,complete,canceled}`, which are called respectively before an object baking job starts, completes sucessfully, and stops due to a cancellation. Motivation: There are various cases where Python can trigger the execution of a background job, without getting notification that that background job is done. As a result, it's hard to do things like cleanups, or auto-quitting Blender after the work is done. The approach in this commit can easily be extended with other job types, when the need arises. The rendering of asset previews is one that's likely to be added sooner than later, as there have already been requests about this. Reviewed By: campbellbarton Differential Revision: https://developer.blender.org/D14587
2022-06-02VSE: Make time operations self-containedRichard Antalik
This patch makes it possible to manipulate strips without need to use update functions to recalculate effect and meta strips. Prior to this change function `SEQ_time_update_sequence` had to be used to update mainly effects and meta strips. This was implemented in a way that relied on sorted list of strips, which can't always be done and in rare cases this approach failed. In case of meta strips, `seqbase` had to be passed and compared with "active" one to determine whether meta strip should be updated or not. This is especially weak system that is prone to bugs when functions are used by python API functions. Finally, other strip types had startdisp` and `enddisp` fields updated by this function and a lot of code relied on these fields even if strip start, length and offsets are available. This is completely unnecessary. Implemented changes: All effects and meta strips are updated when strip handles are moved or strip is translated, without need to call any update function. Function `SEQ_time_update_sequence` has been split to `SEQ_time_update_meta_strip_range` and `seq_time_update_effects_strip_range`. These functions should be only used within sequencer module code. Meta update is used for versioning, which is only reason for it not being declared internally. Sequence fields `startdisp` and `enddisp` are now only used for effects to store strip start and end points. These fields should be used only internally within sequencer module code. Use function `SEQ_time_*_handle_frame_get` to get strip start and end points. To update effects and meta strips with reasonable performance, cache for "parent" meta strip and attached effects is added to `SequenceLookup` cache, so it shares invalidation mechanisms. All caches are populated during single iteration. There should be no functional changes. Differential Revision: https://developer.blender.org/D14990
2022-06-02Cleanup: undeclared warningCampbell Barton
2022-06-01Cleanup: spelling in comments, use doxy sectionsCampbell Barton
2022-06-01Cleanup: use 'e' prefix for enum typesCampbell Barton
- CustomDataType -> eCustomDataType - CustomDataMask -> eCustomDataMask - AttributeDomain -> eAttrDomain - NamedAttributeUsage -> eNamedAttrUsage
2022-05-31Curves: Add soft selection in sculpt modeHans Goudey
This commit adds a float selection to curve control points or curves, a sculpt tool to paint the selection, and uses the selection influence in the existing sculpt brushes. The selection is the inverse of the "mask" from mesh sculpt mode currently. That change is described in more detail here: T97903 Since some sculpt tools are really "per curve" tools, they use the average point selection of all of their points. The delete brush considers a curve selected if any of its points have a non-zero selection. There is a new option to choose the selection domain, which affects how painting the selection works. You can also turn the selection off by clicking on the active domain. Sculpt brushes can be faster when the selection is small, because finding selected curves or points is generally faster than the existing brush intersection and distance checks. The main limitation currently is that we can't see the selection in the viewport by default. For now, to see the selection one has to add a simple material to the curves object as shown in the differential revision. And one has to switch to Material Preview in the 3d view. Differential Revision: https://developer.blender.org/D14934
2022-05-31Attributes: Hide internal UI attributes and disallow procedural accessHans Goudey
This commit hides "UI attributes" described in T97452 from the UI lists in mesh, curve, and point cloud properties, and disallow accessing them in geometry nodes. Internal UI attributes like selection and hiding values should use the attribute system for simplicity and performance, but we don't want to expose those attributes in the attribute panel, which is meant for regular user interaction. Procedural access may be misleading or cause problems, as described in the design task above. These attributes are added by two upcoming patches: D14934, D14685 Differential Revision: https://developer.blender.org/D15069
2022-05-31Cleanup: tabs to spaces for CMake files & sort file-listsCampbell Barton
2022-05-31RNA: add macros for EnumPropertyItem layout elementsCampbell Barton
Add the following macros for enums as support for these features wasn't all that obvious and there were some inconsistencies in their use. - RNA_ENUM_ITEM_HEADING(name, description) - RNA_ENUM_ITEM_SEPR - RNA_ENUM_ITEM_SEPR_COLUMN
2022-05-31PyDoc: de-duplicate enums for rna_rna.c & bpy_props.cCampbell Barton
Lists of items for bpy.props were duplicated 3 times, now all enums are defined once in rna_rna.c and referenced from bpy.props doc-strings.
2022-05-31PyAPI: add _bpy.rna_enum_items_static() for accessing internal enum dataCampbell Barton
This is method is intended for internal use (introspection for generating API docs).
2022-05-31RNA: avoid non-standard enum item (enum section using single space)Campbell Barton
Also removes stray semicolon in RNA_enum_items.h
2022-05-30LibOverride: Add full support for camera's background images.Bastien Montagne
Add support for adding (inserting) new background images into an override of a linked Camera ID. Request from the Blender studio. This ended up being more involved than expected as it uncovered some latent issues with existing background images code. Noticiably, a new `BKE_camera_background_image_copy` had to be added to handle copying of background images in a proper, generic ID-management way.
2022-05-30Fix (unreported) missing rna_path function for BackgroundImage struct.Bastien Montagne
2022-05-30Fix T98444: Image.save_render not using scene output file typeBrecht Van Lommel
Also simplify logic because (source == IMA_SRC_VIEWER) and ELEM(type, IMA_TYPE_R_RESULT, IMA_TYPE_COMPOSITE) are the same thing.
2022-05-30Cleanup/simplify BKE_fcurve_find_by_rna_context_ui code.Bastien Montagne
From reading the code it looks like at some point the code was expecting the `tptr` PointerRNA to change during the loop? But currently it did not make any sense to have this complex looping and multi-checking of RNA path and animdata, since the RNA pointer (and therefore its `owner_id`) is never modified... NOTE: there could be much more cleanup done in that area, goal of this commit is mainly to simplify the logic by removing all the (seamingly) dead code. Differential Revision: https://developer.blender.org/D15026
2022-05-28XR: Fix controller flicker when switching action setsPeter Kim
This could happen when switching between custom action sets that both had controller pose actions. Problem was that controller data is cleared when changing action sets, and this clearing was done when handling WM events, which always occurs after XR controller data is updated from GHOST. Now, instead of activating the action set immediately, delay activation until just before the next XR actions sync.
2022-05-27UI: add missing tooltips for the shader node optionsArye Ramaty
Differential Revision: https://developer.blender.org/D14878
2022-05-27GPU: Remove cached full/scaled image texture.Jeroen Bakker
full scaled image isn't used anymore. It was added to use a different scale when displaying an image in the image editor. This was replaced by the image engine redesign. This change will reduce complexity of {T98375}.
2022-05-26UI support for showing candidates for string propertiesCampbell Barton
Currently strings are used for cases where a list of identifiers would be useful to show. Add support for string properties to reference a callback to populate candidates to show when editing a string. The user isn't prevented from typing in text not found in this list, it's just useful as a reference. Support for expanding the following strings has been added: - Operator, menu & panel identifiers in the keymap editor. - WM operators that reference data-paths expand using the Python-consoles auto-complete functionality. - Names of keying sets for insert/delete keyframe operators. Details: - `bpy.props.StringProperty` takes an option `search` callback. - A new string callback has been added, set via `RNA_def_property_string_search_func` or `RNA_def_property_string_search_func_runtime`. - Addresses usability issue highlighted by T89560, where setting keying set identifiers as strings isn't practical. - Showing additional right-aligned text in the search results is supported but disabled by default as the text is too cramped in most string search popups where the feature would make sense. It could be enabled as part of other layout tweaks. Reviewed By: brecht Ref D14986
2022-05-26Cleanup: formatCampbell Barton
2022-05-25Cleanup: Further tweaks to RNA path API const'ness of PointerRNA parameter.Bastien Montagne
`RNA_path_struct_property_py` cannot get const `ptr` parameter for now (usage of `RNA_struct_find_property`). Also make `RNA_path_resolve_` functions take a const PointerRNA parameter.
2022-05-25Cleanup: Add more const'ness to RNA API.Bastien Montagne
This commit makes PointerRNA passed to RNA path API const. Main change was in the `path` callback for RNA structs, and indirectly the `getlength` callback of properties.
2022-05-23Cycles: Add half precision float support for volumes with NanoVDBPatrick Mours
This patch makes it possible to change the precision with which to store volume data in the NanoVDB data structure (as float, half, or using variable bit quantization) via the previously unused precision field in the volume data block. It makes it possible to further reduce memory usage during rendering, at a slight cost to the visual detail of a volume. Differential Revision: https://developer.blender.org/D10023
2022-05-23GPencil: A Ping Pong effect to Time modifierAleš Jelovčan
This patch adds 4th option to Time offset modifier Modes. It loops from start frame to end frame and then back to start in reverse direction. In other words it is a combination of Normal and Reverse mode. Especially with offset control it adds the ability to create easy looping animations such as cheering crowds, flowers opening and closing at different offsets. Reviewed By: #grease_pencil, antoniov, pepeland, mendio Differential Revision: https://developer.blender.org/D14965
2022-05-23Merge remote-tracking branch 'origin/blender-v3.2-release'Dalai Felinto