July 2023 Progress Report

A new release is available on GitHub:

Ingame Tutorials

The tutorial system that I've mentioned in my last progress report is now complete 😄! Here's a preview:

As you can see, the tutorials are also voiced now, using the ElevenLabs AI. This should make it easier to follow the instructions of the tutorials. The tutorials are currently only available in English, but I've set up the system so that voices could be added for other languages relatively easily.

If you want to try the tutorials yourself, you can download the latest version and just start "pfm.exe". There should be a popup after a few seconds, which will lead you to the intro tutorial by clicking it, which will then tell you how to find the other tutorials.

Here's an overview of all of the tutorials I have currently planned, as well as their completion percentage:

Interface (Series)


Lighting (Series)
Animating (Series)




As you can see, most tutorials are still a work-in-progress, only the interface series is fully complete, as well as the first animating tutorial. I was hoping to get more done with this release, but creating new tutorials is pretty time-consuming, so it'll have to wait a bit longer. Finishing the lighting and animation series is my main priority for the moment.

If anyone would like to see any tutorials that aren't listed, please let me know. I could also use some feedback on the completed tutorials, it's hard for me to tell if they do a good job of explaining things or not 😄.



Inverse Kinematics

The new IK system is now fully implemented (based on BEPUik), with the exception of one pesky bug I have not been able to fix yet, but here's a small showcase:

IK Rig Editor

The IK rig editor allows you to set up a custom IK rig using various constraint types and limits:

You can restrict the range of rotation for each axis, which helps to prevent unnatural poses. The same method can be used to create full-body IK rigs, but I have to fix the aforementioned bug before I can showcase that.

Here's an actual usage example:

Tutorials coming up soon-ish!

VR Animating

If you have a VR headset with controllers, you can now use them for basic motion capture:


The way it works is, you can assign an ik control (like a hand) to a VR controller and then animate that in first-person. The system should be compatible with any VR headset, but I've only tested it with a Vive. You should also be able to use custom trackers, like the VIVE tracker (e.g. if you want to animate feet as well), but that is also untested.

I also still have to implement a curve fitting algorithm, so that the resulting animation can be edited in the graph editor, as well as a tutorial, but otherwise the system is fully operational.

Video Motion Capture

In addition, I've also been working on adding support for motion capture from video or webcam using the mediapipe library. This is an experimental feature and still in an early development stage:

(Please ignore the hands.)

In theory it allows tracking of facial movements, body poses, as well as finger tracking, but it is somewhat unstable. I'm also not sure if I'll have the time to finish this feature, so no promises yet.




I have set up some scripts to fully automate the translation of PFM into other languages using the ChatGPT API. This will make it significantly easier for me to add (and maintain) support for other languages in PFM. Using this system, PFM is now fully localized for French, Spanish and Chinese (simplified), in addition to the previous languages. I can add more languages on request.


The standalone version of PFM now has an auto-updater, so you don't have to download the latest release from GitHub every time. It will notify you whenever there's a new update available. You can also enroll for experimental updates in the PFM settings, though I generally would not recommend it:


Window Layouts

I have added a new system to customize the layout of PFM. For instance, you can change it to a three-column layout like this:


If you detach any windows or resize them you can also save that layout state as the default, so it will be restored the next time you start PFM. The layout state can also be saved with a PFM project, so you can have individual layout setups for specific projects (similar to Blender). The intro tutorial explains how it works if you want to know more.



I don't have any more plans at the moment for new features and will be focusing on the remaining tutorials, bug fixes and quality-of-life improvements for the foreseeable future. There's still a ton that could be implemented of course, but I feel like all of the core features are there now and just have to be cleaned up a little. I'm also way overdue for a new Prelewd release, but I needed to get some other stuff out of the way first. I do plan on putting a lot of time into that next month though🎉!


March 2023 Progress Report

Ingame Tutorials

I've implemented a new system for interactive in-game tutorials:

It's still work-in-progress, but it should hopefully make it much easier to learn how PFM works. So far I have only (mostly) finished two tutorials, but I'm planning on creating one for most of PFM's features. Compared to wiki- or video-tutorials, there are several advantages:

There will be an introductory tutorial, which will lead to several tutorial series covering UI, render effects, common workflows (like importing SFM sessions), etc. This will be my main priority for the next few weeks, as I think it will make a big difference and it'll be worth the time investment 😄.




There's a new constraint system with several different types of constraints for animating:

I used Blender's constraints as a reference point, but I think they should work largely the same as the ones in SFM as well.

(No IK here, just constraints.)

Any two properties of any two actors can be constrained together, as long as they're transform-types (Vector3/Quaternion/etc.). All constraints have some base properties:

Depending on the constraint type, some additional options are available. Blender also has a "custom space" option for the driverSpace and drivenObjectSpace, which may come in handy. I haven't added something like that yet, but I may do so.

Inverse Kinematics

The new (full-body) IK system is now technically fully integrated, however I still have to do a lot of testing and tweaking, so I can't show it off properly yet.
Unfortunately there is also no way for me to add support for SFM IK rigs, since the IK system is a fundamentally different one, and since SFM's IK rigs are python-based, which can't be converted automatically. The good news is I put in a lot of effort to try and simplify the process for creating IK rigs in PFM:

IK Rig Editor

There's a new editor for creating custom IK rigs. The general approach is very different compared to SFM, but hopefully less convoluted since you don't have to mess around with scripting: