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-30Transform Snap: nearest face snap mode, snapping options, refactoring.jon denning
This commit adds a new face nearest snapping mode, adds new snapping options, and (lightly) refactors code around snapping. The new face nearest snapping mode will snap transformed geometry to the nearest surface in world space. In contrast, the original face snapping mode uses projection (raycasting) to snap source to target geometry. Face snapping therefore only works with what is visible, while nearest face snapping can snap geometry to occluded parts of the scene. This new mode is critical for retopology work, where some of the target mesh might be occluded (ex: sliding an edge loop that wraps around the backside of target mesh). The nearest face snapping mode has two options: "Snap to Same Target" and "Face Nearest Steps". When the Snap to Same Object option is enabled, the selected source geometry will stay near the target that it is nearest before editing started, which prevents the source geometry from snapping to other targets. The Face Nearest Steps divides the overall transformation for each vertex into n smaller transformations, then applies those n transformations with surface snapping interlacing each step. This steps option handles transformations that cross U-shaped targets better. The new snapping options allow the artist to better control which target objects (objects to which the edited geometry is snapped) are considered when snapping. In particular, the only option for filtering target objects was a "Project onto Self", which allowed the currently edited mesh to be considered as a target. Now, the artist can choose any combination of the following to be considered as a target: the active object, any edited object that isn't active (see note below), any non- edited object. Additionally, the artist has another snapping option to exclude objects that are not selectable as potential targets. The Snapping Options dropdown has been lightly reorganized to allow for the additional options. Included in this patch: - Snap target selection is more controllable for artist with additional snapping options. - Renamed a few of the snap-related functions to better reflect what they actually do now. For example, `applySnapping` implies that this handles the snapping, while `applyProject` implies something entirely different is done there. However, better names would be `applySnappingAsGroup` and `applySnappingIndividual`, respectively, where `applySnappingIndividual` previously only does Face snapping. - Added an initial coordinate parameter to snapping functions so that the nearest target before transforming can be determined(for "Snap to Same Object"), and so the transformation can be broken into smaller steps (for "Face Nearest Steps"). - Separated the BVH Tree getter code from mesh/edit mesh to its own function to reduce code duplication. - Added icon for nearest face snapping. - The original "Project onto Self" was actually not correct! This option should be called "Project onto Active" instead, but that only matters when editing multiple meshes at the same time. This patch makes this change in the UI. Reviewed By: Campbell Barton, Germano Cavalcante Differential Revision: https://developer.blender.org/D14591
2022-06-07VSE preview transform autokeying improvementsPhilipp Oeser
NOTE: this patch originated in T98015 which was split into multiple reports. While it could be split into multiple patches these are very much related so keeping as one for now This patch fixes the following issues: [1] autokeying transforms in preview only creates keyframes if there is an FCurve already [2] autokeying transforms in preview only creates keyframes for rotation/scale if rotating/scaling around cursor (should keyframe position as well) [3] autokeying transforms in preview does not work during animation playback For [1], a param was added to `ED_autokeyframe_property` which can tweak its default behavior of only creating keyframes on already keyed properties (which was fine because this is mostly called from buttons where this behavior is desired). Callers such as gizmos (or the VSE in our case) can use this additional param so that keyframes are also created on "not-yet-keyframed" properties. For [2], the pivot is checked and position properties also keyed if necessary (which is also consistent with the way objects are keyed in the 3DView) For [3], `animrecord_check_state` was changed to be able to work on scenes as well and the transform system in the VSE preview was made aware of the screen's `animtimer`. NOTE: there are still things to be improved for keyframing in the VSE, the most obvious is probably a `keyframe_insert` operator (with keyingsets) Fixes T98429, T98430, T98431 Maniphest Tasks: T98015, T98431, T98430, T98429 Differential Revision: https://developer.blender.org/D15047
2022-03-14Auto-generate RNA-structs declarations in `RNA_prototypes.h`Julian Eisel
So far it was needed to declare a new RNA struct to `RNA_access.h` manually. Since 9b298cf3dbec we generate a `RNA_prototypes.h` for RNA property declarations. Now this also includes the RNA struct declarations, so they don't have to be added manually anymore. Differential Revision: https://developer.blender.org/D13862 Reviewed by: brecht, campbellbarton
2022-02-11File headers: SPDX License migrationCampbell Barton
Use a shorter/simpler license convention, stops the header taking so much space. Follow the SPDX license specification: https://spdx.org/licenses - C/C++/objc/objc++ - Python - Shell Scripts - CMake, GNUmakefile While most of the source tree has been included - `./extern/` was left out. - `./intern/cycles` & `./intern/atomic` are also excluded because they use different header conventions. doc/license/SPDX-license-identifiers.txt has been added to list SPDX all used identifiers. See P2788 for the script that automated these edits. Reviewed By: brecht, mont29, sergey Ref D14069
2022-02-02Fix crash in recent pose-bone transform cleanupCampbell Barton
ff5e8e6d535374891e09bc0e6ceb7059a22bdd53 dereferenced a NULL pointer when dragging a bone with a connected parent in pose-mode.
2022-02-02Fix error in ff5e8e6d535374891e09Germano Cavalcante
And silence unused variable warning.
2022-02-02Fix build errorHans Goudey
The return value of this function was removed in ff5e8e6d535374891e09
2022-02-02Cleanup: restructure 'transform_convert_pose_transflags_update'Germano Cavalcante
Move the bones count and `has_translate_rotate` parameter out of the function as they are not required in some places.
2021-12-21Cleanup: use BKE_pose_is_layer_visible in more placesPhilipp Oeser
This was added in rBd13970de8627, now use in more places.
2021-12-08Cleanup: move public doc-strings into headers for 'editors'Campbell Barton
Ref T92709
2021-11-11Fix T92867: Gimbal rotation broken when used for multiple objectsCampbell Barton
Support gimbal orientation for objects & bones.
2021-10-03Cleanup: spelling in commentsCampbell Barton
2021-09-04RNA: support extracting names from paths without allocating memoryCampbell Barton
Support extracting identifiers RNA paths into fixed size buffer since the maximum size of the identifier is known all cases. - Add BLI_str_unescape_ex to support limiting the destination buffer. - Add BLI_str_quoted_substr to copy values into a fixed size buffer.
2021-09-01Cleanup: remove redundant strstr callsCampbell Barton
Rely on BLI_str_quoted_substrN to detect if the prefix exists since this function exists early there is no need to check before calling.
2021-08-21Cleanup: spelling in comments & minor cleanupCampbell Barton
Also hyphenate 'mouse-move' use doxy sections in render_update.c & move function comment from the header to the source.
2021-08-05Cleanup: remove redundant parenthesisCampbell Barton
2021-06-24Cleanup: comment blocks, trailing space in commentsCampbell Barton
2021-06-23Cleanup: reformat trailing comments that caused line wrappingCampbell Barton
2021-05-21Transform: remove ID_RECALC_SELECT for edit-mode armaturesCampbell Barton
This was added in 9516921c05bd9fee5c94942eb8e38f47ba7e4351 so overlays would redraw, as far as I can see it's no longer needed. Reviewed By: fclem Ref D11322
2021-03-30Cleanup: animation, remove `BONE_UNKEYED` flagSybren A. Stüvel
Remove the `BONE_UNKEYED` flag. It was only written (set/cleared) but never actually read. Also remove `framechange_poses_clear_unkeyed()` as its only function was to clear the `BONE_UNKEYED` flag. It wasn't used anywhere either. The only code that used the flag was the `extract_pose_from_action()`, which was removed in 2869ce6cfab3aa4ff471bef6e49ac6fe15426247 (2009). No functional changes.
2021-02-17Cleanup: spellingCampbell Barton
2021-02-08Cleanup: Unify, move and rename transform flagsGermano Cavalcante
Flags unified: T_CURSOR -> CTX_CURSOR T_TEXTURE -> CTX_TEXTURE Flags moved: T_CAMERA -> CTX_CAMERA T_POSE -> CTX_POSE_BONE T_OBJECT -> CTX_OBJECT T_TEXTURE -> CTX_TEXTURE_SPACE Flag renamed: CTX_EDGE -> CTX_EDGE_DATA
2021-02-05Cleanup: correct spelling in commentsCampbell Barton
2020-12-10BLI_string: return NULL from BLI_str_quoted_substrN on failureCampbell Barton
This was returning an empty allocated string, however almost all callers checked if the return value was NULL before freeing, making for misunderstandings on the intended use of this function. BCAnimationSampler::initialize_curves for example detected the f-curves animation type to 'bone' based on a non-NULL return value which never failed. Also fixes two leaks where the the result of BLI_str_quoted_substrN wasn't freed.
2020-11-06Cleanup: use ELEM macroCampbell Barton
2020-10-10Cleanup: use C comments for descriptive textCampbell Barton
Follow our code style guide by using C-comments for text descriptions.
2020-09-30Cleanup: convert gforge task ID's to phabricator formatValentin
Cleanup old tracker task format to the new. e.g: [#34039] to T34039 Ref D8718
2020-09-18Fix T80437: Auto IK Double Generates IK constraintsPhilipp Oeser
Caused by rB9a7f5f1bb422. If using Auto IK (or targetless IK and Auto IK together), two temporary constraints were added. - from pose_grab_with_ik_add (even for targetless IK) - from add_pose_transdata (even for Auto IK) Since both both do similar things, but cannot work in tandem (with possibly different chainlengths for example), we have to decide which type to prefer over the other (as in: do not create a constraint for the other). It seems better to ignore the 'Auto IK' option on bones that will have targetless IK set up for them specificallly [e.g. defining special chainlength]. This way you can still work with 'Auto IK' ON generally [with interactive chainlength control], but also have specific bones that need their own custom chainlength. For now, the most straightforward fix is to - only add constraints for Auto IK from pose_grab_with_ik_add() - only add constraints for targetless IK from add_pose_transdata() Note: this area has some potential for later refactoring: - move creation of all temporary constraints to a single place [preferably pose_grab_with_ik_add] - use only those temporary constraints in transform code [atm. we still flip CONSTRAINT_IK_AUTO around on the "original" -- unneccesarily, after rB9a7f5f1bb422 a dedicated temporary constraint is now always available] - clarify CONSTRAINT_IK_AUTO vs. CONSTRAINT_IK_TEMP - obeying standard rotation locks on bones in the chain (not just the the IK locks) is not consistent between targetless IK and Auto IK Potential candidate for 2.90.1 as well as 2.83 LTS Maniphest Tasks: T80437 Differential Revision: https://developer.blender.org/D8930
2020-07-20T77086 Animation: Passing Dependency Graph to DriversSybren A. Stüvel
Custom driver functions need access to the dependency graph that is triggering the evaluation of the driver. This patch passes the dependency graph pointer through all the animation-related calls. Instead of passing the evaluation time to functions, the code now passes an `AnimationEvalContext` pointer: ``` typedef struct AnimationEvalContext { struct Depsgraph *const depsgraph; const float eval_time; } AnimationEvalContext; ``` These structs are read-only, meaning that the code cannot change the evaluation time. Note that the `depsgraph` pointer itself is const, but it points to a non-const depsgraph. FCurves and Drivers can be evaluated at a different time than the current scene time, for example when evaluating NLA strips. This means that, even though the current time is stored in the dependency graph, we need an explicit evaluation time. There are two functions that allow creation of `AnimationEvalContext` objects: - `BKE_animsys_eval_context_construct(Depsgraph *depsgraph, float eval_time)`, which creates a new context object from scratch, and - `BKE_animsys_eval_context_construct_at(AnimationEvalContext *anim_eval_context, float eval_time)`, which can be used to create a `AnimationEvalContext` with the same depsgraph, but at a different time. This makes it possible to later add fields without changing any of the code that just want to change the eval time. This also provides a fix for T75553, although it does require a change to the custom driver function. The driver should call `custom_function(depsgraph)`, and the function should use that depsgraph instead of information from `bpy.context`. Reviewed By: brecht, sergey Differential Revision: https://developer.blender.org/D8047
2020-06-27Fix T78259: Proportional editing does not work in particle editingGermano Cavalcante
And better identify what is bool and what is flag in the proportional edit properties.
2020-06-23Cleanup: unused argumentCampbell Barton
2020-06-23Fix T78045: CTL-ALT-S does nothing in pose mode and crashes when called from ↵Germano Cavalcante
the menu
2020-06-10Cleanup: Move each special_aftertrans_update to their respective TransData fileGermano Cavalcante
2020-06-08Cleanup: Move each recalcData to their respective TransData fileGermano Cavalcante
2020-04-29Merge branch 'blender-v2.83-release'Philipp Oeser
2020-04-29Fix T75810: Child bone frozen when both Auto IK and X-Axis mirror arePhilipp Oeser
used Caused by {rBa6a9a12e8f32} Other relevant commits: rBb8ca806b7798e2f8dd6effca8f0d081b3cd8c23f rBde530a95dc7b482dc22c933b9b8b2a98c79b5663 The issue is caused by some leftover BONE_TRANSFORM_MIRROR flags on a bone from previous runs (file in the report had the flag still on forearm.R). With these false leftover flags still set, `pose_grab_with_ik()` cannot work correctly. Culprit commit above removed the early clearing of this flag on all bones, this should be restored [this happened in `count_set_pose_transflags()`]. This should only be done in the beginning of the transform process, so now still clear the flags early in 'createTransPose()' [but dont restore this in 'count_set_pose_transflags()' -- this will be called from special_aftertrans_update again, so placing the clearance here only complicates things (autokeyframe_pose() still needs to work as well)...] Maniphest Tasks: T75810 Differential Revision: https://developer.blender.org/D7527
2020-04-28Cleanup: Use more descriptive names for functionsGermano Cavalcante
count_set_pose_transflags --> transform_convert_pose_transflags_update count_bone_select --> armature_bone_transflags_update_recursive Also don't mix `BONE_TRANSFORM_MIRROR` with `BONE_TRANSFORM` in transflag. (This was a mess introduced in rBde530a95dc7b).
2020-04-15Cleanup: unused variable, spellingCampbell Barton
2020-04-15Fix unreported Auto IK crash when using targetless IK.Sebastian Parborg
Needed to use a temporary pchan iterator to make sure that we keep track of the selected bone.
2020-04-15Fix T75649: Using "Auto IK" on FK controls with Rigify will crash Blender.Sebastian Parborg
Fixed a coding mistake when adding temp IK chains with Auto-IK. We need to use the data from the new temporary constraint.
2020-04-14Cleanup: spellingCampbell Barton
2020-04-10Fix T67232: Multiples targetless IKs in a chain gives weird behaviour (known ↵Sebastian Parborg
as FakeIK for FK posing) The issue was that the deps graph relation builder assumed that all bones that had a IK constraint on them would be evaluated. However for targetless IK bones, only the active bone would receive updates and the others would be skipped (as those would be treated as if the IK constraint was disabled). I didn't see an easy way to solve this from the depsgraph side of things. Instead I came up with a solution that I feel is quite strait forward and reflects what is actually supposed to happen under the hood. Now all targetless IK constraints are treated as disabled and will not be added to any relations in the depsgraph. Instead, a temporary IK constraint will be created when the bone in question is transformed. This is basically activating "Auto IK" for the bone while transforming. Reviewed By: Sergey, Brecht Differential Revision: http://developer.blender.org/D7378
2020-04-03Code Quality: Replace for loops with LISTBASE_FOREACHDalai Felinto
Note this only changes cases where the variable was declared inside the for loop. To handle it outside as well is a different challenge. Differential Revision: https://developer.blender.org/D7320
2020-04-03Cleanup: Including "BLI_listbase.h" for LISTBASE_FOREACH macroDalai Felinto
These headers are not needed right away, but will be in the upcoming commit.
2020-03-30Fix T75142: No autokeying with pose mode X-MirrorSybren A. Stüvel
This was caused by the removal of some `BONE_TRANSFORM_MIRROR` flag handling in rBde530a95dc7b482dc22c933b9b8b2a98c79b5663. I simply restored those lines that caused this issue.
2020-02-16Cleanup: Transform: Rearrange definitions and declarationsmano-wii
2020-01-02Transform: Pose: Partial support for Auto IK + X-Mirrormano-wii
Fix T69572 TODO: support `Relative-Mirror` as well. Maniphest Tasks: T69572 Differential Revision: https://developer.blender.org/D5862
2019-09-05Transform: Split transform_conversions into multiple files.mano-wii
Part of T68836 `transform conversions.c` is a file that is getting too big (almost 10,000 lines). So it's a good idea to split it into smaller files. differential revision: https://developer.blender.org/D5677