Gestaltor is a visual editor for glTF files. The desktop application is developed by UX3D and available for Linux, MacOS and Windows. More information can be found on the Gestaltor product page.

Gestaltor supports glTF 2.0 and following Khronos glTF extensions:

Gestaltor can load and save an asset using all available file extensions specified by glTF:

  • .glb

  • .gltf

Community vs. Professional

The Gestaltor Community version is for non-commercial usage. It fully supports all glTF 2.0 features plus all extensions. The main advantage of the Gestaltor Professional version are the semi-automated features e.g. cleaning up a glTF asset with unused elements.

Steam vs.

The only difference of these versions is the shop and license system.

The version allows up to 3 installations for the Professional version. However, because of upgrading the operating system or switching the computer, one needs to reset the usage count of installations.

This is possible here: My Account

  1. After login to the shop, switch to “My Account”.

  2. Click “Serial Keys”. Now you see all your licenses.

  3. Click “Show details” to list the “Unique identifier”.

  4. Select one or more “Unique identifier” to delete.

  5. Press “Remove Unique Identifier”

After this step, one can utilize the Gestaltor Professional license key on another computer.



Gestaltor is installed like any other Game on Linux, MacOS and Windows.

Following files are downloaded depending on the operating system selected before the download:



After downloading, please set the AppImage executable. Gestaltor can be executed like any other Linux program.



Open the DMG file and install like any other program for MacOS.



Execute the installer. Gestaltor is installed like any other Windows program.

Graphical User Interface

After Gestaltor is launched, following graphical user interface (GUI) is visible:

All widgets screenshot

The GUI consist of a Menu bar and several Widgets.


The GUI consists of a main widget - the viewport - and several other widgets for editing and optimizing the glTF asset. The widgets - except the main widget - can be hidden, rearranged and detached depending on the users need.

Global Settings

These settings are properties which are not stored - as it is not possible - inside glTF but do have an impact on the visual output. For instance, most glTF web viewers do have similar predefined settings and these parameters do help to adapt to e.g. change the environment light by defining a custom .hdr file.


The viewport is the rendered output of the current glTF and property changes are updated automatically. The visual output is aligned with the official glTF Sample Viewer from Khronos. Hence the viewport does allow a WYSIWYG editing of the glTF asset.


Keyboard Conventions

Shortcut keys are shown in the way they are visible on the keyboard. For example:


This stands for the lower case “g”.

Shift, Ctrl, Alt

These are modifier keys.

Ctrl-W, Shift-Alt-A, …

This notation means you have to press these keys at the same time.

Mouse Conventions

We use the following schema to reference mouse buttons:

LMB Left mouse button

RMB Right mouse button

MMB Middle mouse button

Wheel Mouse wheel

Camera controlls

General Camera Controls









ALT-RMB or Wheel



Focus selection


Look around

Perspective User Camera

RMB - W A S D or Arrow keys

Flight Mode


Flight Mode up and down


Sprint (in Flight Mode)


Change Speed (in Flight Mode)

Orthographic User Camera

RMB - Q E A D or Arrow keys

Panning Mode down, up, left and right


Move Clipping Planes (forward, backward)


Fast panning (in Panning Mode)


Change Speed (in Panning Mode)

All other shortcuts are shown in their respective menus.

How to …

… create material variants

  1. Select Material Variants in the Content widget.

  2. Create two variants either the following way:

  • Right click in the empty space of the Content widget and click the Create popup.

  • Select Create > Create Material Variant in the Widget menu.

  • Select Content > Create Material Variant in the menu bar.

  1. Rename the variants to e.g. “Material Variant A” and “Material Variant B”:

  1. Click on Materials and create (or duplicate) a new material. In this case, a red emissive effect is added to the duplicated material. Please note, that the effect is not visible, as this material is not assigned yet.

  1. Select the “Hello Cube Mesh” in Meshes section. In the Inspector widget, select the only available primitive.

  2. Enable the variants extension at the bottom of the Inspector widget.

  1. Assign the empty slots with the “Hello Cube Material” and the “Copy of Hello Cube Material”.

  1. Now it is possible to select the current visible variant in the Global Settings widget.

… export to USDZ

  1. Select File > Export to USDZ… in the menu bar.

  2. Enter a filename and save the asset to the file system.


USDZ is the 3D and AR format from Apple. It does have less features compared to glTF and non-supported properties are automatically removed.

… use an imported animation

  1. Select File > Import … in the menu bar.

  2. Import a glTF having an animation e.g. Animated Cube

  3. Selecting the second scene in the Content widget, the Gestaltor should be in this state:

  1. Switch back to the first scene and select the animation in the Content widget to assign to a new target node:

  1. In the Inspector widget, change the TargetNode to “Hello Cube”.

  2. Please make sure to activate the animations in the Viewport widget.

  1. Now the default sample asset is using the animation from the imported glTF.

… use a punctual light

When you open Gestaltor, the sample scene already contains two lights. In this case, we add one point light using the KHR_lights_punctual extension.

  1. Open any scene. In this case, we do have a sphere with a basic, metallic and rough material.

  1. In glTF, any transformation for a mesh, camera and punctual light are stored in a node.

  2. Create one by e.g. by right clicking in the Hierarchy widget. In this case, we renamed the node to “MyLight”.

  1. Create a light by pressing Ctrl+Alt+L. In this case, we do changed the default white to a blue point light.

  1. Select the “MyLight” node and assign in the Inspector widget the light “MyPointLight”.

  1. As the node and the light is inside the spehre, change the Translation value. The light and the effect is now visible.


… merge glTF files

One major feature of Gestaltor is to merge several glTF into one file and reuse assets.

  1. Open a glTF File > Open… in the menu bar. e.g. Damaged Helmet

  2. Import a glTF File > Import… in the menu bar. e.g. Toy Car

  3. Toggling the two scenes in the Content widget should display the following:

_images/Merge_01.png _images/Merge_02.png
  1. Switch back to the first scene and add the “Fabric” node in the Hierarchy widget.

  2. Click on the “Fabric” node and adjust the scale in the Inspector widget.

  1. Adjust the translation of the first node in the Inspector widget.

  2. Delete the unused second scene in the Content widget.

  3. Either delete unused elements manually or press Ctrl+Shif+C (Professional only) to remove them automatically.


… assign a material

In this example, we do assign a material to an imported Wavefront .OBJ file from here: Utah teapot

  1. Start Gestaltor and remove all elements from the Hierarchy widget:

  1. Import a obj Content > Import OBJ in the menu bar.

  2. In the Hierarchy widget, add the node “teapot.obj”. The Utah teapot is now visible:

  1. The Utah teapot contains the default glTF material. Let’s assign another material e.g. for the cap.

  2. Select in the Viewport widget the cup. In the Inspector widget, click the Mesh and then the Primitive icon.

  3. In the material drop down list, assign the material “Hello Cube Material”.

  1. Click on the Material icon and e.g. change the base color and add clear coat effect:

  1. Either delete unused elements manually or press Ctrl+Shif+C (Professional only) to remove them automatically.

… decimate primitive

There are two ways to decimate a primitive in Gestaltor:

  • Vertex Clustering

  • Reduce Triangle Count

Vertex Clustering is scanning a primitive for similar vertices, which do have the same data. The index buffer is rebuild and duplicate vertices are deleted.

Reduce Triangle Count is decimating the primitive vertices count and to keep the shape of the geometry in parallel. If the quality is not sufficient, press CTRL+Z to undo this optimization. Vertex Clustering is executed before this operation, as better results are produced.

Both operations are only available in the Professional Gestaltor version.

These operations can be found in the Inspector widget when navigating from a mesh to a specific primitive:

  1. Open a glTF File > Open… in the menu bar. e.g. Sci Fi Helmet

  2. Navigate to the only mesh and primitive in the glTF scene

  1. Press the Reduce button in the Inspector widget and choose a target percentage and tolerance.

  2. In the Logger widget, one get feedback about the operation. If wanted, the operation can be executed several times.

  3. Switch in the Viewport widget to Wireframe mode, to see the result before and after the operation.


… rescale a texture

In some cases, the input images for a material are rectangular or even square e.g.


In general, procedural generated or scanned images do have this characteristic. In this example, the given material Fabric 026 is used. The tool pbr2gltf2 is used to generate the later imported material.

  1. Open a glTF File > Open… in the menu bar. e.g. Sheen Cloth

  1. Import a glTF having a material e.g. Fabric026 with rectangular images.

  2. Assign to the only Mesh and Primitive the Fabric026 material.

  1. In the material Fabric026, enable the KHR_texture_transform extensions.

  2. Set the Scale for the Texture Transform to e.g. 10.0 to match the original image.

  1. Either delete unused elements manually or press Ctrl+Shif+C (Professional only) to remove them automatically.

… create a screenshot

  1. Switch in the Viewport widget to the Render Mode in the drop down list.

  2. Select the node “Camera Node” in the Hierarchy Widget and select the camera:

  1. We want to render an image with a resolution of 1500 : 500, so change the Aspect Ratio to 3:

  1. Press the Render button in the Viewport widget. Change the resolution to w = 1500 and h = 500:

  1. After pressing Render now, the rendered image is stored in the folder defined in the previous dialog: