does anybody know if its possible to avoid that max creates sub-frames in an animation?
i’am doing a character animation, the timeline is set to frames, but he allways creates subframes and jumps automaticly to ticks. :?
best regards
jonas
does anybody know if its possible to avoid that max creates sub-frames in an animation?
i’am doing a character animation, the timeline is set to frames, but he allways creates subframes and jumps automaticly to ticks. :?
best regards
jonas
Hey jonny!
rightmouse click on the timeline -~> configure → uncheck snap to frames.
Confrabulations, the glory of max’s 4800 ticks per second is yours to command! :lol:
Lele
thanks lele ![]()
i’ve unchecked it,
but still same problem…
doin a animation, i copy a frame from 10 to 20, with shift click in the timeline, its ending up with a subframe, and he jumps to ticks. ![]()
The settings for the small timeline (snap to frames) and the dopesheet are separate: for the dopesheet is the hotkey “S”
that normally happens when the timebase is changed and the timeline rescaled mid-work, with keyframes already there.
Sounds buggy to me.
does it happen outside of the dopesheet, on the small timeline?
Lele
edit: ah, btw, i got your question the other way around, on my previous post ![]()
its max 8, SP3
yes its true, i’ve rescaled the timeline, moved the existing animation to the end, and started a new animation from frame 0.
and now when i check “snap to frames”, he sometimes creates new keys in subframes. :?
yes its happen on the small timeline.
lol i was still editing.
Ah, you’re screwed then ![]()
i think it IS a bug afterall.
you can manually fix it by setting the frame by hand on a set of selected keys (rmc for properties, and set 40.0 by hand).
i think the standard interface is ruined now ![]()
Lele
the master animation-tool max :? . (or its me) ![]()
thanks for your quick help lele ![]()
i think i have to learn some basics, like never rescale the timeline and so on.
edit:
aaaah
sorry, but this bug is really annoying.
ahah, you’re most welcome, jonny ![]()
aboard, the sinking ship, that is :lol:
Lele
I think this has allways been the case when you have keys on a subframe. It´s OK as you just ading new keys but if you whant to go to a specific key f. ex stepping between keys and a key is on a sub frame tick. then it change mode to frame/tick. anoying but I can understand why it´s built that way.
Anyway. If you want the keys to snap to frames you should have it checked, no?
yes i agree,
its clear that he switch to ticks when there is a key in a subframe, but what is anyoing is that when i allrady have a movement-key, snap to it, and want to set a rotation key on the same pos., he sets the rotation key in a subframe.
ah yes its ticked.
thats strange. I have to try that. do you have any ease curves on the object from before? I know I´v had some really strange results with ease curves if I continue to work on the original animation.
yes, there are two peoples in the scene, both of them are allready animated, maybe the failure is, as lele said, that i’ve rescaled the timeline and moved all the keys to the end of the timeline, for animating the beginning of the animation after the end. :?
but isn’t there a possibility to avoid max to set keys in subframe?
ah, it’s as straight an issue as the rounding max applies to numbers when rescaling.
It seems that the decimals are there, but not visible, and the snap is incremental, not fixed: so it will ADD 1 frame to the current value, re-evaluate the frame number, and do something wrong rerounding it up.
It’s always been the case.
Only way to get rid of it, is as i said to input the frame value by hand.
The other is to scale by integers :lol:
Lele
there COULD be a way: a script that cuts the decimals off.
Lemme try a couple of things, and i’ll see what happens ![]()
Lele
i havn’t really understand what you’ve said, but i’am shure its right. ![]()
Try tis as a quickfix: move the keys one frame back
and then snap them back on.
See if it helps.
Lele
yes, thats what i’am doing since a few hours, i set a key, go to the dope sheet, move the key one frame, and he’s snapping in.
its now the leastwise 700 key wich i’am moving forward and back, it isn’t the best workflow i think. :x :?
even when i rightcklick the timeslider, for getting a key for rot. pos. and scale, and animate after, he’s setting it in a subframe.
i’m done with the procedure to fix this automatically, but i have an issue: it will work only with point3 controllers for the very first release, i think. i shoulg dig deeper to automate it, but so far it works fairly well to floor the decimals on keys.
That means that a key at 15.995 will snap back at 15, mind you.
It’s up to you to choose what’s preferable: keys in between frames, or hand readjusting of bad frames (statistics says around 50% of those will be on the wrong frame, ya know…)
select an object, run this code, see if it works for your position channels.
tempkeysarraypos=$.Position.controller[1].keys
for i=1 to tempkeysarraypos.count do (
if ($.Position.controller[1].keys[i].time != int $.Position.controller[1].keys[i].time) do (
$.Position.controller[1].keys[i].time =(int $.Position.controller[1].keys[i].time)
print ("moved key" + (i as string) +" on the PosX channel from time " + (tempkeysarraypos[i].time as string) + " to time " + ($.Position.controller[1].keys[i].time as string ) )
)
)
tempkeysarraypos=$.Position.controller[2].keys
for i=1 to tempkeysarraypos.count do (
if ($.Position.controller[2].keys[i].time != int $.Position.controller[2].keys[i].time) do (
$.Position.controller[2].keys[i].time =(int $.Position.controller[2].keys[i].time)
print ("moved key" + (i as string) +" on the PosY channel from time " + (tempkeysarraypos[i].time as string) + " to time " + ($.Position.controller[2].keys[i].time as string ) )
)
)
tempkeysarraypos=$.Position.controller[3].keys
for i=1 to tempkeysarraypos.count do (
if ($.Position.controller[3].keys[i].time != int $.Position.controller[3].keys[i].time) do (
$.Position.controller[3].keys[i].time =(int $.Position.controller[3].keys[i].time)
print ("moved key" + (i as string) +" on the PosZ channel from time " + (tempkeysarraypos[i].time as string) + " to time " + ($.Position.controller[3].keys[i].time as string ) )
)
)
tempkeysarraypos=#()
gc() light:true
Lele
:shock: oh man you’re… great ![]()
i’ll give it a try
thanks a lot lele