Timeline
Ok, so it appears 'Next Animation' only applies to the first segment in an atom's list.

I've never shared a scene before. Do send just the .json? Or .var it up?

Additionally, while trying to reproduce this issue, I'm hitting this error (which I also experienced in the last file, but wasn't sure on the cause, and it would disappear on reload). Seems @falbst was having a similar issue back on post #439

For me, it's happens when I begin to add morph/float params as targets. Seems to happen further into a scenes creation, rather than earlier, but once it begins, it occurs more frequently.

In my example, I was adding morph 'left middle finger' from AshAuryn.Pose_Tools.2 and the error triggered. UI breaks within Timeline and can't be interacted with (But seems it still functions. i.e. I can copy a keyframe and paste to new area, it just doesn't display). Clicking off the atom and back on restores plugin UI, but interacting with morphs in the timeline triggers error again. Saving and reloading restores it fine.

Code:
!> Timeline.AtomAnimation.RebuildAnimationNow: System.NullReferenceException:
  at (wrapper managed-to-native) UnityEngine.Behaviour:get_isActiveAndEnabled ()
  at UnityEngine.EventSystems.UIBehaviour.IsActive () [0x00000] in <filename unknown>:0
  at UnityEngine.UI.Graphic.SetVerticesDirty () [0x00000] in <filename unknown>:0
  at VamTimeline.DopeSheetKeyframes.SetKeyframes (System.Single[] keyframes, Boolean loop) [0x00000] in <filename unknown>:0
  at VamTimeline.DopeSheet+<CreateRow>c__AnonStorey3.<>m__0 () [0x00000] in <filename unknown>:0
  at UnityEngine.Events.InvokableCall.Invoke () [0x00000] in <filename unknown>:0
  at UnityEngine.Events.UnityEvent.Invoke () [0x00000] in <filename unknown>:0
  at VamTimeline.AtomAnimation.RebuildAnimationNowImpl () [0x00000] in <filename unknown>:0
  at VamTimeline.AtomAnimation.RebuildAnimationNow () [0x00000] in <filename unknown>:0

I'm typing this in VR, so pls frogive eny toypos
 
@Gob you wrote all that in VR? That's impressive :D To send the scene I really only need the json, since I don't need to actually see the scene, just reproduce the issue (unless the issue is with a specific dependency). But for now I think the Next/Previous segment will work right? As for the error, it's really weird, it's like something's trying to redraw while the container has been destroyed. This is problematic and if you have any clue on how to reproduce, please let me know. I'll release a new Timeline update in a few weeks (2 hopefully) and would like to include this if I can!
 

After a crash course in var packaging, I've uploaded scene above (both as var and json).

I can no longer reproduce the error. Whilst packaging, I noticed dependencies were added to meta.json that were not in use. Tracking them down in the scene.json and they were for morphs I don't have. Before I settled on Peta Zwega's Sam for the scene, I loaded another appearance that must have contained these morphs, and they remained after appearance change. I cleared those out and so far have been unable to reproduce the error.

Stupidly, I didn't think to keep a copy with the missing morphs to confirm, and I've completely forgotten which previous appearance I used. If it happens again, I'll let you know.

re: using "Next Animation".

The scene begins with Segment 1 "Start". There are two buttons that each play a different segment, "On Back" and "On Belly". Those two segments each contain 4 animations: Anim 1 is a 30s intro, Anim 2 and 3 are loops, Anim 4 is 30s outro.

For the loops, a black "Next >" button is enabled to trigger "Next Animation". Clicking it when on the Start/choice segment loads the next scene as expected (Sam shaking head and hands), but the function does nothing when other segments playing. Perhaps this is intentional, but is unexpected.

And sorry to go on about this seemingly tiny use case :ROFLMAO:. I hadn't intended to be this anal about it when I first posted. VAM absolutely needs your work to enhance both creator and user experience. /blowingsmoke
 
Last edited:
@Gob no worries, for each person who takes the time to describe a problem, a lot more will just complain and never ask for a fix, so I'm thankful :) I think Next Animation would indeed make sense to be for the current segment rather than the first one, I added it to my list, I'll see if I can include it in the next Timeline release (in a few weeks)!
 
Thanks for this awesome plugin!

I have two suggestions, but i'm still learning so maybe these things are possible already.

- Allow the user to record over multiple layers (right now even if i select the controllers over different layers only the layer where i press record gets recorded.
- Allow the user to change speed of selected controls. For example i don't want to slow every controller in the animation but just the hip movement. So i bulk selet the timeframe where it should be speed up and change speed in edit settings.

Maybe rename "Speed (This)" "Speed (Anim)" and add an "Speed Selection" setting?

Cheers!

edit: I found a workaround for the first point. It's to freeze time and, record in both atoms then unpause, this way they are syncronized.
I had to do that because for morph control you need to have Timeline set up in each atom so there was no way around finding a solution to record over more than 1 layer (or atom).

For the second point i guess it could be said that changing the speed for one controller would make it unsyncronized to the rest (ending sooner, or later) but the plugin could maybe reposition the keyframes and leave space or cut out the rest when it's shorter or longer than the main anim time. I think it could be useful.
 
Last edited:
Hey @hentailondon ! Recording on multiple layers is mostly a UI challenge (which is the longest thing to do most of the time!), I have a few other recording-with-multiple-layers features but I added this one to the list too (don't wait up on it though, the list is frighteningly long). I had some ideas, e.g. showing multiple layers at once, which could be nice.

For per-control speed, this is actually what layers are for; you can specify sequencing on one layer and freely adjust the other layer's speed (well, technically the animation's speed). Another similar method would be to split layers, scale the animation, and merge them back (but this might not always work so it's really not as great as a "stretch selection". I'll still add the idea to the list, it could be an option!

Thanks for the ideas <3
 
Awesome plugin when you get the hang of it! :)

I was wondering if it is possible, or will be, to have separate tracks for object rotation and position?
It will make adjustments by hand so much easier.
 
Been working with the new version and haven't received any of those errors as previously reported fingers crossed, but damn good job on the new version Acid Bubbles.

Also would it be possible to add a function for the selection to start at last frame instead of the first frame when previewing the previous animations.

Regards
 
@DonV yeah I had this idea in my list (and individual editable curves too) for a while, it's technically possible, and it's already implemented behind the scenes. It's in the list, but it's not simple enough to be a "quick win" either.

@falbst You mean, when navingating back from Anim 2 to Anim 1 for example? I'm thinking, if the previous animation is non-looping AND the current keyframe is the first one, it could start at the last keyframe. That would maybe feel like a bug too though, as it would "sometimes" show the last frame, and sometimes not...
 
Yes Acid, that's exactly what I mean but only as an option as it would probably only benefit with long and complex animations.
 
The audio link feature is freaking amazing! It took a scene I'd tried all the tricks for but was still unplayable and instantly fixed it!

Just one (hopefully small) addition, can we get the RhythmAudioSource as a source to link to? I know it's not often used but I'm hoping it works close enough to a normal AudioSource that it will work the same way. Hey, we can but hope.
 
Question/request: If an animation is interrupted with another animation (via trigger or what not), Is there a way to return to the exact time of the original animation so that it basically resumes where it left off. As it is currently, the timestamp isn't preserved as far as I can tell and the original animation will just start over from the beginning. Thanks for your great plugin.
 
I did have this problem in one of my scenes, but instead I opted to use the Pose feature, which helps snap into position very quickly, even when moving across multiple animations.
I have a love/hate relationship with the Pose feature. Love it, because it solves a lot of issues I previously had with jumping between anims and it is a saviour during the editing process; Hate, because I occasionally tweak the first frame after setting a Pose and forget to reset it, leading to the occasional quirk and expletives from me.

Hate is a strong word, really. And this is a 'Me' issue and has nothing to do with the Pose feature at all. It's actually a very useful feature and well implemented!
 
I actually fully agree with you @Gob :D I myself did on multiple occasions tweaked poses and then forgot to save it... I actually tried a few things but they all ended up being worse.

- Option 1: Consider the Pose feature problematic and remove it; I actually can't live without it, so that's not an option...
- Option 2: Update the pose every time any node moves; this actually only works on frame 0, which means it's very confusing, and then if you move something by error you've destroyed your pose so it ends up causing more problems than it solves
- Option 3: Prevent navigating Timeline when the pose is dirty; I can't do that since the animation itself as well as physics and rounding makes poses "dirty" all the time. This and even if it could work, you'd get warnings all the time, so you wouldn't look at them anymore and we're back to square one.
- Option 4: Maybe I could make some kind of "undo", I looked at this option before and I was never happy with how reliable it was... and then again, you'd need to undo a non-manual operation, which becomes problematic since you'll now undo every action from every plugin, blowing up memory.

If you do have ideas, I'd love to hear them though. Maybe there's an elegant solution I didn't think of!
 
Acid Bubbles updated Timeline with a new update entry:

Timeline v6.1.0

- Create custom groups of targets (separate morphs and controls by your own grouping names)
- When importing, assign animations to an existing compatible layer or create a new segment (new import screen)
- Support for linking AptSpeaker and RhythmAudioSource audio sources
- Moved frame navigation to the bottom to reduce confusion with animations navigation
- Next / Previous Animation triggers now work on the first layer of the current segment
- When using -1 on "Play next in", always reduce...

Read the rest of this update entry...
 
I actually fully agree with you @Gob :D I myself did on multiple occasions tweaked poses and then forgot to save it... I actually tried a few things but they all ended up being worse.

- Option 1: Consider the Pose feature problematic and remove it; I actually can't live without it, so that's not an option...
- Option 2: Update the pose every time any node moves; this actually only works on frame 0, which means it's very confusing, and then if you move something by error you've destroyed your pose so it ends up causing more problems than it solves
- Option 3: Prevent navigating Timeline when the pose is dirty; I can't do that since the animation itself as well as physics and rounding makes poses "dirty" all the time. This and even if it could work, you'd get warnings all the time, so you wouldn't look at them anymore and we're back to square one.
- Option 4: Maybe I could make some kind of "undo", I looked at this option before and I was never happy with how reliable it was... and then again, you'd need to undo a non-manual operation, which becomes problematic since you'll now undo every action from every plugin, blowing up memory.

If you do have ideas, I'd love to hear them though. Maybe there's an elegant solution I didn't think of!

Maybe the pose could show a warning if it's unusually dirty, i.e. more than physics/rounding would cause; like turning the Pose button red maybe? Still wouldn't address tiny twitches, but it's better than nothing.
 
Thanks for the update.
A question if you don't mind. If you would make a music video, let's say a dance video but you need to split the whole animation into multiple parts because of alignment issues and work with "Apply pose on transition"

How would you do it? The animation must be synced.

I'm splitting the song like; intro, verse, refrain...
But this way I also need to split the music. Which sounds odd when there is a break in the song.

Are you planning on something like "Apply pose on transition trigger for timeline"

Btw, this is how i did it: https://hub.virtamate.com/resources/the-pussycat-dolls-buttons-lapdance-strip-and-more.21130/
 
I actually fully agree with you @Gob :D I myself did on multiple occasions tweaked poses and then forgot to save it... I actually tried a few things but they all ended up being worse.

- Option 1: Consider the Pose feature problematic and remove it; I actually can't live without it, so that's not an option...
- Option 2: Update the pose every time any node moves; this actually only works on frame 0, which means it's very confusing, and then if you move something by error you've destroyed your pose so it ends up causing more problems than it solves
- Option 3: Prevent navigating Timeline when the pose is dirty; I can't do that since the animation itself as well as physics and rounding makes poses "dirty" all the time. This and even if it could work, you'd get warnings all the time, so you wouldn't look at them anymore and we're back to square one.
- Option 4: Maybe I could make some kind of "undo", I looked at this option before and I was never happy with how reliable it was... and then again, you'd need to undo a non-manual operation, which becomes problematic since you'll now undo every action from every plugin, blowing up memory.

If you do have ideas, I'd love to hear them though. Maybe there's an elegant solution I didn't think of!
option 3, but instead of preventing navigation or throwing up warnings just highlight the pose button so we know there is some new data to save. hopefully less naggy than a block to progress but helpful enough for us to click "save" when we're happy with some changes.

of course if you can solve the dirty too often problem then this gets even better.

sometimes i've used the out-of-sync pose to get back to a previous state when the new attempt is failing spectacularly. just reload the pose then grab a controller and nudge it up and down for timeline to go back to the old positions. so i like not having the saved pose keep up with the current positions.
 
new RhythmAudioSource sync works a treat :) discovered the track was a whole 3 seconds out and i had to crop the animation to get it to line up! previously that was just impossible to tell!

it adds so much more immersion in VR when the action matches the sound. thanks so much for the addition :)
 
Back
Top Bottom