- At import => Create some multi-slot action if multiple node are impacted by the glTF animation
- At export =>
- Multi-slot actions are exported as a single glTF animation by default
- There is still an option to get back to previous feature, merging by track name instead of by action
KHR_animation_pointer is not part of this PR.
animation pointer data are still exported only when using full baking (NLA track or scene export mode).
Using animation pointer related slots for other mode will come in a second step, not planned yet (and will not be part of 4.4)
Some hooks definition changed, and some hook locations changed because of this new behavior.
Communication for hook devs still need to be done
PR: #132771
Pull Request: https://projects.blender.org/blender/blender/pulls/132771
"End" in "Clip End" can be better translated to something like "Far"
in some languages. Using the "Camera" context even when it's not
specifically a camera clipping (also affects light probes).
Issue reported by Gorazd-Gorup.
Enums in Blender evaluate to a string, so trying to add them to a pose
failed with an error because FCurves only accept numbers.
The fix is to modify the data path and split the property name off.
By evaluating that we arrive at the bone, from which we can call `get(property_name)`
to get the int value.
Pull Request: https://projects.blender.org/blender/blender/pulls/132124
The logic to generalize over downloading a URL or reading data from
the file-system included static values in the iterator along with the
data being read - so the caller could access the total expected size of
the data being read. While this worked, the result didn't read well.
Now these iterators yield the data being read, a new type has been
added for the caller to read the size hint from.
Also correct invalid doc-string.
Accessing the internal extensions command would warn that the processes
stdout wasn't closed on completion. While it's harmless at the moment,
ensure it's closed using a context manager.
This has come up a couple of times and it seems better to change the
implementation from blender/blender-addons@f1dd37b8ac [which only
exported edge creases when a subd modifier with enabled `Use Creases`
option was present] in a way that these are always exported (if present).
Also took the liberty to rename the variable name for the layer to
correspond to "crease".
Thx @mont29 for handholding on this one!
Fixes#131284
Pull Request: https://projects.blender.org/blender/blender/pulls/131419
When importing a BVH file with a parent node that has more than one
child that have offsets within `0.001 * global_scale` of the parent
node, the length of the parent node is considered to be zero.
For example: A parent node with `OFFSET 0 -0.1077 0`, two children with
`OFFSET 0 -0.1074 0`, and a global scale of `1.0`, the parent node's
length would be considered zero, therefore adding `global_scale / 10`
(`0.1` in this case) to the y component of the offset. The resulting
tail offset would then be `OFFSET 0 -0.0077 0`.
Ref !105492
This changes the location of the Draco library installation path.
The new location is at the root of addons_core/io_scene_gltf2 addon, as the library is created for this addon only.
This will solve issues where the gltf addon couldn't find the library in case of global python installation or custom script/lib paths
Pull Request: https://projects.blender.org/blender/blender/pulls/131080
Geometry Nodes can change the materials of the Object, for Mesh Objects,
the new materials are present in the evaluated Object, but for non-Mesh
Objects, the new materials may not be present until the evaluated Object
has been converted to a Mesh.
This patch fixes the materials in FBX export, with Apply Modifiers
enabled, of non-Mesh types with Geometry Nodes that change materials.
Rather than getting the materials from the evaluated Object, the
materials are now retrieved from the Mesh created from the evaluated
Object.
To support object-linked material slots, the materials on the new Mesh
are replaced at the same indices as the object-linked material slots.
Pull Request: https://projects.blender.org/blender/blender/pulls/130485
The FBX SDK specifies that normals should use the IndexToDirect FBX
reference mode. This mode allows data written to FBX to be deduplicated
by writing a separate array of indices into the deduplicated array of
data that can be used to reconstruct the full array of data.
When Unity imports per-vertex normals with the IndexToDirect reference
mode, it erroneously considers the imported mesh's normals invalid if
any of its normals were deduplicated. This issue is not present in other
external software that I have tested.
This patch modifies the export of per-vertex normals to not perform any
deduplication, avoiding the issue in Unity's FBX importer while
maintaining use of the IndexToDirect reference mode.
The add-on's patch version has been increased.
Pull Request: https://projects.blender.org/blender/blender/pulls/123186
Regression in [0] caused extensions with an empty wheel list
to raise an unhandled exception when extracting the Python
version from the wheel list.
Besides resolving this error, account for errors using the wheel
list since it isn't type checked in this code-path.
[0]: cfc10b0232565642afbfdc5a867f027640ce8274
Add error handling for rare but possible failures on installation.
- Account for the destination extension directory being a file.
- Handle the exception if renaming the temporary directory fails.
When an extension could could be removed but it's directory could be
renamed, the install operation would fail anyway.
Resolve by completing the installation when the directory can be moved.
Report as part of #129884.
This check is done before the filter of non deformation bone.
So when we want to get this list, as it's cached, we get the list with non deformation bones, so try to access a bone that is filtered
Additional bug when we want to export only DEF bones :
the check is done on all bones, not only deformation bones, if we want to get only def bones.
So having at root a DEF and a nonDEF bone => Check will failed and said we can't remove armature
Solution: When checking if we can remove armature, indicate that we don't want to cache the result
Regression in [0] caused wheels with an older Python version
that used CPython's stable ABI to be considered incompatible.
Resolve using the stable ABI for version checks.
[0]: cfc10b0232565642afbfdc5a867f027640ce8274
addon_utils.enable/disable now handle wheels so that the functions can
be used with extension add-ons.
A new argument `refresh_handled` supports scripts handing refresh
themselves which is needed to avoid refreshing many times in cases
when there are multiple calls to enable/disable.
This is mostly useful for internal operations.