Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Apply custom boolean property and a driver
- # that looks at an objects Z location
- import bpy
- # Function to add a custom property and apply a driver to it
- def add_driver_to_object(obj):
- # Add a custom property to the object
- obj["AnimationDisabled"] = False # Default value is False
- # Add a driver to the custom property
- driver = obj.driver_add('["AnimationDisabled"]')
- # Set the type of the driver to SCRIPTED
- driver.driver.type = 'SCRIPTED'
- driver.driver.use_self = True
- # Set the expression for the driver with Z location as input
- driver.driver.expression = '1 if var + self.location.z < 0 else self["AnimationDisabled"]'
- # Manually set up the variable and target for Z location
- var = driver.driver.variables.new()
- var.type = 'TRANSFORMS'
- # Object to get Z height for
- var.targets[0].id = bpy.data.objects["Empty"]
- var.targets[0].transform_type = 'LOC_Z'
- # Update the dependencies
- bpy.context.view_layer.update()
- # Iterate through selected objects and apply the driver
- selected_objects = bpy.context.selected_objects
- for obj in selected_objects:
- add_driver_to_object(obj)
- # Iterate through all selected objects
- for selected_object in bpy.context.selected_objects:
- # Check if the object has a rigid body
- if selected_object.rigid_body:
- # Access the Rigid Body settings
- rigid_body_settings = selected_object.rigid_body
- # Create a new driver for the "Animated" property
- driver = rigid_body_settings.driver_add("kinematic")
- # Access the driver data
- driver_data = driver.driver
- # Set up the driver expression
- driver.driver.use_self = True
- driver_data.expression = 'not self.id_data["AnimationDisabled"]' # Example expression, you can customize this
- # Optionally, update the driver to rebuild the expression
- driver_data.expression = driver_data.expression
- # Update the scene to reflect the changes
- bpy.context.view_layer.update()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement