Runtime Transform Gizmos Tool for UE4

Ilgar Lunin talked his Runtime Transform Gizmos Tool that should give the developers the API to implement their own gizmos in game and non-game projects.

Ilgar Lunin talked his Runtime Transform Gizmos Tool that should give the developers the API to implement their own gizmos in game and non-game projects.

Introduction

Hi! My name is Ilgar Lunin and I’m from Moscow, Russia. I’ve been professionally engaged in programming and computer graphics since 2014, but it all started a long time ago. Once in my school years, when l was playing  Super Mario on NES, I asked myself “Why does Mario not fall down through the bricks? How does this actually work?” To my mind, that moment became the key to my self-determination. With Immortal movie I began to automate the processes using python scripting because TV series came out once a week. The results inspired me very much and I realized that my place was in tools development! I started developing tools for different software solutions such as Autodesk Motionbuilder, Vicon Blade, Unreal Engine 4 and of course Maya, learned a lot and met good people and professionals. Now I’m a developer in a gaming company dealing with virtual reality. Unreal Engine 4 is our primary software choice. I’m writing tools, gameplay, automating production processes, prototyping and more.

My background is a mix of CG and CG programming and this experience led me to where I am now. The decision to move into the game industry is logical since I am primarily a software developer and this is what I want to do. The game industry fully includes all processes of computer graphics production, animation, content creation etc., it is simply wider.

Transform Gizmos Tool: What is It For?

Manipulators/gizmos/transforming tools are special objects helping users interact with other objects in a 3D or 2D virtual space. You can treat 3D transformation as a box in a 3D space which has an arbitrary scale, angle, and location relative to 0,0,0 coordinate or other transforms; the math behind is transformation matrices. Manipulators are everywhere and they are extremely important in content creation and animation. The way they look and behave can radically differ from one program to another and each program can have special manipulator for certain tasks. Specifically for 3D scenes assembling or 3D modeling, they look almost the same.

3ds Max gizmos from left to right: Move gizmo, Rotate gizmo, Scale gizmo:

Blender gizmos from left to right: Move gizmo, Rotate gizmo, Scale gizmo:

All gizmos have separate handles for each of three axes X, Y, and Z, as well as additional handles such as screen space transformation and rotation of all axes at the same time known as arcball rotation. There can be any additional stuff, but that is the basis. Speaking about Unreal Engine 4, gizmos, in general, solve their main task to assemble game levels, but when it comes to animation – rotation gizmo is too primitive. It has no screen space handle, and arcball rotation is not possible. These things are extremely important things for animation, and I see a huge disbalance here. If you ever worked with Unreal Engine 4, you should know that it gives wide opportunities to create animation without any other 3D software like Maya, Blender or 3ds Max. Such tools like Sequencer or Animation Sequence Editor have a great potential, but it cannot be 100% realized with current rotation gizmo, which causes the user to create animation in external software. That’s why I wrote the Transform Tool plugin, which partially solves the problem. It was already posted on 80lv some time ago, and I’d like to thank them for spreading the word.

Currently, I am developing a runtime module for Transform Tool plugin, and it will be soon available as an update. It will give the developers the API to implement their own gizmos. The approach I used is similar to what Pixologic did in their awesome ZBrush. The idea is the following: all elements of the manipulator are just assets in the content browser, and you can model whatever shape you can imagine and apply shaders or even use skeletal animation. This gives game developers complete freedom in how in-game gizmo should behave. A designer can decide how it should look like to fit the game style. This approach implies an infinite number of variations! From this, it is clear, that no special editor for gizmos is needed and everything is created by standard Unreal Editor tools + 3D modeling app.

Translation gizmo blueprint example:

The workflow will be something like this:

  • Produce 3D shapes for gizmo handles (arrows, circles etc.) in 3D modeling software.
  • Create a subclass for particular gizmo type.
  • Override interface methods via blueprints or code.

Two algorithms underline the solution. Arcball rotation, which I’ve already mentioned, and virtual plane projection. Both of these are not new and have been implemented by many people.

How Can It Be Used?

You can use the manipulator in the game and non-game projects, in VR using motion controllers, for example. The way you set up the logic gives gizmo information about where the camera is now, ray direction traced on the manipulator, how it is traced (mouse viewport ray or ray from VR motion controller forward vector or something else), the type of camera projection matrix whether it is perspective or ortho. Of course, this can be used for the in-game editors, where you want a user to be able to move buildings, for example, or to control character pose in runtime. With Allright Rig plugin you can create arbitrary rigs and control them with gizmo. Below you can watch the editor animation workflow and also check out the demo here.

It is obvious that if you can animate inside the Editor in a familiar for you way, you don’t need to switch between Unreal and other software solutions, no FBX import-export routine, no need to learn other programs and pay for a subscription plan. It definitely allows reducing iteration time and save the resources. 

The new plugin is already published on Unreal Marketplace, so you can purchase and try it. The state of the development is active, and I’m happy to support and answer any questions. Here is also the forum page with all the additional information.

Ilgar Lunin, Research & Development Engineer

Interview conducted by Kirill Tokarev

Join discussion

Comments 1

  • Anonymous user

    Fantastic, waves to the future.

    0

    Anonymous user

    ·5 years ago·

You might also like

We need your consent

We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more