Rokoko / rokoko-studio-live-unreal-engine

GNU Lesser General Public License v3.0
46 stars 15 forks source link

Add Linux support and fix some crashes #55

Closed vaslabs closed 11 months ago

vaslabs commented 12 months ago

Hello, We've acquired the Rokoko Suit Pro recently. We are a small studio working mainly on Linux with UE5 (5.3.1).

This PR provides support for the Linux version of UE5 and fixes a few crashes that can happen if you don't follow the tutorial to the letter (basically some null pointers that cause the whole engine to crash).

Linux Support

With the changes below, the plugin should work with Linux out of the box with UE 5.3, as it seems these plugins have been made available since the latest release. I have a patch that basically enables LiveLink, ARKit and all the plugins that this module depends on so it can work for prior versions as well, but I haven't tested.

There are 2 issues to compile this on linux that this PR solves.

liblz4

I have installed and copied the liblz4 library from my OS repositories (Fedora 37). I don't know if it will work or for how long it will keep working for every linux distro. I have an Ubuntu machine, but we got the suit on Thursday, so haven't had the time to test on that too. Additional effort can be made though to get the source code and script a different build for every platform like Unreal Engine does with the ThirdParty directory.

Then I just added code to pick the Plugins/Smartsuit/Lib/lz4/static/liblz4.so if the platform is Linux

Compilation issues

The compiler on linux is complaining for ambiguity in the && || syntax, simple fix.

Crashes

A fix for when uninitialised CurrentRetargetAsset causes the engine to crash. This happens if the Control Rig blueprint is connected to Rokoko with an uninitialised Retarget Asset, which can trap the user into a crash loop too (next time they open UE), which is what happened to me.

Plugins/Smartsuit/Lib/lz4/static/liblz4.so

Testing Info

We used a Mac host for Rokoko studio. You need to compile the latest UE5 source code (release branch, version 5.3.1 with this Plugin in the Engine/Plugins directory). If you get any error related to liblz4, try to install it with your distro tools and copy the 64-bit in the place of the existing liblz4.so ( e.g. for me it was /usr/lib64/liblz4.so.1 ). Then report the issue here so we can track and decide if it's worth compiling from source with UE tools