Jump to content

Insane FNIS-Question: Paired Alternate Animation?


nosdregamon

Recommended Posts

Whether it's just holding hands, kids riding piggy back, carrying a wounded NPC or dragging a prisoner behind you: I'd really like to have the option to carry or drag NPCs along (or let the PC be carried, "Hey Lydia, remember you were sworn to carry..." :) ).

 

Besides experiments with the engines riding mechanics (which would require a hack of race and skeleton), there's two fascinating features in FNIS which could do the trick if they could be combined: Alterntate Animations which changes animations for one character and "Paired Animations" which binds two NPCs together to play an idle in sync. Combine these two and we could start.

 

Is such a thing technically even in the slightest feasible?

Link to comment

the killmoves are paired animations (2 actor animations in one hkx) so i would say it could be possible, but making it would be a fucking nightmare of scripting and animating, assuming that it can actually be done in the first place*.

 

*but for all i know someone could have already made such a thing, i only keep track of SLAL animations.

Link to comment

Whether it's just holding hands, kids riding piggy back, carrying a wounded NPC or dragging a prisoner behind you: I'd really like to have the option to carry or drag NPCs along (or let the PC be carried, "Hey Lydia, remember you were sworn to carry..." :) ).

 

Besides experiments with the engines riding mechanics (which would require a hack of race and skeleton), there's two fascinating features in FNIS which could do the trick if they could be combined: Alterntate Animations which changes animations for one character and "Paired Animations" which binds two NPCs together to play an idle in sync. Combine these two and we could start.

 

Is such a thing technically even in the slightest feasible?

 

Combining Alternate Animations and Paired animations? No that's not possible one is a replacement for movement/combat animation sets the other is a method of letting 2 actors play an animation in the same position, just completely different techniques.

Letting Actors carry other Actors? Yes, that is possible I am working together with Supertin on a mod that does exactly that and we achieved some progress but we hit a wall because Alternative Animations get asynchronous while riding another actor. I don't want to get too technical here but at the moment it looks like custom behaviors or another hacky workaround is needed. I can't promise that we ever will achieve perfect carrying but at least know there are people working on this  ;)

Link to comment

 

Letting Actors carry other Actors? Yes, that is possible I am working together with Supertin on a mod that does exactly that and we achieved some progress but we hit a wall because Alternative Animations get asynchronous while riding another actor. I don't want to get too technical here but at the moment it looks like custom behaviors or another hacky workaround is needed. I can't promise that we ever will achieve perfect carrying but at least know there are people working on this  ;)

 

I'm proud of you guys. You really got ideas. :D

 

If things get asynchronous can it have something to do with the duration of the replacing animation? If so, is it possible that some animevents are sent at a bad time because of it? And if so, do you know that AnimEvents can be changed for alternate animations?

 

But for a much simpler solution: have you thought about setvehicle()?

Link to comment

 

I'm proud of you guys. You really got ideas. :D

 

If things get asynchronous can it have something to do with the duration of the replacing animation? If so, is it possible that some animevents are sent at a bad time because of it? And if so, do you know that AnimEvents can be changed for alternate animations?

 

But for a much simpler solution: have you thought about setvehicle()?

 

 

I think I actually wrote to you about this Issue on the Nexus some time ago but obviously, I couldn't make any progress yet ^^

 

So to set the current situation, I have managed to make chars mount other chars and let both play alternate animations. Supertin made carrying animations that are synchronous but for some weird reason when you don't look upward while starting to walk, the animations get asynchronous.

I also tried to let both chars play the same AA set and the problem still occurred so I doubt that it is caused by the duration or an animevent.

I suspect that maybe something in the behavior files is responsible for starting the animation with a little offset for the rider but why looking upwards is fixing it... I have absolutely no clue. I have worked on other projects over the last months but I am starting to get back to the transport mod at the moment, I need to refresh my memory a bit to fully assess the situation again.

I have read some post of you about changing animevents for AA's so yes I am aware of that but haven't used it yet, but probably will because of some other modding needs in the future ^^

 

SetVehicle() was the first thing I tried to connect 2 actors to one another but that just doesn't work. I have worked with carts quite a bit and adding important Nodes to the Char skeleton hasn't helped in any way. I suspect that the vehicle object needs to be an activator or I missed something.

It's been a while but I am almost sure I halfway tricked the system into believing the actor is a vehicle but that just resulted in a CTD...

Link to comment

 

 

I'm proud of you guys. You really got ideas. :D

 

If things get asynchronous can it have something to do with the duration of the replacing animation? If so, is it possible that some animevents are sent at a bad time because of it? And if so, do you know that AnimEvents can be changed for alternate animations?

 

But for a much simpler solution: have you thought about setvehicle()?

 

 

I think I actually wrote to you about this Issue on the Nexus some time ago but obviously, I couldn't make any progress yet ^^

 

So to set the current situation, I have managed to make chars mount other chars and let both play alternate animations. Supertin made carrying animations that are synchronous but for some weird reason when you don't look upward while starting to walk, the animations get asynchronous.

I also tried to let both chars play the same AA set and the problem still occurred so I doubt that it is caused by the duration or an animevent.

I suspect that maybe something in the behavior files is responsible for starting the animation with a little offset for the rider but why looking upwards is fixing it... I have absolutely no clue. I have worked on other projects over the last months but I am starting to get back to the transport mod at the moment, I need to refresh my memory a bit to fully assess the situation again.

I have read some post of you about changing animevents for AA's so yes I am aware of that but haven't used it yet, but probably will because of some other modding needs in the future ^^

 

SetVehicle() was the first thing I tried to connect 2 actors to one another but that just doesn't work. I have worked with carts quite a bit and adding important Nodes to the Char skeleton hasn't helped in any way. I suspect that the vehicle object needs to be an activator or I missed something.

It's been a while but I am almost sure I halfway tricked the system into believing the actor is a vehicle but that just resulted in a CTD...

 

Oh, sorry. Keep forgetting more and more. Skyrim apparently is not in my top level memory area any more. :)

 

Which file are you replacing. Maybe I find the place in the behaviors. 

It can't be anything but duration. Alternate animations are actually very simple. They don't change anything in logic. One clipgenerator is replaced by a condition to a set of clipgenerators. And clipgenerator are always the leaves in the tree, so they should not be able to change any logic. EXCEPT when they trigger AnimEvents, and the trigger is negative (defined relative to the end of the animation).

 

Too bad with the setvehicle(). Seems so easy when just using an IdleMarker. What I used in FNIS Zoo to control a dragon.

Link to comment

 

Oh, sorry. Keep forgetting more and more. Skyrim apparently is not in my top level memory area any more. :)

 

Which file are you replacing. Maybe I find the place in the behaviors. 

It can't be anything but duration. Alternate animations are actually very simple. They don't change anything in logic. One clipgenerator is replaced by a condition to a set of clipgenerators. And clipgenerator are always the leaves in the tree, so they should not be able to change any logic. EXCEPT when they trigger AnimEvents, and the trigger is negative (defined relative to the end of the animation).

 

Too bad with the setvehicle(). Seems so easy when just using an IdleMarker. What I used in FNIS Zoo to control a dragon.

 

 

We are just replacing the normal walking animations. When mounting another actor, both actors start to play the riding animations. I then force them out of the animation tree by reverting them to default animations. After that, I apply the AA's for both actors so they play the new set instead of the normal one while moving. This works absolutely fine if you then start to walk while looking upwards but as soon as you look down while starting to walk the animations get asynchronous. I don't think the AA's are responsible for this behavior I mean this also happens with the vanilla walking animations or if I let both actors stay in the riding animation tree. The only thing I can imagine is that some logic from the riding tree is still active or that this just happens when riding another actor, although I can't observe this with normal horses.

I mean you are the master of behaviors here so maybe I am just missing something but to me it doesn't look like this is caused by the animations themselves.

 

It's really strange that SetVehicle works on IdleMarkers but not on other actors. Now I am unsure if I really checked everything to make SetVehicle work xD , I guess I have to take another look at it tomorrow along with getting into the depths of the transport mod again.

Link to comment

Maybe forward Fore the file so he can look at it?.

 

IIRC fore doesn't even have skyrim installed anymore but the only important part for the animations is the script, the rest is just a workaround to trick the game into thinking chars are horses. So sure I can post the animation part of the riding script...

//This gets triggered right after the actor is mounted to force the Actors out of the riding animations.

	Utility.Wait(2.0)
	Debug.SendAnimationEvent(Mount, "IdleForceDefaultState")
	Debug.SendAnimationEvent(Rider, "IdleForceDefaultState")
	Utility.Wait(1.2)
//SetAnimations just applies the AA set for both actors.
 	SetAnimations(Rider,Mount,Mbehaviour)




//These AnimationSets get changed by SetAnimations.
FNIS_aa.SetAnimGroup(akActor,"_mtidle",mtidle_base,index,Modname , true)
FNIS_aa.SetAnimGroup(akActor,"_mt",mt_base,index,Modname , true)
FNIS_aa.SetAnimGroup(akActor,"_mtx",mtx_base,index,Modname , true)
FNIS_aa.SetAnimGroup(akActor,"_sprint",sprint_base,index,Modname , true)
FNIS_aa.SetAnimGroup(akActor,"_mtturn",mtturn_base,index,Modname , true)

​
Link to comment

 

We are just replacing the normal walking animations. When mounting another actor, both actors start to play the riding animations. I then force them out of the animation tree by reverting them to default animations. After that, I apply the AA's for both actors so they play the new set instead of the normal one while moving. This works absolutely fine if you then start to walk while looking upwards but as soon as you look down while starting to walk the animations get asynchronous. I don't think the AA's are responsible for this behavior I mean this also happens with the vanilla walking animations or if I let both actors stay in the riding animation tree. The only thing I can imagine is that some logic from the riding tree is still active or that this just happens when riding another actor, although I can't observe this with normal horses.

I mean you are the master of behaviors here so maybe I am just missing something but to me it doesn't look like this is caused by the animations themselves.

 

It's really strange that SetVehicle works on IdleMarkers but not on other actors. Now I am unsure if I really checked everything to make SetVehicle work xD , I guess I have to take another look at it tomorrow along with getting into the depths of the transport mod again.

 

Can you explain what asynchrnous means?  

How/when do you synchronize, and what do both actors do when they get asynchronous? Like one of them skipping some frames?

 

And is it possible that you loose sight to the NPC when you look down? 

Link to comment

 

 

We are just replacing the normal walking animations. When mounting another actor, both actors start to play the riding animations. I then force them out of the animation tree by reverting them to default animations. After that, I apply the AA's for both actors so they play the new set instead of the normal one while moving. This works absolutely fine if you then start to walk while looking upwards but as soon as you look down while starting to walk the animations get asynchronous. I don't think the AA's are responsible for this behavior I mean this also happens with the vanilla walking animations or if I let both actors stay in the riding animation tree. The only thing I can imagine is that some logic from the riding tree is still active or that this just happens when riding another actor, although I can't observe this with normal horses.

I mean you are the master of behaviors here so maybe I am just missing something but to me it doesn't look like this is caused by the animations themselves.

 

It's really strange that SetVehicle works on IdleMarkers but not on other actors. Now I am unsure if I really checked everything to make SetVehicle work xD , I guess I have to take another look at it tomorrow along with getting into the depths of the transport mod again.

 

Can you explain what asynchrnous means?  

How/when do you synchronize, and what do both actors do when they get asynchronous? Like one of them skipping some frames?

 

And is it possible that you loose sight to the NPC when you look down? 

 

 

To illustrate: 

Actor 1 carries actor 2 and we start moving:

 

Actor 1 animation - - - - - - - - - - - - - - - - - - - - - -

Actor 2 animation - - - - - - - - - - - - - - - - - - - - - -

 

The - represents animation as time passes, both are in sync. This is with a relatively regular camera angle as you would normally have in the game in 3rd person.

Once you move the camera angle to look downward while walking this happens:

                                                                             |moving camera angle here|    |stop moving camera here|

Actor 1 animation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

Actor 2 animation - - - - - - - - - - - - - - - - - - - - - - - -  -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

Theres no skipping in the animations or anything and it's really weird... It would be best to see it directly ingame, or maybe I can take a short video of it. Otherwise it's not really easy to describe. Once we stop moving the camera the animations start moving 'in synch' in their asyncronosity.

And once both actors stop moving they are perfectly aligned again and move in sync again until the same problem happens again as described while moving.

 

Both actors are completely visible while this problem occurs.

 

In my opinion it has to do with some part of the behaviour responsible for horse riding still being stuck on the 2 actors. For example the controls are still limited to the way horses are controlled (Can only move forward, can't turn on the spot, tank controls; just vanilla horse riding controls).

 

If you don't have skyrim installed anymore, I'll just record a short video clip tomorrow to illustrate the issue.

Link to comment

 

To illustrate: 

Actor 1 carries actor 2 and we start moving:

 

Actor 1 animation - - - - - - - - - - - - - - - - - - - - - -

Actor 2 animation - - - - - - - - - - - - - - - - - - - - - -

 

The - represents animation as time passes, both are in sync. This is with a relatively regular camera angle as you would normally have in the game in 3rd person.

Once you move the camera angle to look downward while walking this happens:

                                                                             |moving camera angle here|    |stop moving camera here|

Actor 1 animation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

Actor 2 animation - - - - - - - - - - - - - - - - - - - - - - - -  -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 

Theres no skipping in the animations or anything and it's really weird... It would be best to see it directly ingame, or maybe I can take a short video of it. Otherwise it's not really easy to describe. Once we stop moving the camera the animations start moving 'in synch' in their asyncronosity.

And once both actors stop moving they are perfectly aligned again and move in sync again until the same problem happens again as described while moving.

 

Both actors are completely visible while this problem occurs.

 

In my opinion it has to do with some part of the behaviour responsible for horse riding still being stuck on the 2 actors. For example the controls are still limited to the way horses are controlled (Can only move forward, can't turn on the spot, tank controls; just vanilla horse riding controls).

 

If you don't have skyrim installed anymore, I'll just record a short video clip tomorrow to illustrate the issue.

 

 

I still have both Skyrims. And I have recently worked a little bit with both in preparation of SKSE64. So I can try it.

Link to comment
  • 3 weeks later...

IIRC fore doesn't even have skyrim installed anymore but the only important part for the animations is the script, the rest is just a workaround to trick the game into thinking chars are horses. So sure I can post the animation part of the riding script...

//This gets triggered right after the actor is mounted to force the Actors out of the riding animations.

	Utility.Wait(2.0)
	Debug.SendAnimationEvent(Mount, "IdleForceDefaultState")
	Debug.SendAnimationEvent(Rider, "IdleForceDefaultState")
	Utility.Wait(1.2)
//SetAnimations just applies the AA set for both actors.
 	SetAnimations(Rider,Mount,Mbehaviour)

//These AnimationSets get changed by SetAnimations.
FNIS_aa.SetAnimGroup(akActor,"_mtidle",mtidle_base,index,Modname , true)
FNIS_aa.SetAnimGroup(akActor,"_mt",mt_base,index,Modname , true)
FNIS_aa.SetAnimGroup(akActor,"_mtx",mtx_base,index,Modname , true)
FNIS_aa.SetAnimGroup(akActor,"_sprint",sprint_base,index,Modname , true)
FNIS_aa.SetAnimGroup(akActor,"_mtturn",mtturn_base,index,Modname , true)

 

Could I perhaps see how you trick the game into beliving the other actor is a horse? My tries so far were quite frutiless.

Link to comment

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use