В классе FBFCurve начиная с 2011 МоБи произошли изменения, пропали функции KeyRemove, KeyDelete и в документации не указано что пришло им на смену.

Что с этим делать под катом.

1. Я для себя нашел следующий вариант не используя функцию удаления ключа в кривой: создать новую кривую, записать туда только нужные ключи, а потом эту кривую переназначить как искомую. Пример

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def curveCutRight(node, time):
newcurve = FBFCurve()
curve = node.FCurve

count = len(curve.Keys)
newcurve.EditBegin(count)
newcurve.EditClear()

for key in curve.Keys:
if (key.Time.Get() != time.Get()): break
newcurve.KeyAdd(key.Time, key.Value)

newcurve.EditEnd()

node.FCurve = newcurve
del newcurve, count

2. Сегодня на AREA появилась информация как еще можно подобраться к кривым, недокументированные функции по работе с ключами

1
2
myFCurve.KeyDeleteByIndexRange(index,index)
myFCurve.KeyDeleteByTimeRange(time, time, bool)

Соответственно в первом случае мы указываем с какого по какой индекс ключей нужно удалить, а во втором мы указываем временной промежуток в котором ключи нужно удалить и третий параметр — следует ли нам удалить ключи время которых совпадает с границами указанного диапазона.
Следует помнить, что временные диапазоны можно указывать от минус бесконечности до плюс бесконечности. Например, удалить все ключи время которых больше некоторого данного времени, включая границу диапазона.

1
curve.KeyDeleteByTimeRange(time, FBTime.Infinity, True)
МоБи и Питон: изменения в FBFCurve
Метки:        

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *