Script do Blender 2.9, como obter o nome da propriedade dirigida

Oct 26 2020

Estou tentando obter o nome da propriedade que foi afetada por um driver para um determinado objeto, o que fiz até agora:

for d in bpy.context.object.animation_data.drivers:
    print(d.driver.id_data.name)

No entanto, isso está retornando o nome do objeto, não a propriedade controlada.
Minha pergunta é , digamos que haja uma unidade controlando a escala Z, como faço para obter essa informação "Escala Z" ou um equivalente semelhante, no script?

Respostas

4 Gorgious Oct 26 2020 at 18:32

Use f_curve.data_pathe f_curve.array_indexpara obter o índice de propriedade no caso de propriedades vetorizadas (como localização, escala, etc.)

import bpy

if bpy.context.active_object and bpy.context.active_object.animation_data:
    for d in bpy.context.active_object.animation_data.drivers:
        print(bpy.context.active_object)
        print(f"Driven property : {d.data_path}")
        print(f"Property index : {d.array_index}")

Exemplo: