Kinect 4 Unreal (sometimes abbreviated to K4U) is a middleware plugin that allows Unreal Engine 4 developers to use Unreal Engine 4’s Blueprint visual scripting system to access the full functionality of Kinect 2 for Windows as seamlessly and as easily as possible. The key design objective of K4U is to empower artists and designers by exposing everything through Blueprint, so that the development team is able to focus their effort on developing their ideas without a dedicated coder.
Introducing over 30 original nodes, all with extensive documentation and pre built Avateering systems, Kinect 4 Unreal exposes all that the Kinect has to offer to Unreal Engine 4 developers.
The plugin primarily interfaces through a component-based system where, once activated through the plugin menu, any Blueprint can have the Kinect Interface Component added to it. The Kinect Interface Component gives developers access to a large number of Blueprint nodes, each granting them access to some aspect of the Kinect functionality.
Kinect 4 Unreal Projects
Kinect 4 Unreal Projects
Kinect 4 Unreal introduces over 30 new Blueprint nodes, divided into nine categories, which you will find below. For the full listing of all the K4U nodes, please visit the API documentation page.
While we are constantly searching for alternatives, in Unreal there is currently no way to package a project that includes a plugin without source code. This is a problem that Epic is also actively working on and is slated to be fixed in 2015. However, depending on your needs, it may not be necessary to package your plugin for deployment. This is particularly relevant to installations and exhibits, running your project from inside the editor as a new editor window or a standalone game, these both allow you resolution and full screen control equivalent to that of a packaged project.
If you absolutely need to package the project right now, there are two options:
There was a clear design choice to use a single high accuracy device by Microsoft which means that the Kinect 2 outputs a tremendous amount of data (roughly 600 megabytes/s, or nearly the entire bandwidth of USB 3.0). Given this, it can be troublesome to even have two Kinect 2s on the same computer, let alone having them work together. In theory, it is possible to take from Kinect 2 only the information we want and there are rogue stories of hardware hackers accomplishing just that, but at the moment that functionality is not a part of the Kinect SDK.
It is however, entirely possible for you to have a networked solution that involves multiple computers each with a Kinect 2, running a separate instance of K4U and multiplex data directly in Unreal Engine 4. We have a number of internal experiments that demonstrates this precise functionality, but they're not yet scheduled for a public release. If you'd like to explore a multi-Kinect setup within K4U, please contact us and tell us a bit more about your project.
The Kinect 2 works by tracking bodies and assigning them a bodyID, this is best demonstrated by use of one of the Kinect SDK's Body Index Basics. If you use this program it will colour each body according to its bodyID and you can see how this changes as the Kinect 2 picks up and loses people. The K4U plugin exposes these values directly to unreal so that they can be used by you. However, these are not always particularly useful which is why we have also included dynamic get body nodes (Get Nearest Body and Get Centered Body) that allow you to, each tick, assign who is in control of inputting data. You could just as easily write your own or modify these, for instance if you wanted a two player project, you could write a get centered left and a get centered right by modifying the central location inside these nodes.
Our avateering solutions are designed to work with the default Unreal skeleton, such as the blue man from the basic levels or Owen (the animation example character with the trench coat). By default our current avateering solution uses a forward kinematic approach that takes the Kinects rotation information and applies it to this skeleton, which is why different skeletons would not work as well. If your skeleton is different from this these default rotations would need to be changed by applying modifications to the rotations inside the poseable mesh or animation blueprint.
There are three common sources of this problem: