Blender Git Commits

Blender Git "asset-system-filelist" branch commits.

Page: 5 / 12

March 29, 2021, 13:14 (GMT)
Merge remote-tracking branch 'origin/master' into asset-browser-poselib

# Conflicts:
# release/scripts/addons
# source/blender/blenkernel/intern/armature_pose.cc
# source/blender/makesrna/intern/rna_ID.c
March 29, 2021, 10:57 (GMT)
Pose Library: use mouse position to determine blend factor

Similar to the pose sliding tools, use the relative mouse position in the
active area to determine the pose blend factor.

This is not a final implementation, but at least makes the pose library
usable with a tablet.
March 26, 2021, 17:18 (GMT)
Fix crash when applying pose from external repository in Asset Browser

The Asset Browser uses the `FileList` from the File Browser, which isn't
properly using the `AssetList` yet. So of course getting the file-path
from the asset list will fail.

For now just add a little hack to fall-back to get the data from the
Asset Browser directly.
March 26, 2021, 16:25 (GMT)
Fix possible crash when blending poses

I did some casting hack to return an `AssetHandle` from a
`FileDirEntry`. But this doesn't actually work.

What I added now isn't something I'm happy with either, but it will have
to do for now. Basically we request an `AssetHandle`, which the Asset
Browser doesn't actually store, since it's just a wrapper around the
Asset Browser's `FileDirEntry`. So there is no consistent pointer the
editor could return to context queries, and the context needs a pointer
so that it can be passed around as `void *`.

Eventually once we have the planned asset storage design implemented,
the storage would include actual asset handles. So we can pass around
consistent pointers to them then.
March 26, 2021, 13:38 (GMT)
Correct function names for changes in ui-asset-view-template branch
March 26, 2021, 13:38 (GMT)
Cleanup: Use new utils provided by the asset system to get temp asset IDs

The operators are not exclusive to the File Browser anymore now. The logic to
get the asset file information and use that to append the ID if necessary is
abstracted away by the asset system now, see 10383566b800.
March 26, 2021, 11:44 (GMT)
Pose Library: add `POSELIB_OT_apply_pose_asset` operator

Add operator `POSELIB_OT_apply_pose_asset` that does the same as executing
(instead of invoking) `POSELIB_OT_blend_pose_asset` with
`blend_factor=1.0f`. This will replace the Python equivalent in the
pose library add-on.
March 26, 2021, 11:12 (GMT)
Pose Library: allow blending in flipped poses

Allow a flipped pose asset to be blended into the current pose.
March 26, 2021, 11:11 (GMT)
Cleanup: Rename `POSELIB_OT_blend_pose` to `POSELIB_OT_blend_pose_asset`

Rename the pose blending operator to `POSELIB_OT_blend_pose_asset`, so that
we can make an operator `POSELIB_OT_apply_pose_asset` without colliding
with the old `POSELIB_OT_apply_pose` operator (from the current pose
library system instead of the new one).

No functional changes.
March 26, 2021, 10:59 (GMT)
Revert "Cleanup: Use new utils provided by the asset system to get temp asset IDs"

This reverts commit b0395ba7186c1b0e1aede546b9ce2cfa41f5ffe7.
March 26, 2021, 10:54 (GMT)
Merge remote-tracking branch 'origin/master' into asset-browser-poselib
March 26, 2021, 10:17 (GMT)
Revert "Action: flip action data using pose contents"

This reverts commit d219b09a4802fff37189442de55720da6a03ea78. It was
accidentally committed to this branch, and is superseded by the actual
commits mentioned in D10781#274991
March 26, 2021, 10:08 (GMT)
Fix library linking for editors/asset

Add missing libraries to fix a linker error.
March 25, 2021, 18:19 (GMT)
Correct function names for changes in ui-asset-view-template branch
March 25, 2021, 18:12 (GMT)
Merge branch 'ui-asset-view-template' into asset-browser-poselib
March 25, 2021, 18:10 (GMT)
Cleanup: Improve naming of new temporary ID consumer functions
March 25, 2021, 18:03 (GMT)
Asset Browser: correct the declared context keys

The file browser context (when in asset browser mode) was declaring the
wrong context keys, making it impossible to use `context.copy()` in Python.
March 25, 2021, 18:02 (GMT)
Cleanup: Use new utils provided by the asset system to get temp asset IDs

The operators are not exclusive to the File Browser anymore now. The logic to
get the asset file information and use that to append the ID if necessary is
abstracted away by the asset system now, see 10383566b800.
March 25, 2021, 17:02 (GMT)
Asset Browser: correct the declared context keys

The file browser context (when in asset browser mode) was declaring the
wrong context keys, making it impossible to use `context.copy()` in Python.
March 25, 2021, 16:19 (GMT)
Action: flip action data using pose contents

This adds a new RNA method `Action.flip_with_pose(ob, frame)`
to flip the action channels that control a pose.
The rest-pose it's self is used to properly flip the bones transformation.

This is useful as a way to flip actions used in pose libraries,
so the same action need not be included for each side.

API calls to cache F-curve look-ups have also been added,
supporting a single hash lookup to access all channels controlling an RNA path.

----

**Motivation**

This patch adds functionality to flip an entire action on the X axis using a symmetrical rig.

This was written so the asset manager can apply poses flipped, see T86159,

tested with spring.blend.

**Alternative Solutions**

It's possible to calculate this on the pose directly (see D10766), however operating on the action data makes this more useful as an API function, since the data can be flipped before it's applied to the pose.
Instead of flipping on the pose, then writing back to the action.

**Limitations**

There is some information not easily available at the time of flipping, for example - it's possible the flipped data-path doesn't exist in all cases, although the ideal behavior isn't obvious when the RNA path only resolves on one side of the pose.

- Currently the API function flips all channels, we could add an argument so it only operates on some of the channels.

**Open Topics**

- When some actions transform channels don't exist, they could be created (for example - if only X & Y rotation are set, it may be necessary to create a Z F-Curve to properly flip the rotation).
- The key-framing API is currently part of the editors (it would be a bad-level call from the BKE), we could expose some keyframing functionality to BKE, or move this functionality to editors. For now there is a simple keyframe adjusting function.
- Currently only the armature rest-matrices is used, not the pose. This API could take an armature instead of an object, although we might want to use pose content in the future, it doesn't seem like a big issue either way.
- This could eventually be exposed as an operator.
- Currently this re-orders channels which could have other frames keyed. A more comprehensive approach could be to operate on all keyed frames for an action, so an action that includes multiple poses will have them all properly flipped.

-----

**Notes**

- The F-Curve lookup cache can be committed separately.

- This is an example script for testing with the pose object set active:

```
import bpy
from bpy import context
ob = context.object
action = bpy.data.actions['07_040_A.spring']
action.flip_with_pose(ob, context.scene.frame_current)
```

Differential Revision: https://developer.blender.org/D10781
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021