2026-02-16

This commit is contained in:
2026-03-17 15:25:32 -06:00
parent d5dd373de0
commit 60100fbab2
560 changed files with 33397 additions and 20776 deletions
@@ -4,6 +4,11 @@
## [Unreleased]
## [0.5.1] - 2026-02-07
- Fix bug caused by a change in Blender 5.0's Python API for creating drivers. It caused the location component of the shake to not animate.
## [0.5.0] - 2025-02-10
- Update code to work properly with the new slotted/layered Action APIs in Blender 4.4. Otherwise functionally identical to v0.4.0.
@@ -31,7 +36,8 @@ To be filled out.
To be filled out.
[Unreleased]: https://github.com/cessen/colorbox/compare/v0.5.0...HEAD
[Unreleased]: https://github.com/cessen/colorbox/compare/v0.5.1...HEAD
[0.5.1]: https://github.com/cessen/colorbox/compare/v0.5.0...v0.5.1
[0.5.0]: https://github.com/cessen/colorbox/compare/v0.4.0...v0.5.0
[0.4.0]: https://github.com/cessen/colorbox/compare/v0.3.0...v0.4.0
[0.3.0]: https://github.com/cessen/colorbox/compare/v0.2.0...v0.3.0
@@ -284,9 +284,16 @@ def build_single_shake(camera, shake_item_index, collection, context):
rot_constraint.mix_mode = 'AFTER'
# Set up the location constraint driver.
driver = loc_constraint.driver_add("influence").driver
#
# Note: we clear the keyframes from the driver's fcurve to dodge some
# small-value rounding that Blender does internally when evaluating fcurves.
# This way the driver expression evaluation gets used directly, without any
# intermediate steps that might interfere.
fcurve = loc_constraint.driver_add("influence")
fcurve.keyframe_points.clear()
driver = fcurve.driver
driver.type = 'SCRIPTED'
driver.expression = "{} * influence * location_scale / unit_scale".format(1.0 / (UNIT_SCALE_MAX * INFLUENCE_MAX * SCALE_MAX))
driver.expression = "{} * influence * location_scale / unit_scale * int(\"1\")".format(1.0 / (UNIT_SCALE_MAX * INFLUENCE_MAX * SCALE_MAX))
if "influence" not in driver.variables:
var = driver.variables.new()
var.name = "influence"
@@ -310,7 +317,11 @@ def build_single_shake(camera, shake_item_index, collection, context):
var.targets[0].data_path ='unit_settings.scale_length'
# Set up the rotation constraint driver.
driver = rot_constraint.driver_add("influence").driver
#
# Note: see further-above note for why we clear the keyframes here.
fcurve = rot_constraint.driver_add("influence")
fcurve.keyframe_points.clear()
driver = fcurve.driver
driver.type = 'SCRIPTED'
driver.expression = "influence * {}".format(1.0 / INFLUENCE_MAX)
if "influence" not in driver.variables:
@@ -633,7 +644,7 @@ def register():
# The list of camera shakes active on an camera, along with each shake's parameters.
bpy.types.Object.camera_shakes = bpy.props.CollectionProperty(type=CameraShakeInstance)
bpy.types.Object.camera_shakes_active_index = bpy.props.IntProperty(name="Camera Shake List Active Item Index")
bpy.types.Object.camera_shakes_active_index = bpy.props.IntProperty(name="Camera Shake List Active Item Index", options = set())
bpy.types.WindowManager.camera_shake_show_utils = bpy.props.BoolProperty(name="Show Camera Shake Utils UI", default=False)
@@ -1,7 +1,7 @@
schema_version = "1.0.0"
id = "camera_shakify"
version = "0.5.0"
version = "0.5.1"
name = "Camera Shakify"
tagline = "Add captured camera shake/wobble to your cameras"
maintainer = "Nathan Vegadahl <cessen@cessen.com>"