[Released] TackyFeet - Tools to remove feet sliding in animations
The primary intended use of the TackyFeet plugin is to assist in the removal of sliding feet in an animation sequence.
It provides two tools.
1. Automated
A tool which uses a set of parameters to detect and pin the lowest of the selected nodes, in place in each frame of the animation sequence.
2. Manual
Allows the user to specify in table format, which node should be pinned for what time in the animation sequence.
The Automated function identifies the lowest of the current selected nodes (e.g. LeftFoot and RightFoot). While that node remains the lowest, for each subsequent frame it translates the Skeleton (or Hip) to pin that lowest node in place. When another of the selected node becomes the lowest node it will switch to pinning the new lowest node in place.
It does not change any rotation parameters, just the position (X,Y,Z Translation) of the Skeleton (or Hip) node.
The Automated function is designed to be simple to use. Select the figures feet nodes and click Automated. However, the results from the Automated function are dependent on the quality of the original animation.
If the Automated function does not give a satisfactory result then the Manual function can be used.
The Manual function allows you to specify all the details, which node should be pinned for which frame.
The Automated function offers a 'Capture data' option which can be used to provide a starting point for the data you provide for the Manual function.
Lowest Node
The lowest node can be defined by the node's origin point, or end-point, or axis aligned bounding-box, or by the lowest vertex of its mesh.
Pinned to
It can be pinned to the zero plane, or a mesh (e.g. a primitive plane, or a complex terrain surface).
Registration: Please make sure that you input your registration key within 14 day of installing the plugin.
Introductory videos –
https://youtu.be/N5-xGuLQw6I - TackyFeet part 1: AUTOMATED – NodeToZero (NZ)
https://youtu.be/ke1ulNn2FBE - TackyFeet part 2: AUTOMATED – MeshToMesh (MM)
https://youtu.be/_fTj54svLIE - TackyFeet part 3: MANUAL function
https://youtu.be/SqHadLYF8y0 - TackyFeet part 4: MANUAL – managing jumping and leaping
Comments
Day One buy!
So Cool to see hip adjusted pretty quick. And on rough terrain too!
Can see maybe other possible uses for other subnodes on vertical planes.
Could you say what CPU are you using? Processing speed looks surprisingly good considering all the calc'ing.
Looked in vids but timeline was focussed on feet so didn't see Hip transform changes. Assuming has to be keyed?
Videos are very well articulated explaining it all.
A small logistical issue with videos is limit at 1080p.
The top left text options of plugin are blurry - but kinda functional enough, when get plugin can figure it out clearly.
Maybe could reset my display to 1080p for this - but all takes time. Just FYI.
Look forward Alot to this product. :D
Thank you for making it! and the helpful videos along with manual overrrides and easy updates via update all following.
Demo was done on an old 2x [email protected] (total24cores).
The plugin does just utilise the CPU(s) for all calculations (not GPU). If multithreading is enabled in DAZ Studio then,
for the Mesh to Zero plane the plugin just divides the work up per node(mesh), so does not benefit significantly from number of CPU cores. [assuming a small number of selected nodes]
For the Mesh to Mesh(surface) the plugin divides the work up per facet in selected nodes (to each surface mesh), so benefits significantly from number of CPU cores.
The biggest delay is actually due to the total scene size. The plugin has to force and wait for the completion of a number of scene refreshes between calculations. The mesh distance calculations take less time than it takes to do a scene refresh. The large the scene the slower TackyFeet is (when using MeshToMesh), not because of more calculation, simply because all the scene refreshes take longer to complete.
You are correct the pin of the lowest selected node is done by creating keys (translating the skeleton(or hip)). It overwrites any existing translate key(X,Y,Z Translate) that is on the skeleton(or hip). Note the At:"Frames only" option will ignore(not overwrite) any existing interframe key. Interframe keys do not exactly align with frame intervals and can be hard to detect.
Always safest to use the At:"Frames and keys" option.
I do not put the time and effort into the videos that I should, even though I very much appreciate instruction video myself. I usually plan to do lots but struggle to do four. Note to self: improvement required.
Attached image is of the TackyFeet pane when maximised and when Manual table contains data.
Define "soon." ;)
Spending yet more time trying to account for sliding feet in a simple 2 second pivot animation, and it's excruciating. I'll be there clicking "BUY" the moment you launch. :)
And thank you for working on this.
Has passed DAZ testing. Current with their sales department. Up to them as to when they release it.
Thank you for that definition. :)
Will be watching for it.
Thanks for all that extra information.
Wow, sounds like a newer CPU will be rocking even faster. Cool Beans!
Will proably use the safest of "Frames and Keys". Good to know.
Look forward to release
I just bought it and took it for a spin, I think this is going to come in handy a lot.
I'm excited for this one, I'll be picking it up today for sure!
Was watching for it. Saw it. Bought it.
I'll let you know what I think once I've had a chance to try it out. :D
will wait until others use it
interested but reading that one manually animates when it is in use, iClone's foot-floor detection still likely suits me better but of course for DAZ studio the BVH's are a bit lackluster
Your promo is so funny with tacks pinning feet! Made me laugh with big smile.
Somehow missed you also made StickyChain plugin, which have found quite useful.
Bought day1 with launch of March Madness 2024. Be a while until I can test how to incorporate into workflows. Look forward to it.
Is there any more feedback on this? So far have only read one post of a person trying this and their opinion on it.
Silence!
I don't know if that is good or bad.
Responded to question regarding dog/horse animation compatibility. Tackyfeet Plugin Question
BUG REPORT: Table context menu not being displayed - Menu>TackyFeet Table Context is empty, the menu's contents are not saved when DAZ Studio closes.
A Context Menu should appear when you right mouse click in the Table in the TackyFeet Pane.
Temporary Work Around: The context menu can be reset by using the menu item "TackyFeet reset table context menu" in the Pane's menu.
Status: Resolved - user's configuration
Root cause: Entry in the menus.dsx file has version ("2"), which is greater than current plugin menu version ("1"). Suspect this is an artifact from testing an alpha version of TackyFeet.
Resolution: User manually edited their menus.dsx file. Change entry in menus.dsx file from '<PersistentMenu Class="NpTackyFeetTableContextMenu" Type="Custom" Version="2">' to '<PersistentMenu Class="NpTackyFeetTableContextMenu" Type="Custom" Version="1">'.
I tried to use it haha. Pretty sure it's not working due to user error. I was trying to use it in a manner it was not intended for. :)
I've been trying to find a way to "lock" certain body parts, the feet being one of them, when I'm posing models. I thought this might work for that, but since there were no keys in my scene, and the scene isn't setup for animation, it doesn't work. But that's alright, this will still be useful for me when I am animating. :) If wondering why I want to lock certain body parts, my DS spazzes out sometimes when I'm posing if I click on the model and then auto translates it somewhere or in weird ways.
Would be a useful feature though. :)
Sorry, have not really put it through its full paces yet so did not comment.
As suffo was saying, I'm trying to use it to pin more than just feet, and I'm getting the sense it can do that in manual mode where I think you can set it to look at the lowest child of a specific part of a figure versus the figure itself. I'm running into the issue though of the floor level in my sets not being necessarily where I want to pin at. I'm sure I can set it to a plane but sometimes I want it to pin in place (like a hand that is posed) and I'm not sure it can do that.
But, still learning it. Maybe I just haven't figured that part out yet.
Use the 'MeshToMesh (MM)' setting to pin the surface of a node (i.e. hand) to the surface of another node (i.e. a primitive plane). If you want to pin by the hand node's origin instead of its surface use the 'NodeToMesh (NM)' setting. The primitive plane needs to be the last selected node.
Have a look at the "Method" section in the manual for more information. The '(?Z)' settings pin to the zero plane whereas the '(?M)' settings pin to the surface of the last selected node.
The pin is in the vertical direction (global Y direction). It will put the hand vertically on top of the primitive plane.
If you are trying to produce a climbing motion, pin hands and feet to wall then you need to have the wall horizontal when you run the TackyFeet Automated (or Manual) function.
The easiest way would be to parent the wall and figure to a null node. Rotate the null node so that the wall becomes horizontal. Select the figures hands and feet and select the wall last. Run the TackyFeet function. When you are happy with the result, then rotate the null so that the wall becomes vertical again.
I have this bookmarked, I'm very interested in this. I know about the 3DU one but not sure it's still valid with current versions of Daz and models, so this one might be the better option.
There are some tips and tricks regarding effect of leaving the Pin(and PinSkel) or Lowest(andLowSkel) columns blank when using the Manual function. I have not yet documented them in the user guide.
They are hard to describe without a user clearly understanding the normal operation of the Manual function and each of the parameters(columns). I will try to add then to the user guide when I issue the update to fix the following bugs.
BUG REPORT(2): Table context menu item “Add rows for keys” is not working.
Temporary Work Around: Manually add rows to table using context menu item “Insert row(s)”. Or use context menu item “Add rows for frames” and manually edit row times and delete rows as required.
Status: Resolved - plugin update (v1.5.5.1 4/Apr/2024)
Scope: all users
BUG REPORT(3): Table context menu item “Add rows for frames” puts the full method description in the Method column, instead of 2-letter acronym.
Temporary Work Around: Change first(top) Method cell to its 2-letter acronym. Then select all cells below it and use context menu item “CopyDown”.
Status: Resolved - plugin update (v1.5.5.1 4/Apr/2024)
Scope: all users
BUG REPORT(4): Table context menu item “Add rows for frames” puts “What” and “WhatSkel” in the “ToMesh” and “ToMeshSkel” columns, instead of “What” and “WhatSkel” columns.
Temporary Work Around: After using the “Add rows for frames” context menu item, manually input the “What” and “WhatSkel” data.
E.g. input “What” and “WhatSkel” into first row then select all cells below the “What” and “WhatSkel” and use “CopyDown” context menu item.
Status: Resolved - plugin update (v1.5.5.1 4/Apr/2024)
Scope: all users
BUG REPORT(5): Manual function only recognises 2-letter acronyms in the Method column of the table data. It does not recognise full method descriptions. i.e. it recognises “MM” it does not recognise “MeshToMesh (MM)”.
Temporary Work Around: Use the 2 letter method acronyms that the dropdown provides.
Status: Resolved - plugin update (v1.5.5.1 4/Apr/2024)
Scope: all users
Thanks for the heads up and bookmarked this so I can check for any updates and reviews.
BUG REPORT(6): In the table when trying to select the What node, if the Manipulate setting is "First child(Hip)" or "Top first child" and the first node selected in the scene does not have a "Hip" or "Pelvis" the
DAZ Studio application can lock up. i.e. goes into an endless loop trying to find a "hip" node that does not exist.
Temporary Work Around: When trying to select the What node, always make sure to select a figure that has a "hip" or "pelvis" node when using the "First child(Hip)" or "Top first child" setting.
Status: Resolved - plugin update (v1.5.5.1 4/Apr/2024)
Scope: all users
BUG REPORT(7): When play range starts at time >0 the Manual and Automated function do not process all frames(or keys) to end of play range. The time range processed by functions is being truncated by the amount of time from 0 to play range start time.
Temporary Work Around: Set play range to an end time greater than desired end time. End time should be 'desired end time + amount of time from 0 to play range start time’.
Status: Resolved - plugin update (v1.5.5.1 4/Apr/2024)
Scope: all users
When manually editing the data in the Manual table,
the attached image shows the data required when the lowest node changes from one node to another.
At frame 22 (Fra=22) the Hip (What=Hip) is moved to keep the Right Toes (Pin=Right Toes) in the same position as it was at frame 21 (SFra=21).
Also, at frame 22 - the lowest node changes from Right Toes to Left Toes (Lowest=Left Toes)
Thus, after the move to keep the Right Toes in the position it was in frame 21,
the hip is then moved vertically so that the Left Toes is on the Zero Plane (Method=NZ).
This can be difficult to understand.
That at the frame when the lowest node changes, the previous lowest node is used to determine the horizontal position and at that frame the new lowest node only determines the vertical position.
There after the new lowest node determines the horizontal position and vertical position, until the next change of lowest node.
If you have any questions or see anything you think needs clarification, just ask.