Skip to main content

December 2022 Progress Report

Full-Body IK

This one has been a long time coming, but the IK system is finally getting a much-needed upgrade. I was hoping to get it done by the end of 2022, but it's not quite there yet. Here's a sneak peek:


(Please ignore the random sparkling)

The new system supports full-body IK with branching IK trees as well as IK constraints with limits (e.g. to prevent arms from bending in unnatural ways), IK locking, etc. It still needs some tweaking and I haven't integrated it into PFM yet, but I should be able to get that done this month. Needless to say this will also significantly improve VR tracking for Prelewd.

Linux Support

linux_build.png

Pragma and PFM (and Prelewd with the next update) are now finally available on Linux! Special thanks to SlawekNowy, who's been helping significantly in getting it all set up and running.
The Linux version is available in the GitHub releases: https://github.com/Silverlan/pragma
The build system is fully automated, just like with the Windows release,version, which means a new Linux release will be automatically generated every time new changes are added to Pragma/PFM.

That being said, there are still some issues:

  • The internal web browser for PFM isn't functional yet
  • There are some occasional rendering artifacts
  • Particle systems behave strangely
  • Several crash instances
  • etc.

It will probably still be a few months before it's fully usable, but with the automated build system I should at least be able to ensure that the Linux version stays up to date without much time investment from my side.

Building Pragma

I've significantly simplified the building process for Pragma to the point where Pragma can be built with just a few simple commands, both on Windows and Linux:

git clone https://github.com/Silverlan/pragma.git --recurse-submodules && cd pragma && python build_scripts/build.py --with-pfm --with-all-pfm-modules --with-vr

This will clone the Pragma repository and run the Python build script, which will download and build all dependencies, configure CMake and build and install the core project and binary modules. There are also lots of build parameters available for configuring the build (e.g. if you want to build Pragma without PFM or VR support).
More information on GitHub: https://github.com/Silverlan/pragma#build-instructions

This should make it much easier for anyone wishing to contribute to the Source Code.

Binary Modules

This is another change to simplify contributions to Pragma. Binary modules can be used to add features to Pragma without having to change the core Source Code. Some examples for binary modules are:

  • pr_chromium: Adds an integrated Chromium-based Web Browser to Pragma
  • pr_openvr: Adds virtual reality support to Pragma
  • pr_bullet: Adds support for the Bullet physics engine to Pragma
  • pr_physx: Adds support for the PhysX physics engine to Pragma
  • pr_curl: Adds support for the curl library to Pragma
  • pr_sqlite: Adds SQLite support to Pragma

The module system itself has been around for ages, but creating custom binary modules has now also been made much more simple. There is now a Pragma module template repository, which can be used to set up a new module, including automated builds and releases (nightly and stable) for Windows and Linux, in just a few minutes (assuming that a Pragma build has been set up first).

For more information, check out the wiki article.

 

Misc

Other note-worthy changes:

PFM Collections

PFM now has collections for better organization within a project:

pfm_collections.png

UDM Editor

PFM now includes the UDM editor, which is a simple key-value interface for editing Pragma asset files:

udm_editor.png

It's similar to the element viewer in SFM, but you can use it to edit any of Pragma's asset files, including PFM project files, models, materials, maps, particles, configuration files, etc.

Prelewd Lightmaps

I've created a new scenebuild for one of the Prelewd animations, since the old one looked pretty bad. This also served as another test for the new directional lightmap system and I think it came out pretty good:

prelewd_lm3.png

Will be available with the next Prelewd update!

Japanese Localization

Pragma, PFM and Prelewd will be available with Japanese translations with the next update. This was a bit of an experiment, as all of the translations were generated using the ChatGPT AI. They're not perfect, but as far as I can tell they're pretty close, so I will be using this approach for adding more languages in the future, maybe even for the wiki!

jp_translation.png

 

Touch Feedback

Another experiment, not sure if it'll go anywhere:

If it works out, I can use this system in combination with IK for realistic touch feedback in VR, but I can't make any promises on that yet.