Jump to content

Where are animation entry points defined/created?


Recommended Posts

First, I did search the forum and did find a couple of threads that at first sounded like exactly what I was trying to figure out.

But in the end I'm still not certain so I want to ask a simple question and get a direct answer to clarify my understanding.

 

I do not have animation $oftware or knowledge, and I think that is where the answer is and thus why I have not figured this out on my own yet.

 

The question relates to in Creation Kit, Fallout 4, the properties window for a workshop constructible piece of furniture.

When an animation is attached via the keywords (AnimFurnsomething), upon saving and reopening we can see the blue and yellow circles.

I understand these represent entry points for the animation and where the animation takes places.

I'm aware we can use transform in the Active Markers window to move them, but it moves all of them.

Conversely, even if we enable one of the entry types, front, rear, etc. it will have no effect if there is no correlating yellow circle for it.

 

The question is "Where are those entry point circles defined?"

 

I'm guessing they are part of the animation file, the doSomething.hkx. Most likely there are nodes, one for each of the entry types (interact point 0,front, rear, etc).

If they are part of the animation, reckon I can't do what I want. I can't afford Adobe stuff.

I want to add&move the yellow circles for existing animations. I have a situation where NPC can not get to them to initiate the animation sequence.

 

When I test with a different, random, vanilla animation that, in the preview, has the yellow circles beyond the edges of my object - it works.

In the animation I want to use the yellow circle is not beyond the edge of my object and it does not work. NPC will stand at the edge of the object but never enter the sequence.

If I move the circles around using the transform values in the Active Markers section, as long as I bump a yellow circle beyond the edge of the object, it works.

By "works" I mean the animation sequence will begin.

But of course that is moving everything so the animation itself is in wrong place.

And in case you are wondering about "edge of the object", picture a floor piece with an animation in the center. I need the yellow circles beyond the edge of the floor piece.

 

This is for player buildable objects, not cell modifying.

TIA

 

Edit: I should mention I have been using NifSkope a couple of weeks now and one thing of interest in there is BSFurnitureMarkerNode... but not luck experimenting with that yet.

I also tried out HKXPack and poked around in the generated XML file hoping to maybe find some kind of node definition in there. No luck.

Edited by Retsam
Link to comment
Share on other sites

The question is "Where are those entry point circles defined?"

 

In the animations files as far as I know (see the hkparam "FrontEnterFromWalk" in FurnitureBehavior.hkx and the animation file Animations\Furniture\Barber\Patron\Neutral\FrontEnterFromWalk.hkx).

 

I want to add&move the yellow circles for existing animations. I have a situation where NPC can not get to them to initiate the animation sequence.

When I test with a different, random, vanilla animation that, in the preview, has the yellow circles beyond the edges of my object - it works.

In the animation I want to use the yellow circle is not beyond the edge of my object and it does not work. NPC will stand at the edge of the object but never enter the sequence.

 

NPCs' pathing AI is hardcoded so normally you can't get them in the furniture if the marker is blocked but there are keywords which may help with this, see FurnitureAllowEnterThroughGeometry and FurnitureAllowExitThroughGeometry.

 

Edit: I should mention I have been using NifSkope a couple of weeks now and one thing of interest in there is BSFurnitureMarkerNode... but not luck experimenting with that yet.

I also tried out HKXPack and poked around in the generated XML file hoping to maybe find some kind of node definition in there. No luck.

 

BSFurnitureMarker was used in Skyrim but in Fallout 4 animation markers work like this:
AnimFurnXXXXX is attached to a Furniture object.
Race (of the character that can use the furniture) >> Subgraph data >> Show: Furniture >> you can see the AnimFurnXXXXX keyword here too because it acts as a link between the character, the furniture and the actual animations (.hkx files in the folder under "Animation Paths"). Everything else is in the behavior graph and in the actual furniture animations (NPC AI is mostly in Fallout4.exe).
Edited by LarannKiar
Link to comment
Share on other sites

Thanks for the information LarannKiar.

I had figured out some of that by spending an entire day doing a 'break and see what happens' approach lol.

I changed subgraphdata stuff, copied vanilla animations but treated them as custom ones, extracted hkx into XML, generated and poked around in AnimTextData files, etc. I tested a lot of combinations without even really knowing what I was doing.

I'm an old pro at the 'break-fix' approach to learning something hehe.

 

I had concluded that what I was looking for was probably defined in the FurnitureBehavior.hkx and I would need to add any new entries I wanted in that file or have nodes? in the new animation file that matched what FurnitureBehavior was looking for.

But as of yet I have not opened an animation file since even figuring out what/how animation software is a full task on its own I just have not had time to do yet.

The FurnitureAllowEnterThroughGeometry and FurnitureAllowExitThroughGeometry keywords I had found mentioned in another post, and those gave me a different idea.

For now, I came up with a different approach to accomplish the end-goal I want that simply bypasses the whole issue.

But again, thank you very much for the clear information. I have copied your post into my notepad for future reference. :smile:

Cheers

 

EDIT:

Forgot to ask. Would you happen to know the exact names of the nodes (Entry points) as used by the game? I wanted to experiment by creating NiNodes in the furniture nif named the same as what it looks for in the hkx files. Just to see what happens.

For example, in a vanilla nif I found a NiNode named "c_StairHelper". So there must be a naming convention I could use.
There are some other nodes in there with 'anim' as part of the name. It seems like they might be useful for this purpose. But I have not found a definitive list of what all those are and my random experiment approach takes too long to try them all.

I tried a few guesses, like 'FrontEntry' etc. but so far no winner.

Edited by Retsam
Link to comment
Share on other sites

The "yellow marker" placement in CK depends on 1) "interact point(s)" on the furniture and 2) the animations used.

You can add/remove "interact points" in CK. This will determine where the furniture enter animation ends, ie where a NPC will sit/stand/etc once they have entered the furniture.

The animation entry point to each interact point then depends on the furniture enter animation.

 

Furniture animations usually have at least 3 hkx associated:

EnterFromStand.hkx - The animation to enter the furniture from stand.

PoseA_Idle1.hkx - The furniture animation idle, such as sitting, praying, whatever.

ExitToStand.hkx - Animation to exit furniture to stand.

 

The association of these is done via human subgraph. You can use additive subgraphs to add more furniture anims to the human subgraph.

 

 

This video will be helpful: https://www.youtube.com/watch?v=NgjkbMfD2G0

Link to comment
Share on other sites

Thanks for the response. As I mentioned, I did experiment with making my own subgraph data, animation replacements (just using pre-made ones) etc.

My inability to work with animation files is the blocker for now on going any further in that direction. It'll take time for me to learn how to use Blender and animation stuff in general.

What I was hoping to find out is where I can find a list of pre-defined node names the game uses, like P-WS-Origin in a .nif. If I ever learn how to open one of the animation files it is probably obvious.

 

Within CK, unless I am missing something the only add/remove entry options are the check boxes that tell the behavior file to use what it finds in the animation file that match up to "front, rear, left, right, other".

The actual locations are what I assume are in the animation file, named something the game has hard-coded to look for.

Thanks again for replying.

Link to comment
Share on other sites

P4uNJri.png

 

When a "Marker Keyword" is set for an interact point, only actors with that keyword on them can interact with that particular interact point.

 

But anyway. You can create/remove/adjust interact points. They'll use the furniture animation. Where the actual entry point then is, depends on the position of the interact point, and the animation. Like, if you char did a forward somersault and moves +128 units in X direction during the furniture enter animation, the entry point would be at interact point -128 units on the X axis. I guess CK generates all the data needed for this when you generate animation information (a whole bunch of random looking text files) after adding stuff to a subgraph.

 

The marker model is only visual help afaik.

 

There are no nodes in the NIF involved in this whole process.

 

The "P-WS-Connect" is not a node, but a connect point (CPA extradata, if Im not mistaken now). The workshop system uses them for placement and snapping. "P-WS-Snap" is another one.

Link to comment
Share on other sites

haven't been here for a long time. ) There is a workaround. I made furniture in this way, where I myself assigned my own animations for entering and exiting.

https://www.nexusmods.com/fallout4/mods/41209

If you can make your own havok animations in 3ds for enter, loop, exit, then you can do anything. For example, the actor will be able to sit in a chair, with the help of somersault animation across the room, or jump out of it. The entry and exit points for furniture are always the root coordinates of the first frame of the entry animation. This is handy because you can embed the actor's movement to any point with a subtle first frame, and synchronize that place with an exit animation.You can also make your own marker. Just bake the rig mesh in the desired frame and assign the bsEffectFx material to it, then export it to nif. In case you don't want to make your own mod (the way is very tedious and dreary), you can use the ready-made Crazy rugs mod (old sex mod), replacing the entry, loop, exit animations and setting up the furniture in ck.

Link to comment
Share on other sites

South8028 welcome back :smile:

 

Can you find a way to scale actor to zero in animation, and then scale them back to 1 in another anim?

It seems that once scale has been set to zero, the only reliable way to get the actor back is to disable/enable it.

Link to comment
Share on other sites

South8028 welcome back :smile:

 

Can you find a way to scale actor to zero in animation, and then scale them back to 1 in another anim?

It seems that once scale has been set to zero, the only reliable way to get the actor back is to disable/enable it.

Hi Niston. I don't know. I haven't tried rig scaling in animation. I don't know if the scaling in hkx will be saved when exporting or not, and I have no idea how it should look in the game. ) Probably, it will be funny. How would... The actor in the first frame has a scale of 1, but in 100 it has a scale of 0? Edited by South8028
Link to comment
Share on other sites

Kziitd made some anims for me, and in our testing we found that scaling is well possible.

 

Especially, scaling to 0 in 1 Frame was instant and the actor completely vanishes.

The issue with that was however that the actor gets kind of locked at scale 0. Sometimes, moving them brings them back to 1, but I found that only disable/enable does so reliably.

So we instead scaled to 0.001 in 1 Frame and that works. However, the scaling process is clearly observable with 0.001 (you can see the actor shrink or grow back), even though its just one Frame.

Also, scaling and moving at the same time seems to confuse the absolute heck out of the engine: The actor just stays in place and kind of shrinks and tries to grow at the same time. It looks very funny.

 

I was looking for furniture anims (idle/exit) that move an actor to +128 in x axis and scale it to 0.001 (idle anim), respectively scale it back to 1 and move it back to 0 on x axis (exit anim).

The movement must be instant and scaling should be instant, but can be sequenced. ie: movement first, then scale / scale, then move.

 

Was wondering if you could give it a try?

Link to comment
Share on other sites

  • Recently Browsing   0 members

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