2016-06-03 2 views
1

Я настоящее время драйвер создание ключевых кадров с автоключей, как это:Как создать ключевой кадр с Python API для 3D Studio Max

MaxPlus.Animation.SetAnimateButtonState(True) # autokey on 
MaxPlus.Animation.SetTime(time)    # Set time slider to chosen time of keframe 
obj.Position = MaxPlus.Point3(x, y, z)   # Set position 
MaxPlus.Animation.SetAnimateButtonState(False) # autokey off 

Но это не совсем удобно. Есть ли другой путь? Есть ли функция вроде: createKeyframe (время, значение)? Как получить доступ к контроллеру видимости?

я должен probbably использовать:

c = MaxPlus.Factory.CreateDefaultFloatController() 
obj.ParameterBlock.Parameter.SetController(c) 

Но до сих пор я не знаю, как вставлять ключевые кадры, и я только знаю, как установить их с Autokey, так что это ничего не меняет

ответ

0

С макс 2016, есть вряд ли лучший способ, чем то, что вы делаете. Конечно, вы можете назначить новый контроллер видимости:

node.SetVisibilityController(MaxPlus.Factory.CreateDefaultFloatController()) 

Или вы можете изменить любые существующие один:

node.GetSubAnim(0).AddNewKey(time, param) 

где пары является суммой любого из

MaxPlus.Constants.AddkeyFlagged 
MaxPlus.Constants.AddkeyInterp 
MaxPlus.Constants.AddkeySelect 

но к работе со значениями ключей, вы должны получить интерфейс IKeyControl/ISetKeyControl. Это не будет работать:

ctrl.GetInterface(MaxPlus.AnimatableInterfaceIds.IKeycontrol) 

как он ожидает MaxPlus.Interface_ID типа и IKeycontrol (который стоит на оригинальную I_KEYCONTROL здесь) является вместо константного значения 0x00001100. Тем не менее, первоначальная реализация выглядит примерно так:

void* Control::GetInterface(ULONG id) 
{ 
    if (id==I_CONTROL) { 
     return this; 
    } 
    else if (id==I_KEYCONTROL) { 
     ...; 
    } 
    // and so on, only as a last resort checking the Interface_ID 
    else { 
     return Animatable::GetInterface(id); 
    } 
} 
+1

Любое обновление для этого, начиная с Max 2018? Я также пытаюсь получить ключевые кадры в MaxPlus и не могу понять это. – Spencer

+1

Любые причины, чтобы избежать использования pymx для этой части? – Swordslayer

+0

Хорошая точка, я думаю, нет. Я только начинаю с python в Max (наконец, обновлен с 2016 года) и придерживался MaxPlus, потому что я думал, что у него все, что есть у pymxs, но теперь я читаю, что документы выглядят так, как будто это было бы довольно просто. – Spencer