Garry's Mod

Garry's Mod

Ragdoll Puppeteer
 This topic has been pinned, so it's probably important
dim sum un  [developer] 12 Jan @ 1:38pm
Next Update: Feature Requests 2
See the changelog here

I hope the tool has been helping you in all things related to making screenshots, posters, animations, or another creative endeavor. Thanks to your suggestions and bug reports earlier, I have made another update packed with some miscellaneous features! Special thanks to Paper for testing the new features extensively!

These are pretty small; hence, there isn't a need for me to make a video illustrating all the small features. Nonetheless, I am open to answering any questions regarding them.

Random Pose Button
Areus suggested this feature! This adds a new "Random Pose" button in the Sequence animation list category. As it says on the label, it will select a random sequence (not SMH animation) from the model's list of sequences. In addition, it will also select a random frame from the sequence. I think this is useful if you need to quickly find a pose for a model without needing to search through its long list of sequences.

This action will attempt to avoid gesture sequences by filtering based on the name of a sequence, using the Valve models. Of course, this may not hold up all the time (particularly for custom model sequences), but the button will generally get you more poses than gestures.

Face Me Checkbox
Gamer suggested this feature! This adds a checkbox to the Settings category. The default behavior is that the puppeteer will always face you during selection. This checkbox allows you to make puppeteers face some default heading when selected, similar to the default behavior of importing files into Blender or some other 3D modeling software.

This is more of a preference for users in case they want to make their entities face a certain way, rather than making the entities face the user. I think this is useful if people want more control over the orientation of their puppeteers, through Ragdoll Mover's angle snapping features.

Disable Tweening (SMH ONLY)
This feature is only useful for Stop Motion Helper animations. This adds a checkbox which disables the linear interpolation of values, positions, or rotations of an entity between keyframes. This feature associates with Stop Motion Helper's `Disable Tweening` checkbox, so entities would, instead, "jump" to a pose at keyframes instead of smoothly moving between them.

If tweening is disabled, the puppet will not tween between SMH keyframes, but the floor's movement remains the same. If you want the floor to also move in this way, you can use Stop Motion Helper to disable tweening on the floor's movement. Depending on your physics recording settings, SMH will still bake the disabled tweening of the puppet's movements.

Camera Puppeteering
This feature adds the ability to puppeteer cameras. This is a unique case for the Ragdoll Puppeteer tool (should it really be called this, anymore?), where the user can control the movement of the camera either through an imported sequence animation or through a Stop Motion Helper animation. A prerequisite to this option is disabling "Animate nonphysical bone", as having it enabled will result in weird behavior with the camera model.

I think this would be very useful for those who want to change up how they animate cameras. For instance, I used this tool to import a motion-captured camera sequence for a small part of Paper's GMod movie. You could also use this to add a predefined noise profile to your cameras, then using the puppeteer floor to control the movement of the camera instead. You could use the Attach to Ground and Attach To Surface checkboxes to define curves for your camera motion, rather than moving the floor itself.

Scale Offset Slider
This feature adds a slider to the Offset category for scaling the displacement of an animation. It does this by simply scaling the puppeteer. Note that this does not scale the puppet itself! If you want this, you can use the Ragdoll Resizer tool and this tool in combination.

This feature pairs well with the Camera Puppeteering feature; in cases where one needs to make adjustments to the motion of a camera (or prop or ragdoll), they can adjust it with this slider. I've used this feature along with the FPS to time the motion of the camera with the animated shot.

Reset Nonphysical Bones
Areus suggested this feature! This adds a "Reset nonphysical bones" checkbox to the general settings category. If unchecked, this gives users the option to keep the pose of a nonphysical bone pose if "Animate nonphysical bones" is disabled; otherwise, the default behavior of resetting the nonphysical bones position and angles is retained.

Bug Fixes
In addition to the feature requests above, I have also patched some minor bugs with the puppeteer tool.
  • Fixed animations not being selected again if they were selected at an earlier instance (such as by reselecting the puppet with the tool). Thanks to Gamer for reporting this bug!
  • Fixed a "nil bone matrix" issue when attempting to puppeteer a physics prop to a Stop Motion Helper animation. Thanks to Paper for reporting this bug!
  • Fixed incorrect SMH animation duration for entities with the same model

Aside

Lately, I've been working on making some enhancements to some existing GMod tools; I've also started developing a new tool[github.com]. I've devoted much focus to these things, which is why the puppeteer tool has not updated lately. Still, I am quite happy with how the puppeteer tool has turned out so far!

I've heard the request to make it possible to animate multiple puppeteers, so puppeteers would continue animating similarly to the Animated Props tool. This would be handy to add into the tool, as it would enable a couple of workflows involving interaction between two or more puppeteers; despite this, such an ambitious feature would require a rewrite of the tool's "single puppeteer" functionality to work on multiple puppeteers, possibly with a UI rewrite. I plan to make this feature a reality in the near or far future. It's quite uncertain when I might make it.

Conclusion
I hope you have learned a bit about the new features and their potential use cases! Of course, the best way for you to learn more about these features is to try them out for yourself.

As always, let's try to report any potential bugs from these features, so we can continue to improve the tool further. Of course, you can view some of the other features here[github.com]. And if you do have a problem with using this tool, feel free to make a discussion post on here. That way, I will be able to help troubleshoot and find a solution for your problem.