Blender. Kopiowanie rotacji w jedną stronę.
Szybka wieczorna wprawka z Pythona w Blenderze.
Zadanie:
Zrobić tak, żeby obiekt kopiował rotację drugiego ale tylko w jedną stronę – na przykład tak jak działa napęd w rowerze – kręcąc pedałami do przodu obracamy kołem, a kręcenie do tyłu nie ma wpływu na rotację koła.
Wygląda to tak:

Działamy.
Uruchamiamy Blendera, tworzymy kostkę udającą pedały i dysk udający koło.
Obu obiektom nadajemy Constraint Limit Rotation i blokujemy rotację po osiach Y i Z:

Przechodzimy do Scripting i tworzymy skrypt o treści:
import bpy
last_x = 0
disc_x = 0
def limit_value(x):
global last_x
global disc_x
if x > last_x:
disc_x = disc_x + (x - last_x)
last_x = x
return disc_x
bpy.app.driver_namespace["limit_value"] = limit_value

Uruchamiamy ten skrypt wybierając z menu Text->Run script lub klikając Alt-P.
Wracamy do okienka zakładki Modeling, wybieramy nasz dysk i w menu Transform (wciskamy N jeśli go nie widać) klikamy prawym klawiszem myszki na polu Rotation: X

Wybieramy Edit driver:

W okienku które się pojawi wybieramy Type: Scripted expression, w Expression wpisujemy: limit_value(var).
Jako Input value wybieramy (x) var i jako Object: wybieramy naszego Cube udającego pedały.
Tak jak na zrzucie poniżej:

I tyle – teraz obracanie kostki w lewo obraca dysk w lewo a obracanie kostki w prawo nie wpływa na obrót dysku.
Dla leniwych .blend: http://www.artgabi.com/wp-content/uploads/2021/02/rower_pyhon.zip