Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions .github/workflows/on-pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -62,40 +62,40 @@ jobs:
base-branch: ${{ github.head_ref }}

# Test with Blender 5.1
test-blender-5-1-ubuntu-latest:
test-blender-5-2-ubuntu-latest:
needs: [lint]
name: Blender 5.1 Tests
name: Blender 5.2 Tests
uses: poly-hammer/poly-hammer-workflows/.github/workflows/re-use-blender-tests.yaml@main
secrets: inherit
with:
python-version: "3.13"
blender-version: "5.1"
blender-version: "5.2"
runner-os: "ubuntu-internal"
addon-id: "character_dna"
base: "character-dna"
base-branch: ${{ github.head_ref }}

test-blender-5-1-windows-latest:
test-blender-5-2-windows-latest:
needs: [lint]
name: Blender 5.1 Tests
name: Blender 5.2 Tests
uses: poly-hammer/poly-hammer-workflows/.github/workflows/re-use-blender-tests.yaml@main
secrets: inherit
with:
python-version: "3.13"
blender-version: "5.1"
blender-version: "5.2"
runner-os: "windows-latest"
addon-id: "character_dna"
base: "character-dna"
base-branch: ${{ github.head_ref }}

test-blender-5-1-macos-latest:
test-blender-5-2-macos-latest:
needs: [lint]
name: Blender 5.1 Tests
name: Blender 5.2 Tests
uses: poly-hammer/poly-hammer-workflows/.github/workflows/re-use-blender-tests.yaml@main
secrets: inherit
with:
python-version: "3.13"
blender-version: "5.1"
blender-version: "5.2"
runner-os: "macos-latest"
addon-id: "character_dna"
base: "character-dna"
Expand All @@ -116,14 +116,14 @@ jobs:
is-push: ${{ github.event_name == 'push' }}
is-pull-request: ${{ github.event_name == 'pull_request' }}

benchmark-blender-5-1:
needs: [test-blender-5-1-ubuntu-latest, test-blender-5-1-windows-latest, test-blender-5-1-macos-latest]
name: Blender 5.1 Benchmark
benchmark-blender-5-2:
needs: [test-blender-5-2-ubuntu-latest, test-blender-5-2-windows-latest, test-blender-5-2-macos-latest]
name: Blender 5.2 Benchmark
uses: poly-hammer/character-dna-addon/.github/workflows/re-use-benchmark.yaml@main
secrets: inherit
with:
python-version: "3.13"
blender-version: "5.1"
blender-version: "5.2"
runner-os: "ubuntu-internal"
iterations: 50
warmup: 10
Expand Down
26 changes: 13 additions & 13 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -64,49 +64,49 @@ jobs:
addon-id: "character_dna"
base: "character-dna"

# Test with Blender 5.1
test-blender-5-1-ubuntu-latest:
# Test with Blender 5.2
test-blender-5-2-ubuntu-latest:
needs: [lint]
name: Blender 5.1 Tests
name: Blender 5.2 Tests
uses: poly-hammer/poly-hammer-workflows/.github/workflows/re-use-blender-tests.yaml@main
secrets: inherit
with:
python-version: "3.13"
blender-version: "5.1"
blender-version: "5.2"
runner-os: "ubuntu-internal"
addon-id: "character_dna"
base: "character-dna"

test-blender-5-1-windows-latest:
test-blender-5-2-windows-latest:
needs: [lint]
name: Blender 5.1 Tests
name: Blender 5.2 Tests
uses: poly-hammer/poly-hammer-workflows/.github/workflows/re-use-blender-tests.yaml@main
secrets: inherit
with:
python-version: "3.13"
blender-version: "5.1"
blender-version: "5.2"
runner-os: "windows-latest"
addon-id: "character_dna"
base: "character-dna"

test-blender-5-1-macos-latest:
test-blender-5-2-macos-latest:
needs: [lint]
name: Blender 5.1 Tests
name: Blender 5.2 Tests
uses: poly-hammer/poly-hammer-workflows/.github/workflows/re-use-blender-tests.yaml@main
secrets: inherit
with:
python-version: "3.13"
blender-version: "5.1"
blender-version: "5.2"
runner-os: "macos-latest"
addon-id: "character_dna"
base: "character-dna"

release:
needs:
[
test-blender-5-1-ubuntu-latest,
test-blender-5-1-windows-latest,
test-blender-5-1-macos-latest,
test-blender-5-2-ubuntu-latest,
test-blender-5-2-windows-latest,
test-blender-5-2-macos-latest,
# test-blender-4-5-ubuntu-latest,
test-blender-4-5-windows-latest,
test-blender-4-5-macos-latest,
Expand Down
10 changes: 6 additions & 4 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -157,21 +157,23 @@
{
"id": "blender-version",
"type": "pickString",
"default": "4.5",
"default": "5.2",
"options": [
"4.5",
"5.0",
"5.1"
"5.1",
"5.2"
],
"description": "What blender version to launch"
},
{
"id": "unreal-version",
"type": "pickString",
"default": "5.6",
"default": "5.8",
"options": [
"5.6",
"5.7"
"5.7",
"5.8"
],
"description": "What unreal version to launch"
},
Expand Down
2 changes: 1 addition & 1 deletion docs/contributing/development.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Contributions are welcome! Please create an issue to discuss significant work be
- [Python 3.13](https://www.python.org/downloads/release/python-31314/)
- [uv](https://docs.astral.sh/uv/getting-started/installation/) (Python package manager)
- [Git](https://git-scm.com/download/win) with Git LFS
- [Blender 5.1+](https://www.blender.org/download/)
- [Blender 5.2+](https://www.blender.org/download/)

## Setup

Expand Down
3 changes: 3 additions & 0 deletions docs/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ Check these in order:

Live RigLogic evaluation doesn't run before each frame when rendering. **Bake** the face board animation to keyframes first so the pose bones, shape keys, and mask values are stored on the timeline. See [Animation](./free-features/animation.md).

!!! note
It is now possible to disable `Batched Evaluations` in the addon preferences. This is currently experimental. Please report any issues with evaluation in the scene or while rendering with this option on.

## Still stuck?

Browse or search existing reports and open a new issue here:
Expand Down
8 changes: 5 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,13 @@ keywords = ["blender", "metahuman", "dna", "riglogic", "animation", "3d"]
name = "character-dna-addon"
readme = "README.md"
requires-python = ">=3.11,<3.14"
version = "0.9.8"
version = "0.10.3"

[project.optional-dependencies]
dev = [
"debugpy>=1.8.13",
"bpy>=4.5.1",
"bpy>=4.5.1,<5.2; python_version < '3.13'",
"bpy>=5.2; python_version >= '3.13'",
"pytest>=8.3.3",
"pytest-dotenv>=0.5.2",
"pytest-cov>=6.0.0",
Expand Down Expand Up @@ -399,7 +400,8 @@ max-statements = 60
[dependency-groups]
dev = [
"debugpy>=1.8.13",
"bpy>=4.5.1",
"bpy>=4.5.1,<5.2; python_version < '3.13'",
"bpy>=5.2; python_version >= '3.13'",
"pytest>=8.3.3",
"pytest-dotenv>=0.5.2",
"pytest-cov>=6.0.0",
Expand Down
9 changes: 5 additions & 4 deletions src/addons/character_dna/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
bl_info = {
"name": "Character DNA",
"author": "Poly Hammer",
"version": (0, 9, 8),
"version": (0, 10, 3),
"blender": (4, 5, 0),
"location": "File > Import > MetaHuman DNA",
"description": (
Expand All @@ -29,9 +29,10 @@
"category": "Poly Hammer",
}

# Callbacks that other addons can register to be notified when a rig instance is set up
# in the scene.
post_setup_scene_callbacks: list[Callable[[rig_instance.RigInstance], None]] = []
# Callbacks that other addons can register to be notified when the rig instance list changes
# (a rig instance is set up on load, added, or removed). The argument is the affected rig
# instance for additions/setup, or ``None`` for removals.
post_setup_scene_callbacks: list[Callable[[rig_instance.RigInstance | None], None]] = []

# Main Addon. Editor operators/panels are registered separately via the optional
# ``editors`` submodule registry (see ``utilities.get_editors``), so this list
Expand Down
4 changes: 2 additions & 2 deletions src/addons/character_dna/blender_manifest.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ schema_version = "1.0.0"
id = "character_dna"
name = "Character DNA"
tagline = "Customize MetaHuman DNA files with RigLogic evaluation support"
version = "0.9.8"
version = "0.10.3"
type = "add-on"

# =============================================================================
Expand All @@ -26,7 +26,7 @@ website = "https://polyhammer.com"
# Minimum Blender version required
blender_version_min = "4.5.0"
# Maximum Blender version supported
blender_version_max = "5.2.0"
blender_version_max = "5.3.0"

# =============================================================================
# License Information
Expand Down
4 changes: 4 additions & 0 deletions src/addons/character_dna/components/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ def __init__(
self.rig_instance.name = name
# set the active rig instance
self.scene_properties.rig_instance_list_active_index = len(self.scene_properties.rig_instance_list) - 1
# notify registered callbacks that a rig instance was added to the list
utilities.notify_rig_instances_changed(self.rig_instance)

if component_type == "head":
self.rig_instance.head_dna_file_path = str(dna_file_path)
Expand Down Expand Up @@ -453,6 +455,8 @@ def _delete_rig_instance(self):
my_list.remove(active_index)
to_index = min(active_index, len(my_list) - 1)
self.scene_properties.rig_instance_list_active_index = to_index
# notify registered callbacks that a rig instance was removed from the list
utilities.notify_rig_instances_changed()

def import_materials(self) -> list[bpy.types.Material] | None: # noqa: PLR0912
if self.dna_import_properties and not self.dna_import_properties.import_materials:
Expand Down
2 changes: 1 addition & 1 deletion src/addons/character_dna/editors
2 changes: 2 additions & 0 deletions src/addons/character_dna/operators.py
Original file line number Diff line number Diff line change
Expand Up @@ -1678,6 +1678,8 @@ def execute(self, context: "Context") -> set[str]:
my_list.remove(self.active_index)
to_index = min(self.active_index, len(my_list) - 1)
addon_scene_properties.rig_instance_list_active_index = to_index
# notify registered callbacks that a rig instance was removed from the list
utilities.notify_rig_instances_changed()
return {"FINISHED"}

def invoke(self, context: "Context", event: bpy.types.Event) -> set[str] | None:
Expand Down
8 changes: 8 additions & 0 deletions src/addons/character_dna/properties.py
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,14 @@ class CharacterAddonProperties:
next_metrics_consent_timestamp: bpy.props.FloatProperty(default=0.0) # pyright: ignore[reportInvalidTypeForm]
extra_dna_folder_list: bpy.props.CollectionProperty(type=ExtraDnaFolder) # pyright: ignore[reportInvalidTypeForm]
extra_dna_folder_list_active_index: bpy.props.IntProperty() # pyright: ignore[reportInvalidTypeForm]
batched_evaluations: bpy.props.BoolProperty(
name="Batched Evaluations",
default=True,
description=(
"Batch all rig evaluations onto the next draw call so all updates from a single scene change are "
"applied together. Disable this to evaluate each rig immediately when the scene's dependency graph updates"
),
) # pyright: ignore[reportInvalidTypeForm]
show_pro_features: bpy.props.BoolProperty(
name="Show Pro Features",
default=True,
Expand Down
14 changes: 7 additions & 7 deletions src/addons/character_dna/release_notes.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
## Minor Changes

* Added transfer to shape key operator in Raw Editor
* Added Blender `5.2` support

* It is now possible to optionally disable `Batched Evaluations` in the addon preferences. This is currently experimental. This removes the need to bake before rendering. Please report any issues with evaluation in the scene or while rendering with this option on.

## Patch Changes

* Fixed Body Baking issue when animating with control rig [#342](https://github.com/poly-hammer/character-dna-addon/issues/342)
* Made DNA component type detection more robust [#337](https://github.com/poly-hammer/character-dna-addon/issues/337)
* Fixed body animation pose mode switching bug
* Fixed view options panel lagging draw calls
* Fixed operator for adding [Texture Logic Node](https://docs.polyhammer.com/character-dna-addon/terminology/#texture-logic) now under `Add > Rig Logic > Head Texture Logic` in material graph
* Added experimental option to turn off batched evaluations
* Fixed center eye control baking bug [#308](https://github.com/poly-hammer/character-dna-addon/issues/308)
* Fixed bug with eye aim control when eyes follow head is false [#309](https://github.com/poly-hammer/character-dna-addon/issues/309)

## Tests Passing On

* Blender `4.5`, `5.1` (installed from blender.org)
* Blender `4.5`, `5.1`, `5.2` (installed from blender.org)
* Unreal `5.6`, `5.7`, `5.8`
Loading