Для того чтобы обрезать (clip) значение по границам – проверить, не выходит ли значение за заданные пределы и если нет – то вернуть само значение, а если выходит – максимально возможное граничное значение, можно с помощью очень простой функции.
Определим функцию клиппинга:
1 2 3 4 |
def clip(value, _min=0.0, _max=1.0): value = min(value, _max) value = max(value, _min) return value |
В этой функции мы задали границы по умолчанию равными от 0 до 1.
Если нужно переместить объект, но не более чем в границах области координат от 0 до 1, можно использовать эту функцию с параметрами по умолчанию:
1 2 3 4 5 6 7 8 9 |
move_to_x = 1 move_to_y = 2 move_to_z = 0 bpy.context.object.location = ( clip(move_to_x), clip(move_to_y), clip(move_to_z) ) |
Хотя мы и задали координату для перемещения по оси Y равной 2, благодаря нашей функции клиппинга активный объект переместится в точку с координатами (1.0, 1.0, 0.0).
При необходимости границы клиппинга можно задавать в параметрах:
1 2 3 4 5 |
bpy.context.object.location = ( clip(move_to_x, _min=0.0, _max=1.0), clip(move_to_y, _min=0.0, _max=1.5), clip(move_to_z, _min=0.0, _max=1.0) ) |